Index: src/full-codegen.cc |
diff --git a/src/full-codegen.cc b/src/full-codegen.cc |
index 44a04ef2a5d93eb7ca10f0bbc7a74f96625180a4..349626b0e08181dcf90781cbc91c51464a384f94 100644 |
--- a/src/full-codegen.cc |
+++ b/src/full-codegen.cc |
@@ -863,6 +863,22 @@ void FullCodeGenerator::VisitSuperReference(SuperReference* super) { |
} |
+bool FullCodeGenerator::ValidateSuperCall(Call* expr) { |
+ Variable* new_target_var = scope()->DeclarationScope()->new_target_var(); |
+ if (new_target_var == nullptr) { |
+ // TODO(dslomov): this is not exactly correct, the spec requires us |
+ // to execute the constructor and only fail when an assigment to 'this' |
+ // is attempted. Will implement once we have general new.target support, |
+ // but also filed spec bug 3843 to make it an early error. |
+ __ CallRuntime(Runtime::kThrowUnsupportedSuperError, 0); |
+ RecordJSReturnSite(expr); |
+ context()->Plug(result_register()); |
+ return false; |
+ } |
+ return true; |
+} |
+ |
+ |
void FullCodeGenerator::SetExpressionPosition(Expression* expr) { |
if (!info_->is_debug()) { |
CodeGenerator::RecordPositions(masm_, expr->position()); |