[interpreter] Deprecate --ignition-fallback-on-catch flag.

The current support for try-catch in the interpreter can handle most of
the cases appearing in our test suite. Also the flag in question did not
detect try-finally constructs. This removes the flag and instead extends
the test expectations.

R=rmcilroy@chromium.org
BUG=v8:4674
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#33494}
This commit is contained in:
mstarzinger 2016-01-25 07:56:55 -08:00 committed by Commit bot
parent b4b5110009
commit b707ca4b54
9 changed files with 59 additions and 28 deletions

View File

@ -740,31 +740,12 @@ static bool CompileUnoptimizedCode(CompilationInfo* info) {
}
// TODO(rmcilroy): Remove this temporary work-around when ignition supports
// catch and eval.
static bool IgnitionShouldFallbackToFullCodeGen(Scope* scope) {
if (scope->is_catch_scope()) {
return true;
}
for (auto inner_scope : *scope->inner_scopes()) {
if (IgnitionShouldFallbackToFullCodeGen(inner_scope)) return true;
}
return false;
}
static bool UseIgnition(CompilationInfo* info) {
// Cannot use Ignition when the {function_data} is already used.
if (info->has_shared_info() && info->shared_info()->HasBuiltinFunctionId()) {
return false;
}
// Checks whether the scope chain is supported.
if (FLAG_ignition_fallback_on_catch &&
IgnitionShouldFallbackToFullCodeGen(info->scope())) {
return false;
}
// Checks whether top level functions should be passed by the filter.
if (info->closure().is_null()) {
Vector<const char> filter = CStrVector(FLAG_ignition_filter);

View File

@ -298,8 +298,6 @@ DEFINE_BOOL(string_slices, true, "use string slices")
// Flags for Ignition.
DEFINE_BOOL(ignition, false, "use ignition interpreter")
DEFINE_STRING(ignition_filter, "*", "filter for ignition interpreter")
DEFINE_BOOL(ignition_fallback_on_catch, false,
"fallback to full-codegen for functions which contain catch blocks")
DEFINE_BOOL(print_bytecode, false,
"print bytecode generated by ignition interpreter")
DEFINE_BOOL(trace_ignition_codegen, false,

View File

@ -510,6 +510,18 @@
'test-inobject-slack-tracking/*' : [SKIP],
'test-serialize/*' : [SKIP],
# TODO(mstarzinger,4674): Message object is not properly cleared.
'test-heap/MessageObjectLeak': [FAIL],
# TODO(mstarzinger,4674): Support exception handlers in BytecodeGraphBuilder.
'test-run-deopt/DeoptExceptionHandlerCatch': [FAIL],
'test-run-jsexceptions/Catch': [FAIL],
'test-run-jsexceptions/CatchBreak': [FAIL],
'test-run-jsexceptions/CatchCall': [FAIL],
'test-run-jsexceptions/CatchNested': [FAIL],
'test-run-jsexceptions/DeoptCatch': [FAIL],
'test-run-jsexceptions/ThrowMessageIndirectly': [FAIL],
'test-api-interceptors/InterceptorCallICInvalidatedConstantFunctionViaGlobal': [SKIP],
'test-api-interceptors/InterceptorLoadICInvalidatedCallbackViaGlobal': [SKIP],
'test-api-interceptors/InterceptorLoadICInvalidatedFieldViaGlobal': [SKIP],
@ -577,8 +589,11 @@
'test-run-variables/StackLoadVariables': [SKIP],
'test-run-variables/StackStoreVariables': [SKIP],
'test-sampler-api/StackFramesConsistent': [SKIP],
'test-thread-termination/TerminateAndReenterFromThreadItself': [SKIP],
'test-thread-termination/TerminateCancelTerminateFromThreadItself': [SKIP],
'test-thread-termination/TerminateFromOtherThreadWhileMicrotaskRunning': [SKIP],
'test-thread-termination/TerminateOnlyV8ThreadFromOtherThread': [SKIP],
'test-thread-termination/TerminateOnlyV8ThreadFromThreadItself': [SKIP],
'test-thread-termination/TerminateOnlyV8ThreadFromThreadItselfNoLoop': [SKIP],
'test-thread-termination/TerminationInInnerTryCall': [SKIP],
'test-unscopables-hidden-prototype/Unscopables': [SKIP],

View File

@ -70,7 +70,6 @@ class BytecodeGraphTester {
i::FLAG_ignition = true;
i::FLAG_always_opt = false;
i::FLAG_allow_natives_syntax = true;
i::FLAG_ignition_fallback_on_catch = false;
// Set ignition filter flag via SetFlagsFromString to avoid double-free
// (or potential leak with StrDup() based on ownership confusion).
ScopedVector<char> ignition_filter(64);

View File

@ -24,7 +24,6 @@ class BytecodeGeneratorHelper {
BytecodeGeneratorHelper() {
i::FLAG_ignition = true;
i::FLAG_ignition_fallback_on_catch = false;
i::FLAG_ignition_filter = StrDup(kFunctionName);
i::FLAG_always_opt = false;
i::FLAG_allow_natives_syntax = true;

View File

@ -65,7 +65,6 @@ class InterpreterTester {
bytecode_(bytecode),
feedback_vector_(feedback_vector) {
i::FLAG_ignition = true;
i::FLAG_ignition_fallback_on_catch = false;
i::FLAG_always_opt = false;
// Set ignition filter flag via SetFlagsFromString to avoid double-free
// (or potential leak with StrDup() based on ownership confusion).

View File

@ -755,6 +755,24 @@
# TODO(bradnelson): Figure out why these tests fail with ignition.
'wasm/*': [SKIP],
# TODO(mstarzinger,4674): Beginning of two "try" statements can overlap.
'regress/regress-1213516': [SKIP],
'regress/regress-444805': [SKIP],
'regress/regress-86': [SKIP],
'regress/regress-binop': [SKIP],
'string-charat': [SKIP],
# TODO(4684): Support for "with" statements is missing.
'regress/regress-1528': [FAIL],
'regress/regress-2594': [FAIL],
'regress/regress-410030': [FAIL],
'regress/regress-96523': [FAIL],
'regress/regress-crbug-505907': [FAIL],
'regress/regress-crbug-506956': [FAIL],
'strict-mode-implicit-receiver': [FAIL],
'throw-and-catch-function': [FAIL],
'with-leave': [FAIL],
'allocation-folding': [SKIP],
'apply-arguments-gc-safepoint': [SKIP],
'arguments-load-across-eval': [SKIP],
@ -793,6 +811,8 @@
'compiler/regress-variable-liveness': [SKIP],
'compiler/rotate': [SKIP],
'compiler/safepoint': [SKIP],
'compiler/strict-recompile': [SKIP],
'compiler/try-binop': [SKIP],
'compiler/try-deopt': [SKIP],
'compiler/uint32': [SKIP],
'compiler/variables': [SKIP],
@ -914,6 +934,7 @@
'regress/regress-419663': [SKIP],
'regress/regress-4214': [SKIP],
'regress/regress-4255-4': [SKIP],
'regress/regress-4266': [SKIP],
'regress/regress-430201b': [SKIP],
'regress/regress-430201': [SKIP],
'regress/regress-4309-1': [SKIP],
@ -1053,6 +1074,7 @@
'string-slices': [SKIP],
'tools/profviz': [SKIP],
'try': [SKIP],
'try-binop': [SKIP],
'undetectable-compare': [SKIP],
'unused-context-in-with': [SKIP],
'value-wrapper': [SKIP],
@ -1064,9 +1086,11 @@
}], # ignition == True
['ignition == True and (arch == arm or arch == arm64)', {
'apply': [SKIP],
'array-constructor': [SKIP],
'array-sort': [SKIP],
'array-store-and-grow': [SKIP],
'asm/construct-double': [SKIP],
'compiler/division-by-constant': [SKIP],
'compiler/osr-big': [SKIP],
'compiler/osr-nested': [SKIP],
@ -1085,6 +1109,7 @@
'regress/regress-crbug-500497': [SKIP],
'regress/regress-crbug-505007-1': [SKIP],
'regress/regress-crbug-505007-2': [SKIP],
'regress/regress-crbug-514081': [SKIP],
'regress/regress-2193': [SKIP],
'regress/regress-3158': [SKIP],
'regress/regress-347904': [SKIP],

View File

@ -589,6 +589,21 @@
'language/statements/generators/*': [SKIP],
'language/statements/with/*': [SKIP],
# TODO(mstarzinger,4674): Beginning of two "try" statements can overlap.
'language/statements/try/*': [SKIP],
'built-ins/Object/defineProperties/15.2.3.7-2-18': [SKIP],
'built-ins/Promise/S25.4.3.1_A2.3_T1': [SKIP],
'built-ins/Promise/S25.4.3.1_A2.4_T1': [SKIP],
'built-ins/Promise/S25.4.3.1_A4.1_T1': [SKIP],
'built-ins/Promise/exception-after-resolve-in-executor': [SKIP],
'built-ins/Promise/prototype/catch/S25.4.5.1_A3.1_T2': [SKIP],
'built-ins/Promise/prototype/then/S25.4.2.1_A2.1_T1': [SKIP],
'built-ins/Promise/prototype/then/S25.4.5.3_A4.1_T2': [SKIP],
'built-ins/Promise/prototype/then/S25.4.5.3_A4.2_T2': [SKIP],
'built-ins/Promise/prototype/then/on-fulfilled-throw': [SKIP],
'language/block-scope/leave/finally-block-let-declaration-only-shadows-outer-parameter-value-2': [SKIP],
'language/block-scope/leave/verify-context-in-finally-block': [SKIP],
'built-ins/Array/prototype/concat/Array.prototype.concat_non-array': [SKIP],
'built-ins/Date/prototype/toISOString/15.9.5.43-0-13': [SKIP],
'built-ins/Object/prototype/hasOwnProperty/S15.2.4.5_A12': [SKIP],
@ -602,6 +617,8 @@
'built-ins/Object/prototype/valueOf/S15.2.4.4_A14': [SKIP],
'built-ins/Object/prototype/valueOf/S15.2.4.4_A15': [SKIP],
'built-ins/Promise/all/ctx-ctor': [SKIP],
'built-ins/Promise/all/S25.4.4.1_A4.1_T1': [SKIP],
'built-ins/Promise/prototype/then/on-rejected-throw': [SKIP],
'built-ins/Promise/race/ctx-ctor': [SKIP],
'built-ins/Promise/reject/ctx-ctor': [SKIP],
'built-ins/Promise/resolve/ctx-ctor': [SKIP],

View File

@ -41,8 +41,7 @@ ALL_VARIANT_FLAGS = {
"turbofan": [["--turbo"]],
"turbofan_opt": [["--turbo", "--always-opt"]],
"nocrankshaft": [["--nocrankshaft"]],
"ignition": [["--ignition", "--turbo",
"--ignition-fallback-on-catch"]],
"ignition": [["--ignition", "--turbo"]],
"preparser": [["--min-preparse-length=0"]],
}
@ -52,8 +51,7 @@ FAST_VARIANT_FLAGS = {
"stress": [["--stress-opt"]],
"turbofan": [["--turbo"]],
"nocrankshaft": [["--nocrankshaft"]],
"ignition": [["--ignition", "--turbo",
"--ignition-fallback-on-catch"]],
"ignition": [["--ignition", "--turbo"]],
"preparser": [["--min-preparse-length=0"]],
}