ladybird/Tests/LibJS/Bytecode/expected/block-scoping.txt
Andreas Kling 21cbfb3cb1 LibJS: Drop source ranges from bytecode source maps
Store source map locations as bytecode offset, line, and column.
Runtime consumers only emit the start line and column, so source end
positions and source text offsets do not need to be carried through
Executable source maps, bytecode cache serialization, or the Rust FFI.

Keep SourceCode's internal position cache able to track source text
offsets so callers can still translate source offsets to line and
column pairs when needed. Hash dump-bytecode IDs from the name, first
source position, and bytecode size instead of source slices that need
end offsets.

Bump the bytecode cache format version for the slimmer serialized
source map entry shape.
2026-05-14 09:41:03 +02:00

128 lines
3.8 KiB
Text

$fcbe57a6 block-scoping.js:13:1
Registers: 11
Blocks: 1
Constants:
[0] = Undefined
block0:
[ 0] GetGlobal dst:reg6, `console`
[ 18] GetById dst:reg7, base:reg6, `log` (console.log)
[ 38] GetGlobal dst:reg9, `closureOverBlockScope`
[ 50] Call dst:reg8, callee:reg9, this_value:Undefined, closureOverBlockScope
[ 70] Call dst:reg5, callee:reg7, this_value:reg6, console.log, arguments:[reg8]
[ 98] GetGlobal dst:reg6, `console`
[ b0] GetById dst:reg8, base:reg6, `log` (console.log)
[ d0] GetGlobal dst:reg10, `breakThroughBlockScopes`
[ e8] Call dst:reg9, callee:reg10, this_value:Undefined, breakThroughBlockScopes
[ 108] Call dst:reg7, callee:reg8, this_value:reg6, console.log, arguments:[reg9]
[ 130] End value:reg7
closureOverBlockScope$61104af2 block-scoping.js:2:15
Registers: 10
Blocks: 1
Locals: fns~0
Constants:
[0] = Int32(1)
[1] = Int32(2)
[2] = Int32(0)
block0:
[ 0] GetLexicalEnvironment dst:reg4
[ 8] NewArray dst:fns~0
[ 18] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0
[ 28] CreateMutableBinding environment:reg5, `x`, can_be_deleted:false
[ 38] InitializeLexicalBinding `x`, src:Int32(1)
[ 50] GetById dst:reg7, base:fns~0, `push` (fns.push)
[ 70] Mov dst:reg8, src:fns~0
[ 80] NewFunction dst:reg9, shared_function_data_index:0
[ 98] Call dst:reg6, callee:reg7, this_value:reg8, fns.push, arguments:[reg9]
[ c0] SetLexicalEnvironment environment:reg4
[ c8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0
[ d8] CreateMutableBinding environment:reg5, `y`, can_be_deleted:false
[ e8] InitializeLexicalBinding `y`, src:Int32(2)
[ 100] GetById dst:reg7, base:fns~0, `push` (fns.push)
[ 120] Mov dst:reg8, src:fns~0
[ 130] NewFunction dst:reg9, shared_function_data_index:1
[ 148] Call dst:reg6, callee:reg7, this_value:reg8, fns.push, arguments:[reg9]
[ 170] SetLexicalEnvironment environment:reg4
[ 178] GetByValue dst:reg6, base:fns~0, property:Int32(0)
[ 190] Call dst:reg5, callee:reg6, this_value:fns~0, fns[0]
[ 1b0] GetByValue dst:reg7, base:fns~0, property:Int32(1)
[ 1c8] Call dst:reg6, callee:reg7, this_value:fns~0, fns[1]
[ 1e8] Add dst:reg7, lhs:reg5, rhs:reg6
[ 1f8] Return value:reg7
$4bcefff2 block-scoping.js:5:18
Registers: 6
Blocks: 1
block0:
[ 0] GetBinding dst:reg5, `x`
[ 18] Return value:reg5
$3664423e block-scoping.js:9:18
Registers: 6
Blocks: 1
block0:
[ 0] GetBinding dst:reg5, `y`
[ 18] Return value:reg5
breakThroughBlockScopes$bb8ff62f block-scoping.js:16:5
Registers: 8
Blocks: 7
Locals: f~0, i~1, result~2
Constants:
[0] = Undefined
[1] = Int32(0)
[2] = Int32(3)
[3] = Int32(1)
block0:
[ 0] GetLexicalEnvironment dst:reg4
[ 8] Mov2 dst1:result~2, src1:Undefined, dst2:i~1, src2:Int32(0)
[ 20] Jump target:block3
block1:
[ 28] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0
[ 38] CreateMutableBinding environment:reg5, `x`, can_be_deleted:false
[ 48] InitializeLexicalBinding `x`, src:i~1
[ 60] NewFunction dst:f~0, shared_function_data_index:0 (f)
[ 78] GetBinding dst:reg6, `x`
[ 90] JumpGreaterThan lhs:reg6, rhs:Int32(1), true_target:block5, false_target:block6
block2:
[ a8] PostfixIncrement dst:reg5, src:i~1
block3:
[ b8] JumpLessThan lhs:i~1, rhs:Int32(3), true_target:block1, false_target:block4
block4:
[ d0] Call dst:reg5, callee:result~2, this_value:Undefined, result
[ f0] Return value:reg5
block5:
[ f8] Mov dst:result~2, src:f~0
[ 108] SetLexicalEnvironment environment:reg4
[ 110] Jump target:block4
block6:
[ 118] SetLexicalEnvironment environment:reg4
[ 120] Jump target:block2
f$e7dc110a block-scoping.js:20:21
Registers: 6
Blocks: 1
block0:
[ 0] GetBinding dst:reg5, `x`
[ 18] Return value:reg5
3
2