porffor 0.20.0 → 0.20.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.
- package/compiler/2c.js +38 -36
- package/package.json +1 -1
- package/runner/index.js +1 -1
package/compiler/2c.js
CHANGED
@@ -27,7 +27,8 @@ typedef uint64_t u64;
|
|
27
27
|
typedef float f32;
|
28
28
|
typedef double f64;
|
29
29
|
|
30
|
-
f64
|
30
|
+
const f64 NaN = 0e+0/0e+0;
|
31
|
+
const f64 Infinity = 1e+0/0e+0;
|
31
32
|
|
32
33
|
struct ReturnValue {
|
33
34
|
f64 value;
|
@@ -187,7 +188,11 @@ export default ({ funcs, globals, tags, data, exceptions, pages }) => {
|
|
187
188
|
}
|
188
189
|
return out;
|
189
190
|
};
|
190
|
-
const sanitize = str =>
|
191
|
+
const sanitize = str => {
|
192
|
+
if (str === 'char') return '_' + str;
|
193
|
+
|
194
|
+
return str.replace(/[^0-9a-zA-Z_]/g, _ => codeToSanitizedStr(_.charCodeAt(0)));
|
195
|
+
};
|
191
196
|
|
192
197
|
for (const x in invGlobals) {
|
193
198
|
invGlobals[x] = sanitize(invGlobals[x]);
|
@@ -394,17 +399,12 @@ export default ({ funcs, globals, tags, data, exceptions, pages }) => {
|
|
394
399
|
switch (i[0]) {
|
395
400
|
case Opcodes.i32_const:
|
396
401
|
case Opcodes.i64_const:
|
397
|
-
|
398
|
-
vals.push(new String(read_signedLEB128(i.slice(1)).toString()));
|
399
|
-
vals.at(-1).offset = _;
|
402
|
+
vals.push(read_signedLEB128(i.slice(1)).toString());
|
400
403
|
break;
|
401
404
|
|
402
405
|
case Opcodes.f64_const: {
|
403
|
-
|
404
|
-
|
405
|
-
// vals.push(val == 'NaN' ? 'NAN' : val);
|
406
|
-
vals.push(val == 'NaN' ? new String('NAN') : val);
|
407
|
-
vals.at(-1).offset = _;
|
406
|
+
const val = read_ieee754_binary64(i.slice(1)).toExponential();
|
407
|
+
vals.push(val);
|
408
408
|
break;
|
409
409
|
}
|
410
410
|
|
@@ -697,29 +697,6 @@ _time_out = _time.tv_nsec / 1000000. + _time.tv_sec * 1000.;`);
|
|
697
697
|
break;
|
698
698
|
}
|
699
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
700
|
case Opcodes.f64_min: {
|
724
701
|
const b = vals.pop();
|
725
702
|
const a = vals.pop();
|
@@ -740,9 +717,34 @@ _time_out = _time.tv_nsec / 1000000. + _time.tv_sec * 1000.;`);
|
|
740
717
|
vals.push(`(_tmp${id}a > _tmp${id}b ? _tmp${id}a : _tmp${id}b)`);
|
741
718
|
break;
|
742
719
|
}
|
743
|
-
|
744
|
-
|
745
|
-
|
720
|
+
|
721
|
+
// case Opcodes.f64_abs: {
|
722
|
+
// break;
|
723
|
+
// }
|
724
|
+
// case Opcodes.f64_neg: {
|
725
|
+
// break;
|
726
|
+
// }
|
727
|
+
|
728
|
+
// case Opcodes.f64_ceil: {
|
729
|
+
// break;
|
730
|
+
// }
|
731
|
+
// case Opcodes.f64_floor: {
|
732
|
+
// break;
|
733
|
+
// }
|
734
|
+
// case Opcodes.f64_trunc: {
|
735
|
+
// break;
|
736
|
+
// }
|
737
|
+
// case Opcodes.f64_nearest: {
|
738
|
+
// break;
|
739
|
+
// }
|
740
|
+
|
741
|
+
// case Opcodes.f64_sqrt: {
|
742
|
+
// break;
|
743
|
+
// }
|
744
|
+
|
745
|
+
// case Opcodes.f64_copysign: {
|
746
|
+
// break;
|
747
|
+
// }
|
746
748
|
|
747
749
|
default:
|
748
750
|
if (CMemFuncs[i[0]]) {
|
package/package.json
CHANGED