v8/test/cctest/interpreter/bytecode_expectations
Joyee Cheung 7fa12e2a4f [class] fix undefined private name access in computed property keys
This patch implements https://github.com/tc39/proposal-class-fields/pull/269
and makes sure we always throw TypeError when there is invalid private
name access in computed property keys.

Before this patch, private name variables of private fields and methods
are initialized together with computed property keys in the order they
are declared. Accessing undefined private names in the computed property
keys thus fail silently.

After this patch, we initialize the private name variables of private
fields before we initialize the computed property keys, so that invalid
access to private fields in the computed keys can be checked in the IC.
We now also initialize the brand early, so that invalid access to private
methods or accessors in the computed keys throw TypeError during brand
checks - and since these accesses are guarded by brand checks, we can
create the private methods and accessors after the class is
defined, and merge the home object setting with the creation
of the closures.

Bug: v8:8330, v8:9611
Change-Id: I01363f7befac6cf9dd28ec229b99a99102bcf012
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1846571
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Reviewed-by: Mythri Alle <mythria@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64225}
2019-10-10 19:43:01 +00:00
..
ArrayLiterals.golden Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +00:00
AssignmentsInBinaryExpression.golden [parser] Add an n-ary node for large binop chains 2017-10-25 11:28:55 +00:00
AsyncGenerators.golden Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +00:00
AsyncModules.golden [top-level-await] Add support for parsing top level await 2019-09-24 14:01:32 +00:00
BasicBlockToBoolean.golden [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
BasicLoops.golden Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +00:00
BreakableBlocks.golden [scope] Add Scope::ForEach helper to avoid recursion 2019-01-31 16:22:59 +00:00
CallAndSpread.golden Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +00:00
CallGlobal.golden [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
CallLookupSlot.golden Revert recent ConsString-related changes 2019-04-18 12:24:53 +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 [hole-check-elimination] Simplest possible hole check elimination 2019-09-20 17:27:49 +00:00
ClassDeclarations.golden [class] implement static private methods 2019-10-10 15:34:44 +00:00
CompareNil.golden Reland "[ignition] Skip binding dead labels" 2019-02-28 14:06:15 +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 Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +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 Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +00:00
CountOperators.golden Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +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 Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +00:00
Delete.golden Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +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 Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +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 Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +00:00
ForIn.golden [interpreter] add JumpIfUndefinedOrNull 2019-08-08 16:44:35 +00:00
ForOf.golden Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +00:00
ForOfLoop.golden Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +00:00
FunctionLiterals.golden Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +00:00
GenerateTestUndetectable.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00
Generators.golden Extend GetIterator bytecode to perform JSReceiver check on object[Symbol.iterator]() 2019-09-12 08:51:35 +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 Reland "Optimize in operator" 2019-03-01 09:01:18 +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 Revert recent ConsString-related changes 2019-04-18 12:24:53 +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 [class] implement static private methods 2019-10-10 15:34:44 +00:00
NewTarget.golden [Interpreter] Remove new.target from fixed frame slot. 2017-08-11 17:04:08 +00:00
ObjectLiterals.golden Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +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
PrivateAccessorAccess.golden [class] implement private accessors 2019-08-30 10:16:29 +00:00
PrivateAccessorDeclaration.golden [class] fix undefined private name access in computed property keys 2019-10-10 19:43:01 +00:00
PrivateClassFields.golden [class] fix undefined private name access in computed property keys 2019-10-10 19:43:01 +00:00
PrivateMethodAccess.golden [class] implement private accessors 2019-08-30 10:16:29 +00:00
PrivateMethodDeclaration.golden [class] fix undefined private name access in computed property keys 2019-10-10 19:43:01 +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 [class] implement static private methods 2019-10-10 15:34:44 +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 Reland "[destructuring] Elide coercible check for simple keys" 2019-08-30 10:51:49 +00:00
StaticClassFields.golden [class] implement static private methods 2019-10-10 15:34:44 +00:00
StaticPrivateMethodAccess.golden [class] implement static private methods 2019-10-10 15:34:44 +00:00
StaticPrivateMethodDeclaration.golden [class] fix undefined private name access in computed property keys 2019-10-10 19:43:01 +00:00
StoreGlobal.golden [Interpreter] Share feedback slots for load / store named properties 2018-05-14 10:21:42 +00:00
StringConcat.golden Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +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 [hole-check-elimination] Simplest possible hole check elimination 2019-09-20 17:27:49 +00:00
Switch.golden [FeedbackVector] Case statements can share a single vector slot 2017-11-07 11:16:47 +00:00
TemplateLiterals.golden Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +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 Allocate feedback cells in an array decoupled from other slots 2019-03-11 11:20:21 +00:00
TryCatch.golden Reland "[ignition] Skip binding dead labels" 2019-02-28 14:06:15 +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 [interpreter] add JumpIfUndefinedOrNull 2019-08-08 16:44:35 +00:00
WithStatement.golden [interpreter] Store CreateObjectLiteral's result into the accumulator. 2018-11-08 10:31:45 +00:00