warpo 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/assemblyscript/std/README.md +5 -0
  2. package/assemblyscript/std/assembly/array.ts +542 -0
  3. package/assemblyscript/std/assembly/arraybuffer.ts +72 -0
  4. package/assemblyscript/std/assembly/builtins.ts +2312 -0
  5. package/assemblyscript/std/assembly/compat.ts +2 -0
  6. package/assemblyscript/std/assembly/dataview.ts +144 -0
  7. package/assemblyscript/std/assembly/date.ts +383 -0
  8. package/assemblyscript/std/assembly/diagnostics.ts +11 -0
  9. package/assemblyscript/std/assembly/error.ts +39 -0
  10. package/assemblyscript/std/assembly/function.ts +44 -0
  11. package/assemblyscript/std/assembly/iterator.ts +24 -0
  12. package/assemblyscript/std/assembly/map.ts +304 -0
  13. package/assemblyscript/std/assembly/math.ts +3401 -0
  14. package/assemblyscript/std/assembly/memory.ts +110 -0
  15. package/assemblyscript/std/assembly/number.ts +388 -0
  16. package/assemblyscript/std/assembly/object.ts +30 -0
  17. package/assemblyscript/std/assembly/polyfills.ts +24 -0
  18. package/assemblyscript/std/assembly/process.ts +7 -0
  19. package/assemblyscript/std/assembly/promise.ts +172 -0
  20. package/assemblyscript/std/assembly/reference.ts +48 -0
  21. package/assemblyscript/std/assembly/regexp.ts +16 -0
  22. package/assemblyscript/std/assembly/rt/common.ts +79 -0
  23. package/assemblyscript/std/assembly/rt/index-incremental.ts +4 -0
  24. package/assemblyscript/std/assembly/rt/index-radical.ts +4 -0
  25. package/assemblyscript/std/assembly/rt/index.d.ts +37 -0
  26. package/assemblyscript/std/assembly/rt/itcms.ts +415 -0
  27. package/assemblyscript/std/assembly/rt/tcms.ts +276 -0
  28. package/assemblyscript/std/assembly/rt/tlsf.ts +564 -0
  29. package/assemblyscript/std/assembly/rt.ts +71 -0
  30. package/assemblyscript/std/assembly/set.ts +261 -0
  31. package/assemblyscript/std/assembly/shared/feature.ts +69 -0
  32. package/assemblyscript/std/assembly/shared/host.ts +12 -0
  33. package/assemblyscript/std/assembly/shared/runtime.ts +9 -0
  34. package/assemblyscript/std/assembly/shared/target.ts +9 -0
  35. package/assemblyscript/std/assembly/shared/tsconfig.json +9 -0
  36. package/assemblyscript/std/assembly/shared/typeinfo.ts +72 -0
  37. package/assemblyscript/std/assembly/staticarray.ts +446 -0
  38. package/assemblyscript/std/assembly/string.ts +892 -0
  39. package/assemblyscript/std/assembly/symbol.ts +61 -0
  40. package/assemblyscript/std/assembly/table.ts +15 -0
  41. package/assemblyscript/std/assembly/tsconfig.json +4 -0
  42. package/assemblyscript/std/assembly/tuple.ts +36 -0
  43. package/assemblyscript/std/assembly/typedarray.ts +2000 -0
  44. package/assemblyscript/std/assembly/uri.ts +17 -0
  45. package/assemblyscript/std/assembly/util/bytes.ts +90 -0
  46. package/assemblyscript/std/assembly/util/casemap.ts +264 -0
  47. package/assemblyscript/std/assembly/util/error.ts +54 -0
  48. package/assemblyscript/std/assembly/util/hash.ts +117 -0
  49. package/assemblyscript/std/assembly/util/math.ts +1922 -0
  50. package/assemblyscript/std/assembly/util/memory.ts +309 -0
  51. package/assemblyscript/std/assembly/util/number.ts +884 -0
  52. package/assemblyscript/std/assembly/util/sort.ts +282 -0
  53. package/assemblyscript/std/assembly/util/string.ts +1075 -0
  54. package/assemblyscript/std/assembly/util/uri.ts +251 -0
  55. package/assemblyscript/std/assembly/vector.ts +3 -0
  56. package/dist/debug_server/debugSession.d.ts +1 -0
  57. package/dist/debug_server/debugSession.js +15 -6
  58. package/dist/debug_server/debugSession.js.map +1 -1
  59. package/dist/debug_server/debuggerWasmModule.d.ts +3 -0
  60. package/dist/debug_server/debuggerWasmModule.js +47 -2
  61. package/dist/debug_server/debuggerWasmModule.js.map +1 -1
  62. package/dist/debug_server/tests/debugSession.test.js +96 -0
  63. package/dist/debug_server/tests/debugSession.test.js.map +1 -1
  64. package/dist/debug_server/tests/testModule/debugger_closure_stepping.d.ts +1 -0
  65. package/dist/debug_server/tests/testModule/debugger_closure_stepping.js +12 -0
  66. package/dist/debug_server/tests/testModule/debugger_closure_stepping.js.map +1 -0
  67. package/dist/debug_server/tests/testModule/debugger_std_array.d.ts +1 -0
  68. package/dist/debug_server/tests/testModule/debugger_std_array.js +6 -0
  69. package/dist/debug_server/tests/testModule/debugger_std_array.js.map +1 -0
  70. package/dist/debug_server/tests/testModule/debugger_string_stepping.d.ts +1 -0
  71. package/dist/debug_server/tests/testModule/debugger_string_stepping.js +9 -0
  72. package/dist/debug_server/tests/testModule/debugger_string_stepping.js.map +1 -0
  73. package/package.json +7 -7
  74. package/warpo_extension/std/tsconfig.json +4 -0
  75. package/warpo_extension/std/warpo/ffi.ts +16 -0
  76. package/warpo_extension/std/warpo/test/comparison.ts +122 -0
  77. package/warpo_extension/std/warpo/test/env.ts +33 -0
  78. package/warpo_extension/std/warpo/test/expect.ts +101 -0
  79. package/warpo_extension/std/warpo/test/formatPrint.ts +99 -0
  80. package/warpo_extension/std/warpo/test/implement.ts +41 -0
  81. package/warpo_extension/std/warpo/test/index.d.ts +0 -0
  82. package/warpo_extension/std/warpo/test/index.ts +39 -0
  83. package/warpo_extension/std/warpo/test/mockInstrument.ts +26 -0
  84. package/warpo_extension/std/warpo/utf8/const_str.ts +17 -0
  85. package/warpo_extension/std/wasi_snapshot_preview1/LICENSE +202 -0
  86. package/warpo_extension/std/wasi_snapshot_preview1/README.md +1 -0
  87. package/warpo_extension/std/wasi_snapshot_preview1/bindings/wasi_snapshot_preview1.ts +1731 -0
  88. package/warpo_extension/std/wasi_snapshot_preview1/wasi_console.ts +96 -0
  89. package/warpo_extension/std/wasi_snapshot_preview1/wasi_crypto.ts +8 -0
  90. package/warpo_extension/std/wasi_snapshot_preview1/wasi_date.ts +13 -0
  91. package/warpo_extension/std/wasi_snapshot_preview1/wasi_internal.ts +119 -0
  92. package/warpo_extension/std/wasi_snapshot_preview1/wasi_performance.ts +11 -0
  93. package/warpo_extension/std/wasi_snapshot_preview1/wasi_process.ts +191 -0
