ladybird/Tests/LibJS/Bytecode/expected/optional-chain.txt
Andreas Kling 1ce4242b4b LibJS: Store bytecode cache indexes instead of pointers
Store compact cache indexes in bytecode instructions instead of raw
pointers to the executable cache vectors. This keeps the instruction
stream independent from heap addresses and removes pointer fixups when
materializing cached bytecode.

Resolve the mutable cache pointers at execution time from the current
Executable. Bytecode test expectations are updated for the smaller cache
operands and resulting instruction offsets.
2026-05-18 20:35:14 +02:00

162 lines
4.4 KiB
Text

$78a7573a optional-chain.js:25:1
Registers: 8
Blocks: 1
Constants:
[0] = Undefined
[1] = Null
block0:
[ 0] GetGlobal dst:reg6, `member`
[ 10] Call dst:reg5, callee:reg6, this_value:Undefined, member, arguments:[Null]
[ 38] GetGlobal dst:reg7, `nested_member`
[ 48] Call dst:reg6, callee:reg7, this_value:Undefined, nested_member, arguments:[Null]
[ 70] GetGlobal dst:reg7, `call_no_args`
[ 80] Call dst:reg5, callee:reg7, this_value:Undefined, call_no_args, arguments:[Null]
[ a8] GetGlobal dst:reg7, `call_with_args`
[ b8] Call dst:reg6, callee:reg7, this_value:Undefined, call_with_args, arguments:[Null]
[ e0] GetGlobal dst:reg7, `computed`
[ f0] Call dst:reg5, callee:reg7, this_value:Undefined, computed, arguments:[Null]
[ 118] GetGlobal dst:reg7, `member_then_call`
[ 128] Call dst:reg6, callee:reg7, this_value:Undefined, member_then_call, arguments:[Null]
[ 150] End value:reg6
member$36eb39cf 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`
[ 68] Return value:reg6
nested_member$85d10998 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`
[ 68] JumpNullish condition:reg6, true_target:block1, false_target:block3
block3:
[ 78] Mov dst:reg5, src:reg6
[ 88] GetById dst:reg6, base:reg6, `y`
[ a0] Return value:reg6
call_no_args$70a09739 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`
[ 68] NewArray dst:reg7
[ 78] CallWithArgumentArray dst:reg6, callee:reg6, this_value:reg5, arguments:reg7
[ 90] Mov dst:reg5, src:Undefined
[ a0] Return value:reg6
call_with_args$b7c2071f 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`
[ 68] Mov3 dst1:reg8, src1:Int32(1), dst2:reg9, src2:Int32(2), dst3:reg10, src3:Int32(3)
[ 88] NewArray dst:reg7, elements:[reg8, reg9, reg10]
[ a8] CallWithArgumentArray dst:reg6, callee:reg6, this_value:reg5, arguments:reg7
[ c0] Mov dst:reg5, src:Undefined
[ d0] Return value:reg6
computed$9ef8515a 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`
[ 68] Return value:reg6
member_then_call$b60035e3 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`
[ 68] Mov dst:reg5, src:reg6
[ 78] GetById dst:reg6, base:reg6, `foo`
[ 90] NewArray dst:reg7
[ a0] CallWithArgumentArray dst:reg6, callee:reg6, this_value:reg5, arguments:reg7
[ b8] Mov dst:reg5, src:Undefined
[ c8] Return value:reg6