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); |
- } |
} |
} |