| Index: src/arm64/macro-assembler-arm64.cc
|
| diff --git a/src/arm64/macro-assembler-arm64.cc b/src/arm64/macro-assembler-arm64.cc
|
| index b5d52bdf3d0fe0ea345b0d7a17b1f3947a431484..bc6882573d580303cce93e823854ae07f31e00e3 100644
|
| --- a/src/arm64/macro-assembler-arm64.cc
|
| +++ b/src/arm64/macro-assembler-arm64.cc
|
| @@ -4471,16 +4471,19 @@ void MacroAssembler::LoadTransitionedArrayMapConditional(
|
| Register scratch1,
|
| Register scratch2,
|
| Label* no_map_match) {
|
| + DCHECK(IsFastElementsKind(expected_kind));
|
| + DCHECK(IsFastElementsKind(transitioned_kind));
|
| +
|
| // Check that the function's map is the same as the expected cached map.
|
| - LoadNativeContextSlot(Context::JS_ARRAY_MAPS_INDEX, scratch1);
|
| - int offset = (expected_kind * kPointerSize) + FixedArrayBase::kHeaderSize;
|
| - Ldr(scratch2, FieldMemOperand(scratch1, offset));
|
| + Ldr(scratch1, NativeContextMemOperand());
|
| + Ldr(scratch2,
|
| + ContextMemOperand(scratch1, Context::ArrayMapIndex(expected_kind)));
|
| Cmp(map_in_out, scratch2);
|
| B(ne, no_map_match);
|
|
|
| // Use the transitioned cached map.
|
| - offset = (transitioned_kind * kPointerSize) + FixedArrayBase::kHeaderSize;
|
| - Ldr(map_in_out, FieldMemOperand(scratch1, offset));
|
| + Ldr(map_in_out,
|
| + ContextMemOperand(scratch1, Context::ArrayMapIndex(transitioned_kind)));
|
| }
|
|
|
|
|
|
|