| Index: src/ia32/fast-codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/fast-codegen-ia32.cc (revision 3421)
|
| +++ src/ia32/fast-codegen-ia32.cc (working copy)
|
| @@ -855,7 +855,7 @@
|
| void FastCodeGenerator::EmitVariableAssignment(Assignment* expr) {
|
| Variable* var = expr->target()->AsVariableProxy()->AsVariable();
|
| ASSERT(var != NULL);
|
| -
|
| + ASSERT(var->is_global() || var->slot() != NULL);
|
| if (var->is_global()) {
|
| // Assignment to a global variable. Use inline caching for the
|
| // assignment. Right-hand-side value is passed in eax, variable name in
|
| @@ -960,35 +960,6 @@
|
| UNREACHABLE();
|
| break;
|
| }
|
| - } else {
|
| - Property* property = var->rewrite()->AsProperty();
|
| - ASSERT_NOT_NULL(property);
|
| -
|
| - // Load object and key onto the stack.
|
| - Slot* object_slot = property->obj()->AsSlot();
|
| - ASSERT_NOT_NULL(object_slot);
|
| - Move(Expression::kValue, object_slot, eax);
|
| -
|
| - Literal* key_literal = property->key()->AsLiteral();
|
| - ASSERT_NOT_NULL(key_literal);
|
| - Move(Expression::kValue, key_literal);
|
| -
|
| - // Value to store was pushed before object and key on the stack.
|
| - __ mov(eax, Operand(esp, 2 * kPointerSize));
|
| -
|
| - // Arguments to ic is value in eax, object and key on stack.
|
| - Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
|
| - __ call(ic, RelocInfo::CODE_TARGET);
|
| -
|
| - if (expr->context() == Expression::kEffect) {
|
| - __ add(Operand(esp), Immediate(3 * kPointerSize));
|
| - } else if (expr->context() == Expression::kValue) {
|
| - // Value is still on the stack in esp[2 * kPointerSize]
|
| - __ add(Operand(esp), Immediate(2 * kPointerSize));
|
| - } else {
|
| - __ mov(eax, Operand(esp, 2 * kPointerSize));
|
| - DropAndMove(expr->context(), eax, 3);
|
| - }
|
| }
|
| }
|
|
|
|
|