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.
60 lines
1.6 KiB
Text
60 lines
1.6 KiB
Text
$6a8031db delete-super-eval-order.js:4:1
|
|
Registers: 10
|
|
Blocks: 3
|
|
Constants:
|
|
[0] = String("m")
|
|
[1] = Undefined
|
|
[2] = String("x")
|
|
|
|
block0:
|
|
[ 0] GetLexicalEnvironment dst:reg4
|
|
[ 8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
|
|
[ 20] CreateVariable `A`, is_immutable:true, is_global:false, is_strict:true
|
|
[ 30] SetLexicalEnvironment environment:reg4
|
|
[ 38] NewClass dst:reg6, class_environment:reg5, class_blueprint_index:0, element_keys:[element_keys:String("m")]
|
|
[ 60] DynamicInitializeLexicalBinding `A`, src:reg6
|
|
[ 70] Jump target:block2
|
|
|
|
block1:
|
|
[ 78] Catch dst:reg6
|
|
[ 80] SetLexicalEnvironment environment:reg4
|
|
[ 88] Mov2 dst1:reg5, src1:Undefined, dst2:reg7, src2:reg5
|
|
[ a0] End value:reg5
|
|
|
|
block2:
|
|
[ a8] Mov dst:reg6, src:Undefined
|
|
[ b8] GetGlobal dst:reg9, `A`
|
|
[ c8] CallConstruct dst:reg8, callee:reg9, A
|
|
[ e0] GetById dst:reg9, base:reg8, `m`
|
|
[ f8] Call dst:reg5, callee:reg9, this_value:reg8, <object>.m, arguments:[String("x")]
|
|
[ 120] Mov2 dst1:reg6, src1:reg5, dst2:reg5, src2:reg6
|
|
[ 138] End value:reg5
|
|
|
|
Exception handlers:
|
|
[ a8 .. 140] => handler block1
|
|
|
|
|
|
A$ef0589ec
|
|
Registers: 5
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = Undefined
|
|
|
|
block0:
|
|
[ 0] End value:Undefined
|
|
|
|
|
|
m$0f7c4977 delete-super-eval-order.js:6:9
|
|
Registers: 7
|
|
Blocks: 2
|
|
Constants:
|
|
[0] = Undefined
|
|
|
|
block0:
|
|
[ 0] ResolveThisBinding
|
|
[ 8] ResolveSuperBase dst:reg5
|
|
[ 10] NewReferenceError dst:reg6, Can't delete a property on 'super'
|
|
[ 20] Throw src:reg6
|
|
|
|
block1:
|
|
[ 28] End value:Undefined
|