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.