| Index: src/compiler/js-generic-lowering.cc | 
| diff --git a/src/compiler/js-generic-lowering.cc b/src/compiler/js-generic-lowering.cc | 
| index 4937b1dea37f3b3db16049fb57eecb4a6f19a602..b9b3c50cefb8f72a2532916057d210e33c4e399f 100644 | 
| --- a/src/compiler/js-generic-lowering.cc | 
| +++ b/src/compiler/js-generic-lowering.cc | 
| @@ -114,21 +114,12 @@ REPLACE_COMPARE_IC_CALL_WITH_LANGUAGE_MODE(JSGreaterThanOrEqual, Token::GTE) | 
| void JSGenericLowering::Lower##op(Node* node) { \ | 
| ReplaceWithRuntimeCall(node, fun);            \ | 
| } | 
| -REPLACE_RUNTIME_CALL(JSCreate, Runtime::kAbort) | 
| REPLACE_RUNTIME_CALL(JSCreateFunctionContext, Runtime::kNewFunctionContext) | 
| REPLACE_RUNTIME_CALL(JSCreateWithContext, Runtime::kPushWithContext) | 
| -REPLACE_RUNTIME_CALL(JSCreateBlockContext, Runtime::kPushBlockContext) | 
| REPLACE_RUNTIME_CALL(JSCreateModuleContext, Runtime::kPushModuleContext) | 
| -REPLACE_RUNTIME_CALL(JSCreateScriptContext, Runtime::kNewScriptContext) | 
| #undef REPLACE_RUNTIME | 
|  | 
|  | 
| -#define REPLACE_UNIMPLEMENTED(op) \ | 
| -  void JSGenericLowering::Lower##op(Node* node) { UNIMPLEMENTED(); } | 
| -REPLACE_UNIMPLEMENTED(JSYield) | 
| -#undef REPLACE_UNIMPLEMENTED | 
| - | 
| - | 
| static CallDescriptor::Flags FlagsForNode(Node* node) { | 
| CallDescriptor::Flags result = CallDescriptor::kNoFlags; | 
| if (OperatorProperties::GetFrameStateInputCount(node->op()) > 0) { | 
| @@ -489,6 +480,9 @@ void JSGenericLowering::LowerJSLoadDynamicContext(Node* node) { | 
| } | 
|  | 
|  | 
| +void JSGenericLowering::LowerJSCreate(Node* node) { UNIMPLEMENTED(); } | 
| + | 
| + | 
| void JSGenericLowering::LowerJSCreateArguments(Node* node) { | 
| const CreateArgumentsParameters& p = CreateArgumentsParametersOf(node->op()); | 
| switch (p.type()) { | 
| @@ -535,6 +529,20 @@ void JSGenericLowering::LowerJSCreateCatchContext(Node* node) { | 
| } | 
|  | 
|  | 
| +void JSGenericLowering::LowerJSCreateBlockContext(Node* node) { | 
| +  Handle<ScopeInfo> scope_info = OpParameter<Handle<ScopeInfo>>(node); | 
| +  node->InsertInput(zone(), 0, jsgraph()->HeapConstant(scope_info)); | 
| +  ReplaceWithRuntimeCall(node, Runtime::kPushBlockContext); | 
| +} | 
| + | 
| + | 
| +void JSGenericLowering::LowerJSCreateScriptContext(Node* node) { | 
| +  Handle<ScopeInfo> scope_info = OpParameter<Handle<ScopeInfo>>(node); | 
| +  node->InsertInput(zone(), 1, jsgraph()->HeapConstant(scope_info)); | 
| +  ReplaceWithRuntimeCall(node, Runtime::kNewScriptContext); | 
| +} | 
| + | 
| + | 
| void JSGenericLowering::LowerJSCallConstruct(Node* node) { | 
| int arity = OpParameter<int>(node); | 
| CallConstructStub stub(isolate(), SUPER_CONSTRUCTOR_CALL); | 
| @@ -784,6 +792,9 @@ void JSGenericLowering::LowerJSForInStep(Node* node) { | 
| } | 
|  | 
|  | 
| +void JSGenericLowering::LowerJSYield(Node* node) { UNIMPLEMENTED(); } | 
| + | 
| + | 
| void JSGenericLowering::LowerJSStackCheck(Node* node) { | 
| Node* effect = NodeProperties::GetEffectInput(node); | 
| Node* control = NodeProperties::GetControlInput(node); | 
|  |