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.
32 lines
1.1 KiB
Text
32 lines
1.1 KiB
Text
$af73ebee destructuring-param-no-param-expressions.js:10:1
|
|
Registers: 8
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = Undefined
|
|
[1] = Int32(1)
|
|
[2] = Int32(2)
|
|
|
|
block0:
|
|
[ 0] GetGlobal dst:reg6, `f`
|
|
[ 10] NewObject dst:reg7
|
|
[ 20] InitObjectLiteralProperty object:reg7, `captured`, src:Int32(1), shape_cache_index:0, property_slot:0
|
|
[ 38] InitObjectLiteralProperty object:reg7, `local`, src:Int32(2), shape_cache_index:0, property_slot:1
|
|
[ 50] CacheObjectShape object:reg7
|
|
[ 60] Call dst:reg5, callee:reg6, this_value:Undefined, f, arguments:[reg7]
|
|
[ 88] End value:reg5
|
|
|
|
|
|
f$4a320b49 destructuring-param-no-param-expressions.js:7:5
|
|
Registers: 6
|
|
Blocks: 1
|
|
Locals: local~0
|
|
|
|
block0:
|
|
[ 0] CreateVariable `captured`, is_immutable:false, is_global:false, is_strict:false
|
|
[ 10] ThrowIfNullish src:arg0
|
|
[ 18] GetById dst:reg5, base:arg0, `captured`
|
|
[ 30] InitializeLexicalBinding `captured`, src:reg5
|
|
[ 48] GetById dst:reg5, base:arg0, `local`
|
|
[ 60] Mov dst:local~0, src:reg5
|
|
[ 70] NewFunction dst:reg5, shared_function_data_index:0
|
|
[ 88] Return value:reg5
|