Chromium Code Reviews| Index: src/full-codegen.cc |
| diff --git a/src/full-codegen.cc b/src/full-codegen.cc |
| index 44a04ef2a5d93eb7ca10f0bbc7a74f96625180a4..785917bb1f70913d5bd84e8b92c3b3e2fba47759 100644 |
| --- a/src/full-codegen.cc |
| +++ b/src/full-codegen.cc |
| @@ -863,6 +863,23 @@ 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; |
| + } else { |
|
arv (Not doing code reviews)
2015/02/12 16:49:50
skip else after return?
Dmitry Lomov (no reviews)
2015/02/12 17:34:40
Done.
|
| + return true; |
| + } |
| +} |
| + |
| + |
| void FullCodeGenerator::SetExpressionPosition(Expression* expr) { |
| if (!info_->is_debug()) { |
| CodeGenerator::RecordPositions(masm_, expr->position()); |