From 5607582f3bbf06b262860414d9fcee43a8b34735 Mon Sep 17 00:00:00 2001 From: "jarin@chromium.org" Date: Mon, 31 Mar 2014 16:45:46 +0000 Subject: [PATCH] We should perform the illegal redeclaration check earlier so that we do not confuse the AST typer with missing type feedback nodes. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/218493007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20368 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/compiler.cc | 4 ++++ .../regress/regress-handle-illegal-redeclaration.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 test/mjsunit/regress/regress-handle-illegal-redeclaration.js diff --git a/src/compiler.cc b/src/compiler.cc index 4b53989..a012d81 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -354,6 +354,10 @@ OptimizedCompileJob::Status OptimizedCompileJob::CreateGraph() { return AbortAndDisableOptimization(kTooManyParametersLocals); } + if (scope->HasIllegalRedeclaration()) { + return AbortAndDisableOptimization(kFunctionWithIllegalRedeclaration); + } + // Take --hydrogen-filter into account. if (!info()->closure()->PassesFilter(FLAG_hydrogen_filter)) { return AbortOptimization(kHydrogenFilter); diff --git a/test/mjsunit/regress/regress-handle-illegal-redeclaration.js b/test/mjsunit/regress/regress-handle-illegal-redeclaration.js new file mode 100644 index 0000000..fe04ddb --- /dev/null +++ b/test/mjsunit/regress/regress-handle-illegal-redeclaration.js @@ -0,0 +1,15 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --always-opt + +var x = 0; + +function f() { + const c; + var c; + return 0 + x; +} + +assertThrows(f); -- 2.7.4