Chromium Code Reviews| Index: src/x64/assembler-x64-inl.h |
| diff --git a/src/x64/assembler-x64-inl.h b/src/x64/assembler-x64-inl.h |
| index 196f2eedbd474cf855b7a1ecef304e5b6f9c0ff6..772c669cf80cbc8b0bbd466aa2dddd3844f31d79 100644 |
| --- a/src/x64/assembler-x64-inl.h |
| +++ b/src/x64/assembler-x64-inl.h |
| @@ -228,43 +228,42 @@ void RelocInfo::set_target_object(Object* target) { |
| bool RelocInfo::IsCallInstruction() { |
| - UNIMPLEMENTED(); // IA32 code below. |
| - return *pc_ == 0xE8; |
| + // TODO(X64) If allowing short (relative32 offset) jumps, also |
| + // recognize 0xE8! |
| + return pc_[11] != 0xCC; |
|
Søren Thygesen Gjesse
2009/08/18 13:10:44
Please explain why non int3 instruction at pc + 11
Lasse Reichstein
2009/08/19 07:07:55
Has been elaborated.
We only need to distinguish a
|
| } |
| Address RelocInfo::call_address() { |
| - UNIMPLEMENTED(); // IA32 code below. |
| ASSERT(IsCallInstruction()); |
| - return Assembler::target_address_at(pc_ + 1); |
| + return |
| + Assembler::target_address_at(pc_ + Assembler::kReturnAddrPatchPrefixSize); |
| } |
| void RelocInfo::set_call_address(Address target) { |
| - UNIMPLEMENTED(); // IA32 code below. |
| ASSERT(IsCallInstruction()); |
| - Assembler::set_target_address_at(pc_ + 1, target); |
| + Assembler::set_target_address_at(pc_ + Assembler::kReturnAddrPatchPrefixSize, |
|
William Hesse
2009/08/19 08:44:00
I really think this name is bad. Maybe there shou
Lasse Reichstein
2009/08/19 10:12:32
I can't see a good and quick way to separate it. I
|
| + target); |
| } |
| Object* RelocInfo::call_object() { |
| - UNIMPLEMENTED(); // IA32 code below. |
| ASSERT(IsCallInstruction()); |
| return *call_object_address(); |
| } |
| void RelocInfo::set_call_object(Object* target) { |
| - UNIMPLEMENTED(); // IA32 code below. |
| ASSERT(IsCallInstruction()); |
| *call_object_address() = target; |
| } |
| Object** RelocInfo::call_object_address() { |
| - UNIMPLEMENTED(); // IA32 code below. |
| ASSERT(IsCallInstruction()); |
| - return reinterpret_cast<Object**>(pc_ + 1); |
| + return |
| + reinterpret_cast<Object**>(pc_ + Assembler::kReturnAddrPatchPrefixSize); |
| } |
| // ----------------------------------------------------------------------------- |