| Index: src/arm64/full-codegen-arm64.cc
|
| diff --git a/src/arm64/full-codegen-arm64.cc b/src/arm64/full-codegen-arm64.cc
|
| index 37c9ed3aa05026d78ba86ed98638399f6b2070a1..438907e8002ce553d24edfc684e0871774f80aa0 100644
|
| --- a/src/arm64/full-codegen-arm64.cc
|
| +++ b/src/arm64/full-codegen-arm64.cc
|
| @@ -1165,8 +1165,9 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| FieldMemOperand(x2, DescriptorArray::kEnumCacheBridgeCacheOffset));
|
|
|
| // Set up the four remaining stack slots.
|
| - __ Push(x0, x2); // Map, enumeration cache.
|
| - __ SmiTagAndPush(x1, xzr); // Enum cache length, zero (both as smis).
|
| + __ SmiTag(x1);
|
| + // Map, enumeration cache, enum cache length, zero (both last as smis).
|
| + __ Push(x0, x2, x1, xzr);
|
| __ B(&loop);
|
|
|
| __ Bind(&no_descriptors);
|
| @@ -1187,9 +1188,9 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| __ CompareObjectType(x10, x11, x12, LAST_JS_PROXY_TYPE);
|
| ASSERT(Smi::FromInt(0) == 0);
|
| __ CzeroX(x1, le); // Zero indicates proxy.
|
| - __ Push(x1, x0); // Smi and array
|
| - __ Ldr(x1, FieldMemOperand(x0, FixedArray::kLengthOffset));
|
| - __ Push(x1, xzr); // Fixed array length (as smi) and initial index.
|
| + __ Ldr(x2, FieldMemOperand(x0, FixedArray::kLengthOffset));
|
| + // Smi and array, fixed array length (as smi) and initial index.
|
| + __ Push(x1, x0, x2, xzr);
|
|
|
| // Generate code for doing the condition check.
|
| PrepareForBailoutForId(stmt->BodyId(), NO_REGISTERS);
|
| @@ -1802,8 +1803,8 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
| if (CompileTimeValue::IsCompileTimeValue(subexpr)) continue;
|
|
|
| if (!result_saved) {
|
| - __ Push(x0);
|
| - __ Push(Smi::FromInt(expr->literal_index()));
|
| + __ Mov(x1, Smi::FromInt(expr->literal_index()));
|
| + __ Push(x0, x1);
|
| result_saved = true;
|
| }
|
| VisitForAccumulatorValue(subexpr);
|
| @@ -2164,9 +2165,8 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
| // Const initializers need a write barrier.
|
| ASSERT(!var->IsParameter()); // No const parameters.
|
| if (var->IsLookupSlot()) {
|
| - __ Push(x0);
|
| - __ Mov(x0, Operand(var->name()));
|
| - __ Push(cp, x0); // Context and name.
|
| + __ Mov(x1, Operand(var->name()));
|
| + __ Push(x0, cp, x1);
|
| __ CallRuntime(Runtime::kInitializeConstContextSlot, 3);
|
| } else {
|
| ASSERT(var->IsStackLocal() || var->IsContextSlot());
|
| @@ -2380,16 +2380,13 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) {
|
| int receiver_offset = 2 + info_->scope()->num_parameters();
|
| __ Ldr(x11, MemOperand(fp, receiver_offset * kPointerSize));
|
|
|
| - // Push.
|
| - __ Push(x10, x11);
|
| -
|
| // Prepare to push the language mode.
|
| - __ Mov(x10, Smi::FromInt(strict_mode()));
|
| + __ Mov(x12, Smi::FromInt(strict_mode()));
|
| // Prepare to push the start position of the scope the calls resides in.
|
| - __ Mov(x11, Smi::FromInt(scope()->start_position()));
|
| + __ Mov(x13, Smi::FromInt(scope()->start_position()));
|
|
|
| // Push.
|
| - __ Push(x10, x11);
|
| + __ Push(x10, x11, x12, x13);
|
|
|
| // Do the runtime call.
|
| __ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5);
|
| @@ -2466,9 +2463,8 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
| __ Bind(&slow);
|
| // Call the runtime to find the function to call (returned in x0)
|
| // and the object holding it (returned in x1).
|
| - __ Push(context_register());
|
| __ Mov(x10, Operand(proxy->name()));
|
| - __ Push(x10);
|
| + __ Push(context_register(), x10);
|
| __ CallRuntime(Runtime::kLoadContextSlot, 2);
|
| __ Push(x0, x1); // Receiver, function.
|
|
|
| @@ -2480,11 +2476,10 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
| __ B(&call);
|
| __ Bind(&done);
|
| // Push function.
|
| - __ Push(x0);
|
| // The receiver is implicitly the global receiver. Indicate this
|
| // by passing the undefined to the call function stub.
|
| __ LoadRoot(x1, Heap::kUndefinedValueRootIndex);
|
| - __ Push(x1);
|
| + __ Push(x0, x1);
|
| __ Bind(&call);
|
| }
|
|
|
|
|