porffor 0.18.2 → 0.18.4

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.
package/README.md CHANGED
@@ -175,16 +175,15 @@ These include some early (stage 1/0) and/or dead (last commit years ago) proposa
175
175
  ### Custom
176
176
 
177
177
  - Supports i32, i64, and f64 for valtypes
178
- - Start of a SIMD api (docs needed)
179
178
  - Intrinsic functions (see below)
180
179
  - Inlining wasm via ``asm`...``\` "macro"
181
180
 
182
181
  ## Versioning
183
- Porffor uses a unique versioning system, here's an example: `0.14.0-15cb49f07`. Let's break it down:
182
+ Porffor uses a unique versioning system, here's an example: `0.18.2+2aa3f0589`. Let's break it down:
184
183
  1. `0` - major, always `0` as Porffor is not ready yet
185
- 2. `14` - minor, total Test262 pass percentage (floored to nearest int)
186
- 3. `0` - micro, always `0` as unused
187
- 4. `15cb49f07` - commit hash
184
+ 2. `18` - minor, total Test262 pass percentage (floored to nearest int)
185
+ 3. `2` - micro, build number for that minor (incremented each publish/git push)
186
+ 4. `2aa3f0589` - commit hash
188
187
 
189
188
  ## Performance
190
189
  *For the features it supports most of the time*, Porffor is *blazingly fast* compared to most interpreters and common engines running without JIT. For those with JIT, it is usually slower by default, but can catch up with compiler arguments and typed input, even more so when compiling to native binaries.
package/bf ADDED
Binary file
package/compiler/2c.js CHANGED
@@ -171,9 +171,6 @@ const removeBrackets = str => {
171
171
  };
172
172
 
173
173
  export default ({ funcs, globals, tags, data, exceptions, pages }) => {
174
- // fix declaring order for c
175
- funcs.reverse();
176
-
177
174
  const invOperatorOpcode = Object.values(operatorOpcode).reduce((acc, x) => {
178
175
  for (const k in x) {
179
176
  acc[x[k]] = k;
@@ -201,7 +198,7 @@ export default ({ funcs, globals, tags, data, exceptions, pages }) => {
201
198
 
202
199
  includes.set('stdint.h', true);
203
200
 
204
- let out = ``;
201
+ globalThis.out = ``;
205
202
 
206
203
  for (const x in globals) {
207
204
  const g = globals[x];
@@ -231,15 +228,12 @@ export default ({ funcs, globals, tags, data, exceptions, pages }) => {
231
228
 
232
229
  if (out) out += '\n';
233
230
 
234
- let depth = 1;
235
- let brDepth = 0;
236
- const line = (str, semi = true) => out += `${' '.repeat((depth + brDepth) * 2)}${str}${semi ? ';' : ''}\n`;
231
+ const line = (str, semi = true) => out += `${str}${semi ? ';' : ''}\n`;
237
232
  const lines = lines => {
238
233
  for (const x of lines) {
239
- out += `${' '.repeat((depth + brDepth) * 2)}${x}\n`;
234
+ out += x + '\n';
240
235
  }
241
236
  };
242
-
243
237
  const platformSpecific = (win, unix, add = true) => {
244
238
  let tmp = '';
245
239
 
@@ -268,11 +262,46 @@ export default ({ funcs, globals, tags, data, exceptions, pages }) => {
268
262
 
269
263
  let brId = 0;
270
264
 
271
- for (const f of funcs) {
272
- depth = 1;
273
- brDepth = 0;
265
+ const cified = new Set();
266
+ const cify = f => {
267
+ let out = '';
268
+
269
+ let depth = 1;
270
+ let brDepth = 0;
271
+ const line = (str, semi = true) => out += `${' '.repeat((depth + brDepth) * 2)}${str}${semi ? ';' : ''}\n`;
272
+ const lines = lines => {
273
+ for (const x of lines) {
274
+ out += `${' '.repeat((depth + brDepth) * 2)}${x}\n`;
275
+ }
276
+ };
277
+ const platformSpecific = (win, unix, add = true) => {
278
+ let tmp = '';
279
+
280
+ if (win) {
281
+ if (add) out += '#ifdef _WIN32\n';
282
+ else tmp += '#ifdef _WIN32\n';
283
+
284
+ if (add) lines(win.split('\n'));
285
+ else tmp += win + (win.endsWith('\n') ? '' : '\n');
286
+ }
287
+
288
+ if (unix) {
289
+ if (add) out += (win ? '#else' : '#ifndef _WIN32') + '\n';
290
+ else tmp += (win ? '#else' : '#ifndef _WIN32') + '\n';
291
+
292
+ if (add) lines(unix.split('\n'));
293
+ else tmp += unix + (unix.endsWith('\n') ? '' : '\n');
294
+ }
295
+
296
+ if (win || unix)
297
+ if (add) out += '#endif\n';
298
+ else tmp += '#endif\n';
299
+
300
+ return tmp;
301
+ };
274
302
 
275
303
  let retTmpId = 0;
304
+ let tmpId = 0;
276
305
 
277
306
  const invLocals = inv(f.locals, x => x.idx);
278
307
 
@@ -598,6 +627,11 @@ _time_out = _time.tv_nsec / 1000000. + _time.tv_sec * 1000.;`);
598
627
  break;
