Revision: 19177
Author:   [email protected]
Date:     Fri Feb  7 02:21:18 2014 UTC
Log: Use StackArgumentsAccessor to access receiver on stack, use kPCOnStackSize to
access stack argument and use movq instead of movp to operate return address
on stack for x64

[email protected]

Review URL: https://codereview.chromium.org/156663002
http://code.google.com/p/v8/source/detail?r=19177

Modified:
 /branches/bleeding_edge/src/x64/assembler-x64.h
 /branches/bleeding_edge/src/x64/builtins-x64.cc
 /branches/bleeding_edge/src/x64/code-stubs-x64.cc
 /branches/bleeding_edge/src/x64/deoptimizer-x64.cc

=======================================
--- /branches/bleeding_edge/src/x64/assembler-x64.h Fri Jan 24 01:45:53 2014 UTC +++ /branches/bleeding_edge/src/x64/assembler-x64.h Fri Feb 7 02:21:18 2014 UTC
@@ -395,7 +395,7 @@
   times_4 = 2,
   times_8 = 3,
   times_int_size = times_4,
-  times_pointer_size = times_8
+  times_pointer_size = (kPointerSize == 8) ? times_8 : times_4
 };


@@ -1020,7 +1020,6 @@
   void orl(const Operand& dst, Immediate src) {
     immediate_arithmetic_op_32(0x1, dst, src);
   }
-

   void rcl(Register dst, Immediate imm8) {
     shift(dst, imm8, 0x2);
=======================================
--- /branches/bleeding_edge/src/x64/builtins-x64.cc Mon Jan 20 04:59:40 2014 UTC +++ /branches/bleeding_edge/src/x64/builtins-x64.cc Fri Feb 7 02:21:18 2014 UTC
@@ -1412,7 +1412,7 @@
__ lea(rax, Operand(rax, rbx, times_1, Code::kHeaderSize - kHeapObjectTag));

   // Overwrite the return address on the stack.
-  __ movq(Operand(rsp, 0), rax);
+  __ movq(StackOperandForReturnAddress(0), rax);

   // And "return" to the OSR entry point of the function.
   __ ret(0);
=======================================
--- /branches/bleeding_edge/src/x64/code-stubs-x64.cc Fri Jan 31 16:52:17 2014 UTC +++ /branches/bleeding_edge/src/x64/code-stubs-x64.cc Fri Feb 7 02:21:18 2014 UTC
@@ -2284,7 +2284,7 @@
     }

     // Load the receiver from the stack.
-    __ movp(rax, Operand(rsp, (argc_ + 1) * kPointerSize));
+    __ movp(rax, args.GetReceiverOperand());

     if (NeedsChecks()) {
       __ JumpIfSmi(rax, &wrap);
@@ -2345,7 +2345,7 @@
       __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION);
       __ pop(rdi);
     }
-    __ movp(Operand(rsp, (argc_ + 1) * kPointerSize), rax);
+    __ movp(args.GetReceiverOperand(), rax);
     __ jmp(&cont);
   }
 }
@@ -2916,7 +2916,7 @@
     __ StoreRoot(rax, Heap::kInstanceofCacheMapRootIndex);
   } else {
     // Get return address and delta to inlined map check.
-    __ movp(kScratchRegister, StackOperandForReturnAddress(0));
+    __ movq(kScratchRegister, StackOperandForReturnAddress(0));
     __ subq(kScratchRegister, args.GetArgumentOperand(2));
     if (FLAG_debug_code) {
       __ movl(rdi, Immediate(kWordBeforeMapCheckValue));
@@ -2957,7 +2957,7 @@
     // Assert it is a 1-byte signed value.
     ASSERT(true_offset >= 0 && true_offset < 0x100);
     __ movl(rax, Immediate(true_offset));
-    __ movp(kScratchRegister, StackOperandForReturnAddress(0));
+    __ movq(kScratchRegister, StackOperandForReturnAddress(0));
     __ subq(kScratchRegister, args.GetArgumentOperand(2));
     __ movb(Operand(kScratchRegister, kOffsetToResultValue), rax);
     if (FLAG_debug_code) {
@@ -2980,7 +2980,7 @@
     // Assert it is a 1-byte signed value.
     ASSERT(false_offset >= 0 && false_offset < 0x100);
     __ movl(rax, Immediate(false_offset));
-    __ movp(kScratchRegister, StackOperandForReturnAddress(0));
+    __ movq(kScratchRegister, StackOperandForReturnAddress(0));
     __ subq(kScratchRegister, args.GetArgumentOperand(2));
     __ movb(Operand(kScratchRegister, kOffsetToResultValue), rax);
     if (FLAG_debug_code) {
@@ -5263,7 +5263,7 @@
   // Allocate v8::AccessorInfo in non-GCed stack space.
   const int kArgStackSpace = 1;

-  __ lea(name_arg, Operand(rsp, 1 * kPointerSize));
+  __ lea(name_arg, Operand(rsp, kPCOnStackSize));

   __ PrepareCallApiFunction(kArgStackSpace);
   __ lea(scratch, Operand(name_arg, 1 * kPointerSize));
=======================================
--- /branches/bleeding_edge/src/x64/deoptimizer-x64.cc Fri Jan 24 01:59:00 2014 UTC +++ /branches/bleeding_edge/src/x64/deoptimizer-x64.cc Fri Feb 7 02:21:18 2014 UTC
@@ -97,7 +97,7 @@

   // Fill the frame content from the actual data on the frame.
   for (unsigned i = 0; i < input_->GetFrameSize(); i += kPointerSize) {
-    input_->SetFrameSlot(i, Memory::uint64_at(tos + i));
+    input_->SetFrameSlot(i, Memory::uintptr_at(tos + i));
   }
 }

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to