| Index: src/crankshaft/mips64/lithium-codegen-mips64.cc
|
| diff --git a/src/crankshaft/mips64/lithium-codegen-mips64.cc b/src/crankshaft/mips64/lithium-codegen-mips64.cc
|
| index 6363c3f20a2db6494f7b5935f2526be43f19031c..37e2e2986f3a5273d290469b11d2856cd6b8610d 100644
|
| --- a/src/crankshaft/mips64/lithium-codegen-mips64.cc
|
| +++ b/src/crankshaft/mips64/lithium-codegen-mips64.cc
|
| @@ -2715,6 +2715,7 @@ void LCodeGen::DoHasInPrototypeChainAndBranch(
|
| LHasInPrototypeChainAndBranch* instr) {
|
| Register const object = ToRegister(instr->object());
|
| Register const object_map = scratch0();
|
| + Register const object_instance_type = scratch1();
|
| Register const object_prototype = object_map;
|
| Register const prototype = ToRegister(instr->prototype());
|
|
|
| @@ -2730,6 +2731,10 @@ void LCodeGen::DoHasInPrototypeChainAndBranch(
|
| __ ld(object_map, FieldMemOperand(object, HeapObject::kMapOffset));
|
| Label loop;
|
| __ bind(&loop);
|
| + __ lbu(object_instance_type,
|
| + FieldMemOperand(object_map, Map::kInstanceTypeOffset));
|
| + DeoptimizeIf(eq, instr, Deoptimizer::kProxy, object_instance_type,
|
| + Operand(JS_PROXY_TYPE));
|
| __ ld(object_prototype, FieldMemOperand(object_map, Map::kPrototypeOffset));
|
| EmitTrueBranch(instr, eq, object_prototype, Operand(prototype));
|
| __ LoadRoot(at, Heap::kNullValueRootIndex);
|
|
|