Record the generator's strictness for each emitted bytecode instruction, instead of applying the executable's final strictness to every instruction during assembly. This lets class heritage and computed element names run with strict assignment semantics inside sloppy scripts. Also create the class self-binding as a strict immutable binding, matching ClassDefinitionEvaluation, and cover strict class heritage and computed names in the runtime tests.
25 lines
810 B
Text
25 lines
810 B
Text
$49b95e06 class-computed-key.js:10:1
|
|
Registers: 7
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = Undefined
|
|
|
|
block0:
|
|
[ 0] GetGlobal dst:reg6, `f`
|
|
[ 10] Call dst:reg5, callee:reg6, this_value:Undefined, f
|
|
[ 30] End value:reg5
|
|
|
|
|
|
f$0a149d9a class-computed-key.js:4:5
|
|
Registers: 8
|
|
Blocks: 1
|
|
|
|
block0:
|
|
[ 0] GetLexicalEnvironment dst:reg4
|
|
[ 8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
|
|
[ 20] CreateVariable ``, is_immutable:true, is_global:false, is_strict:true
|
|
[ 30] GetGlobal dst:reg6, `Symbol`
|
|
[ 40] GetById dst:reg7, base:reg6, `iterator` (Symbol.iterator)
|
|
[ 58] SetLexicalEnvironment environment:reg4
|
|
[ 60] NewClass dst:reg6, class_environment:reg5, class_blueprint_index:0, element_keys:[element_keys:reg7]
|
|
[ 88] Return value:reg6
|