ladybird/Tests/LibJS/Bytecode/expected/optional-chain.txt
Andreas Kling a31c2c388b LibJS: Stop persisting basic_block_start_offsets on Executable
Keep basic block offsets as construction-only metadata rather than
storing them on every Executable. The validator now receives the offsets
through a transient Rust FFI span, and the bytecode dump rebuilds block
starts by scanning labels, terminators, and exception handler metadata.

Drop the table from the bytecode cache format and bump the format
version so old caches are rebuilt. This removes a field that was only
used by validation and bytecode dump paths.
2026-05-14 12:08:12 +02:00

162 lines
4.4 KiB
Text

$9712b2ea optional-chain.js:25:1
Registers: 8
Blocks: 1
Constants:
[0] = Undefined
[1] = Null
block0:
[ 0] GetGlobal dst:reg6, `member`
[ 18] Call dst:reg5, callee:reg6, this_value:Undefined, member, arguments:[Null]
[ 40] GetGlobal dst:reg7, `nested_member`
[ 58] Call dst:reg6, callee:reg7, this_value:Undefined, nested_member, arguments:[Null]
[ 80] GetGlobal dst:reg7, `call_no_args`
[ 98] Call dst:reg5, callee:reg7, this_value:Undefined, call_no_args, arguments:[Null]
[ c0] GetGlobal dst:reg7, `call_with_args`
[ d8] Call dst:reg6, callee:reg7, this_value:Undefined, call_with_args, arguments:[Null]
[ 100] GetGlobal dst:reg7, `computed`
[ 118] Call dst:reg5, callee:reg7, this_value:Undefined, computed, arguments:[Null]
[ 140] GetGlobal dst:reg7, `member_then_call`
[ 158] Call dst:reg6, callee:reg7, this_value:Undefined, member_then_call, arguments:[Null]
[ 180] End value:reg6
member$b5894147 optional-chain.js:7:5
Registers: 7
Blocks: 3
Constants:
[0] = Undefined
block0:
[ 0] Mov2 dst1:reg5, src1:Undefined, dst2:reg6, src2:arg0
[ 18] JumpNullish condition:reg6, true_target:block1, false_target:block2
block1:
[ 28] Mov dst:reg6, src:Undefined
[ 38] Return value:reg6
block2:
[ 40] Mov dst:reg5, src:reg6
[ 50] GetById dst:reg6, base:reg6, `x`
[ 70] Return value:reg6
nested_member$830d1888 optional-chain.js:10:5
Registers: 7
Blocks: 4
Constants:
[0] = Undefined
block0:
[ 0] Mov2 dst1:reg5, src1:Undefined, dst2:reg6, src2:arg0
[ 18] JumpNullish condition:reg6, true_target:block1, false_target:block2
block1:
[ 28] Mov dst:reg6, src:Undefined
[ 38] Return value:reg6
block2:
[ 40] Mov dst:reg5, src:reg6
[ 50] GetById dst:reg6, base:reg6, `x`
[ 70] JumpNullish condition:reg6, true_target:block1, false_target:block3
block3:
[ 80] Mov dst:reg5, src:reg6
[ 90] GetById dst:reg6, base:reg6, `y`
[ b0] Return value:reg6
call_no_args$f2028fc1 optional-chain.js:13:5
Registers: 8
Blocks: 3
Constants:
[0] = Undefined
block0:
[ 0] Mov2 dst1:reg5, src1:Undefined, dst2:reg6, src2:arg0
[ 18] JumpNullish condition:reg6, true_target:block1, false_target:block2
block1:
[ 28] Mov dst:reg6, src:Undefined
[ 38] Return value:reg6
block2:
[ 40] Mov dst:reg5, src:reg6
[ 50] GetById dst:reg6, base:reg6, `foo`
[ 70] NewArray dst:reg7
[ 80] CallWithArgumentArray dst:reg6, callee:reg6, this_value:reg5, arguments:reg7
[ 98] Mov dst:reg5, src:Undefined
[ a8] Return value:reg6
call_with_args$339c1d87 optional-chain.js:16:5
Registers: 11
Blocks: 3
Constants:
[0] = Undefined
[1] = Int32(1)
[2] = Int32(2)
[3] = Int32(3)
block0:
[ 0] Mov2 dst1:reg5, src1:Undefined, dst2:reg6, src2:arg0
[ 18] JumpNullish condition:reg6, true_target:block1, false_target:block2
block1:
[ 28] Mov dst:reg6, src:Undefined
[ 38] Return value:reg6
block2:
[ 40] Mov dst:reg5, src:reg6
[ 50] GetById dst:reg6, base:reg6, `foo`
[ 70] Mov3 dst1:reg8, src1:Int32(1), dst2:reg9, src2:Int32(2), dst3:reg10, src3:Int32(3)
[ 90] NewArray dst:reg7, elements:[reg8, reg9, reg10]
[ b0] CallWithArgumentArray dst:reg6, callee:reg6, this_value:reg5, arguments:reg7
[ c8] Mov dst:reg5, src:Undefined
[ d8] Return value:reg6
computed$1d9658d2 optional-chain.js:19:5
Registers: 7
Blocks: 3
Constants:
[0] = Undefined
[1] = String("hello")
block0:
[ 0] Mov2 dst1:reg5, src1:Undefined, dst2:reg6, src2:arg0
[ 18] JumpNullish condition:reg6, true_target:block1, false_target:block2
block1:
[ 28] Mov dst:reg6, src:Undefined
[ 38] Return value:reg6
block2:
[ 40] Mov dst:reg5, src:reg6
[ 50] GetById dst:reg6, base:reg6, `hello`
[ 70] Return value:reg6
member_then_call$adb462b3 optional-chain.js:22:5
Registers: 8
Blocks: 3
Constants:
[0] = Undefined
block0:
[ 0] Mov2 dst1:reg5, src1:Undefined, dst2:reg6, src2:arg0
[ 18] JumpNullish condition:reg6, true_target:block1, false_target:block2
block1:
[ 28] Mov dst:reg6, src:Undefined
[ 38] Return value:reg6
block2:
[ 40] Mov dst:reg5, src:reg6
[ 50] GetById dst:reg6, base:reg6, `x`
[ 70] Mov dst:reg5, src:reg6
[ 80] GetById dst:reg6, base:reg6, `foo`
[ a0] NewArray dst:reg7
[ b0] CallWithArgumentArray dst:reg6, callee:reg6, this_value:reg5, arguments:reg7
[ c8] Mov dst:reg5, src:Undefined
[ d8] Return value:reg6