Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 85efcc9907c04116a3dfd77e5975111a10c47809..e6442a565a598d036cc62c30695454ce40e4c4d0 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -2104,6 +2104,14 @@ void LCodeGen::DoStoreGlobal(LStoreGlobal* instr) { |
} |
+void LCodeGen::DoLoadContextSlot(LLoadContextSlot* instr) { |
+ // TODO(antonm): load a context with a separate instruction. |
+ Register result = ToRegister(instr->result()); |
+ __ LoadContext(result, instr->context_chain_length()); |
+ __ mov(result, ContextOperand(result, instr->slot_index())); |
+} |
+ |
+ |
void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) { |
Register object = ToRegister(instr->input()); |
Register result = ToRegister(instr->result()); |
@@ -3295,13 +3303,13 @@ void LCodeGen::DoCheckMap(LCheckMap* instr) { |
} |
-void LCodeGen::LoadPrototype(Register result, Handle<JSObject> prototype) { |
- if (Heap::InNewSpace(*prototype)) { |
+void LCodeGen::LoadHeapObject(Register result, Handle<HeapObject> object) { |
+ if (Heap::InNewSpace(*object)) { |
Handle<JSGlobalPropertyCell> cell = |
- Factory::NewJSGlobalPropertyCell(prototype); |
+ Factory::NewJSGlobalPropertyCell(object); |
__ mov(result, Operand::Cell(cell)); |
} else { |
- __ mov(result, prototype); |
+ __ mov(result, object); |
} |
} |
@@ -3313,7 +3321,7 @@ void LCodeGen::DoCheckPrototypeMaps(LCheckPrototypeMaps* instr) { |
Handle<JSObject> current_prototype = instr->prototype(); |
// Load prototype object. |
- LoadPrototype(reg, current_prototype); |
+ LoadHeapObject(reg, current_prototype); |
// Check prototype maps up to the holder. |
while (!current_prototype.is_identical_to(holder)) { |
@@ -3323,7 +3331,7 @@ void LCodeGen::DoCheckPrototypeMaps(LCheckPrototypeMaps* instr) { |
current_prototype = |
Handle<JSObject>(JSObject::cast(current_prototype->GetPrototype())); |
// Load next prototype object. |
- LoadPrototype(reg, current_prototype); |
+ LoadHeapObject(reg, current_prototype); |
} |
// Check the holder map. |