| Index: src/x64/lithium-codegen-x64.cc
|
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
|
| index 56e6cc216e5426e9f6530ec85d2f3d97db07666b..202e7a24fcd239a7fe47aacf26ac24f9fce5b33a 100644
|
| --- a/src/x64/lithium-codegen-x64.cc
|
| +++ b/src/x64/lithium-codegen-x64.cc
|
| @@ -149,7 +149,7 @@ bool LCodeGen::GeneratePrologue() {
|
| int slots = StackSlotCount();
|
| if (slots > 0) {
|
| if (FLAG_debug_code) {
|
| - __ movl(rax, Immediate(slots));
|
| + __ Set(rax, slots);
|
| __ movq(kScratchRegister, kSlotsZapValue, RelocInfo::NONE);
|
| Label loop;
|
| __ bind(&loop);
|
| @@ -1099,7 +1099,7 @@ void LCodeGen::DoSubI(LSubI* instr) {
|
|
|
| void LCodeGen::DoConstantI(LConstantI* instr) {
|
| ASSERT(instr->result()->IsRegister());
|
| - __ movl(ToRegister(instr->result()), Immediate(instr->value()));
|
| + __ Set(ToRegister(instr->result()), instr->value());
|
| }
|
|
|
|
|
| @@ -1514,10 +1514,11 @@ void LCodeGen::DoIsNull(LIsNull* instr) {
|
|
|
| __ CompareRoot(reg, Heap::kNullValueRootIndex);
|
| if (instr->is_strict()) {
|
| + ASSERT(Heap::kTrueValueRootIndex >= 0);
|
| __ movl(result, Immediate(Heap::kTrueValueRootIndex));
|
| NearLabel load;
|
| __ j(equal, &load);
|
| - __ movl(result, Immediate(Heap::kFalseValueRootIndex));
|
| + __ Set(result, Heap::kFalseValueRootIndex);
|
| __ bind(&load);
|
| __ LoadRootIndexed(result, result, 0);
|
| } else {
|
| @@ -1976,11 +1977,11 @@ void LCodeGen::DoDeferredLInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr,
|
| __ Push(instr->function());
|
|
|
| Register temp = ToRegister(instr->TempAt(0));
|
| - static const int kAdditionalDelta = 13;
|
| + static const int kAdditionalDelta = 10;
|
| int delta =
|
| masm_->SizeOfCodeGeneratedSince(map_check) + kAdditionalDelta;
|
| - __ movq(temp, Immediate(delta));
|
| - __ push(temp);
|
| + ASSERT(delta >= 0);
|
| + __ push_imm32(delta);
|
|
|
| // We are pushing three values on the stack but recording a
|
| // safepoint with two arguments because stub is going to
|
| @@ -1992,6 +1993,8 @@ void LCodeGen::DoDeferredLInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr,
|
| RECORD_SAFEPOINT_WITH_REGISTERS,
|
| 2);
|
| ASSERT(delta == masm_->SizeOfCodeGeneratedSince(map_check));
|
| + // Move result to a register that survives the end of the
|
| + // PushSafepointRegisterScope.
|
| __ movq(kScratchRegister, rax);
|
| }
|
| __ testq(kScratchRegister, kScratchRegister);
|
| @@ -2426,14 +2429,14 @@ void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) {
|
| } else {
|
| __ cmpq(rbp, ToOperand(instr->InputAt(0)));
|
| }
|
| - __ movq(result, Immediate(scope()->num_parameters()));
|
| + __ movl(result, Immediate(scope()->num_parameters()));
|
| __ j(equal, &done);
|
|
|
| // Arguments adaptor frame present. Get argument length from there.
|
| __ movq(result, Operand(rbp, StandardFrameConstants::kCallerFPOffset));
|
| - __ movq(result, Operand(result,
|
| - ArgumentsAdaptorFrameConstants::kLengthOffset));
|
| - __ SmiToInteger32(result, result);
|
| + __ SmiToInteger32(result,
|
| + Operand(result,
|
| + ArgumentsAdaptorFrameConstants::kLengthOffset));
|
|
|
| // Argument length is in result register.
|
| __ bind(&done);
|
| @@ -3415,7 +3418,7 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
| // conversions.
|
| __ CompareRoot(input_reg, Heap::kUndefinedValueRootIndex);
|
| DeoptimizeIf(not_equal, instr->environment());
|
| - __ movl(input_reg, Immediate(0));
|
| + __ Set(input_reg, 0);
|
| __ jmp(&done);
|
|
|
| __ bind(&heap_number);
|
|
|