Index: src/arm/codegen-arm.cc |
=================================================================== |
--- src/arm/codegen-arm.cc (revision 4554) |
+++ src/arm/codegen-arm.cc (working copy) |
@@ -1563,12 +1563,11 @@ |
void CodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) { |
- VirtualFrame::SpilledScope spilled_scope(frame_); |
frame_->EmitPush(cp); |
- __ mov(r0, Operand(pairs)); |
- frame_->EmitPush(r0); |
- __ mov(r0, Operand(Smi::FromInt(is_eval() ? 1 : 0))); |
- frame_->EmitPush(r0); |
+ frame_->EmitPush(Operand(pairs)); |
+ frame_->EmitPush(Operand(Smi::FromInt(is_eval() ? 1 : 0))); |
+ |
+ VirtualFrame::SpilledScope spilled_scope(frame_); |
frame_->CallRuntime(Runtime::kDeclareGlobals, 3); |
// The result is discarded. |
} |
@@ -1578,7 +1577,6 @@ |
#ifdef DEBUG |
int original_height = frame_->height(); |
#endif |
- VirtualFrame::SpilledScope spilled_scope(frame_); |
Comment cmnt(masm_, "[ Declaration"); |
Variable* var = node->proxy()->var(); |
ASSERT(var != NULL); // must have been resolved |
@@ -1593,28 +1591,27 @@ |
ASSERT(var->is_dynamic()); |
// For now, just do a runtime call. |
frame_->EmitPush(cp); |
- __ mov(r0, Operand(var->name())); |
- frame_->EmitPush(r0); |
+ frame_->EmitPush(Operand(var->name())); |
// Declaration nodes are always declared in only two modes. |
ASSERT(node->mode() == Variable::VAR || node->mode() == Variable::CONST); |
PropertyAttributes attr = node->mode() == Variable::VAR ? NONE : READ_ONLY; |
- __ mov(r0, Operand(Smi::FromInt(attr))); |
- frame_->EmitPush(r0); |
+ frame_->EmitPush(Operand(Smi::FromInt(attr))); |
// Push initial value, if any. |
// Note: For variables we must not push an initial value (such as |
// 'undefined') because we may have a (legal) redeclaration and we |
// must not destroy the current value. |
if (node->mode() == Variable::CONST) { |
- __ LoadRoot(r0, Heap::kTheHoleValueRootIndex); |
- frame_->EmitPush(r0); |
+ frame_->EmitPushRoot(Heap::kTheHoleValueRootIndex); |
} else if (node->fun() != NULL) { |
- LoadAndSpill(node->fun()); |
+ Load(node->fun()); |
} else { |
- __ mov(r0, Operand(0)); // no initial value! |
- frame_->EmitPush(r0); |
+ frame_->EmitPush(Operand(0)); |
} |
+ |
+ VirtualFrame::SpilledScope spilled_scope(frame_); |
frame_->CallRuntime(Runtime::kDeclareContextSlot, 4); |
// Ignore the return value (declarations are statements). |
+ |
ASSERT(frame_->height() == original_height); |
return; |
} |
@@ -1630,12 +1627,11 @@ |
} |
if (val != NULL) { |
- { |
- // Set initial value. |
- Reference target(this, node->proxy()); |
- LoadAndSpill(val); |
- target.SetValue(NOT_CONST_INIT); |
- } |
+ // Set initial value. |
+ Reference target(this, node->proxy()); |
+ Load(val); |
+ target.SetValue(NOT_CONST_INIT); |
+ |
// Get rid of the assigned value (declarations are statements). |
frame_->Drop(); |
} |