599
628
  }
600
629
 
630
+ if (!cified.has(func.name) && func.name !== f.name) {
631
+ cify(func);
632
+ cified.add(func.name);
633
+ }
634
+
601
635
  let args = [];
602
636
  for (let j = 0; j < func.params.length; j++) args.unshift(removeBrackets(vals.pop()));
603
637
 
@@ -663,6 +697,53 @@ _time_out = _time.tv_nsec / 1000000. + _time.tv_sec * 1000.;`);
663
697
  break;
664
698
  }
665
699
 
700
+ case Opcodes.f64_abs: {
701
+ break;
702
+ }
703
+ case Opcodes.f64_neg: {
704
+ break;
705
+ }
706
+
707
+ case Opcodes.f64_ceil: {
708
+ break;
709
+ }
710
+ case Opcodes.f64_floor: {
711
+ break;
712
+ }
713
+ case Opcodes.f64_trunc: {
714
+ break;
715
+ }
716
+ case Opcodes.f64_nearest: {
717
+ break;
718
+ }
719
+
720
+ case Opcodes.f64_sqrt: {
721
+ break;
722
+ }
723
+ case Opcodes.f64_min: {
724
+ const b = vals.pop();
725
+ const a = vals.pop();
726
+
727
+ const id = tmpId++;
728
+ line(`const f64 _tmp${id}a = ${a}`);
729
+ line(`const f64 _tmp${id}b = ${b}`);
730
+ vals.push(`(_tmp${id}a > _tmp${id}b ? _tmp${id}b : _tmp${id}a)`);
731
+ break;
732
+ }
733
+ case Opcodes.f64_max: {
734
+ const b = vals.pop();
735
+ const a = vals.pop();
736
+
737
+ const id = tmpId++;
738
+ line(`const f64 _tmp${id}a = ${a}`);
739
+ line(`const f64 _tmp${id}b = ${b}`);
740
+ vals.push(`(_tmp${id}a > _tmp${id}b ? _tmp${id}a : _tmp${id}b)`);
741
+ break;
742
+ }
743
+ case Opcodes.f64_copysign: {
744
+ break;
745
+ }
746
+
666
747
  default:
667
748
  if (CMemFuncs[i[0]]) {
668
749
  const name = invOpcodes[i[0]];
@@ -698,9 +779,11 @@ _time_out = _time.tv_nsec / 1000000. + _time.tv_sec * 1000.;`);
698
779
  }
699
780
 
700
781
  out += '}\n\n';
701
- }
702
782
 
703
- depth = 0;
783
+ globalThis.out = globalThis.out + out;
784
+ };
785
+
786
+ cify(funcs.find(x => x.name === 'main'));
704
787
 
705
788
  const makeIncludes = includes => [...includes.keys()].map(x => `#include <${x}>\n`).join('');
706
789
  out = platformSpecific(makeIncludes(winIncludes), makeIncludes(unixIncludes), false) + '\n' + makeIncludes(includes) + '\n' + alwaysPreface + [...prepend.values()].join('\n') + '\n\n' + out;
@@ -142,6 +142,38 @@ export const __Array_prototype_with = (_this: any[], index: number, value: any)
142
142
  return out;
143
143
  };
144
144
 
