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.
47 lines
1.4 KiB
Text
47 lines
1.4 KiB
Text
$516a2e0b parameter-createvariable-order.js:7:1
|
|
Registers: 7
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = Undefined
|
|
[1] = Int32(1)
|
|
[2] = Int32(2)
|
|
[3] = Int32(3)
|
|
|
|
block0:
|
|
[ 0] GetGlobal dst:reg6, `f`
|
|
[ 10] Call dst:reg5, callee:reg6, this_value:Undefined, f, arguments:[Int32(1), Int32(2), Int32(3)]
|
|
[ 40] End value:reg5
|
|
|
|
|
|
f$8982c134 parameter-createvariable-order.js:2:5
|
|
Registers: 6
|
|
Blocks: 1
|
|
Locals: inner~0
|
|
Constants:
|
|
[0] = Undefined
|
|
|
|
block0:
|
|
[ 0] CreateVariable `a`, is_immutable:false, is_global:false, is_strict:false
|
|
[ 10] CreateVariable `b`, is_immutable:false, is_global:false, is_strict:false
|
|
[ 20] CreateVariable `c`, is_immutable:false, is_global:false, is_strict:false
|
|
[ 30] InitializeLexicalBinding `a`, src:arg0
|
|
[ 48] InitializeLexicalBinding `b`, src:arg1
|
|
[ 60] InitializeLexicalBinding `c`, src:arg2
|
|
[ 78] Mov dst:inner~0, src:Undefined
|
|
[ 88] NewFunction dst:reg5, shared_function_data_index:0 (inner)
|
|
[ a0] Mov dst:inner~0, src:reg5
|
|
[ b0] Call dst:reg5, callee:inner~0, this_value:Undefined, inner
|
|
[ d0] Return value:reg5
|
|
|
|
|
|
inner$2575e5f9 parameter-createvariable-order.js:3:9
|
|
Registers: 8
|
|
Blocks: 1
|
|
|
|
block0:
|
|
[ 0] DynamicGetBinding dst:reg5, `a`
|
|
[ 10] DynamicGetBinding dst:reg6, `b`
|
|
[ 20] Add dst:reg7, lhs:reg5, rhs:reg6
|
|
[ 30] DynamicGetBinding dst:reg5, `c`
|
|
[ 40] Add dst:reg6, lhs:reg7, rhs:reg5
|
|
[ 50] Return value:reg6
|