| Index: src/ic-inl.h
|
| ===================================================================
|
| --- src/ic-inl.h (revision 950)
|
| +++ src/ic-inl.h (working copy)
|
| @@ -59,14 +59,11 @@
|
|
|
|
|
| Code* IC::GetTargetAtAddress(Address address) {
|
| + // Get the target address of the IC.
|
| Address target = Assembler::target_address_at(address);
|
| - HeapObject* code = HeapObject::FromAddress(target - Code::kHeaderSize);
|
| - // GetTargetAtAddress is called from IC::Clear which in turn is
|
| - // called when marking objects during mark sweep. reinterpret_cast
|
| - // is therefore used instead of the more appropriate
|
| - // Code::cast. Code::cast does not work when the object's map is
|
| - // marked.
|
| - Code* result = reinterpret_cast<Code*>(code);
|
| + // Convert target address to the code object. Code::GetCodeFromTargetAddress
|
| + // is safe for use during GC where the map might be marked.
|
| + Code* result = Code::GetCodeFromTargetAddress(target);
|
| ASSERT(result->is_inline_cache_stub());
|
| return result;
|
| }
|
|
|