| Index: src/crankshaft/hydrogen.cc
|
| diff --git a/src/crankshaft/hydrogen.cc b/src/crankshaft/hydrogen.cc
|
| index 6d5a81460b7dbe68a19751e5c3df74cf85ad0bd8..e1cf7d808035bc4ac41a6187c2fdda76c7f60cc9 100644
|
| --- a/src/crankshaft/hydrogen.cc
|
| +++ b/src/crankshaft/hydrogen.cc
|
| @@ -1859,11 +1859,9 @@ HValue* HGraphBuilder::BuildRegExpConstructResult(HValue* length,
|
| NOT_TENURED, JS_ARRAY_TYPE);
|
|
|
| // Initialize the JSRegExpResult header.
|
| - HValue* global_object = Add<HLoadNamedField>(
|
| - context(), nullptr,
|
| - HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| HValue* native_context = Add<HLoadNamedField>(
|
| - global_object, nullptr, HObjectAccess::ForJSGlobalObjectNativeContext());
|
| + context(), nullptr,
|
| + HObjectAccess::ForContextSlot(Context::NATIVE_CONTEXT_INDEX));
|
| Add<HStoreNamedField>(
|
| result, HObjectAccess::ForMap(),
|
| Add<HLoadNamedField>(
|
| @@ -3260,13 +3258,9 @@ void HGraphBuilder::BuildCreateAllocationMemento(
|
|
|
|
|
| HInstruction* HGraphBuilder::BuildGetNativeContext() {
|
| - // Get the global object, then the native context
|
| - HValue* global_object = Add<HLoadNamedField>(
|
| + return Add<HLoadNamedField>(
|
| context(), nullptr,
|
| - HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| - return Add<HLoadNamedField>(global_object, nullptr,
|
| - HObjectAccess::ForObservableJSObjectOffset(
|
| - JSGlobalObject::kNativeContextOffset));
|
| + HObjectAccess::ForContextSlot(Context::NATIVE_CONTEXT_INDEX));
|
| }
|
|
|
|
|
| @@ -3274,12 +3268,9 @@ HInstruction* HGraphBuilder::BuildGetNativeContext(HValue* closure) {
|
| // Get the global object, then the native context
|
| HInstruction* context = Add<HLoadNamedField>(
|
| closure, nullptr, HObjectAccess::ForFunctionContextPointer());
|
| - HInstruction* global_object = Add<HLoadNamedField>(
|
| + return Add<HLoadNamedField>(
|
| context, nullptr,
|
| - HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| - HObjectAccess access = HObjectAccess::ForObservableJSObjectOffset(
|
| - JSGlobalObject::kNativeContextOffset);
|
| - return Add<HLoadNamedField>(global_object, nullptr, access);
|
| + HObjectAccess::ForContextSlot(Context::NATIVE_CONTEXT_INDEX));
|
| }
|
|
|
|
|
| @@ -3550,12 +3541,7 @@ HAllocate* HGraphBuilder::JSArrayBuilder::AllocateArray(
|
|
|
|
|
| HValue* HGraphBuilder::AddLoadJSBuiltin(int context_index) {
|
| - HValue* global_object = Add<HLoadNamedField>(
|
| - context(), nullptr,
|
| - HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| - HObjectAccess access = HObjectAccess::ForObservableJSObjectOffset(
|
| - JSGlobalObject::kNativeContextOffset);
|
| - HValue* native_context = Add<HLoadNamedField>(global_object, nullptr, access);
|
| + HValue* native_context = BuildGetNativeContext();
|
| HObjectAccess function_access = HObjectAccess::ForContextSlot(context_index);
|
| return Add<HLoadNamedField>(native_context, nullptr, function_access);
|
| }
|
| @@ -5714,8 +5700,8 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
|
| }
|
| } else {
|
| HValue* global_object = Add<HLoadNamedField>(
|
| - context(), nullptr,
|
| - HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| + BuildGetNativeContext(), nullptr,
|
| + HObjectAccess::ForContextSlot(Context::EXTENSION_INDEX));
|
| HLoadGlobalGeneric* instr = New<HLoadGlobalGeneric>(
|
| global_object, variable->name(), ast_context()->typeof_mode());
|
| instr->SetVectorAndSlot(handle(current_feedback_vector(), isolate()),
|
| @@ -6928,8 +6914,8 @@ void HOptimizedGraphBuilder::HandleGlobalVariableAssignment(
|
| }
|
| } else {
|
| HValue* global_object = Add<HLoadNamedField>(
|
| - context(), nullptr,
|
| - HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| + BuildGetNativeContext(), nullptr,
|
| + HObjectAccess::ForContextSlot(Context::EXTENSION_INDEX));
|
| HStoreNamedGeneric* instr =
|
| Add<HStoreNamedGeneric>(global_object, var->name(), value,
|
| function_language_mode(), PREMONOMORPHIC);
|
| @@ -10031,11 +10017,7 @@ HValue* HGraphBuilder::BuildAllocateEmptyArrayBuffer(HValue* byte_length) {
|
| BuildAllocate(Add<HConstant>(JSArrayBuffer::kSizeWithInternalFields),
|
| HType::JSObject(), JS_ARRAY_BUFFER_TYPE, HAllocationMode());
|
|
|
| - HValue* global_object = Add<HLoadNamedField>(
|
| - context(), nullptr,
|
| - HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| - HValue* native_context = Add<HLoadNamedField>(
|
| - global_object, nullptr, HObjectAccess::ForJSGlobalObjectNativeContext());
|
| + HValue* native_context = BuildGetNativeContext();
|
| Add<HStoreNamedField>(
|
| result, HObjectAccess::ForMap(),
|
| Add<HLoadNamedField>(
|
|
|