Commit 24bddcd3 authored by balazs.kilvady's avatar balazs.kilvady Committed by Commit bot

MIPS64: Fix 'Fix keyed element access wrt string wrappers'.

Port 01f40e6a

BUG=v8:4296
LOG=n

Review URL: https://codereview.chromium.org/1233923002

Cr-Commit-Position: refs/heads/master@{#29624}
parent 25510907
......@@ -6216,19 +6216,28 @@ void MacroAssembler::JumpIfDictionaryInPrototypeChain(
DCHECK(!scratch1.is(scratch0));
Factory* factory = isolate()->factory();
Register current = scratch0;
Label loop_again;
Label loop_again, end;
// Scratch contained elements pointer.
Move(current, object);
ld(current, FieldMemOperand(current, HeapObject::kMapOffset));
ld(current, FieldMemOperand(current, Map::kPrototypeOffset));
Branch(&end, eq, current, Operand(factory->null_value()));
// Loop based on the map going up the prototype chain.
bind(&loop_again);
ld(current, FieldMemOperand(current, HeapObject::kMapOffset));
lbu(scratch1, FieldMemOperand(current, Map::kInstanceTypeOffset));
STATIC_ASSERT(JS_VALUE_TYPE < JS_OBJECT_TYPE);
STATIC_ASSERT(JS_PROXY_TYPE < JS_OBJECT_TYPE);
Branch(found, lo, scratch1, Operand(JS_OBJECT_TYPE));
lb(scratch1, FieldMemOperand(current, Map::kBitField2Offset));
DecodeField<Map::ElementsKindBits>(scratch1);
Branch(found, eq, scratch1, Operand(DICTIONARY_ELEMENTS));
ld(current, FieldMemOperand(current, Map::kPrototypeOffset));
Branch(&loop_again, ne, current, Operand(factory->null_value()));
bind(&end);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment