| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index 5cf1d59e490840a6d12f1fee2dc324b882b32475..977982d21b87b3491500b6902a255717c6d02d2a 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -1647,6 +1647,11 @@ void LCodeGen::DoConstantD(LConstantD* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoConstantE(LConstantE* instr) {
|
| + __ li(ToRegister(instr->result()), Operand(instr->value()));
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoConstantT(LConstantT* instr) {
|
| Handle<Object> value = instr->value();
|
| AllowDeferredHandleDereference smi_check;
|
| @@ -2867,6 +2872,13 @@ void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) {
|
| HObjectAccess access = instr->hydrogen()->access();
|
| int offset = access.offset();
|
| Register object = ToRegister(instr->object());
|
| +
|
| + if (access.IsExternalMemory()) {
|
| + Register result = ToRegister(instr->result());
|
| + __ lw(result, MemOperand(object, offset));
|
| + return;
|
| + }
|
| +
|
| if (instr->hydrogen()->representation().IsDouble()) {
|
| DoubleRegister result = ToDoubleRegister(instr->result());
|
| __ ldc1(result, FieldMemOperand(object, offset));
|
| @@ -4104,6 +4116,12 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| HObjectAccess access = instr->hydrogen()->access();
|
| int offset = access.offset();
|
|
|
| + if (access.IsExternalMemory()) {
|
| + Register value = ToRegister(instr->value());
|
| + __ sw(value, MemOperand(object, offset));
|
| + return;
|
| + }
|
| +
|
| Handle<Map> transition = instr->transition();
|
|
|
| if (FLAG_track_heap_object_fields && representation.IsHeapObject()) {
|
|
|