Index: src/x64/assembler-x64-inl.h |
=================================================================== |
--- src/x64/assembler-x64-inl.h (revision 3070) |
+++ src/x64/assembler-x64-inl.h (working copy) |
@@ -194,7 +194,7 @@ |
Memory::Address_at(pc_) += delta; |
} else if (IsCodeTarget(rmode_)) { |
Memory::int32_at(pc_) -= delta; |
- } else if (rmode_ == JS_RETURN && IsCallInstruction()) { |
+ } else if (rmode_ == JS_RETURN && IsPatchedReturnSequence()) { |
// Special handling of js_return when a break point is set (call |
// instruction has been inserted). |
Memory::int32_at(pc_ + 1) -= delta; // relocate entry |
@@ -262,45 +262,49 @@ |
} |
-bool RelocInfo::IsCallInstruction() { |
+bool RelocInfo::IsPatchedReturnSequence() { |
// The recognized call sequence is: |
// movq(kScratchRegister, immediate64); call(kScratchRegister); |
// It only needs to be distinguished from a return sequence |
// movq(rsp, rbp); pop(rbp); ret(n); int3 *6 |
// The 11th byte is int3 (0xCC) in the return sequence and |
// REX.WB (0x48+register bit) for the call sequence. |
+#ifdef ENABLE_DEBUGGER_SUPPORT |
return pc_[10] != 0xCC; |
+#else |
+ return false; |
+#endif |
} |
Address RelocInfo::call_address() { |
- ASSERT(IsCallInstruction()); |
+ ASSERT(IsPatchedReturnSequence()); |
return Memory::Address_at( |
pc_ + Assembler::kRealPatchReturnSequenceAddressOffset); |
} |
void RelocInfo::set_call_address(Address target) { |
- ASSERT(IsCallInstruction()); |
+ ASSERT(IsPatchedReturnSequence()); |
Memory::Address_at(pc_ + Assembler::kRealPatchReturnSequenceAddressOffset) = |
target; |
} |
Object* RelocInfo::call_object() { |
- ASSERT(IsCallInstruction()); |
+ ASSERT(IsPatchedReturnSequence()); |
return *call_object_address(); |
} |
void RelocInfo::set_call_object(Object* target) { |
- ASSERT(IsCallInstruction()); |
+ ASSERT(IsPatchedReturnSequence()); |
*call_object_address() = target; |
} |
Object** RelocInfo::call_object_address() { |
- ASSERT(IsCallInstruction()); |
+ ASSERT(IsPatchedReturnSequence()); |
return reinterpret_cast<Object**>( |
pc_ + Assembler::kPatchReturnSequenceAddressOffset); |
} |