ladybird/Tests/LibJS/Bytecode/expected/generator-yield-star.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

99 lines
2.9 KiB
Text

$6fbbc21a generator-yield-star.js:6:1
Registers: 8
Blocks: 1
Constants:
[0] = Undefined
block0:
[ 0] GetGlobal dst:reg6, `f`
[ 18] NewPrimitiveArray dst:reg7, elements:[1, 2]
[ 38] Call dst:reg5, callee:reg6, this_value:Undefined, f, arguments:[reg7]
[ 60] End value:reg5
f$289ca507 generator-yield-star.js:4:5
Registers: 22
Blocks: 19
Constants:
[0] = Undefined
[1] = Int32(1)
[2] = Int32(5)
block0:
[ 0] Yield continuation_label:block1, value:Undefined
block1:
[ 10] GetIterator dst_iterator_object:reg8, dst_iterator_next:reg9, dst_iterator_done:reg10, iterable:arg0
[ 28] Mov2 dst1:reg6, src1:Int32(1), dst2:reg7, src2:Undefined
block2:
[ 40] JumpStrictlyEquals lhs:reg6, rhs:Int32(1), true_target:block5, false_target:block6
block3:
[ 58] Mov dst:reg5, src:reg0
[ 68] GetCompletionFields type_dst:reg6, value_dst:reg7, completion:reg5
[ 78] Jump target:block2
block4:
[ 80] Yield value:Undefined
block5:
[ 90] Call dst:reg12, callee:reg9, this_value:reg8, arguments:[reg7]
[ b8] ThrowIfNotObject src:reg12
[ c0] GetById dst:reg13, base:reg12, `done`
[ e0] JumpIf condition:reg13, true_target:block7, false_target:block8
block6:
[ f0] JumpStrictlyEquals lhs:reg6, rhs:Int32(5), true_target:block9, false_target:block10
block7:
[ 108] GetById dst:reg14, base:reg12, `value`
[ 128] Jump target:block4
block8:
[ 130] GetById dst:reg15, base:reg12, `value`
[ 150] Yield continuation_label:block3, value:reg15
block9:
[ 160] GetMethod dst:reg16, object:reg8, `throw`
[ 170] JumpUndefined condition:reg16, true_target:block12, false_target:block11
block10:
[ 180] GetMethod dst:reg18, object:reg8, `return`
[ 190] JumpUndefined condition:reg18, true_target:block15, false_target:block16
block11:
[ 1a0] Call dst:reg12, callee:reg16, this_value:reg8, arguments:[reg7]
[ 1c8] ThrowIfNotObject src:reg12
[ 1d0] GetById dst:reg13, base:reg12, `done`
[ 1f0] JumpIf condition:reg13, true_target:block13, false_target:block14
block12:
[ 200] IteratorClose iterator_object:reg8, iterator_next:reg9, iterator_done:reg13, completion_value:Undefined
[ 218] NewTypeError dst:reg17, yield* protocol violation: iterator must have a throw method
[ 228] Throw src:reg17
block13:
[ 230] GetById dst:reg14, base:reg12, `value`
[ 250] Jump target:block4
block14:
[ 258] GetById dst:reg17, base:reg12, `value`
[ 278] Yield continuation_label:block3, value:reg17
block15:
[ 288] Yield value:reg7
block16:
[ 298] Call dst:reg19, callee:reg18, this_value:reg8, arguments:[reg7]
[ 2c0] ThrowIfNotObject src:reg19
[ 2c8] GetById dst:reg13, base:reg19, `done`
[ 2e8] JumpFalse condition:reg13, target:block18
block17:
[ 2f8] GetById dst:reg20, base:reg19, `value`
[ 318] Yield value:reg20
block18:
[ 328] GetById dst:reg21, base:reg19, `value`
[ 348] Yield continuation_label:block3, value:reg21