Skip to content

Commit f54dbfb

Browse files
authored
Simplify wrap and improve ctz polyfills in portable (#2177)
1 parent 09beb42 commit f54dbfb

File tree

1 file changed

+42
-88
lines changed

1 file changed

+42
-88
lines changed

std/portable/index.js

+42-88
Original file line numberDiff line numberDiff line change
@@ -21,94 +21,93 @@ if (typeof globalScope.ASC_TARGET === "undefined") {
2121
Object.defineProperties(
2222
globalScope["i8"] = function i8(value) { return value << 24 >> 24; },
2323
{
24-
"MIN_VALUE": { value: -128, writable: false },
25-
"MAX_VALUE": { value: 127, writable: false }
24+
"MIN_VALUE": { value: -128 },
25+
"MAX_VALUE": { value: 127 }
2626
}
2727
);
2828

2929
Object.defineProperties(
3030
globalScope["i16"] = function i16(value) { return value << 16 >> 16; },
3131
{
32-
"MIN_VALUE": { value: -32768, writable: false },
33-
"MAX_VALUE": { value: 32767, writable: false }
32+
"MIN_VALUE": { value: -32768 },
33+
"MAX_VALUE": { value: 32767 }
3434
}
3535
);
3636

3737
Object.defineProperties(
3838
globalScope["i32"] = globalScope["isize"] = function i32(value) { return value | 0; },
3939
{
40-
"MIN_VALUE": { value: -2147483648, writable: false },
41-
"MAX_VALUE": { value: 2147483647, writable: false }
40+
"MIN_VALUE": { value: -2147483648 },
41+
"MAX_VALUE": { value: 2147483647 }
4242
}
4343
);
4444

4545
Object.defineProperties(
4646
globalScope["u8"] = function u8(value) { return value & 0xff; },
4747
{
48-
"MIN_VALUE": { value: 0, writable: false },
49-
"MAX_VALUE": { value: 255, writable: false }
48+
"MIN_VALUE": { value: 0 },
49+
"MAX_VALUE": { value: 255 }
5050
}
5151
);
5252

5353
Object.defineProperties(
5454
globalScope["u16"] = function u16(value) { return value & 0xffff; },
5555
{
56-
"MIN_VALUE": { value: 0, writable: false },
57-
"MAX_VALUE": { value: 65535, writable: false }
56+
"MIN_VALUE": { value: 0 },
57+
"MAX_VALUE": { value: 65535 }
5858
}
5959
);
6060

6161
Object.defineProperties(
6262
globalScope["u32"] = globalScope["usize"] = function u32(value) { return value >>> 0; },
6363
{
64-
"MIN_VALUE": { value: 0, writable: false },
65-
"MAX_VALUE": { value: 4294967295, writable: false }
64+
"MIN_VALUE": { value: 0 },
65+
"MAX_VALUE": { value: 4294967295 }
6666
}
6767
);
6868

6969
Object.defineProperties(
7070
globalScope["bool"] = function bool(value) { return !!value; },
7171
{
72-
"MIN_VALUE": { value: false, writable: false },
73-
"MAX_VALUE": { value: true, writable: false }
72+
"MIN_VALUE": { value: false },
73+
"MAX_VALUE": { value: true }
7474
}
7575
);
7676

7777
Object.defineProperties(
7878
globalScope["f32"] = function f32(value) { return Math.fround(value); },
7979
{
80-
"EPSILON": { value: 1.1920928955078125e-07, writable: false },
81-
"MIN_VALUE": { value: 1.401298464324817e-45, writable: false },
82-
"MAX_VALUE": { value: 3.4028234663852886e+38, writable: false },
83-
"MIN_NORMAL_VALUE": { value: 1.1754943508222875e-38, writable: false },
84-
"MIN_SAFE_INTEGER": { value: -16777215, writable: false },
85-
"MAX_SAFE_INTEGER": { value: 16777215, writable: false },
86-
"POSITIVE_INFINITY": { value: Infinity, writable: false },
87-
"NEGATIVE_INFINITY": { value: -Infinity, writable: false },
88-
"NaN": { value: NaN, writable: false }
80+
"EPSILON": { value: 1.1920928955078125e-07 },
81+
"MIN_VALUE": { value: 1.401298464324817e-45 },
82+
"MAX_VALUE": { value: 3.4028234663852886e+38 },
83+
"MIN_NORMAL_VALUE": { value: 1.1754943508222875e-38 },
84+
"MIN_SAFE_INTEGER": { value: -16777215 },
85+
"MAX_SAFE_INTEGER": { value: 16777215 },
86+
"POSITIVE_INFINITY": { value: Infinity },
87+
"NEGATIVE_INFINITY": { value: -Infinity },
88+
"NaN": { value: NaN }
8989
}
9090
);
9191

9292
Object.defineProperties(
9393
globalScope["f64"] = function f64(value) { return +value; },
9494
{
95-
"EPSILON": { value: 2.2204460492503131e-016, writable: false },
96-
"MIN_VALUE": { value: 5e-324, writable: false },
97-
"MAX_VALUE": { value: 1.7976931348623157e+308, writable: false },
98-
"MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308, writable: false },
99-
"MIN_SAFE_INTEGER": { value: -9007199254740991, writable: false },
100-
"MAX_SAFE_INTEGER": { value: 9007199254740991, writable: false },
101-
"POSITIVE_INFINITY": { value: Infinity, writable: false },
102-
"NEGATIVE_INFINITY": { value: -Infinity, writable: false },
103-
"NaN": { value: NaN, writable: false }
95+
"EPSILON": { value: 2.2204460492503131e-016 },
96+
"MIN_VALUE": { value: 5e-324 },
97+
"MAX_VALUE": { value: 1.7976931348623157e+308 },
98+
"MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308 },
99+
"MIN_SAFE_INTEGER": { value: -9007199254740991 },
100+
"MAX_SAFE_INTEGER": { value: 9007199254740991 },
101+
"POSITIVE_INFINITY": { value: Infinity },
102+
"NEGATIVE_INFINITY": { value: -Infinity },
103+
"NaN": { value: NaN }
104104
}
105105
);
106106

107107
globalScope["clz"] = Math.clz32;
108108

109109
globalScope["ctz"] = function ctz(value) {
110-
var c = Math.clz32(value & -value);
111-
return value ? 31 - c : c;
110+
return 32 - Math.clz32(~value & (value - 1));
112111
};
113112

114113
globalScope["popcnt"] = function popcnt(value) {
@@ -306,6 +305,15 @@ if (typeof globalScope.ASC_TARGET === "undefined") {
306305
configurable: true
307306
});
308307
}
308+
309+
if (Ctr != Array) {
310+
Object.defineProperty(Ctr, "wrap", {
311+
value: function wrap(buffer, byteOffset, length) {
312+
return new Ctr(buffer, byteOffset, length);
313+
},
314+
configurable: true
315+
});
316+
}
309317
});
310318

