Index: src/x64/assembler-x64-inl.h |
diff --git a/src/x64/assembler-x64-inl.h b/src/x64/assembler-x64-inl.h |
index 90deaba4fee64aacbae7ede13decf38ecb268811..1495a5ce78a95e06387f051571eba8171029e672 100644 |
--- a/src/x64/assembler-x64-inl.h |
+++ b/src/x64/assembler-x64-inl.h |
@@ -293,11 +293,6 @@ Address Assembler::target_address_from_return_address(Address pc) { |
} |
-Address Assembler::break_address_from_return_address(Address pc) { |
- return pc - Assembler::kPatchDebugBreakSlotReturnOffset; |
-} |
- |
- |
Handle<Object> Assembler::code_target_object_handle_at(Address pc) { |
return code_targets_[Memory::int32_at(pc)]; |
} |
@@ -311,21 +306,17 @@ Address Assembler::runtime_entry_at(Address pc) { |
// Implementation of RelocInfo |
// The modes possibly affected by apply must be in kApplyMask. |
-void RelocInfo::apply(intptr_t delta, ICacheFlushMode icache_flush_mode) { |
- bool flush_icache = icache_flush_mode != SKIP_ICACHE_FLUSH; |
- if (IsInternalReference(rmode_)) { |
- // absolute code pointer inside code object moves with the code object. |
- Memory::Address_at(pc_) += delta; |
- if (flush_icache) CpuFeatures::FlushICache(pc_, sizeof(Address)); |
- } else if (IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)) { |
+void RelocInfo::apply(intptr_t delta) { |
+ if (IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_)) { |
Memory::int32_at(pc_) -= static_cast<int32_t>(delta); |
- if (flush_icache) CpuFeatures::FlushICache(pc_, sizeof(int32_t)); |
- } else if (rmode_ == CODE_AGE_SEQUENCE) { |
+ } else if (IsCodeAgeSequence(rmode_)) { |
if (*pc_ == kCallOpcode) { |
int32_t* p = reinterpret_cast<int32_t*>(pc_ + 1); |
*p -= static_cast<int32_t>(delta); // Relocate entry. |
- if (flush_icache) CpuFeatures::FlushICache(p, sizeof(uint32_t)); |
} |
+ } else if (IsInternalReference(rmode_)) { |
+ // absolute code pointer inside code object moves with the code object. |
+ Memory::Address_at(pc_) += delta; |
} |
} |
@@ -526,21 +517,18 @@ void RelocInfo::set_code_age_stub(Code* stub, |
} |
-Address RelocInfo::call_address() { |
- DCHECK((IsJSReturn(rmode()) && IsPatchedReturnSequence()) || |
- (IsDebugBreakSlot(rmode()) && IsPatchedDebugBreakSlotSequence())); |
- return Memory::Address_at( |
- pc_ + Assembler::kRealPatchReturnSequenceAddressOffset); |
+Address RelocInfo::debug_call_address() { |
+ DCHECK(IsDebugBreakSlot(rmode()) && IsPatchedDebugBreakSlotSequence()); |
+ return Memory::Address_at(pc_ + Assembler::kPatchDebugBreakSlotAddressOffset); |
} |
-void RelocInfo::set_call_address(Address target) { |
- DCHECK((IsJSReturn(rmode()) && IsPatchedReturnSequence()) || |
- (IsDebugBreakSlot(rmode()) && IsPatchedDebugBreakSlotSequence())); |
- Memory::Address_at(pc_ + Assembler::kRealPatchReturnSequenceAddressOffset) = |
+void RelocInfo::set_debug_call_address(Address target) { |
+ DCHECK(IsDebugBreakSlot(rmode()) && IsPatchedDebugBreakSlotSequence()); |
+ Memory::Address_at(pc_ + Assembler::kPatchDebugBreakSlotAddressOffset) = |
target; |
- CpuFeatures::FlushICache( |
- pc_ + Assembler::kRealPatchReturnSequenceAddressOffset, sizeof(Address)); |
+ CpuFeatures::FlushICache(pc_ + Assembler::kPatchDebugBreakSlotAddressOffset, |
+ sizeof(Address)); |
if (host() != NULL) { |
Object* target_code = Code::GetCodeFromTargetAddress(target); |
host()->GetHeap()->incremental_marking()->RecordWriteIntoCode( |
@@ -549,24 +537,6 @@ void RelocInfo::set_call_address(Address target) { |
} |
-Object* RelocInfo::call_object() { |
- return *call_object_address(); |
-} |
- |
- |
-void RelocInfo::set_call_object(Object* target) { |
- *call_object_address() = target; |
-} |
- |
- |
-Object** RelocInfo::call_object_address() { |
- DCHECK((IsJSReturn(rmode()) && IsPatchedReturnSequence()) || |
- (IsDebugBreakSlot(rmode()) && IsPatchedDebugBreakSlotSequence())); |
- return reinterpret_cast<Object**>( |
- pc_ + Assembler::kPatchReturnSequenceAddressOffset); |
-} |
- |
- |
void RelocInfo::Visit(Isolate* isolate, ObjectVisitor* visitor) { |
RelocInfo::Mode mode = rmode(); |
if (mode == RelocInfo::EMBEDDED_OBJECT) { |
@@ -582,10 +552,8 @@ void RelocInfo::Visit(Isolate* isolate, ObjectVisitor* visitor) { |
visitor->VisitInternalReference(this); |
} else if (RelocInfo::IsCodeAgeSequence(mode)) { |
visitor->VisitCodeAgeSequence(this); |
- } else if (((RelocInfo::IsJSReturn(mode) && |
- IsPatchedReturnSequence()) || |
- (RelocInfo::IsDebugBreakSlot(mode) && |
- IsPatchedDebugBreakSlotSequence())) && |
+ } else if (RelocInfo::IsDebugBreakSlot(mode) && |
+ IsPatchedDebugBreakSlotSequence() && |
isolate->debug()->has_break_points()) { |
visitor->VisitDebugTarget(this); |
} else if (RelocInfo::IsRuntimeEntry(mode)) { |
@@ -611,10 +579,8 @@ void RelocInfo::Visit(Heap* heap) { |
} else if (RelocInfo::IsCodeAgeSequence(mode)) { |
StaticVisitor::VisitCodeAgeSequence(heap, this); |
} else if (heap->isolate()->debug()->has_break_points() && |
- ((RelocInfo::IsJSReturn(mode) && |
- IsPatchedReturnSequence()) || |
- (RelocInfo::IsDebugBreakSlot(mode) && |
- IsPatchedDebugBreakSlotSequence()))) { |
+ RelocInfo::IsDebugBreakSlot(mode) && |
+ IsPatchedDebugBreakSlotSequence()) { |
StaticVisitor::VisitDebugTarget(heap, this); |
} else if (RelocInfo::IsRuntimeEntry(mode)) { |
StaticVisitor::VisitRuntimeEntry(this); |