Index: src/ia32/macro-assembler-ia32.h |
=================================================================== |
--- src/ia32/macro-assembler-ia32.h (revision 3405) |
+++ src/ia32/macro-assembler-ia32.h (working copy) |
@@ -278,6 +278,16 @@ |
Register scratch, |
Label* miss); |
+ // The double precision value in a heap number is always aligned even |
+ // if the heap number object isn't. This takes the address of a heap |
+ // number and puts the address of its value in the result register. |
+ // It is OK for the two registers to be identical. |
+ void GenerateHeapNumberValueAddress(Register result, Register number) { |
+ lea(result, Operand(number, 4 + HeapNumber::kValueMinimumOffset - kHeapObjectTag)); |
+ and_(result, -8); |
+ //lea(result, Operand(number, HeapNumber::kValueMinimumOffset - kHeapObjectTag)); |
+ } |
+ |
// Generates code for reporting that an illegal operation has |
// occurred. |
void IllegalOperation(int num_arguments); |