Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index 758276b2bdd757a82f6c82c9a0c5c0124bdcc5ab..b1ca96503c7cae3370b6223f480df11aa8dabeda 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -2921,90 +2921,6 @@ void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) { |
} |
-void LCodeGen::EmitLoadFieldOrConstantFunction(Register result, |
- Register object, |
- Handle<Map> type, |
- Handle<String> name, |
- LEnvironment* env) { |
- LookupResult lookup(isolate()); |
- type->LookupDescriptor(NULL, *name, &lookup); |
- ASSERT(lookup.IsFound() || lookup.IsCacheable()); |
- if (lookup.IsField()) { |
- int index = lookup.GetLocalFieldIndexFromMap(*type); |
- int offset = index * kPointerSize; |
- if (index < 0) { |
- // Negative property indices are in-object properties, indexed |
- // from the end of the fixed part of the object. |
- __ lw(result, FieldMemOperand(object, offset + type->instance_size())); |
- } else { |
- // Non-negative property indices are in the properties array. |
- __ lw(result, FieldMemOperand(object, JSObject::kPropertiesOffset)); |
- __ lw(result, FieldMemOperand(result, offset + FixedArray::kHeaderSize)); |
- } |
- } else if (lookup.IsConstant()) { |
- Handle<Object> constant(lookup.GetConstantFromMap(*type), isolate()); |
- __ LoadObject(result, constant); |
- } else { |
- // Negative lookup. |
- // Check prototypes. |
- Handle<HeapObject> current(HeapObject::cast((*type)->prototype())); |
- Heap* heap = type->GetHeap(); |
- while (*current != heap->null_value()) { |
- __ LoadHeapObject(result, current); |
- __ lw(result, FieldMemOperand(result, HeapObject::kMapOffset)); |
- DeoptimizeIf(ne, env, result, Operand(Handle<Map>(current->map()))); |
- current = |
- Handle<HeapObject>(HeapObject::cast(current->map()->prototype())); |
- } |
- __ LoadRoot(result, Heap::kUndefinedValueRootIndex); |
- } |
-} |
- |
- |
-void LCodeGen::DoLoadNamedFieldPolymorphic(LLoadNamedFieldPolymorphic* instr) { |
- Register object = ToRegister(instr->object()); |
- Register result = ToRegister(instr->result()); |
- Register object_map = scratch0(); |
- |
- int map_count = instr->hydrogen()->types()->length(); |
- bool need_generic = instr->hydrogen()->need_generic(); |
- |
- if (map_count == 0 && !need_generic) { |
- DeoptimizeIf(al, instr->environment()); |
- return; |
- } |
- Handle<String> name = instr->hydrogen()->name(); |
- Label done; |
- __ lw(object_map, FieldMemOperand(object, HeapObject::kMapOffset)); |
- for (int i = 0; i < map_count; ++i) { |
- bool last = (i == map_count - 1); |
- Handle<Map> map = instr->hydrogen()->types()->at(i); |
- Label check_passed; |
- __ CompareMapAndBranch(object_map, map, &check_passed, eq, &check_passed); |
- if (last && !need_generic) { |
- DeoptimizeIf(al, instr->environment()); |
- __ bind(&check_passed); |
- EmitLoadFieldOrConstantFunction( |
- result, object, map, name, instr->environment()); |
- } else { |
- Label next; |
- __ Branch(&next); |
- __ bind(&check_passed); |
- EmitLoadFieldOrConstantFunction( |
- result, object, map, name, instr->environment()); |
- __ Branch(&done); |
- __ bind(&next); |
- } |
- } |
- if (need_generic) { |
- __ li(a2, Operand(name)); |
- Handle<Code> ic = isolate()->builtins()->LoadIC_Initialize(); |
- CallCode(ic, RelocInfo::CODE_TARGET, instr); |
- } |
- __ bind(&done); |
-} |
- |
- |
void LCodeGen::DoLoadNamedGeneric(LLoadNamedGeneric* instr) { |
ASSERT(ToRegister(instr->object()).is(a0)); |
ASSERT(ToRegister(instr->result()).is(v0)); |