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.
21 lines
873 B
Text
21 lines
873 B
Text
$2d2a9e5a block-function-declaration-order.js:1:1
|
|
Registers: 7
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = Undefined
|
|
|
|
block0:
|
|
[ 0] GetLexicalEnvironment dst:reg4
|
|
[ 8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
|
|
[ 20] CreateMutableBinding environment:reg5, `f1`, can_be_deleted:false
|
|
[ 30] NewFunction dst:reg6, shared_function_data_index:0
|
|
[ 48] InitializeLexicalBinding `f1`, src:reg6
|
|
[ 60] CreateMutableBinding environment:reg5, `f2`, can_be_deleted:false
|
|
[ 70] NewFunction dst:reg6, shared_function_data_index:1
|
|
[ 88] InitializeLexicalBinding `f2`, src:reg6
|
|
[ a0] GetBinding dst:reg6, `f1`
|
|
[ b8] DynamicSetVariableBinding `f1`, src:reg6
|
|
[ c8] GetBinding dst:reg6, `f2`
|
|
[ e0] DynamicSetVariableBinding `f2`, src:reg6
|
|
[ f0] SetLexicalEnvironment environment:reg4
|
|
[ f8] End value:Undefined
|