porffor 0.14.0-41dbb00ce → 0.14.0-549a04f84

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.
@@ -27,14 +27,16 @@ export const __Array_prototype_slice = (_this: any[], start: number, end: number
27
27
  let outPtr: i32 = Porffor.wasm`local.get ${out}`;
28
28
  let thisPtr: i32 = Porffor.wasm`local.get ${_this}`;
29
29
 
30
- const thisPtrEnd: i32 = thisPtr + end * 8;
30
+ const thisPtrEnd: i32 = thisPtr + end * 9;
31
31
 
32
- thisPtr += start * 8;
32
+ thisPtr += start * 9;
33
33
 
34
34
  while (thisPtr < thisPtrEnd) {
35
35
  Porffor.wasm.f64.store(outPtr, Porffor.wasm.f64.load(thisPtr, 0, 4), 0, 4);
36
- thisPtr += 8;
37
- outPtr += 8;
36
+ Porffor.wasm.i32.store8(outPtr + 8, Porffor.wasm.i32.load8_u(thisPtr + 8, 0, 4), 0, 4);
37
+
38
+ thisPtr += 9;
39
+ outPtr += 9;
38
40
  }
39
41
 
40
42
  out.length = end - start;
@@ -0,0 +1,22 @@
1
+ export default () => {
2
+ let out = '';
3
+
4
+ const error = name => out += `export const ${name} = (message: bytestring) => {
5
+ return {};
6
+ };
7
+
8
+ export const ${name}$constructor = (message: bytestring) => {
9
+ return {};
10
+ };`;
11
+
12
+ error('Error');
13
+ error('AggregateError');
14
+ error('TypeError');
15
+ error('ReferenceError');
16
+ error('SyntaxError');
17
+ error('RangeError');
18
+ error('EvalError');
19
+ error('URIError');
20
+
21
+ return out;
22
+ };
@@ -56,14 +56,13 @@ i32.store8 0 12`;
56
56
  };
57
57
 
58
58
 
59
- // todo: this should be a getter somehow not a method
60
- export const __Set_prototype_size = (_this: Set) => {
59
+ export const __Set_prototype_size$get = (_this: Set) => {
61
60
  return Porffor.wasm.i32.load(_this, 0, 0);
62
61
  };
63
62
 
64
63
  export const __Set_prototype_values = (_this: Set) => {
65
64
  // todo: this should return an iterator not array
66
- const size: number = __Set_prototype_size(_this);
65
+ const size: number = Porffor.wasm.i32.load(_this, 0, 0);
67
66
 
68
67
  const out: any[] = __Porffor_allocate();
69
68
  for (let i: number = 0; i < size; i++) {
@@ -79,7 +78,7 @@ export const __Set_prototype_keys = (_this: Set) => {
79
78
  };
80
79
 
81
80
  export const __Set_prototype_has = (_this: Set, value: any) => {
82
- const size: number = __Set_prototype_size(_this);
81
+ const size: number = Porffor.wasm.i32.load(_this, 0, 0);
83
82
 
84
83
  for (let i: number = 0; i < size; i++) {
85
84
  if (__Porffor_set_read(_this, i) === value) return true;
@@ -89,7 +88,7 @@ export const __Set_prototype_has = (_this: Set, value: any) => {
89
88
  };
90
89
 
91
90
  export const __Set_prototype_add = (_this: Set, value: any) => {
92
- const size: number = __Set_prototype_size(_this);
91
+ const size: number = Porffor.wasm.i32.load(_this, 0, 0);
93
92
 
94
93
  // check if already in set
95
94
  for (let i: number = 0; i < size; i++) {
@@ -107,7 +106,7 @@ export const __Set_prototype_add = (_this: Set, value: any) => {
107
106
  };
108
107
 
109
108
  export const __Set_prototype_delete = (_this: Set, value: any) => {
110
- const size: number = __Set_prototype_size(_this);
109
+ const size: number = Porffor.wasm.i32.load(_this, 0, 0);
111
110
 
112
111
  // check if already in set
113
112
  for (let i: number = 0; i < size; i++) {
@@ -19,7 +19,7 @@ export const Symbol = (description: any): Symbol => {
19
19
  };
20
20
 
21
21
  // todo: this should be a getter somehow not a method
22
- export const __Symbol_prototype_description = (_this: Symbol) => {
22
+ export const __Symbol_prototype_description$get = (_this: Symbol) => {
23
23
  const description: bytestring = __Porffor_symbol_descStore(false,
24
24
  Porffor.wasm`local.get ${_this}` - 1);
25
25
  return description;
@@ -221,6 +221,7 @@ export const BuiltinFuncs = function() {
221
221
  typedParams: true,
222
222
  locals: [ Valtype.i32, Valtype.i32 ],
223
223
  returns: [],
224
+ callsSelf: true,
224
225
  wasm: (scope, { typeSwitch }) => [
225
226
  ...typeSwitch(scope, [ [ Opcodes.local_get, 1 ] ], {
226
227
  [TYPES.number]: [
@@ -317,7 +318,7 @@ export const BuiltinFuncs = function() {
317
318
 
318
319
  // make end pointer
319
320
  [ Opcodes.i32_load, Math.log2(ValtypeSize.i32) - 1, 0 ],
320
- ...number(ValtypeSize[valtype], Valtype.i32),
321
+ ...number(ValtypeSize[valtype] + 1, Valtype.i32),
321
322
  [ Opcodes.i32_mul ],
322
323
 
323
324
  [ Opcodes.local_get, 2 ],
@@ -328,12 +329,16 @@ export const BuiltinFuncs = function() {
328
329
 
329
330
  // print current char
330
331
  [ Opcodes.local_get, 2 ],
331
- [ Opcodes.load, Math.log2(ValtypeSize.i16) - 1, ValtypeSize.i32 ],
332
- [ Opcodes.call, importedFuncs.print ],
332
+ [ Opcodes.load, 0, ValtypeSize.i32 ],
333
+
334
+ [ Opcodes.local_get, 2 ],
335
+ [ Opcodes.i32_load8_u, 0, ValtypeSize.i32 + ValtypeSize[valtype] ],
336
+
337
+ [ Opcodes.call, -1 ],
333
338
 
334
339
  // increment pointer by sizeof valtype
335
340
  [ Opcodes.local_get, 2 ],
336
- ...number(ValtypeSize[valtype], Valtype.i32),
341
+ ...number(ValtypeSize[valtype] + 1, Valtype.i32),
337
342
  [ Opcodes.i32_add ],
338
343
  [ Opcodes.local_tee, 2 ],
339
344