| Index: src/arm64/code-stubs-arm64.cc
|
| diff --git a/src/arm64/code-stubs-arm64.cc b/src/arm64/code-stubs-arm64.cc
|
| index 76807f803f0f1c4d3f10b41e76781b7133fcb1e8..90aad4556c2422fa63a28753704d734c1802882e 100644
|
| --- a/src/arm64/code-stubs-arm64.cc
|
| +++ b/src/arm64/code-stubs-arm64.cc
|
| @@ -1801,10 +1801,13 @@
|
| // x11 sloppy_args_map offset to args (or aliased args) map (uninit)
|
| // x14 arg_count number of function arguments
|
|
|
| + Register global_object = x10;
|
| Register global_ctx = x10;
|
| Register sloppy_args_map = x11;
|
| Register aliased_args_map = x10;
|
| - __ Ldr(global_ctx, NativeContextMemOperand());
|
| + __ Ldr(global_object, GlobalObjectMemOperand());
|
| + __ Ldr(global_ctx,
|
| + FieldMemOperand(global_object, JSGlobalObject::kNativeContextOffset));
|
|
|
| __ Ldr(sloppy_args_map,
|
| ContextMemOperand(global_ctx, Context::SLOPPY_ARGUMENTS_MAP_INDEX));
|
| @@ -2044,9 +2047,14 @@
|
| static_cast<AllocationFlags>(TAG_OBJECT | SIZE_IN_WORDS));
|
|
|
| // Get the arguments boilerplate from the current (native) context.
|
| + Register global_object = x10;
|
| + Register global_ctx = x10;
|
| Register strict_args_map = x4;
|
| - __ LoadNativeContextSlot(Context::STRICT_ARGUMENTS_MAP_INDEX,
|
| - strict_args_map);
|
| + __ Ldr(global_object, GlobalObjectMemOperand());
|
| + __ Ldr(global_ctx,
|
| + FieldMemOperand(global_object, JSGlobalObject::kNativeContextOffset));
|
| + __ Ldr(strict_args_map,
|
| + ContextMemOperand(global_ctx, Context::STRICT_ARGUMENTS_MAP_INDEX));
|
|
|
| // x0 alloc_obj pointer to allocated objects: parameter array and
|
| // arguments object
|
| @@ -2685,7 +2693,7 @@
|
| __ JumpIfNotRoot(feedback_map, Heap::kAllocationSiteMapRootIndex, &miss);
|
|
|
| // Make sure the function is the Array() function
|
| - __ LoadNativeContextSlot(Context::ARRAY_FUNCTION_INDEX, scratch1);
|
| + __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, scratch1);
|
| __ Cmp(function, scratch1);
|
| __ B(ne, &megamorphic);
|
| __ B(&done);
|
| @@ -2709,7 +2717,7 @@
|
| __ Bind(&initialize);
|
|
|
| // Make sure the function is the Array() function
|
| - __ LoadNativeContextSlot(Context::ARRAY_FUNCTION_INDEX, scratch1);
|
| + __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, scratch1);
|
| __ Cmp(function, scratch1);
|
| __ B(ne, ¬_array_function);
|
|
|
| @@ -2785,7 +2793,7 @@
|
| Register allocation_site = x4;
|
| Register scratch = x5;
|
|
|
| - __ LoadNativeContextSlot(Context::ARRAY_FUNCTION_INDEX, scratch);
|
| + __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, scratch);
|
| __ Cmp(function, scratch);
|
| __ B(ne, miss);
|
|
|
| @@ -2920,14 +2928,15 @@
|
|
|
| // Make sure the function is not the Array() function, which requires special
|
| // behavior on MISS.
|
| - __ LoadNativeContextSlot(Context::ARRAY_FUNCTION_INDEX, x5);
|
| + __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, x5);
|
| __ Cmp(function, x5);
|
| __ B(eq, &miss);
|
|
|
| - // Make sure the function belongs to the same native context.
|
| + // Make sure the function belongs to the same native context (which implies
|
| + // the same global object).
|
| __ Ldr(x4, FieldMemOperand(function, JSFunction::kContextOffset));
|
| - __ Ldr(x4, ContextMemOperand(x4, Context::NATIVE_CONTEXT_INDEX));
|
| - __ Ldr(x5, NativeContextMemOperand());
|
| + __ Ldr(x4, ContextMemOperand(x4, Context::GLOBAL_OBJECT_INDEX));
|
| + __ Ldr(x4, GlobalObjectMemOperand());
|
| __ Cmp(x4, x5);
|
| __ B(ne, &miss);
|
|
|
|
|