Closed GorogPeter closed 1 year ago
It is quite a sophisticated output, but do we need it?
I think, with this patch, it's far easier to examine the bytecode. Shall I ask our colleagues, whether the patch is useful for them?
I believe it is a bit easier on the eyes, and when we examine larger blocks of generated bytecodes it could be more readable than the previous version. I would like this patch to land if possible.
Now it looks like this:
required stack size: 32 bytes
required stack size due to local: 16 bytes
bytecode size: 186 bytes
0 GlobalGet64 index: 0
16 Move64 srcOffset: 16 dstOffset: 8
32 Const32 dstOffset: 24 value: 4
48 I32Mul src1: 0 src2: 24 dst: 16
64 Load32 srcOffset: 16 dstOffset: 16
80 Call index: 0 paramOffsets: 16 resultOffsets:
106 Const32 dstOffset: 24 value: 1
122 I32Add src1: 0 src2: 24 dst: 0
138 I32Ne src1: 0 src2: 8 dst: 16
154 JumpIfTrue srcOffset: 16 dst: 32
170 End resultOffsets:
required stack size: 40 bytes
required stack size due to local: 16 bytes
bytecode size: 254 bytes
0 GlobalGet64 index: 0
16 Move64 srcOffset: 16 dstOffset: 8
32 Const32 dstOffset: 24 value: 4
48 I32Mul src1: 0 src2: 24 dst: 16
64 I32Sub src1: 8 src2: 0 dst: 24
80 Store32 src0Offset: 16 src1Offset: 24
96 Const32 dstOffset: 24 value: 1
112 I32Add src1: 0 src2: 24 dst: 0
128 I32Ne src1: 0 src2: 8 dst: 16
144 JumpIfTrue srcOffset: 16 dst: 32
160 Const32 dstOffset: 16 value: 0
176 Const32 dstOffset: 24 value: 0
192 GlobalGet64 index: 0
208 Call index: 1 paramOffsets: 16 24 32 resultOffsets:
238 End resultOffsets:
required stack size: 16 bytes
required stack size due to local: 0 bytes
bytecode size: 34 bytes
0 Load32 srcOffset: 0 dstOffset: 8
16 End resultOffsets: 8
invoke read(0) expect value(0) (line: 212) : OK
invoke read(4) expect value(1) (line: 213) : OK
invoke read(8) expect value(2) (line: 214) : OK
Now, the debug mode looks like this:
required stack size: 40 bytes
required stack size due to local: 16 bytes
bytecode size: 254 bytes
0 global.get64 index: 0
16 move64 srcOffset: 16 dstOffset: 8
32 const32 dstOffset: 24 value: 4
48 I32Mul src1: 0 src2: 24 dst: 16
64 I32Sub src1: 8 src2: 0 dst: 24
80 store32 src0Offset: 16 src1Offset: 24
96 const32 dstOffset: 24 value: 1
112 I32Add src1: 0 src2: 24 dst: 0
128 I32Ne src1: 0 src2: 8 dst: 16
144 jump_if_true srcOffset: 16 dst: 32
160 const32 dstOffset: 16 value: 0
176 const32 dstOffset: 24 value: 0
192 global.get64 index: 0
208 call index: 1 paramOffsets: 16 24 32 resultOffsets:
238 end resultOffsets:
required stack size: 16 bytes
required stack size due to local: 0 bytes
bytecode size: 34 bytes
0 load32 srcOffset: 0 dstOffset: 8
16 end resultOffsets: 8
invoke read(0) expect value(0) (line: 212) : OK
invoke read(4) expect value(1) (line: 213) : OK
invoke read(8) expect value(2) (line: 214) : OK
@GorogPeter Is this patch done or any updates left?
@clover2123 Yes, it's done.
Now the debug mode is better arranged, easier to examine. Dump() functions in ByteCode.h have been divided into getName() and printExtra() functions.
Old debug mode:
New debug mode: