Chromium Code Reviews| Index: src/objects.cc |
| =================================================================== |
| --- src/objects.cc (revision 13740) |
| +++ src/objects.cc (working copy) |
| @@ -8603,8 +8603,10 @@ |
| int mode_mask = RelocInfo::kCodeTargetMask | |
| RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT) | |
| RelocInfo::ModeMask(RelocInfo::GLOBAL_PROPERTY_CELL) | |
| + RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY) | |
| RelocInfo::kApplyMask; |
| - Assembler* origin = desc.origin; // Needed to find target_object on X64. |
| + // Needed to find target_object and runtime_entry on X64 |
| + Assembler* origin = desc.origin; |
| for (RelocIterator it(this, mode_mask); !it.done(); it.next()) { |
| RelocInfo::Mode mode = it.rinfo()->rmode(); |
| if (mode == RelocInfo::EMBEDDED_OBJECT) { |
| @@ -8620,6 +8622,10 @@ |
| Code* code = Code::cast(*p); |
| it.rinfo()->set_target_address(code->instruction_start(), |
| SKIP_WRITE_BARRIER); |
| + } else if (RelocInfo::IsRuntimeEntry(mode) && |
| + RelocInfo::NeedsInitializeRuntimeEntry()) { |
| + Address p = it.rinfo()->target_runtime_entry(origin); |
|
danno
2013/03/07 14:57:23
Why do you need NeedsInitializeRuntimeEntry at all
haitao.feng
2013/03/08 05:30:05
Done.
|
| + it.rinfo()->set_target_address(p, SKIP_WRITE_BARRIER); |
| } else { |
| it.rinfo()->apply(delta); |
| } |