Track bytecode-created declarative bindings while generating code so most environment-coordinate operands can be emitted eagerly. Dynamic lookup instructions remain for scopes where eval or object environments can change resolution at runtime. This lets the static coordinate bytecode variants run without cached- vs-uncached branches or eval poison checks, and rebaselines bytecode output for the newly eager coordinate operands.
58 lines
1.5 KiB
Text
58 lines
1.5 KiB
Text
$542e1f1b var-shadow-in-default-param.js:7:1
|
|
Registers: 8
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = String("outer")
|
|
[1] = Undefined
|
|
|
|
block0:
|
|
[ 0] SetGlobal `shadow`, src:String("outer")
|
|
[ 10] GetGlobal dst:reg6, `shadow_in_default`
|
|
[ 20] Call dst:reg5, callee:reg6, this_value:Undefined, shadow_in_default
|
|
[ 40] GetGlobal dst:reg7, `no_conflict`
|
|
[ 50] Call dst:reg6, callee:reg7, this_value:Undefined, no_conflict
|
|
[ 70] End value:reg6
|
|
|
|
|
|
shadow_in_default$321d2e1f var-shadow-in-default-param.js:8:32
|
|
Registers: 7
|
|
Blocks: 3
|
|
Constants:
|
|
[0] = Undefined
|
|
[1] = String("inner")
|
|
|
|
block0:
|
|
[ 0] JumpUndefined condition:arg0, true_target:block1, false_target:block2
|
|
|
|
block1:
|
|
[ 10] DynamicGetInitializedBinding dst:reg5, `shadow`
|
|
[ 20] Mov dst:arg0, src:reg5
|
|
|
|
block2:
|
|
[ 30] CreateVariableEnvironment capacity:1
|
|
[ 38] GetLexicalEnvironment dst:reg5
|
|
[ 40] Mov dst:reg6, src:Undefined
|
|
[ 50] CreateVariable `shadow`, is_immutable:false, is_global:false, is_strict:false
|
|
[ 60] InitializeVariableBinding `shadow`, src:reg6
|
|
[ 78] SetLexicalBinding `shadow`, src:String("inner")
|
|
[ 90] Return value:arg0
|
|
|
|
|
|
no_conflict$f0c5f291 var-shadow-in-default-param.js:17:5
|
|
Registers: 6
|
|
Blocks: 3
|
|
Locals: y~0
|
|
Constants:
|
|
[0] = Int32(1)
|
|
[1] = Undefined
|
|
[2] = Int32(2)
|
|
|
|
block0:
|
|
[ 0] JumpUndefined condition:arg0, true_target:block1, false_target:block2
|
|
|
|
block1:
|
|
[ 10] Mov dst:arg0, src:Int32(1)
|
|
|
|
block2:
|
|
[ 20] Mov3 dst1:reg5, src1:Undefined, dst2:y~0, src2:reg5, dst3:y~0, src3:Int32(2)
|
|
[ 40] Return value:y~0
|