@@ -0,0 +1,309 @@
1
+ export function memcpy(dest: usize, src: usize, n: usize): void {
2
+ // see: musl/src/string/memcpy.c
3
+ let w: u32, x: u32;
4
+
5
+ // copy 1 byte each until src is aligned to 4 bytes
6
+ while (n && src & 3) {
7
+ store<u8>(dest++, load<u8>(src++));
8
+ n--;
9
+ }
10
+
11
+ // if dst is aligned to 4 bytes as well, copy 4 bytes each
12
+ if ((dest & 3) == 0) {
13
+ while (n >= 16) {
14
+ store<u32>(dest, load<u32>(src));
15
+ store<u32>(dest + 4, load<u32>(src + 4));
16
+ store<u32>(dest + 8, load<u32>(src + 8));
17
+ store<u32>(dest + 12, load<u32>(src + 12));
18
+ src += 16;
19
+ dest += 16;
20
+ n -= 16;
21
+ }
22
+ if (n & 8) {
23
+ store<u32>(dest, load<u32>(src));
24
+ store<u32>(dest + 4, load<u32>(src + 4));
25
+ dest += 8;
26
+ src += 8;
27
+ }
28
+ if (n & 4) {
29
+ store<u32>(dest, load<u32>(src));
30
+ dest += 4;
31
+ src += 4;
32
+ }
33
+ if (n & 2) {
34
+ // drop to 2 bytes each
35
+ store<u16>(dest, load<u16>(src));
36
+ dest += 2;
37
+ src += 2;
38
+ }
39
+ if (n & 1) {
40
+ // drop to 1 byte
41
+ store<u8>(dest++, load<u8>(src++));
42
+ }
43
+ return;
44
+ }
45
+
46
+ // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each
47
+ // doing shifts if faster when copying enough bytes (here: 32 or more)
48
+ if (n >= 32) {
49
+ switch ((<u32>dest) & 3) {
50
+ // known to be != 0
51
+ case 1: {
52
+ w = load<u32>(src);
53
+ store<u8>(dest++, load<u8>(src++));
54
+ store<u8>(dest++, load<u8>(src++));
55
+ store<u8>(dest++, load<u8>(src++));
56
+ n -= 3;
57
+ while (n >= 17) {
58
+ x = load<u32>(src + 1);
59
+ store<u32>(dest, (w >> 24) | (x << 8));
60
+ w = load<u32>(src + 5);
61
+ store<u32>(dest + 4, (x >> 24) | (w << 8));
62
+ x = load<u32>(src + 9);
63
+ store<u32>(dest + 8, (w >> 24) | (x << 8));
64
+ w = load<u32>(src + 13);
65
+ store<u32>(dest + 12, (x >> 24) | (w << 8));
66
+ src += 16;
67
+ dest += 16;
68
+ n -= 16;
69
+ }
70
+ break;
71
+ }
72
+ case 2: {
73
+ w = load<u32>(src);
74
+ store<u8>(dest++, load<u8>(src++));
75
+ store<u8>(dest++, load<u8>(src++));
76
+ n -= 2;
77
+ while (n >= 18) {
78
+ x = load<u32>(src + 2);
79
+ store<u32>(dest, (w >> 16) | (x << 16));
80
+ w = load<u32>(src + 6);
81
+ store<u32>(dest + 4, (x >> 16) | (w << 16));
82
+ x = load<u32>(src + 10);
83
+ store<u32>(dest + 8, (w >> 16) | (x << 16));
84
+ w = load<u32>(src + 14);
85
+ store<u32>(dest + 12, (x >> 16) | (w << 16));
86
+ src += 16;
87
+ dest += 16;
88
+ n -= 16;
89
+ }
90
+ break;
91
+ }
92
+ case 3: {
93
+ w = load<u32>(src);
94
+ store<u8>(dest++, load<u8>(src++));
95
+ n -= 1;
96
+ while (n >= 19) {
97
+ x = load<u32>(src + 3);
98
+ store<u32>(dest, (w >> 8) | (x << 24));
99
+ w = load<u32>(src + 7);
100
+ store<u32>(dest + 4, (x >> 8) | (w << 24));
101
+ x = load<u32>(src + 11);
102
+ store<u32>(dest + 8, (w >> 8) | (x << 24));
103
+ w = load<u32>(src + 15);
104
+ store<u32>(dest + 12, (x >> 8) | (w << 24));
105
+ src += 16;
106
+ dest += 16;
107
+ n -= 16;
108
+ }
109
+ break;
110
+ }
111
+ }
112
+ }
113
+
114
+ // copy remaining bytes one by one
115
+ if (n & 16) {
116
+ store<u8>(dest++, load<u8>(src++));
117
+ store<u8>(dest++, load<u8>(src++));
118
+ store<u8>(dest++, load<u8>(src++));
119
+ store<u8>(dest++, load<u8>(src++));
120
+ store<u8>(dest++, load<u8>(src++));
121
+ store<u8>(dest++, load<u8>(src++));
122
+ store<u8>(dest++, load<u8>(src++));
123
+ store<u8>(dest++, load<u8>(src++));
124
+ store<u8>(dest++, load<u8>(src++));
125
+ store<u8>(dest++, load<u8>(src++));
126
+ store<u8>(dest++, load<u8>(src++));
127
+ store<u8>(dest++, load<u8>(src++));
128
+ store<u8>(dest++, load<u8>(src++));
129
+ store<u8>(dest++, load<u8>(src++));
130
+ store<u8>(dest++, load<u8>(src++));
131
+ store<u8>(dest++, load<u8>(src++));
132
+ }
133
+ if (n & 8) {
134
+ store<u8>(dest++, load<u8>(src++));
135
+ store<u8>(dest++, load<u8>(src++));
136
+ store<u8>(dest++, load<u8>(src++));
137
+ store<u8>(dest++, load<u8>(src++));
138
+ store<u8>(dest++, load<u8>(src++));
139
+ store<u8>(dest++, load<u8>(src++));
140
+ store<u8>(dest++, load<u8>(src++));
141
+ store<u8>(dest++, load<u8>(src++));
142
+ }
143
+ if (n & 4) {
144
+ store<u8>(dest++, load<u8>(src++));
145
+ store<u8>(dest++, load<u8>(src++));
146
+ store<u8>(dest++, load<u8>(src++));
147
+ store<u8>(dest++, load<u8>(src++));
148
+ }
149
+ if (n & 2) {
150
+ store<u8>(dest++, load<u8>(src++));
151
+ store<u8>(dest++, load<u8>(src++));
152
+ }
153
+ if (n & 1) {
154
+ store<u8>(dest++, load<u8>(src++));
155
+ }
156
+ }
157
+
158
+ // @ts-ignore: decorator
159
+ @inline
160
+ export function memmove(dest: usize, src: usize, n: usize): void {
161
+ // see: musl/src/string/memmove.c
162
+ if (dest == src) return;
163
+ if (ASC_SHRINK_LEVEL < 1) {
164
+ if (src - dest - n <= -(n << 1)) {
165
+ memcpy(dest, src, n);
166
+ return;
167
+ }
168
+ }
169
+ if (dest < src) {
170
+ if (ASC_SHRINK_LEVEL < 2) {
171
+ if ((src & 7) == (dest & 7)) {
172
+ while (dest & 7) {
173
+ if (!n) return;
174
+ --n;
175
+ store<u8>(dest++, load<u8>(src++));
176
+ }
177
+ while (n >= 8) {
178
+ store<u64>(dest, load<u64>(src));
179
+ n -= 8;
180
+ dest += 8;
181
+ src += 8;
182
+ }
183
+ }
184
+ }
185
+ while (n) {
186
+ store<u8>(dest++, load<u8>(src++));
187
+ --n;
188
+ }
189
+ } else {
190
+ if (ASC_SHRINK_LEVEL < 2) {
191
+ if ((src & 7) == (dest & 7)) {
192
+ while ((dest + n) & 7) {
193
+ if (!n) return;
194
+ store<u8>(dest + --n, load<u8>(src + n));
195
+ }
196
+ while (n >= 8) {
197
+ n -= 8;
198
+ store<u64>(dest + n, load<u64>(src + n));
199
+ }
200
+ }
201
+ }
202
+ while (n) {
203
+ store<u8>(dest + --n, load<u8>(src + n));
204
+ }
205
+ }
206
+ }
207
+
208
+ // @ts-ignore: decorator
209
+ @inline
210
+ export function memset(dest: usize, c: u8, n: usize): void {
211
+ // see: musl/src/string/memset
212
+ if (ASC_SHRINK_LEVEL > 1) {
213
+ while (n) {
214
+ store<u8>(dest++, c);
215
+ --n;
216
+ }
217
+ } else {
218
+ // fill head and tail with minimal branching
219
+ if (!n) return;
220
+ let dend = dest + n;
221
+ store<u8>(dest, c);
222
+ store<u8>(dend - 1, c);
223
+ if (n <= 2) return;
224
+ store<u8>(dest, c, 1);
225
+ store<u8>(dest, c, 2);
226
+ store<u8>(dend - 2, c);
227
+ store<u8>(dend - 3, c);
228
+ if (n <= 6) return;
229
+ store<u8>(dest, c, 3);
230
+ store<u8>(dend - 4, c);
231
+ if (n <= 8) return;
232
+
233
+ // advance pointer to align it at 4-byte boundary
234
+ let k: usize = -dest & 3;
235
+ dest += k;
236
+ n -= k;
237
+ n &= -4;
238
+
239
+ let c32: u32 = (<u32>-1 / 255) * c;
240
+
241
+ // fill head/tail up to 28 bytes each in preparation
242
+ dend = dest + n;
243
+ store<u32>(dest, c32);
244
+ store<u32>(dend - 4, c32);
245
+ if (n <= 8) return;
246
+ store<u32>(dest, c32, 4);
247
+ store<u32>(dest, c32, 8);
248
+ store<u32>(dend - 12, c32);
249
+ store<u32>(dend - 8, c32);
250
+ if (n <= 24) return;
251
+ store<u32>(dest, c32, 12);
252
+ store<u32>(dest, c32, 16);
253
+ store<u32>(dest, c32, 20);
254
+ store<u32>(dest, c32, 24);
255
+ store<u32>(dend - 28, c32);
256
+ store<u32>(dend - 24, c32);
257
+ store<u32>(dend - 20, c32);
258
+ store<u32>(dend - 16, c32);
259
+
260
+ // align to a multiple of 8
261
+ k = 24 + (dest & 4);
262
+ dest += k;
263
+ n -= k;
264
+
265
+ // copy 32 bytes each
266
+ let c64: u64 = (<u64>c32) | ((<u64>c32) << 32);
267
+ while (n >= 32) {
268
+ store<u64>(dest, c64);
269
+ store<u64>(dest, c64, 8);
270
+ store<u64>(dest, c64, 16);
271
+ store<u64>(dest, c64, 24);
272
+ n -= 32;
273
+ dest += 32;
274
+ }
275
+ }
276
+ }
277
+
278
+ // @ts-ignore: decorator
279
+ @inline
280
+ export function memcmp(vl: usize, vr: usize, n: usize): i32 {
281
+ if (vl == vr) return 0;
282
+ if (ASC_SHRINK_LEVEL < 2) {
283
+ if ((vl & 7) == (vr & 7)) {
284
+ while (vl & 7) {
285
+ if (!n) return 0;
286
+ let a = <i32>load<u8>(vl);
287
+ let b = <i32>load<u8>(vr);
288
+ if (a != b) return a - b;
289
+ n--;
290
+ vl++;
291
+ vr++;
292
+ }
293
+ while (n >= 8) {
294
+ if (load<u64>(vl) != load<u64>(vr)) break;
295
+ vl += 8;
296
+ vr += 8;
297
+ n -= 8;
298
+ }
299
+ }
300
+ }
301
+ while (n--) {
302
+ let a = <i32>load<u8>(vl);
303
+ let b = <i32>load<u8>(vr);
304
+ if (a != b) return a - b;
305
+ vl++;
306
+ vr++;
307
+ }
308
+ return 0;
309
+ }