v8/test/cctest/interpreter/bytecode_expectations
Leszek Swirski 35269f77f8 [ignition] Skip binding dead labels
BytecodeLabels for forward jumps may create a dead basic block if their
corresponding jump was elided (due to it dead code elimination). We can
avoid generating such dead basic blocks by skipping the label bind when
no corresponding jump has been observed. This works because all jumps
except JumpLoop are forward jumps, so we only have to special case one
Bind for loop headers to bind unconditionally.

Since Binds are now conditional on a jump existing, we can no longer rely
on using Bind to get the current offset (e.g. at the beginning of a try
block). Instead, we now expose the current offset in the bytecode array
writer. Conveniently, this means that we can be a bit smarter about basic
blocks around these statements.

As a drive-by, remove the unused Bind(target,label) function.

Bug: chromium:934166
Change-Id: I532aa452fb083560d07b90da99caca0b1d082aa3
Reviewed-on: https://chromium-review.googlesource.com/c/1488763
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59942}
2019-02-28 12:17:34 +00:00
..
ArrayLiterals.golden [ignition] Move destructuring assignments to bytecode generation 2019-01-03 09:41:27 +00:00
AssignmentsInBinaryExpression.golden [parser] Add an n-ary node for large binop chains 2017-10-25 11:28:55 +00:00
AsyncGenerators.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
BasicBlockToBoolean.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
BasicLoops.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
BreakableBlocks.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
CallAndSpread.golden [ignition] Move destructuring assignments to bytecode generation 2019-01-03 09:41:27 +00:00
CallGlobal.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
CallLookupSlot.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
CallNew.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
CallRuntime.golden [cleanup] Drop spread.js for good. 2018-03-12 09:44:11 +00:00
ClassAndSuperClass.golden Cleanup after removing language mode parameter from SetProperty 2019-01-25 10:51:10 +00:00
ClassDeclarations.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
CompareNil.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
CompareTypeOf.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
CompoundExpressions.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00
Conditional.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
ConstVariable.golden [ignition] removed nop bytecode 2017-07-18 16:14:29 +00:00
ConstVariableContextSlot.golden [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
ContextParameters.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
ContextVariables.golden [Interpreter] Share feedback slots for load / store named properties 2018-05-14 10:21:42 +00:00
CountOperators.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00
CreateArguments.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
CreateRestParameter.golden [parser] Iterate declarations to set initializer positions 2019-01-23 13:28:58 +00:00
DeadCodeRemoval.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
DeclareGlobals.golden Reland "[inspector] fixed location of top level function return" 2018-06-18 21:37:49 +00:00
Delete.golden Check for "SuperNotCalled" on "delete this" in a constructor 2019-01-22 18:58:42 +00:00
DeleteLookupSlotInEval.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
DestructuringAssignment.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
DoDebugger.golden [interpreter] Remove redundant flag from bytecode cctest suite. 2016-10-04 16:30:15 +00:00
Eval.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
ForAwaitOf.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
ForIn.golden [parser] Declare variables through ExpressionScope 2019-01-21 11:37:32 +00:00
ForOf.golden Throw TypeError if a proxy's [[OwnPropertyKeys]] returns dupes 2019-01-29 17:55:06 +00:00
ForOfLoop.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
FunctionLiterals.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
GenerateTestUndetectable.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00
Generators.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
GlobalCompoundExpressions.golden [interpreter] Merge StaGlobal[Sloppy/Strict] into one bytecode. 2017-12-14 10:03:00 +00:00
GlobalCountOperators.golden [interpreter] Merge StaGlobal[Sloppy/Strict] into one bytecode. 2017-12-14 10:03:00 +00:00
GlobalDelete.golden [ignition] Fix return value of delete on global lexical variables 2017-08-23 16:17:48 +00:00
HeapNumberConstants.golden [ast] Move AstValue implementation into Literal 2017-10-27 20:21:29 +00:00
IfConditions.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
IIFEWithOneshotOpt.golden [Compile] Move decision of whether an IIFE is oneshot into parser. 2019-01-22 15:19:39 +00:00
IIFEWithoutOneshotOpt.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00
IntegerConstants.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
LetVariable.golden [ignition] removed nop bytecode 2017-07-18 16:14:29 +00:00
LetVariableContextSlot.golden [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
LoadGlobal.golden [Interpreter] Share feedback slots for load / store named properties 2018-05-14 10:21:42 +00:00
LogicalExpressions.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
LookupSlot.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
LookupSlotInEval.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
Modules.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
NewAndSpread.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
NewTarget.golden [Interpreter] Remove new.target from fixed frame slot. 2017-08-11 17:04:08 +00:00
ObjectLiterals.golden Cleanup after removing language mode parameter from SetProperty 2019-01-25 10:51:10 +00:00
OuterContextVariables.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
Parameters.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
PrimitiveExpressions.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
PrimitiveReturnStatements.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
PrivateClassFields.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
PropertyCall.golden [Interpreter] Enable sharing of load / store named property feedback 2018-06-05 09:21:59 +00:00
PropertyLoads.golden [Interpreter] Share feedback slots for load / store named properties 2018-05-14 10:21:42 +00:00
PropertyLoadStoreOneShot.golden Reland "[interpreter] Separate bytecodes for one-shot property loads and stores" 2018-09-27 13:56:53 +00:00
PropertyLoadStoreWithoutOneShot.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00
PropertyStores.golden [Interpreter] Enable sharing of load / store named property feedback 2018-06-05 09:21:59 +00:00
PublicClassFields.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
RegExpLiterals.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
RemoveRedundantLdar.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
StandardForLoop.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
StaticClassFields.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
StoreGlobal.golden [Interpreter] Share feedback slots for load / store named properties 2018-05-14 10:21:42 +00:00
StringConcat.golden [parser] Add an n-ary node for large binop chains 2017-10-25 11:28:55 +00:00
StringConstants.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
SuperCallAndSpread.golden [parser] Iterate declarations to set initializer positions 2019-01-23 13:28:58 +00:00
Switch.golden [FeedbackVector] Case statements can share a single vector slot 2017-11-07 11:16:47 +00:00
TemplateLiterals.golden Reland "[esnext] re-implement template strings" 2018-03-14 18:12:09 +00:00
ThisFunction.golden Move function name var initialization to BytecodeGenerator 2017-11-27 18:37:47 +00:00
Throw.golden [ignition] Expect 'I' for signed bytecode operands 2017-01-25 17:39:24 +00:00
TopLevelObjectLiterals.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00
TryCatch.golden [ignition] Skip binding dead labels 2019-02-28 12:17:34 +00:00
TryFinally.golden Remove the catch variable name from the extension field of catch contexts 2018-05-04 10:12:08 +00:00
Typeof.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
UnaryOperators.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
WideRegisters.golden [parser] Don't create proxies for vars without initialisers 2019-01-28 15:54:40 +00:00
WithStatement.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00