Skip to content

Commit 5797f2a

Browse files
authored
Improve DUMP_READ_OBJECT (#382)
- improve `JS_DumpString`: use `L` prefix for wide strings - dump variable kind and flags for locals and closures - disassemble byte code in DUMP_READ_OBJECT - pass start_pos to `dump_byte_code` and `dump_single_byte_code` - write constant pool before function bytecode (bump version to 11) - update generated code
1 parent 2c47b7b commit 5797f2a

File tree

6 files changed

+11105
-11080
lines changed

6 files changed

+11105
-11080
lines changed

gen/function_source.c

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,54 +5,54 @@
55
const uint32_t qjsc_function_source_size = 384;
66

77
const uint8_t qjsc_function_source[384] = {
8-
0x0a, 0x06, 0x0c, 0x61, 0x63, 0x74, 0x75, 0x61,
9-
0x6c, 0x02, 0x66, 0x0c, 0x65, 0x78, 0x70, 0x65,
10-
0x63, 0x74, 0x14, 0x75, 0x73, 0x65, 0x20, 0x73,
11-
0x74, 0x72, 0x69, 0x63, 0x74, 0x34, 0x66, 0x75,
12-
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66,
13-
0x28, 0x29, 0x20, 0x7b, 0x20, 0x72, 0x65, 0x74,
14-
0x75, 0x72, 0x6e, 0x20, 0x34, 0x32, 0x20, 0x7d,
15-
0x30, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x66,
16-
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
17-
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x6a,
18-
0x73, 0x0c, 0x00, 0x02, 0x01, 0x9e, 0x01, 0x00,
8+
0x0b, 0x06, 0x0c, 0x61, 0x63, 0x74, 0x75, 0x61,
9+
0x6c, 0x02, 0x66, 0x30, 0x74, 0x65, 0x73, 0x74,
10+
0x73, 0x2f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
11+
0x6f, 0x6e, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63,
12+
0x65, 0x2e, 0x6a, 0x73, 0x0c, 0x65, 0x78, 0x70,
13+
0x65, 0x63, 0x74, 0x14, 0x75, 0x73, 0x65, 0x20,
14+
0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x34, 0x66,
15+
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
16+
0x66, 0x28, 0x29, 0x20, 0x7b, 0x20, 0x72, 0x65,
17+
0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x32, 0x20,
18+
0x7d, 0x0c, 0x00, 0x02, 0x01, 0x9e, 0x01, 0x00,
1919
0x06, 0x00, 0x03, 0x00, 0x01, 0xa0, 0x01, 0x06,
2020
0xa0, 0x01, 0x00, 0x00, 0x00, 0xb2, 0x03, 0x02,
2121
0x00, 0x30, 0xb4, 0x03, 0x04, 0x00, 0x70, 0xb2,
2222
0x03, 0x04, 0x03, 0x70, 0x10, 0x00, 0x01, 0x00,
23-
0xe0, 0x01, 0x00, 0x01, 0x00, 0x0c, 0x03, 0xc1,
24-
0x05, 0x08, 0xc1, 0x04, 0x3f, 0xdb, 0x00, 0x00,
25-
0x00, 0x80, 0x3f, 0xda, 0x00, 0x00, 0x00, 0x40,
26-
0x3e, 0xdb, 0x00, 0x00, 0x00, 0x80, 0xbe, 0x00,
27-
0x40, 0xda, 0x00, 0x00, 0x00, 0x00, 0x04, 0xdc,
28-
0x00, 0x00, 0x00, 0xc8, 0x04, 0xdd, 0x00, 0x00,
29-
0x00, 0x3a, 0xdb, 0x00, 0x00, 0x00, 0x61, 0x01,
30-
0x00, 0x38, 0xda, 0x00, 0x00, 0x00, 0x42, 0x36,
31-
0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0xc9, 0x06,
32-
0xc8, 0x62, 0x01, 0x00, 0x38, 0xdb, 0x00, 0x00,
33-
0x00, 0xaf, 0xe9, 0x0b, 0x38, 0x92, 0x00, 0x00,
34-
0x00, 0x62, 0x01, 0x00, 0xee, 0x2f, 0x61, 0x03,
35-
0x00, 0x61, 0x02, 0x00, 0x38, 0x39, 0x00, 0x00,
36-
0x00, 0x38, 0xdb, 0x00, 0x00, 0x00, 0x04, 0xda,
37-
0x00, 0x00, 0x00, 0x9d, 0x31, 0x01, 0x00, 0x04,
38-
0x00, 0xca, 0x62, 0x02, 0x00, 0x42, 0x36, 0x00,
39-
0x00, 0x00, 0x24, 0x00, 0x00, 0xcb, 0x06, 0xc8,
40-
0x62, 0x03, 0x00, 0x38, 0xdb, 0x00, 0x00, 0x00,
41-
0xaf, 0xe9, 0x0b, 0x38, 0x92, 0x00, 0x00, 0x00,
42-
0x62, 0x03, 0x00, 0xee, 0x2f, 0x68, 0x03, 0x00,
43-
0x68, 0x02, 0x00, 0xc4, 0x28, 0xbc, 0x03, 0x01,
44-
0x01, 0x28, 0x60, 0x01, 0x49, 0x02, 0x21, 0x1a,
45-
0x1b, 0x04, 0x1e, 0x1d, 0x12, 0x26, 0x49, 0x1d,
46-
0x0c, 0x06, 0x11, 0x18, 0x2a, 0x1c, 0x37, 0x41,
47-
0x21, 0x1c, 0x34, 0x18, 0x1b, 0x04, 0x26, 0x11,
48-
0x3f, 0x1d, 0x0c, 0x06, 0x11, 0x18, 0x2a, 0x1c,
49-
0x53, 0x41, 0x00, 0x0c, 0x43, 0x02, 0x01, 0xb4,
50-
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03,
51-
0x00, 0xbb, 0x2a, 0x28, 0xbc, 0x03, 0x03, 0x01,
52-
0x04, 0x02, 0x1e, 0x0c, 0x0e, 0x1a, 0x66, 0x75,
53-
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66,
54-
0x28, 0x29, 0x20, 0x7b, 0x20, 0x72, 0x65, 0x74,
55-
0x75, 0x72, 0x6e, 0x20, 0x34, 0x32, 0x20, 0x7d,
23+
0xe0, 0x01, 0x00, 0x01, 0x00, 0x0c, 0x43, 0x02,
24+
0x01, 0xb4, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00,
25+
0x00, 0x03, 0x00, 0xbb, 0x2a, 0x28, 0xb6, 0x03,
26+
0x03, 0x01, 0x04, 0x02, 0x1e, 0x0c, 0x0e, 0x1a,
27+
0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
28+
0x20, 0x66, 0x28, 0x29, 0x20, 0x7b, 0x20, 0x72,
29+
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x32,
30+
0x20, 0x7d, 0x0c, 0x03, 0xc1, 0x05, 0x08, 0xc1,
31+
0x04, 0x3f, 0xdc, 0x00, 0x00, 0x00, 0x80, 0x3f,
32+
0xda, 0x00, 0x00, 0x00, 0x40, 0x3e, 0xdc, 0x00,
33+
0x00, 0x00, 0x80, 0xbe, 0x00, 0x40, 0xda, 0x00,
34+
0x00, 0x00, 0x00, 0x04, 0xdd, 0x00, 0x00, 0x00,
35+
0xc8, 0x04, 0xde, 0x00, 0x00, 0x00, 0x3a, 0xdc,
36+
0x00, 0x00, 0x00, 0x61, 0x01, 0x00, 0x38, 0xda,
37+
0x00, 0x00, 0x00, 0x42, 0x36, 0x00, 0x00, 0x00,
38+
0x24, 0x00, 0x00, 0xc9, 0x06, 0xc8, 0x62, 0x01,
39+
0x00, 0x38, 0xdc, 0x00, 0x00, 0x00, 0xaf, 0xe9,
40+
0x0b, 0x38, 0x92, 0x00, 0x00, 0x00, 0x62, 0x01,
41+
0x00, 0xee, 0x2f, 0x61, 0x03, 0x00, 0x61, 0x02,
42+
0x00, 0x38, 0x39, 0x00, 0x00, 0x00, 0x38, 0xdc,
43+
0x00, 0x00, 0x00, 0x04, 0xda, 0x00, 0x00, 0x00,
44+
0x9d, 0x31, 0x01, 0x00, 0x04, 0x00, 0xca, 0x62,
45+
0x02, 0x00, 0x42, 0x36, 0x00, 0x00, 0x00, 0x24,
46+
0x00, 0x00, 0xcb, 0x06, 0xc8, 0x62, 0x03, 0x00,
47+
0x38, 0xdc, 0x00, 0x00, 0x00, 0xaf, 0xe9, 0x0b,
48+
0x38, 0x92, 0x00, 0x00, 0x00, 0x62, 0x03, 0x00,
49+
0xee, 0x2f, 0x68, 0x03, 0x00, 0x68, 0x02, 0x00,
50+
0xc4, 0x28, 0xb6, 0x03, 0x01, 0x01, 0x28, 0x60,
51+
0x01, 0x49, 0x02, 0x21, 0x1a, 0x1b, 0x04, 0x1e,
52+
0x1d, 0x12, 0x26, 0x49, 0x1d, 0x0c, 0x06, 0x11,
53+
0x18, 0x2a, 0x1c, 0x37, 0x41, 0x21, 0x1c, 0x34,
54+
0x18, 0x1b, 0x04, 0x26, 0x11, 0x3f, 0x1d, 0x0c,
55+
0x06, 0x11, 0x18, 0x2a, 0x1c, 0x53, 0x41, 0x00,
5656
};
5757

5858
static JSContext *JS_NewCustomContext(JSRuntime *rt)

gen/hello.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
const uint32_t qjsc_hello_size = 89;
66

77
const uint8_t qjsc_hello[89] = {
8-
0x0a, 0x04, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
8+
0x0b, 0x04, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x6f,
99
0x6c, 0x65, 0x06, 0x6c, 0x6f, 0x67, 0x16, 0x48,
1010
0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72,
1111
0x6c, 0x64, 0x22, 0x65, 0x78, 0x61, 0x6d, 0x70,

gen/hello_module.c

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,51 @@
55
const uint32_t qjsc_fib_module_size = 310;
66

77
const uint8_t qjsc_fib_module[310] = {
8-
0x0a, 0x03, 0x2c, 0x65, 0x78, 0x61, 0x6d, 0x70,
8+
0x0b, 0x03, 0x2c, 0x65, 0x78, 0x61, 0x6d, 0x70,
99
0x6c, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x62, 0x5f,
1010
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6a,
1111
0x73, 0x06, 0x66, 0x69, 0x62, 0x02, 0x6e, 0x0d,
1212
0xb2, 0x03, 0x00, 0x01, 0x00, 0x00, 0xb4, 0x03,
1313
0x00, 0x00, 0x0c, 0x20, 0x02, 0x01, 0x9e, 0x01,
1414
0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x09, 0x00,
15-
0xb4, 0x03, 0x00, 0x01, 0x08, 0xe9, 0x05, 0xbe,
16-
0x00, 0xe0, 0x29, 0x06, 0x2e, 0xb2, 0x03, 0x01,
17-
0x01, 0x06, 0x01, 0x01, 0x00, 0x07, 0x14, 0x02,
18-
0x00, 0x0c, 0x43, 0x02, 0x01, 0xb4, 0x03, 0x01,
19-
0x00, 0x01, 0x04, 0x01, 0x00, 0x1a, 0x01, 0xb6,
20-
0x03, 0x00, 0x01, 0x00, 0xb4, 0x03, 0x00, 0x00,
21-
0xd0, 0xb3, 0xa7, 0xe9, 0x03, 0xb3, 0x28, 0xd0,
22-
0xb4, 0xac, 0xe9, 0x03, 0xb4, 0x28, 0xdc, 0xd0,
23-
0xb4, 0x9e, 0xee, 0xdc, 0xd0, 0xb5, 0x9e, 0xee,
24-
0x9d, 0x28, 0xb2, 0x03, 0x02, 0x08, 0x20, 0x04,
25-
0x00, 0x07, 0x06, 0x07, 0x06, 0x12, 0x09, 0x08,
26-
0x07, 0x07, 0x10, 0x07, 0x06, 0x07, 0x06, 0x12,
27-
0x13, 0x08, 0x07, 0x08, 0x16, 0x0c, 0x0c, 0x07,
28-
0x04, 0x0c, 0x0a, 0x0c, 0x0c, 0x07, 0x04, 0x8d,
29-
0x01, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
30-
0x6e, 0x20, 0x66, 0x69, 0x62, 0x28, 0x6e, 0x29,
31-
0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
32-
0x66, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x3d, 0x20,
33-
0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
34-
0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
35-
0x6e, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20,
36-
0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66,
37-
0x20, 0x28, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31,
38-
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
39-
0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
40-
0x20, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
41-
0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
15+
0xb4, 0x03, 0x00, 0x01, 0x0c, 0x43, 0x02, 0x01,
16+
0xb4, 0x03, 0x01, 0x00, 0x01, 0x04, 0x01, 0x00,
17+
0x1a, 0x01, 0xb6, 0x03, 0x00, 0x01, 0x00, 0xb4,
18+
0x03, 0x00, 0x00, 0xd0, 0xb3, 0xa7, 0xe9, 0x03,
19+
0xb3, 0x28, 0xd0, 0xb4, 0xac, 0xe9, 0x03, 0xb4,
20+
0x28, 0xdc, 0xd0, 0xb4, 0x9e, 0xee, 0xdc, 0xd0,
21+
0xb5, 0x9e, 0xee, 0x9d, 0x28, 0xb2, 0x03, 0x02,
22+
0x08, 0x20, 0x04, 0x00, 0x07, 0x06, 0x07, 0x06,
23+
0x12, 0x09, 0x08, 0x07, 0x07, 0x10, 0x07, 0x06,
24+
0x07, 0x06, 0x12, 0x13, 0x08, 0x07, 0x08, 0x16,
25+
0x0c, 0x0c, 0x07, 0x04, 0x0c, 0x0a, 0x0c, 0x0c,
26+
0x07, 0x04, 0x8d, 0x01, 0x66, 0x75, 0x6e, 0x63,
27+
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x69, 0x62,
28+
0x28, 0x6e, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20,
29+
0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20,
30+
0x3c, 0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20,
31+
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
32+
0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x3b, 0x0a,
33+
0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
34+
0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3d,
35+
0x3d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20,
4236
0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
43-
0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x62, 0x28,
44-
0x6e, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x2b,
45-
0x20, 0x66, 0x69, 0x62, 0x28, 0x6e, 0x20, 0x2d,
46-
0x20, 0x32, 0x29, 0x3b, 0x0a, 0x7d,
37+
0x75, 0x72, 0x6e, 0x20, 0x31, 0x3b, 0x0a, 0x20,
38+
0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a,
39+
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
40+
0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66,
41+
0x69, 0x62, 0x28, 0x6e, 0x20, 0x2d, 0x20, 0x31,
42+
0x29, 0x20, 0x2b, 0x20, 0x66, 0x69, 0x62, 0x28,
43+
0x6e, 0x20, 0x2d, 0x20, 0x32, 0x29, 0x3b, 0x0a,
44+
0x7d, 0x08, 0xe9, 0x05, 0xbe, 0x00, 0xe0, 0x29,
45+
0x06, 0x2e, 0xb2, 0x03, 0x01, 0x01, 0x06, 0x01,
46+
0x01, 0x00, 0x07, 0x14, 0x02, 0x00,
4747
};
4848

4949
const uint32_t qjsc_hello_module_size = 177;
5050

5151
const uint8_t qjsc_hello_module[177] = {
52-
0x0a, 0x07, 0x30, 0x65, 0x78, 0x61, 0x6d, 0x70,
52+
0x0b, 0x07, 0x30, 0x65, 0x78, 0x61, 0x6d, 0x70,
5353
0x6c, 0x65, 0x73, 0x2f, 0x68, 0x65, 0x6c, 0x6c,
5454
0x6f, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
5555
0x2e, 0x6a, 0x73, 0x1e, 0x2e, 0x2f, 0x66, 0x69,

0 commit comments

Comments
 (0)