Index: src/x64/code-stubs-x64.cc |
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc |
index 779e77edc0dc2120eb2d78bee3cf68481f37a784..b678bed05239f814c02321f13b1a84f167af9c8b 100644 |
--- a/src/x64/code-stubs-x64.cc |
+++ b/src/x64/code-stubs-x64.cc |
@@ -490,7 +490,7 @@ void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) { |
rax.is(descriptor->register_params_[param_count - 1])); |
// Push arguments |
for (int i = 0; i < param_count; ++i) { |
- __ push(descriptor->register_params_[i]); |
+ __ Push(descriptor->register_params_[i]); |
} |
ExternalReference miss = descriptor->miss_handler(); |
__ CallExternalReference(miss, descriptor->register_param_count_); |
@@ -541,7 +541,7 @@ void DoubleToIStub::Generate(MacroAssembler* masm) { |
int double_offset = offset(); |
// Account for return address and saved regs if input is rsp. |
- if (input_reg.is(rsp)) double_offset += 3 * kPointerSize; |
+ if (input_reg.is(rsp)) double_offset += 3 * kRegisterSize; |
MemOperand mantissa_operand(MemOperand(input_reg, double_offset)); |
MemOperand exponent_operand(MemOperand(input_reg, |
@@ -561,14 +561,14 @@ void DoubleToIStub::Generate(MacroAssembler* masm) { |
// is the return register, then save the temp register we use in its stead |
// for the result. |
Register save_reg = final_result_reg.is(rcx) ? rax : rcx; |
- __ push(scratch1); |
- __ push(save_reg); |
+ __ pushq(scratch1); |
+ __ pushq(save_reg); |
bool stash_exponent_copy = !input_reg.is(rsp); |
__ movl(scratch1, mantissa_operand); |
__ movsd(xmm0, mantissa_operand); |
__ movl(rcx, exponent_operand); |
- if (stash_exponent_copy) __ push(rcx); |
+ if (stash_exponent_copy) __ pushq(rcx); |
__ andl(rcx, Immediate(HeapNumber::kExponentMask)); |
__ shrl(rcx, Immediate(HeapNumber::kExponentShift)); |
@@ -609,8 +609,8 @@ void DoubleToIStub::Generate(MacroAssembler* masm) { |
ASSERT(final_result_reg.is(rcx)); |
__ movl(final_result_reg, result_reg); |
} |
- __ pop(save_reg); |
- __ pop(scratch1); |
+ __ popq(save_reg); |
+ __ popq(scratch1); |
__ ret(0); |
} |
@@ -983,7 +983,7 @@ void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) { |
// by calling the runtime system. |
__ bind(&slow); |
__ PopReturnAddressTo(rbx); |
- __ push(rdx); |
+ __ Push(rdx); |
__ PushReturnAddressFrom(rbx); |
__ TailCallRuntime(Runtime::kGetArgumentsProperty, 1, 1); |
} |
@@ -2064,8 +2064,8 @@ void ICCompareStub::GenerateGeneric(MacroAssembler* masm) { |
// Push arguments below the return address to prepare jump to builtin. |
__ PopReturnAddressTo(rcx); |
- __ push(rdx); |
- __ push(rax); |
+ __ Push(rdx); |
+ __ Push(rax); |
// Figure out which native to call and setup the arguments. |
Builtins::JavaScript builtin; |
@@ -2154,19 +2154,19 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) { |
// Arguments register must be smi-tagged to call out. |
__ Integer32ToSmi(rax, rax); |
- __ push(rax); |
- __ push(rdi); |
+ __ Push(rax); |
+ __ Push(rdi); |
__ Integer32ToSmi(rdx, rdx); |
- __ push(rdx); |
- __ push(rbx); |
+ __ Push(rdx); |
+ __ Push(rbx); |
CreateAllocationSiteStub create_stub; |
__ CallStub(&create_stub); |
- __ pop(rbx); |
- __ pop(rdx); |
- __ pop(rdi); |
- __ pop(rax); |
+ __ Pop(rbx); |
+ __ Pop(rdx); |
+ __ Pop(rdi); |
+ __ Pop(rax); |
__ SmiToInteger32(rax, rax); |
} |
__ jmp(&done_no_smi_convert); |
@@ -2176,14 +2176,14 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) { |
rdi); |
// We won't need rdx or rbx anymore, just save rdi |
- __ push(rdi); |
- __ push(rbx); |
- __ push(rdx); |
+ __ Push(rdi); |
+ __ Push(rbx); |
+ __ Push(rdx); |
__ RecordWriteArray(rbx, rdi, rdx, kDontSaveFPRegs, |
EMIT_REMEMBERED_SET, OMIT_SMI_CHECK); |
- __ pop(rdx); |
- __ pop(rbx); |
- __ pop(rdi); |
+ __ Pop(rdx); |
+ __ Pop(rbx); |
+ __ Pop(rdi); |
__ bind(&done); |
__ Integer32ToSmi(rdx, rdx); |
@@ -2266,7 +2266,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) { |
__ CmpInstanceType(rcx, JS_FUNCTION_PROXY_TYPE); |
__ j(not_equal, &non_function); |
__ PopReturnAddressTo(rcx); |
- __ push(rdi); // put proxy as additional argument under return address |
+ __ Push(rdi); // put proxy as additional argument under return address |
__ PushReturnAddressFrom(rcx); |
__ Set(rax, argc_ + 1); |
__ Set(rbx, 0); |
@@ -2293,10 +2293,10 @@ void CallFunctionStub::Generate(MacroAssembler* masm) { |
__ bind(&wrap); |
// Wrap the receiver and patch it back onto the stack. |
{ FrameScope frame_scope(masm, StackFrame::INTERNAL); |
- __ push(rdi); |
- __ push(rax); |
+ __ Push(rdi); |
+ __ Push(rax); |
__ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); |
- __ pop(rdi); |
+ __ Pop(rdi); |
} |
__ movp(args.GetReceiverOperand(), rax); |
__ jmp(&cont); |
@@ -2633,7 +2633,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
{ // NOLINT. Scope block confuses linter. |
MacroAssembler::NoRootArrayScope uninitialized_root_register(masm); |
// Set up frame. |
- __ push(rbp); |
+ __ pushq(rbp); |
__ movp(rbp, rsp); |
// Push the stack frame type marker twice. |
@@ -2642,18 +2642,18 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
// platform. It's free to use at this point. |
// Cannot use smi-register for loading yet. |
__ Move(kScratchRegister, Smi::FromInt(marker), Assembler::RelocInfoNone()); |
- __ push(kScratchRegister); // context slot |
- __ push(kScratchRegister); // function slot |
- // Save callee-saved registers (X64/Win64 calling conventions). |
- __ push(r12); |
- __ push(r13); |
- __ push(r14); |
- __ push(r15); |
+ __ Push(kScratchRegister); // context slot |
+ __ Push(kScratchRegister); // function slot |
+ // Save callee-saved registers (X64/X32/Win64 calling conventions). |
+ __ pushq(r12); |
+ __ pushq(r13); |
+ __ pushq(r14); |
+ __ pushq(r15); |
#ifdef _WIN64 |
- __ push(rdi); // Only callee save in Win64 ABI, argument in AMD64 ABI. |
- __ push(rsi); // Only callee save in Win64 ABI, argument in AMD64 ABI. |
+ __ pushq(rdi); // Only callee save in Win64 ABI, argument in AMD64 ABI. |
+ __ pushq(rsi); // Only callee save in Win64 ABI, argument in AMD64 ABI. |
#endif |
- __ push(rbx); |
+ __ pushq(rbx); |
#ifdef _WIN64 |
// On Win64 XMM6-XMM15 are callee-save |
@@ -2682,7 +2682,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
ExternalReference c_entry_fp(Isolate::kCEntryFPAddress, isolate); |
{ |
Operand c_entry_fp_operand = masm->ExternalOperand(c_entry_fp); |
- __ push(c_entry_fp_operand); |
+ __ Push(c_entry_fp_operand); |
} |
// If this is the outermost JS call, set js_entry_sp value. |
@@ -2722,7 +2722,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
__ Store(pending_exception, rax); |
// Fake a receiver (NULL). |
- __ push(Immediate(0)); // receiver |
+ __ Push(Immediate(0)); // receiver |
// Invoke the function by calling through JS entry trampoline builtin and |
// pop the faked function when we return. We load the address from an |
@@ -2745,7 +2745,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
__ bind(&exit); |
// Check if the current stack frame is marked as the outermost JS frame. |
- __ pop(rbx); |
+ __ Pop(rbx); |
__ Cmp(rbx, Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)); |
__ j(not_equal, ¬_outermost_js_2); |
__ Move(kScratchRegister, js_entry_sp); |
@@ -2754,7 +2754,7 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
// Restore the top frame descriptor from the stack. |
{ Operand c_entry_fp_operand = masm->ExternalOperand(c_entry_fp); |
- __ pop(c_entry_fp_operand); |
+ __ Pop(c_entry_fp_operand); |
} |
// Restore callee-saved registers (X64 conventions). |
@@ -2773,20 +2773,20 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { |
__ addq(rsp, Immediate(EntryFrameConstants::kXMMRegistersBlockSize)); |
#endif |
- __ pop(rbx); |
+ __ popq(rbx); |
#ifdef _WIN64 |
// Callee save on in Win64 ABI, arguments/volatile in AMD64 ABI. |
- __ pop(rsi); |
- __ pop(rdi); |
+ __ popq(rsi); |
+ __ popq(rdi); |
#endif |
- __ pop(r15); |
- __ pop(r14); |
- __ pop(r13); |
- __ pop(r12); |
+ __ popq(r15); |
+ __ popq(r14); |
+ __ popq(r13); |
+ __ popq(r12); |
__ addq(rsp, Immediate(2 * kPointerSize)); // remove markers |
// Restore frame pointer and return. |
- __ pop(rbp); |
+ __ popq(rbp); |
__ ret(0); |
} |
@@ -2951,7 +2951,7 @@ void InstanceofStub::Generate(MacroAssembler* masm) { |
if (HasCallSiteInlineCheck()) { |
// Remove extra value from the stack. |
__ PopReturnAddressTo(rcx); |
- __ pop(rax); |
+ __ Pop(rax); |
__ PushReturnAddressFrom(rcx); |
} |
__ InvokeBuiltin(Builtins::INSTANCE_OF, JUMP_FUNCTION); |
@@ -3016,8 +3016,8 @@ void StringCharCodeAtGenerator::GenerateSlow( |
index_not_number_, |
DONT_DO_SMI_CHECK); |
call_helper.BeforeCall(masm); |
- __ push(object_); |
- __ push(index_); // Consumed by runtime conversion function. |
+ __ Push(object_); |
+ __ Push(index_); // Consumed by runtime conversion function. |
if (index_flags_ == STRING_INDEX_IS_NUMBER) { |
__ CallRuntime(Runtime::kNumberToIntegerMapMinusZero, 1); |
} else { |
@@ -3030,7 +3030,7 @@ void StringCharCodeAtGenerator::GenerateSlow( |
// have a chance to overwrite it. |
__ movp(index_, rax); |
} |
- __ pop(object_); |
+ __ Pop(object_); |
// Reload the instance type. |
__ movp(result_, FieldOperand(object_, HeapObject::kMapOffset)); |
__ movzxbl(result_, FieldOperand(result_, Map::kInstanceTypeOffset)); |
@@ -3045,9 +3045,9 @@ void StringCharCodeAtGenerator::GenerateSlow( |
// is too complex (e.g., when the string needs to be flattened). |
__ bind(&call_runtime_); |
call_helper.BeforeCall(masm); |
- __ push(object_); |
+ __ Push(object_); |
__ Integer32ToSmi(index_, index_); |
- __ push(index_); |
+ __ Push(index_); |
__ CallRuntime(Runtime::kStringCharCodeAt, 2); |
if (!result_.is(rax)) { |
__ movp(result_, rax); |
@@ -3085,7 +3085,7 @@ void StringCharFromCodeGenerator::GenerateSlow( |
__ bind(&slow_case_); |
call_helper.BeforeCall(masm); |
- __ push(code_); |
+ __ Push(code_); |
__ CallRuntime(Runtime::kCharFromCode, 1); |
if (!result_.is(rax)) { |
__ movp(result_, rax); |
@@ -4109,8 +4109,8 @@ void ICCompareStub::GenerateStrings(MacroAssembler* masm) { |
// Handle more complex cases in runtime. |
__ bind(&runtime); |
__ PopReturnAddressTo(tmp1); |
- __ push(left); |
- __ push(right); |
+ __ Push(left); |
+ __ Push(right); |
__ PushReturnAddressFrom(tmp1); |
if (equality) { |
__ TailCallRuntime(Runtime::kStringEquals, 2, 1); |
@@ -4170,17 +4170,17 @@ void ICCompareStub::GenerateMiss(MacroAssembler* masm) { |
ExternalReference(IC_Utility(IC::kCompareIC_Miss), masm->isolate()); |
FrameScope scope(masm, StackFrame::INTERNAL); |
- __ push(rdx); |
- __ push(rax); |
- __ push(rdx); |
- __ push(rax); |
+ __ Push(rdx); |
+ __ Push(rax); |
+ __ Push(rdx); |
+ __ Push(rax); |
__ Push(Smi::FromInt(op_)); |
__ CallExternalReference(miss, 3); |
// Compute the entry point of the rewritten stub. |
__ lea(rdi, FieldOperand(rax, Code::kHeaderSize)); |
- __ pop(rax); |
- __ pop(rdx); |
+ __ Pop(rax); |
+ __ Pop(rdx); |
} |
// Do a tail call to the rewritten stub. |
@@ -4242,7 +4242,7 @@ void NameDictionaryLookupStub::GenerateNegativeLookup(MacroAssembler* masm, |
NameDictionaryLookupStub stub(properties, r0, r0, NEGATIVE_LOOKUP); |
__ Push(Handle<Object>(name)); |
- __ push(Immediate(name->Hash())); |
+ __ Push(Immediate(name->Hash())); |
__ CallStub(&stub); |
__ testq(r0, r0); |
__ j(not_zero, miss); |
@@ -4291,10 +4291,10 @@ void NameDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm, |
} |
NameDictionaryLookupStub stub(elements, r0, r1, POSITIVE_LOOKUP); |
- __ push(name); |
+ __ Push(name); |
__ movl(r0, FieldOperand(name, Name::kHashFieldOffset)); |
__ shrl(r0, Immediate(Name::kHashShift)); |
- __ push(r0); |
+ __ Push(r0); |
__ CallStub(&stub); |
__ testq(r0, r0); |
@@ -4324,7 +4324,7 @@ void NameDictionaryLookupStub::Generate(MacroAssembler* masm) { |
__ SmiToInteger32(scratch, FieldOperand(dictionary_, kCapacityOffset)); |
__ decl(scratch); |
- __ push(scratch); |
+ __ Push(scratch); |
// If names of slots in range from 1 to kProbes - 1 for the hash value are |
// not equal to the name and kProbes-th slot is not used (its name is the |
@@ -4573,13 +4573,13 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker( |
// We need an extra register for this, so we push the object register |
// temporarily. |
- __ push(regs_.object()); |
+ __ Push(regs_.object()); |
__ EnsureNotWhite(regs_.scratch0(), // The value. |
regs_.scratch1(), // Scratch. |
regs_.object(), // Scratch. |
&need_incremental_pop_object, |
Label::kNear); |
- __ pop(regs_.object()); |
+ __ Pop(regs_.object()); |
regs_.Restore(masm); |
if (on_no_need == kUpdateRememberedSetOnNoNeedToInformIncrementalMarker) { |
@@ -4593,7 +4593,7 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker( |
} |
__ bind(&need_incremental_pop_object); |
- __ pop(regs_.object()); |
+ __ Pop(regs_.object()); |
__ bind(&need_incremental); |
@@ -4634,12 +4634,12 @@ void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) { |
__ bind(&slow_elements); |
__ PopReturnAddressTo(rdi); |
- __ push(rbx); |
- __ push(rcx); |
- __ push(rax); |
+ __ Push(rbx); |
+ __ Push(rcx); |
+ __ Push(rax); |
__ movp(rbx, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); |
- __ push(FieldOperand(rbx, JSFunction::kLiteralsOffset)); |
- __ push(rdx); |
+ __ Push(FieldOperand(rbx, JSFunction::kLiteralsOffset)); |
+ __ Push(rdx); |
__ PushReturnAddressFrom(rdi); |
__ TailCallRuntime(Runtime::kStoreArrayLiteralElement, 5, 1); |
@@ -4708,8 +4708,8 @@ void ProfileEntryHookStub::Generate(MacroAssembler* masm) { |
// This stub can be called from essentially anywhere, so it needs to save |
// all volatile and callee-save registers. |
const size_t kNumSavedRegisters = 2; |
- __ push(arg_reg_1); |
- __ push(arg_reg_2); |
+ __ pushq(arg_reg_1); |
+ __ pushq(arg_reg_2); |
// Calculate the original stack pointer and store it in the second arg. |
__ lea(arg_reg_2, |
@@ -4734,8 +4734,8 @@ void ProfileEntryHookStub::Generate(MacroAssembler* masm) { |
// Restore volatile regs. |
masm->PopCallerSaved(kSaveFPRegs, arg_reg_1, arg_reg_2); |
- __ pop(arg_reg_2); |
- __ pop(arg_reg_1); |
+ __ popq(arg_reg_2); |
+ __ popq(arg_reg_1); |
__ Ret(); |
} |
@@ -5116,29 +5116,29 @@ void CallApiFunctionStub::Generate(MacroAssembler* masm) { |
__ PopReturnAddressTo(return_address); |
// context save |
- __ push(context); |
+ __ Push(context); |
// load context from callee |
__ movp(context, FieldOperand(callee, JSFunction::kContextOffset)); |
// callee |
- __ push(callee); |
+ __ Push(callee); |
// call data |
- __ push(call_data); |
+ __ Push(call_data); |
Register scratch = call_data; |
if (!call_data_undefined) { |
__ LoadRoot(scratch, Heap::kUndefinedValueRootIndex); |
} |
// return value |
- __ push(scratch); |
+ __ Push(scratch); |
// return value default |
- __ push(scratch); |
+ __ Push(scratch); |
// isolate |
__ Move(scratch, |
ExternalReference::isolate_address(masm->isolate())); |
- __ push(scratch); |
+ __ Push(scratch); |
// holder |
- __ push(holder); |
+ __ Push(holder); |
__ movp(scratch, rsp); |
// Push return address back on stack. |