311319
globalScope["isInteger"] = Number.isInteger;
@@ -388,60 +396,6 @@ if (typeof globalScope.ASC_TARGET === "undefined") {
388396
if (n) message += Array.prototype.slice.call(arguments, 2, 2 + n);
389397
console.error("trace: " + message);
390398
};
391-
392-
Object.defineProperty(Int8Array, "wrap", {
393-
value: function wrap(buffer, byteOffset, length) {
394-
return new Int8Array(buffer, byteOffset, length);
395-
}
396-
});
397-
398-
Object.defineProperty(Uint8Array, "wrap", {
399-
value: function wrap(buffer, byteOffset, length) {
400-
return new Uint8Array(buffer, byteOffset, length);
401-
}
402-
});
403-
404-
Object.defineProperty(Uint8ClampedArray, "wrap", {
405-
value: function wrap(buffer, byteOffset, length) {
406-
return new Uint8ClampedArray(buffer, byteOffset, length);
407-
}
408-
});
409-
410-
Object.defineProperty(Int16Array, "wrap", {
411-
value: function wrap(buffer, byteOffset, length) {
412-
return new Int16Array(buffer, byteOffset, length);
413-
}
414-
});
415-
416-
Object.defineProperty(Uint16Array, "wrap", {
417-
value: function wrap(buffer, byteOffset, length) {
418-
return new Uint16Array(buffer, byteOffset, length);
419-
}
420-
});
421-
422-
Object.defineProperty(Int32Array, "wrap", {
423-
value: function wrap(buffer, byteOffset, length) {
424-
return new Int32Array(buffer, byteOffset, length);
425-
}
426-
});
427-
428-
Object.defineProperty(Uint32Array, "wrap", {
429-
value: function wrap(buffer, byteOffset, length) {
430-
return new Uint32Array(buffer, byteOffset, length);
431-
}
432-
});
433-
434-
Object.defineProperty(Float32Array, "wrap", {
435-
value: function wrap(buffer, byteOffset, length) {
436-
return new Float32Array(buffer, byteOffset, length);
437-
}
438-
});
439-
440-
Object.defineProperty(Float64Array, "wrap", {
441-
value: function wrap(buffer, byteOffset, length) {
442-
return new Float64Array(buffer, byteOffset, length);
443-
}
444-
});
445399
} else {
446400
console.warn("compiler mismatch: std/portable included twice");
447401
}

0 commit comments

Comments
 (0)