| Index: src/mark-compact.cc
|
| diff --git a/src/mark-compact.cc b/src/mark-compact.cc
|
| index f065da1f94fb6ac507d0443bbd066f7c460a62bf..e5646f4bdda24ddb9abf01ef6357e8f22c02d000 100644
|
| --- a/src/mark-compact.cc
|
| +++ b/src/mark-compact.cc
|
| @@ -2758,7 +2758,9 @@ void MarkCompactCollector::MigrateObject(Address dst,
|
|
|
| if (heap_->InNewSpace(value)) {
|
| heap_->store_buffer()->Mark(dst_slot);
|
| - } else if (value->IsHeapObject() && IsOnEvacuationCandidate(value)) {
|
| + } else if (value->IsHeapObject() &&
|
| + !IsCodeEntry(src, value) &&
|
| + IsOnEvacuationCandidate(value)) {
|
| SlotsBuffer::AddTo(&slots_buffer_allocator_,
|
| &migration_slots_buffer_,
|
| reinterpret_cast<Object**>(dst_slot),
|
| @@ -2830,7 +2832,7 @@ class PointersUpdatingVisitor: public ObjectVisitor {
|
| Object* old_target = target;
|
| VisitPointer(&target);
|
| if (target != old_target) {
|
| - rinfo->set_target_address(Code::cast(target)->instruction_start());
|
| + rinfo->set_target_address(Code::cast(target)->entry());
|
| }
|
| }
|
|
|
| @@ -2851,7 +2853,7 @@ class PointersUpdatingVisitor: public ObjectVisitor {
|
| rinfo->IsPatchedDebugBreakSlotSequence()));
|
| Object* target = Code::GetCodeFromTargetAddress(rinfo->call_address());
|
| VisitPointer(&target);
|
| - rinfo->set_call_address(Code::cast(target)->instruction_start());
|
| + rinfo->set_call_address(Code::cast(target)->entry());
|
| }
|
|
|
| static inline void UpdateSlot(Heap* heap, Object** slot) {
|
|
|