145
+ // @porf-typed-array
146
+ export const __Array_prototype_copyWithin = (_this: any[], target: number, start: number, end: any) => {
147
+ const len: i32 = _this.length;
148
+ if (target < 0) {
149
+ target = len + target;
150
+ if (target < 0) target = 0;
151
+ }
152
+ if (target > len) target = len;
153
+
154
+ if (start < 0) {
155
+ start = len + start;
156
+ if (start < 0) start = 0;
157
+ }
158
+ if (start > len) start = len;
159
+
160
+ if (Porffor.rawType(end) == Porffor.TYPES.undefined) {
161
+ end = len;
162
+ } else {
163
+ if (end < 0) {
164
+ end = len + end;
165
+ if (end < 0) end = 0;
166
+ }
167
+ if (end > len) end = len;
168
+ }
169
+
170
+ while (start < end) {
171
+ _this[target++] = _this[start++];
172
+ }
173
+
174
+ return _this;
175
+ };
176
+
145
177
  // @porf-typed-array
146
178
  export const __Array_prototype_reverse = (_this: any[]) => {
147
179
  const len: i32 = _this.length;
@@ -58,6 +58,8 @@ type PorfforGlobal = {
58
58
  set: i32;
59
59
  }
60
60
 
61
+ clone(source: any, destination: any): void;
62
+
61
63
  fastOr(...args: any): boolean;
62
64
  fastAnd(...args: any): boolean;
63
65
 
@@ -2092,7 +2092,7 @@ const generateCall = (scope, decl, _global, _name, unusedValue = false) => {
2092
2092
  if (func && func.hasRestArgument) {
2093
2093
  if (args.length < paramCount) {
2094
2094
  args = args.concat(new Array(paramCount - 1 - args.length).fill(DEFAULT_VALUE));
2095
- }
2095
+ }
2096
2096
  const restArgs = args.slice(paramCount - 1);
2097
2097
  args = args.slice(0, paramCount - 1);
2098
2098
  args.push({
@@ -4402,7 +4402,7 @@ const generateFunc = (scope, decl) => {
4402
4402
  defaultValues[name] = x.right;
4403
4403
  break;
4404
4404
  }
4405
-
4405
+
4406
4406
  case 'RestElement': {
4407
4407
  name = x.argument.name;
4408
4408
  func.hasRestArgument = true;
@@ -66,6 +66,42 @@ export default wasm => {
66
66
  };
67
67
 
68
68
  switch (opcode) {
69
+ case Opcodes.if: {
70
+ if (stack.length < 1) { empty(); break; }
71
+ const cond = bool(pop());
72
+
73
+ // find else split and end
74
+ let j = i + 1;
75
+ let depth = 0, elseStart = 0;
76
+ for (; j < wasm.length; j++) {
77
+ const op = wasm[j][0];
78
+ if (op === Opcodes.if || op === Opcodes.block || op === Opcodes.loop || op === Opcodes.try) depth++;
79
+ if (op === Opcodes.else && depth === 0) elseStart = j;
80
+ if (op === Opcodes.end) {
81
+ depth--;
82
+ if (depth < 0) break;
83
+ }
84
+ if (op === Opcodes.br || op === Opcodes.br_if) wasm[j][1] -= 1;
85
+ }
86
+
87
+ if (cond) {
88
+ // remove else if it exists, or just remove end
89
+ if (elseStart) wasm.splice(elseStart, j - elseStart + 1);
90
+ else wasm.splice(j, 1);
91
+ } else {
92
+ // remove truthy conseq and keep else if it exists, or just remove entire thing
93
+ if (elseStart) {
94
+ wasm.splice(j, 1); // remove end
95
+ wasm.splice(i + 1, elseStart - i + 1); // remove truthy conseq
96
+ } else wasm.splice(i + 1, j - i + 0); // no else, remove entire if
97
+ }
98
+
99
+ // remove this if op
100
+ wasm.splice(i, 1);
101
+
102
+ break;
103
+ }
104
+
69
105
  case Opcodes.i32_const: {
70
106
  const n = read_signedLEB128(op.slice(1));
71
107
  push(n);
@@ -70,7 +70,7 @@ export default (wasm, name = '', ind = 0, locals = {}, params = [], returns = []
70
70
  } else if (inst[0] === Opcodes.i32_load || inst[0] === Opcodes.i64_load || inst[0] === Opcodes.f64_load || inst[0] === Opcodes.i32_store || inst[0] === Opcodes.i64_store || inst[0] === Opcodes.f64_store || inst[0] === Opcodes.i32_store16 || inst[0] === Opcodes.i32_load16_u) {
71
71
  out += ` ${inst[1]} ${read_unsignedLEB128(inst.slice(2))}`;
72
72
  } else for (const operand of inst.slice(1)) {
73
- if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block) {
73
+ if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block || inst[0] === Opcodes.try) {
74
74
  if (operand === Blocktype.void) continue;
75
75
  out += ` ${invValtype[operand]}`;
76
76
  } else {
@@ -80,7 +80,7 @@ export default (wasm, name = '', ind = 0, locals = {}, params = [], returns = []
80
80
 
81
81
  if (comments.length > 0) out += ` ;; ${comments.join(' ')}`;
82
82
 
83
- if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block || inst[0] === Opcodes.else) {
83
+ if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block || inst[0] === Opcodes.else || inst[0] === Opcodes.try || inst[0] === Opcodes.catch_all) {
84
84
  out += ` ;; label @${depth}`;
85
85
  }
86
86
 
@@ -281,6 +281,15 @@ export const BuiltinFuncs = function() {
281
281
  locals: [124,124,127,124,127],
282
282
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
283
283
  };
284
+ this.__Array_prototype_copyWithin = {
285
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[65,9],[108],[106],[34,10],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[65,9],[108],[32,0],[252,3],[106],[34,11],[43,0,4],[32,11],[45,0,12],[33,12],[34,9],[57,0,4],[32,10],[32,12],[58,0,12],[12,1],[11],[11],[32,0],[65,208,0],[15]],
286
+ params: [124,127,124,127,124,127,124,127],
287
+ typedParams: true,
288
+ returns: [124,127],
289
+ typedReturns: true,
290
+ locals: [124,124,127,127,127],
291
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
292
+ };
284
293
  this.__Array_prototype_reverse = {
285
294
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,3],[252,3],[65,9],[108],[32,0],[252,3],[106],[34,6],[43,0,4],[32,6],[45,0,12],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[65,9],[108],[106],[34,9],[32,4],[252,3],[65,9],[108],[32,0],[252,3],[106],[34,6],[43,0,4],[32,6],[45,0,12],[33,7],[34,8],[57,0,4],[32,9],[32,7],[58,0,12],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[65,9],[108],[106],[34,9],[32,5],[34,8],[57,0,4],[32,9],[65,0],[58,0,12],[12,1],[11],[11],[32,0],[65,208,0],[15]],
286
295
  params: [124,127],
@@ -2208,6 +2217,15 @@ export const BuiltinFuncs = function() {
2208
2217
  locals: [124,124,127,124,127],
2209
2218
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
2210
2219
  };
2220
+ this.__Uint8Array_prototype_copyWithin = {
2221
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[106],[45,0,4],[184],[65,0],[33,12],[34,9],[252,3],[58,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,213,0],[15]],
2222
+ params: [124,127,124,127,124,127,124,127],
2223
+ typedParams: true,
2224
+ returns: [124,127],
2225
+ typedReturns: true,
2226
+ locals: [124,124,127,127,127],
2227
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
2228
+ };
2211
2229
  this.__Uint8Array_prototype_reverse = {
2212
2230
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[106],[45,0,4],[184],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[106],[32,0],[252,3],[32,4],[252,3],[106],[45,0,4],[184],[65,0],[33,7],[34,8],[252,3],[58,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[106],[32,5],[34,8],[252,3],[58,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,213,0],[15]],
2213
2231
  params: [124,127],
@@ -2456,6 +2474,15 @@ export const BuiltinFuncs = function() {
2456
2474
  locals: [124,124,127,124,127],
2457
2475
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
2458
2476
  };
2477
+ this.__Int8Array_prototype_copyWithin = {
2478
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[106],[44,0,4],[183],[65,0],[33,12],[34,9],[252,2],[58,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,214,0],[15]],
2479
+ params: [124,127,124,127,124,127,124,127],
2480
+ typedParams: true,
2481
+ returns: [124,127],
2482
+ typedReturns: true,
2483
+ locals: [124,124,127,127,127],
2484
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
2485
+ };
2459
2486
  this.__Int8Array_prototype_reverse = {
2460
2487
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[106],[44,0,4],[183],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[106],[32,0],[252,3],[32,4],[252,3],[106],[44,0,4],[183],[65,0],[33,7],[34,8],[252,2],[58,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[106],[32,5],[34,8],[252,2],[58,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,214,0],[15]],
2461
2488
  params: [124,127],
@@ -2704,6 +2731,15 @@ export const BuiltinFuncs = function() {
2704
2731
  locals: [124,124,127,124,127],
2705
2732
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
2706
2733
  };
2734
+ this.__Uint8ClampedArray_prototype_copyWithin = {
2735
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[106],[45,0,4],[184],[65,0],[33,12],[34,9],[68,0,0,0,0,0,0,0,0],[165],[68,0,0,0,0,0,224,111,64],[164],[252,3],[58,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,215,0],[15]],
2736
+ params: [124,127,124,127,124,127,124,127],
2737
+ typedParams: true,
2738
+ returns: [124,127],
2739
+ typedReturns: true,
2740
+ locals: [124,124,127,127,127],
2741
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
2742
+ };
2707
2743
  this.__Uint8ClampedArray_prototype_reverse = {
2708
2744
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[106],[45,0,4],[184],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[106],[32,0],[252,3],[32,4],[252,3],[106],[45,0,4],[184],[65,0],[33,7],[34,8],[68,0,0,0,0,0,0,0,0],[165],[68,0,0,0,0,0,224,111,64],[164],[252,3],[58,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[106],[32,5],[34,8],[68,0,0,0,0,0,0,0,0],[165],[68,0,0,0,0,0,224,111,64],[164],[252,3],[58,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,215,0],[15]],
2709
2745
  params: [124,127],
@@ -2952,6 +2988,15 @@ export const BuiltinFuncs = function() {
2952
2988
  locals: [124,124,127,124,127],
2953
2989
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
2954
2990
  };
2991
+ this.__Uint16Array_prototype_copyWithin = {
2992
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[65,2],[108],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[65,2],[108],[106],[47,0,4],[184],[65,0],[33,12],[34,9],[252,3],[59,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,216,0],[15]],
2993
+ params: [124,127,124,127,124,127,124,127],
2994
+ typedParams: true,
2995
+ returns: [124,127],
2996
+ typedReturns: true,
2997
+ locals: [124,124,127,127,127],
2998
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
2999
+ };
2955
3000
  this.__Uint16Array_prototype_reverse = {
2956
3001
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[65,2],[108],[106],[47,0,4],[184],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[65,2],[108],[106],[32,0],[252,3],[32,4],[252,3],[65,2],[108],[106],[47,0,4],[184],[65,0],[33,7],[34,8],[252,3],[59,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[65,2],[108],[106],[32,5],[34,8],[252,3],[59,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,216,0],[15]],
2957
3002
  params: [124,127],
@@ -3200,6 +3245,15 @@ export const BuiltinFuncs = function() {
3200
3245
  locals: [124,124,127,124,127],
3201
3246
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
3202
3247
  };
3248
+ this.__Int16Array_prototype_copyWithin = {
3249
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[65,2],[108],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[65,2],[108],[106],[46,0,4],[183],[65,0],[33,12],[34,9],[252,2],[59,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,217,0],[15]],
3250
+ params: [124,127,124,127,124,127,124,127],
3251
+ typedParams: true,
3252
+ returns: [124,127],
3253
+ typedReturns: true,
3254
+ locals: [124,124,127,127,127],
3255
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
3256
+ };
3203
3257
  this.__Int16Array_prototype_reverse = {
3204
3258
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[65,2],[108],[106],[46,0,4],[183],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[65,2],[108],[106],[32,0],[252,3],[32,4],[252,3],[65,2],[108],[106],[46,0,4],[183],[65,0],[33,7],[34,8],[252,2],[59,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[65,2],[108],[106],[32,5],[34,8],[252,2],[59,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,217,0],[15]],
3205
3259
  params: [124,127],
@@ -3448,6 +3502,15 @@ export const BuiltinFuncs = function() {
3448
3502
  locals: [124,124,127,124,127],
3449
3503
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
3450
3504
  };
3505
+ this.__Uint32Array_prototype_copyWithin = {
3506
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[65,4],[108],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[65,4],[108],[106],[40,0,4],[184],[65,0],[33,12],[34,9],[252,3],[54,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,218,0],[15]],
3507
+ params: [124,127,124,127,124,127,124,127],
3508
+ typedParams: true,
3509
+ returns: [124,127],
3510
+ typedReturns: true,
3511
+ locals: [124,124,127,127,127],
3512
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
3513
+ };
3451
3514
  this.__Uint32Array_prototype_reverse = {
3452
3515
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[65,4],[108],[106],[40,0,4],[184],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[65,4],[108],[106],[32,0],[252,3],[32,4],[252,3],[65,4],[108],[106],[40,0,4],[184],[65,0],[33,7],[34,8],[252,3],[54,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[65,4],[108],[106],[32,5],[34,8],[252,3],[54,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,218,0],[15]],
3453
3516
  params: [124,127],
@@ -3696,6 +3759,15 @@ export const BuiltinFuncs = function() {
3696
3759
  locals: [124,124,127,124,127],
3697
3760
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
3698
3761
  };
3762
+ this.__Int32Array_prototype_copyWithin = {
3763
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[65,4],[108],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[65,4],[108],[106],[40,0,4],[183],[65,0],[33,12],[34,9],[252,2],[54,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,219,0],[15]],
3764
+ params: [124,127,124,127,124,127,124,127],
3765
+ typedParams: true,
3766
+ returns: [124,127],
3767
+ typedReturns: true,
3768
+ locals: [124,124,127,127,127],
3769
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
3770
+ };
3699
3771
  this.__Int32Array_prototype_reverse = {
3700
3772
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[65,4],[108],[106],[40,0,4],[183],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[65,4],[108],[106],[32,0],[252,3],[32,4],[252,3],[65,4],[108],[106],[40,0,4],[183],[65,0],[33,7],[34,8],[252,2],[54,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[65,4],[108],[106],[32,5],[34,8],[252,2],[54,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,219,0],[15]],
3701
3773
  params: [124,127],
@@ -3944,6 +4016,15 @@ export const BuiltinFuncs = function() {
3944
4016
  locals: [124,124,127,124,127],
3945
4017
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
3946
4018
  };
4019
+ this.__Float32Array_prototype_copyWithin = {
4020
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[65,4],[108],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[65,4],[108],[106],[42,0,4],[187],[65,0],[33,12],[34,9],[182],[56,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,220,0],[15]],
4021
+ params: [124,127,124,127,124,127,124,127],
4022
+ typedParams: true,
4023
+ returns: [124,127],
4024
+ typedReturns: true,
4025
+ locals: [124,124,127,127,127],
4026
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
4027
+ };
3947
4028
  this.__Float32Array_prototype_reverse = {
3948
4029
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[65,4],[108],[106],[42,0,4],[187],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[65,4],[108],[106],[32,0],[252,3],[32,4],[252,3],[65,4],[108],[106],[42,0,4],[187],[65,0],[33,7],[34,8],[182],[56,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[65,4],[108],[106],[32,5],[34,8],[182],[56,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,220,0],[15]],
3949
4030
  params: [124,127],
@@ -4192,6 +4273,15 @@ export const BuiltinFuncs = function() {
4192
4273
  locals: [124,124,127,124,127],
4193
4274
  localNames: ["_this","_this#type","index","index#type","value","value#type","len","out","#last_type","#member_setter_val_tmp","#member_setter_ptr_tmp"],
4194
4275
  };
4276
+ this.__Float64Array_prototype_copyWithin = {
4277
+ wasm: (scope, {builtin,}) => [[32,0],[252,3],[40,1,0],[184],[33,8],[32,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,2],[160],[34,2],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,2],[11],[11],[32,2],[32,8],[100],[4,64],[32,8],[33,2],[11],[32,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,4],[160],[34,4],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[33,4],[11],[11],[32,4],[32,8],[100],[4,64],[32,8],[33,4],[11],[32,6],[32,7],[16, builtin('__Porffor_rawType')],[68,0,0,0,0,0,0,8,64],[97],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[5],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[32,8],[32,6],[160],[34,6],[65,0],[33,7],[26],[32,6],[68,0,0,0,0,0,0,0,0],[99],[4,64],[68,0,0,0,0,0,0,0,0],[34,6],[65,0],[33,7],[26],[11],[11],[32,6],[32,8],[100],[4,64],[32,8],[34,6],[65,0],[33,7],[26],[11],[11],[3,64],[32,4],[32,6],[99],[4,64],[32,0],[252,3],[32,2],[32,2],[68,0,0,0,0,0,0,240,63],[160],[33,2],[252,3],[65,8],[108],[106],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[160],[33,4],[252,3],[65,8],[108],[106],[43,0,4],[65,0],[33,12],[34,9],[57,0,4],[65,0],[33,12],[12,1],[11],[11],[32,0],[65,221,0],[15]],
4278
+ params: [124,127,124,127,124,127,124,127],
4279
+ typedParams: true,
4280
+ returns: [124,127],
4281
+ typedReturns: true,
4282
+ locals: [124,124,127,127,127],
4283
+ localNames: ["_this","_this#type","target","target#type","start","start#type","end","end#type","len","#member_setter_val_tmp","#member_setter_ptr_tmp","#loadArray_offset","#last_type"],
4284
+ };
4195
4285
  this.__Float64Array_prototype_reverse = {
4196
4286
  wasm: (scope, {}) => [[32,0],[252,3],[40,1,0],[184],[33,2],[68,0,0,0,0,0,0,0,0],[33,3],[32,2],[68,0,0,0,0,0,0,240,63],[161],[33,4],[3,64],[32,3],[32,4],[99],[4,64],[32,0],[252,3],[32,3],[252,3],[65,8],[108],[106],[43,0,4],[65,0],[33,7],[33,5],[32,0],[252,3],[32,3],[32,3],[68,0,0,0,0,0,0,240,63],[160],[33,3],[252,3],[65,8],[108],[106],[32,0],[252,3],[32,4],[252,3],[65,8],[108],[106],[43,0,4],[65,0],[33,7],[34,8],[57,0,4],[65,0],[33,7],[32,0],[252,3],[32,4],[32,4],[68,0,0,0,0,0,0,240,63],[161],[33,4],[252,3],[65,8],[108],[106],[32,5],[34,8],[57,0,4],[65,0],[33,7],[12,1],[11],[11],[32,0],[65,221,0],[15]],
4197
4287
  params: [124,127],
package/compiler/index.js CHANGED
@@ -89,6 +89,7 @@ export default (code, flags) => {
89
89
 
90
90
  console.log(`${x.name}: ${preOps} -> ${x.wasm.length} ops`);
91
91
  }
92
+ opt(funcs, globals, pages, tags, exceptions);
92
93
 
93
94
  console.log(`cyclone total time: ${(performance.now() - t).toFixed(2)}ms`);
94
95
 
package/compiler/opt.js CHANGED
@@ -114,8 +114,6 @@ export default (funcs, globals, pages, tags, exceptions) => {
114
114
  while (runs > 0) {
115
115
  runs--;
116
116
 
117
- let depth = [];
118
-
119
117
  let getCount = {}, setCount = {};
120
118
  for (const x in f.locals) {
121
119
  getCount[f.locals[x].idx] = 0;
@@ -128,9 +126,6 @@ export default (funcs, globals, pages, tags, exceptions) => {
128
126
  inst = [ ...inst ];
129
127
  wasm[i] = inst;
130
128
 
131
- if (inst[0] === Opcodes.if || inst[0] === Opcodes.loop || inst[0] === Opcodes.block) depth.push(inst[0]);
132
- if (inst[0] === Opcodes.end) depth.pop();
133
-
134
129
  if (inst[0] === Opcodes.local_get) getCount[inst[1]]++;
135
130
  if (inst[0] === Opcodes.local_set || inst[0] === Opcodes.local_tee) setCount[inst[1]]++;
136
131
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "porffor",
3
3
  "description": "a basic experimental wip aot optimizing js -> wasm engine/compiler/runtime in js",
4
- "version": "0.18.2+2aa3f0589",
4
+ "version": "0.18.4+aed1171a7",
5
5
  "author": "CanadaHonk",
6
6
  "license": "MIT",
7
7
  "scripts": {},
package/runner/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import fs from 'node:fs';
3
- globalThis.version = '0.18.2+2aa3f0589';
3
+ globalThis.version = '0.18.4+aed1171a7';
4
4
 
5
5
  // deno compat
6
6
  if (typeof process === 'undefined' && typeof Deno !== 'undefined') {