Add missing FrameState to harmony class literals.
authormstarzinger <mstarzinger@chromium.org>
Wed, 21 Jan 2015 18:46:47 +0000 (10:46 -0800)
committerCommit bot <commit-bot@chromium.org>
Wed, 21 Jan 2015 18:46:56 +0000 (18:46 +0000)
R=bmeurer@chromium.org
TEST=mjsunit/harmony/classes

Review URL: https://codereview.chromium.org/864033002

Cr-Commit-Position: refs/heads/master@{#26202}

src/compiler/ast-graph-builder.cc
src/compiler/linkage.cc
test/mjsunit/mjsunit.status

index f2d0291..f001455 100644 (file)
@@ -932,7 +932,9 @@ void AstGraphBuilder::VisitClassLiteralContents(ClassLiteral* expr) {
     if (FunctionLiteral::NeedsHomeObject(property->value())) {
       Unique<Name> name =
           MakeUnique(isolate()->factory()->home_object_symbol());
-      NewNode(javascript()->StoreNamed(strict_mode(), name), value, receiver);
+      Node* store = NewNode(javascript()->StoreNamed(strict_mode(), name),
+                            value, receiver);
+      PrepareFrameState(store, BailoutId::None());
     }
   }
 
@@ -948,6 +950,7 @@ void AstGraphBuilder::VisitClassLiteralContents(ClassLiteral* expr) {
     BuildVariableAssignment(var, literal, Token::INIT_CONST, BailoutId::None());
   }
 
+  PrepareFrameState(literal, expr->id(), ast_context()->GetStateCombine());
   ast_context()->ProduceValue(literal);
 }
 
@@ -1461,11 +1464,12 @@ void AstGraphBuilder::VisitCall(Call* expr) {
       flags = CALL_AS_METHOD;
       break;
     }
-    case Call::SUPER_CALL: {
+    case Call::SUPER_CALL:
       // TODO(dslomov): Implement super calls.
-      UNIMPLEMENTED();
+      callee_value = jsgraph()->UndefinedConstant();
+      receiver_value = jsgraph()->UndefinedConstant();
+      SetStackOverflow();
       break;
-    }
     case Call::POSSIBLY_EVAL_CALL:
       possibly_eval = true;
     // Fall through.
index a8f7b04..80f3fe8 100644 (file)
@@ -152,7 +152,9 @@ bool Linkage::NeedsFrameState(Runtime::FunctionId function) {
     case Runtime::kDebugGetLoadedScripts:
     case Runtime::kDebugGetPropertyDetails:
     case Runtime::kDebugPromiseEvent:
+    case Runtime::kDefaultConstructorSuperCall:
     case Runtime::kDefineAccessorPropertyUnchecked:
+    case Runtime::kDefineClass:
     case Runtime::kDefineDataPropertyUnchecked:
     case Runtime::kDeleteProperty:
     case Runtime::kDeliverObservationChangeRecords:
index f2a94ff..4a7bc7f 100644 (file)
   # TODO(jarin): Some tests don't like --turbo-deoptimzation very much.
   'asm/embenchen/lua_binarytrees': [SKIP],
   'es6/symbols': [PASS, NO_VARIANTS],
-  'harmony/classes': [PASS, NO_VARIANTS],
   'regress/regress-354433': [PASS, NO_VARIANTS],  # only on ARM simulator.
   'regress/regress-crbug-259300': [PASS, NO_VARIANTS],
 
-  # TODO(dslomov): Implement super calls.
-  'harmony/super': [PASS, NO_VARIANTS],
-
   # TODO(arv): TurboFan does not yet add [[HomeObject]] as needed.
   'harmony/object-literals-super': [PASS, NO_VARIANTS],