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.
162 lines
4.4 KiB
Text
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
|