Skip to content

Commit b5e3e9e

Browse files
committed
fix: template literal crash GC
1 parent 3ff1003 commit b5e3e9e

File tree

3 files changed

+11
-15
lines changed

3 files changed

+11
-15
lines changed

src/compiler.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8147,6 +8147,7 @@ export class Compiler extends DiagnosticEmitter {
81478147
}
81488148
let arrayInstance = assert(this.resolver.resolveClass(this.program.staticArrayPrototype, [ stringType ]));
81498149
let segment = this.addStaticBuffer(stringType, values, arrayInstance.id);
8150+
this.program.OBJECTInstance.writeField("gcInfo", 3, segment.buffer, 0); // use transparent gcinfo
81508151
let offset = i64_add(segment.offset, i64_new(this.program.totalOverhead));
81518152
let joinInstance = assert(arrayInstance.getMethod("join"));
81528153
let indexedSetInstance = assert(arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true));

tests/compiler/templateliteral.debug.wat

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
(data (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00(\00A\00=\00\00\00\00\00\00\00")
6161
(data (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00,\00 \00B\00=\00\00\00\00\00")
6262
(data (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00)\00\00\00\00\00\00\00\00\00\00\00")
63-
(data (i32.const 700) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
63+
(data (i32.const 700) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
6464
(data (i32.const 748) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)\00\00\00\00\00\00\00\00\00")
6565
(data (i32.const 796) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00")
6666
(data (i32.const 924) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00")
@@ -70,7 +70,7 @@
7070
(data (i32.const 2476) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00")
7171
(data (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001\00\00\00\00\00\00\00\00\00\00\00")
7272
(data (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\002\00\00\00\00\00\00\00\00\00")
73-
(data (i32.const 2636) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
73+
(data (i32.const 2636) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
7474
(data (i32.const 2684) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)\00\00\00\00\00\00\00\00\00")
7575
(data (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00")
7676
(data (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00")
@@ -82,7 +82,7 @@
8282
(data (i32.const 3824) "\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
8383
(data (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00.\000\00\00\00\00\00\00\00")
8484
(data (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00.\000\002\00.\000\00")
85-
(data (i32.const 3932) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
85+
(data (i32.const 3932) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
8686
(data (i32.const 3980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00(\00A\00=\001\00.\000\00,\00 \00B\00=\002\00.\000\00)\00")
8787
(data (i32.const 4028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00")
8888
(data (i32.const 4060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00p\00r\00e\00f\00\00\00\00\00")
@@ -95,11 +95,11 @@
9595
(data (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00r\00e\00f\00#\00\00\00\00\00")
9696
(data (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00r\00e\00f\00#\001\00\00\00")
9797
(data (i32.const 4348) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00r\00e\00f\00#\001\00r\00e\00f\00#\002\00\00\00\00\00\00\00\00\00")
98-
(data (i32.const 4396) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
98+
(data (i32.const 4396) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\02\00\00\00\00\00\00\90\02\00\00\00\00\00\00\b0\02\00\00\00\00\00\00\00\00\00\00")
9999
(data (i32.const 4444) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00(\00A\00=\00r\00e\00f\00#\001\00,\00 \00B\00=\00r\00e\00f\00#\002\00)\00\00\00\00\00\00\00\00\00")
100100
(data (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00")
101101
(data (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00:\00\00\00\00\00\00\00\00\00\00\00")
102-
(data (i32.const 4572) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00\a0\00\00\00\00\00\00\00\d0\11\00\00\00\00\00\00\a0\00\00\00\00\00\00\00\00\00\00\00")
102+
(data (i32.const 4572) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00\a0\00\00\00\00\00\00\00\d0\11\00\00\00\00\00\00\a0\00\00\00\00\00\00\00\00\00\00\00")
103103
(data (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00:\00b\00:\00c\00\00\00")
104104
(data (i32.const 4656) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04A\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
105105
(table $0 1 1 funcref)

tests/compiler/templateliteral.release.wat

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@
5656
(data (i32.const 1672) "\01\00\00\00\08\00\00\00,\00 \00B\00=")
5757
(data (i32.const 1692) "\1c")
5858
(data (i32.const 1704) "\01\00\00\00\02\00\00\00)")
59-
(data (i32.const 1724) ",")
60-
(data (i32.const 1736) "\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
59+
(data (i32.const 1724) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
6160
(data (i32.const 1772) ",")
6261
(data (i32.const 1784) "\01\00\00\00\14\00\00\00(\00A\00=\00a\00,\00 \00B\00=\00b\00)")
6362
(data (i32.const 1820) "|")
@@ -75,8 +74,7 @@
7574
(data (i32.const 3608) "\01\00\00\00\02\00\00\001")
7675
(data (i32.const 3628) "\1c")
7776
(data (i32.const 3640) "\01\00\00\00\04\00\00\001\002")
78-
(data (i32.const 3660) ",")
79-
(data (i32.const 3672) "\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
77+
(data (i32.const 3660) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
8078
(data (i32.const 3708) ",")
8179
(data (i32.const 3720) "\01\00\00\00\14\00\00\00(\00A\00=\001\00,\00 \00B\00=\002\00)")
8280
(data (i32.const 3756) "\1c")
@@ -94,8 +92,7 @@
9492
(data (i32.const 4904) "\01\00\00\00\06\00\00\001\00.\000")
9593
(data (i32.const 4924) "\1c")
9694
(data (i32.const 4936) "\01\00\00\00\0c\00\00\001\00.\000\002\00.\000")
97-
(data (i32.const 4956) ",")
98-
(data (i32.const 4968) "\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
95+
(data (i32.const 4956) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
9996
(data (i32.const 5004) ",")
10097
(data (i32.const 5016) "\01\00\00\00\1c\00\00\00(\00A\00=\001\00.\000\00,\00 \00B\00=\002\00.\000\00)")
10198
(data (i32.const 5052) "\1c")
@@ -120,16 +117,14 @@
120117
(data (i32.const 5352) "\01\00\00\00\n\00\00\00r\00e\00f\00#\001")
121118
(data (i32.const 5372) ",")
122119
(data (i32.const 5384) "\01\00\00\00\14\00\00\00r\00e\00f\00#\001\00r\00e\00f\00#\002")
123-
(data (i32.const 5420) ",")
124-
(data (i32.const 5432) "\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
120+
(data (i32.const 5420) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00p\06\00\00\00\00\00\00\90\06\00\00\00\00\00\00\b0\06")
125121
(data (i32.const 5468) "<")
126122
(data (i32.const 5480) "\01\00\00\00$\00\00\00(\00A\00=\00r\00e\00f\00#\001\00,\00 \00B\00=\00r\00e\00f\00#\002\00)")
127123
(data (i32.const 5532) "\1c")
128124
(data (i32.const 5544) "\01\00\00\00\02\00\00\00c")
129125
(data (i32.const 5564) "\1c")
130126
(data (i32.const 5576) "\01\00\00\00\02\00\00\00:")
131-
(data (i32.const 5596) ",")
132-
(data (i32.const 5608) "\03\00\00\00\14\00\00\00\a0\04\00\00\00\00\00\00\d0\15\00\00\00\00\00\00\a0\04")
127+
(data (i32.const 5596) ",\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00\a0\04\00\00\00\00\00\00\d0\15\00\00\00\00\00\00\a0\04")
133128
(data (i32.const 5644) "\1c")
134129
(data (i32.const 5656) "\01\00\00\00\n\00\00\00a\00:\00b\00:\00c")
135130
(data (i32.const 5680) "\06\00\00\00 \00\00\00\00\00\00\00 ")

0 commit comments

Comments
 (0)