Chromium Code Reviews| Index: src/x64/code-stubs-x64.cc |
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc |
| index d40a5bf05d8cdf6ed3c067bddaa11a86c570ae0d..9928726d66202e43b5e3c3753fdba0dee968e394 100644 |
| --- a/src/x64/code-stubs-x64.cc |
| +++ b/src/x64/code-stubs-x64.cc |
| @@ -525,11 +525,8 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) { |
| __ PushCallerSaved(save_doubles_); |
| const int argument_count = 1; |
| __ PrepareCallCFunction(argument_count); |
| -#ifdef _WIN64 |
| - __ LoadAddress(rcx, ExternalReference::isolate_address(masm->isolate())); |
| -#else |
| - __ LoadAddress(rdi, ExternalReference::isolate_address(masm->isolate())); |
| -#endif |
| + __ LoadAddress(arg_reg_1, |
| + ExternalReference::isolate_address(masm->isolate())); |
| AllowExternalCallThatCantCauseGC scope(masm); |
| __ CallCFunction( |
| @@ -1999,12 +1996,7 @@ void FloatingPointHelper::NumbersToSmis(MacroAssembler* masm, |
| void MathPowStub::Generate(MacroAssembler* masm) { |
| - // Choose register conforming to calling convention (when bailing out). |
| -#ifdef _WIN64 |
| const Register exponent = rdx; |
| -#else |
| - const Register exponent = rdi; |
| -#endif |
| const Register base = rax; |
| const Register scratch = rcx; |
| const XMMRegister double_result = xmm3; |
| @@ -3013,19 +3005,6 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
| __ movq(Operand(rsp, (argument_slots_on_stack - 5) * kPointerSize), r8); |
| #endif |
| - // First four arguments are passed in registers on both Linux and Windows. |
| -#ifdef _WIN64 |
| - Register arg4 = r9; |
| - Register arg3 = r8; |
| - Register arg2 = rdx; |
| - Register arg1 = rcx; |
| -#else |
| - Register arg4 = rcx; |
| - Register arg3 = rdx; |
| - Register arg2 = rsi; |
| - Register arg1 = rdi; |
| -#endif |
| - |
| // Keep track on aliasing between argX defined above and the registers used. |
| // rdi: subject string |
| // rbx: previous index |
|
mvstanton
2013/04/24 10:54:54
These comments should be updated to refer to arg_r
|
| @@ -3035,7 +3014,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
| // r15: original subject string |
| // Argument 2: Previous index. |
| - __ movq(arg2, rbx); |
| + __ movq(arg_reg_2, rbx); |
| // Argument 4: End of string data |
| // Argument 3: Start of string data |
| @@ -3043,20 +3022,24 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
| // Prepare start and end index of the input. |
| // Load the length from the original sliced string if that is the case. |
| __ addq(rbx, r14); |
| - __ SmiToInteger32(arg3, FieldOperand(r15, String::kLengthOffset)); |
| - __ addq(r14, arg3); // Using arg3 as scratch. |
| + __ SmiToInteger32(arg_reg_3, FieldOperand(r15, String::kLengthOffset)); |
| + __ addq(r14, arg_reg_3); // Using arg3 as scratch. |
| // rbx: start index of the input |
| // r14: end index of the input |
| // r15: original subject string |
| __ testb(rcx, rcx); // Last use of rcx as encoding of subject string. |
| __ j(zero, &setup_two_byte, Label::kNear); |
| - __ lea(arg4, FieldOperand(rdi, r14, times_1, SeqOneByteString::kHeaderSize)); |
| - __ lea(arg3, FieldOperand(rdi, rbx, times_1, SeqOneByteString::kHeaderSize)); |
| + __ lea(arg_reg_4, |
| + FieldOperand(rdi, r14, times_1, SeqOneByteString::kHeaderSize)); |
| + __ lea(arg_reg_3, |
| + FieldOperand(rdi, rbx, times_1, SeqOneByteString::kHeaderSize)); |
| __ jmp(&setup_rest, Label::kNear); |
| __ bind(&setup_two_byte); |
| - __ lea(arg4, FieldOperand(rdi, r14, times_2, SeqTwoByteString::kHeaderSize)); |
| - __ lea(arg3, FieldOperand(rdi, rbx, times_2, SeqTwoByteString::kHeaderSize)); |
| + __ lea(arg_reg_4, |
| + FieldOperand(rdi, r14, times_2, SeqTwoByteString::kHeaderSize)); |
| + __ lea(arg_reg_3, |
| + FieldOperand(rdi, rbx, times_2, SeqTwoByteString::kHeaderSize)); |
| __ bind(&setup_rest); |
| // Argument 1: Original subject string. |
| @@ -3064,7 +3047,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
| // use rbp, which points exactly to one pointer size below the previous rsp. |
| // (Because creating a new stack frame pushes the previous rbp onto the stack |
| // and thereby moves up rsp by one kPointerSize.) |
| - __ movq(arg1, r15); |
| + __ movq(arg_reg_1, r15); |
| // Locate the code entry and call it. |
| __ addq(r11, Immediate(Code::kHeaderSize - kHeapObjectTag)); |
| @@ -4089,11 +4072,7 @@ void CEntryStub::GenerateCore(MacroAssembler* masm, |
| // PerformGC. No need to use PrepareCallCFunction/CallCFunction here as the |
| // stack is known to be aligned. This function takes one argument which is |
| // passed in register. |
| -#ifdef _WIN64 |
| - __ movq(rcx, rax); |
| -#else // _WIN64 |
| - __ movq(rdi, rax); |
| -#endif |
| + __ movq(arg_reg_1, rax); |
| __ movq(kScratchRegister, |
| ExternalReference::perform_gc_function(masm->isolate())); |
| __ call(kScratchRegister); |
| @@ -6481,24 +6460,16 @@ void RecordWriteStub::GenerateIncremental(MacroAssembler* masm, Mode mode) { |
| void RecordWriteStub::InformIncrementalMarker(MacroAssembler* masm, Mode mode) { |
| regs_.SaveCallerSaveRegisters(masm, save_fp_regs_mode_); |
| -#ifdef _WIN64 |
| - Register arg3 = r8; |
| - Register arg2 = rdx; |
| - Register arg1 = rcx; |
| -#else |
| - Register arg3 = rdx; |
| - Register arg2 = rsi; |
| - Register arg1 = rdi; |
| -#endif |
| Register address = |
| - arg1.is(regs_.address()) ? kScratchRegister : regs_.address(); |
| + arg_reg_1.is(regs_.address()) ? kScratchRegister : regs_.address(); |
| ASSERT(!address.is(regs_.object())); |
| - ASSERT(!address.is(arg1)); |
| + ASSERT(!address.is(arg_reg_1)); |
| __ Move(address, regs_.address()); |
| - __ Move(arg1, regs_.object()); |
| + __ Move(arg_reg_1, regs_.object()); |
| // TODO(gc) Can we just set address arg2 in the beginning? |
| - __ Move(arg2, address); |
| - __ LoadAddress(arg3, ExternalReference::isolate_address(masm->isolate())); |
| + __ Move(arg_reg_2, address); |
| + __ LoadAddress(arg_reg_3, |
| + ExternalReference::isolate_address(masm->isolate())); |
| int argument_count = 3; |
| AllowExternalCallThatCantCauseGC scope(masm); |