Index: src/compiler/js-generic-lowering.cc |
diff --git a/src/compiler/js-generic-lowering.cc b/src/compiler/js-generic-lowering.cc |
index 5d1583142c1d5da49a3201c501a14ec947246615..0cb36059f4c770add1ab729cf456d7263868935d 100644 |
--- a/src/compiler/js-generic-lowering.cc |
+++ b/src/compiler/js-generic-lowering.cc |
@@ -155,12 +155,11 @@ class KeyedStoreICStubShim : public HydrogenCodeStub { |
}; |
-JSGenericLowering::JSGenericLowering(CompilationInfo* info, JSGraph* jsgraph, |
+JSGenericLowering::JSGenericLowering(JSGraph* jsgraph, |
+ JSContextSpecializer* spec, |
+ Linkage* linkage, |
MachineOperatorBuilder* machine) |
- : info_(info), |
- jsgraph_(jsgraph), |
- linkage_(new (jsgraph->zone()) Linkage(info)), |
- machine_(machine) {} |
+ : jsgraph_(jsgraph), spec_(spec), linkage_(linkage), machine_(machine) {} |
void JSGenericLowering::PatchOperator(Node* node, Operator* op) { |
@@ -340,12 +339,9 @@ void JSGenericLowering::ReplaceWithBuiltinCall(Node* node, |
CallFunctionStub stub(isolate(), nargs - 1, NO_CALL_FUNCTION_FLAGS); |
CodeStubInterfaceDescriptor* d = GetInterfaceDescriptor(isolate(), &stub); |
CallDescriptor* desc = linkage()->GetStubCallDescriptor(d, nargs); |
- // TODO(mstarzinger): Accessing the builtins object this way prevents sharing |
- // of code across native contexts. Fix this by loading from given context. |
- Handle<JSFunction> function( |
- JSFunction::cast(info()->context()->builtins()->javascript_builtin(id))); |
+ |
+ Node* function_node = spec_->InsertBuiltinLoadBefore(node, id); |
Node* stub_code = CodeConstant(stub.GetCode()); |
- Node* function_node = FunctionConstant(function); |
PatchInsertInput(node, 0, stub_code); |
PatchInsertInput(node, 1, function_node); |
PatchOperator(node, common()->Call(desc)); |
@@ -417,9 +413,7 @@ Node* JSGenericLowering::LowerJSLoadNamed(Node* node) { |
Node* JSGenericLowering::LowerJSStoreProperty(Node* node) { |
- // TODO(mstarzinger): The strict_mode needs to be carried along in the |
- // operator so that graphs are fully compositional for inlining. |
- StrictMode strict_mode = info()->strict_mode(); |
+ StrictMode strict_mode = OpParameter<StrictMode>(node); |
KeyedStoreICStubShim stub(isolate(), strict_mode); |
ReplaceWithICStubCall(node, &stub); |
return node; |
@@ -427,12 +421,9 @@ Node* JSGenericLowering::LowerJSStoreProperty(Node* node) { |
Node* JSGenericLowering::LowerJSStoreNamed(Node* node) { |
- PrintableUnique<Name> key = OpParameter<PrintableUnique<Name> >(node); |
- // TODO(mstarzinger): The strict_mode needs to be carried along in the |
- // operator so that graphs are fully compositional for inlining. |
- StrictMode strict_mode = info()->strict_mode(); |
- StoreICStubShim stub(isolate(), strict_mode); |
- PatchInsertInput(node, 1, jsgraph()->HeapConstant(key)); |
+ StoreNamedParameters params = OpParameter<StoreNamedParameters>(node); |
+ StoreICStubShim stub(isolate(), params.strict_mode); |
+ PatchInsertInput(node, 1, jsgraph()->HeapConstant(params.name)); |
ReplaceWithICStubCall(node, &stub); |
return node; |
} |