Commit 884345a7 authored by bak@chromium.org's avatar bak@chromium.org

-Eliminated a excessive memory traffic in CopyObject.

Review URL: http://codereview.chromium.org/7432

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@509 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent d4320b10
......@@ -627,23 +627,19 @@ Map* MapWord::ToMap() {
bool MapWord::IsForwardingAddress() {
// This function only works for map words that are heap object pointers.
// Since it is a heap object, it has a map. We use that map's instance
// type to detect if this map word is not actually a map (ie, it is a
// forwarding address during a scavenge collection).
return reinterpret_cast<HeapObject*>(value_)->map()->instance_type() !=
MAP_TYPE;
return HAS_SMI_TAG(reinterpret_cast<Object*>(value_));
}
MapWord MapWord::FromForwardingAddress(HeapObject* object) {
return MapWord(reinterpret_cast<uintptr_t>(object));
Address raw = reinterpret_cast<Address>(object) - kHeapObjectTag;
return MapWord(reinterpret_cast<uintptr_t>(raw));
}
HeapObject* MapWord::ToForwardingAddress() {
ASSERT(IsForwardingAddress());
return reinterpret_cast<HeapObject*>(value_);
return HeapObject::FromAddress(reinterpret_cast<Address>(value_));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment