v8/test/cctest/interpreter/bytecode_expectations
Hai Dang 1c48d52bb1 [interpreter] Add bytecode for leading array spreads.
This CL improves the performance of creating [...a, b] or [...a].
If the array literal has a leading spread, this CL emits the bytecode
[CreateArrayFromIterable] to create the literal. CreateArrayFromIterable
is implemented by [IterableToListDefault] builtin to create the initial
array for the leading spread. IterableToListDefault has a fast path to
clone efficiently if the spread is an actual array.

The bytecode generated is now shorter. Bytecode generation is refactored
into to BuildCreateArrayLiteral, which allows VisitCallSuper to benefit
from this optimization also.
For now, turbofan also lowers the bytecode to the builtin.

The idiomatic use of [...a] to clone the array a now performs better
than a simple for-loop, but still does not match the performance of slice.

Bug: v8:7980

Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: Ibde659c82d3c7aa1b1777a3d2f6426ac8cc15e35
Reviewed-on: https://chromium-review.googlesource.com/1181024
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Commit-Queue: Hai Dang <dhai@google.com>
Cr-Commit-Position: refs/heads/master@{#55520}
2018-08-30 11:47:58 +00:00
..
ArrayLiterals.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
AssignmentsInBinaryExpression.golden [parser] Add an n-ary node for large binop chains 2017-10-25 11:28:55 +00:00
AsyncGenerators.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
BasicBlockToBoolean.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
BasicLoops.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
BreakableBlocks.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
CallAndSpread.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +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 [class] Initialize class fields after binding this 2018-04-17 13:40:39 +00:00
ClassDeclarations.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +00:00
CompareNil.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +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 [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +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 Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +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 [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +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 [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +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 [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +00:00
DeleteLookupSlotInEval.golden [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
DoDebugger.golden [interpreter] Remove redundant flag from bytecode cctest suite. 2016-10-04 16:30:15 +00:00
DoExpression.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +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 [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
ForIn.golden [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +00:00
ForOf.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
ForOfLoop.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
FunctionLiterals.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
GenerateTestUndetectable.golden [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +00:00
Generators.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +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 [turbofan] Introduce InstanceOfIC to collect rhs feedback. 2017-10-23 10:15:36 +00:00
IIFEWithOneshotOpt.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
IIFEWithoutOneshotOpt.golden [interpreter][runtime] Avoid AllocationSites for oneshot code 2018-08-10 13:34:13 +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 Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +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 [interpreter][runtime] Avoid AllocationSites for oneshot code 2018-08-10 13:34:13 +00:00
NewAndSpread.golden [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
NewTarget.golden [Interpreter] Remove new.target from fixed frame slot. 2017-08-11 17:04:08 +00:00
ObjectLiterals.golden [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +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 Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +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 [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
PropertyLoadStoreWithoutOneShot.golden [interpreter][runtime] Avoid AllocationSites for oneshot code 2018-08-10 13:34:13 +00:00
PropertyStores.golden [Interpreter] Enable sharing of load / store named property feedback 2018-06-05 09:21:59 +00:00
PublicClassFields.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +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 [Intl] Implement Intl.ListFromat format() and formatToParts(). 2018-08-08 23:52:27 +00:00
StaticClassFields.golden Replace Context::closure with Context::scope_info, allowing closure to die. 2018-05-03 12:34:17 +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 [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47: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 [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +00:00
TryCatch.golden Remove the catch variable name from the extension field of catch contexts 2018-05-04 10:12:08 +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 [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
WithStatement.golden [runtime][parser] Use ArrayBoilerplateDescription all the way 2018-07-05 19:31:03 +00:00