Author: [email protected]
Date: Mon Jun 22 07:46:33 2009
New Revision: 2240
Modified:
branches/bleeding_edge/src/x64/assembler-x64.h
branches/bleeding_edge/src/x64/macro-assembler-x64.cc
Log:
X64 implementation: Correct kTargetAddrToReturnAddrDist value for x64.
Review URL: http://codereview.chromium.org/140063
Modified: branches/bleeding_edge/src/x64/assembler-x64.h
==============================================================================
--- branches/bleeding_edge/src/x64/assembler-x64.h (original)
+++ branches/bleeding_edge/src/x64/assembler-x64.h Mon Jun 22 07:46:33 2009
@@ -413,8 +413,8 @@
static inline void set_target_address_at(Address pc, Address target);
// Distance between the address of the code target in the call
instruction
- // and the return address
- static const int kTargetAddrToReturnAddrDist = kPointerSize;
+ // and the return address. Checked in the debug build.
+ static const int kTargetAddrToReturnAddrDist = 3 + kPointerSize;
//
---------------------------------------------------------------------------
Modified: branches/bleeding_edge/src/x64/macro-assembler-x64.cc
==============================================================================
--- branches/bleeding_edge/src/x64/macro-assembler-x64.cc (original)
+++ branches/bleeding_edge/src/x64/macro-assembler-x64.cc Mon Jun 22
07:46:33 2009
@@ -337,7 +337,15 @@
WriteRecordedPositions();
ASSERT(RelocInfo::IsCodeTarget(rmode));
movq(kScratchRegister, code_object, rmode);
+#ifdef DEBUG
+ Label target;
+ bind(&target);
+#endif
call(kScratchRegister);
+#ifdef DEBUG
+ ASSERT_EQ(kTargetAddrToReturnAddrDist,
+ SizeOfCodeGeneratedSince(&target) + kPointerSize);
+#endif
}
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---