| 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());
|
|
|