From 3795346b622330d1e9a7454f73a5dd2912acae57 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 19 Dec 2021 12:23:18 +0200 Subject: [PATCH 1/4] simplify wrap polyfill in portable --- std/portable/index.js | 67 +++++++------------------------------------ 1 file changed, 11 insertions(+), 56 deletions(-) diff --git a/std/portable/index.js b/std/portable/index.js index 4e2c6c345d..8d015e2000 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -291,7 +291,7 @@ if (typeof globalScope.ASC_TARGET === "undefined") { value: function at(index) { return this[index >= 0 ? index : index + this.length]; }, - configurable: true + enumerable: true }); } @@ -303,7 +303,16 @@ if (typeof globalScope.ASC_TARGET === "undefined") { } return -1; }, - configurable: true + enumerable: true + }); + } + + if (Ctr != Array) { + Object.defineProperty(Ctr, "wrap", { + value: function wrap(buffer, byteOffset, length) { + return new Ctr(buffer, byteOffset, length); + }, + enumerable: true }); } }); @@ -388,60 +397,6 @@ if (typeof globalScope.ASC_TARGET === "undefined") { if (n) message += Array.prototype.slice.call(arguments, 2, 2 + n); console.error("trace: " + message); }; - - Object.defineProperty(Int8Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Int8Array(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Uint8Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Uint8Array(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Uint8ClampedArray, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Uint8ClampedArray(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Int16Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Int16Array(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Uint16Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Uint16Array(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Int32Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Int32Array(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Uint32Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Uint32Array(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Float32Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Float32Array(buffer, byteOffset, length); - } - }); - - Object.defineProperty(Float64Array, "wrap", { - value: function wrap(buffer, byteOffset, length) { - return new Float64Array(buffer, byteOffset, length); - } - }); } else { console.warn("compiler mismatch: std/portable included twice"); } From 24d703c38eeb6696bde2c77151caa0f297bbba8e Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 19 Dec 2021 14:27:42 +0200 Subject: [PATCH 2/4] remove writable: false due to it's already default value --- std/portable/index.js | 64 +++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/std/portable/index.js b/std/portable/index.js index 8d015e2000..5b01eeffdf 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -21,86 +21,86 @@ if (typeof globalScope.ASC_TARGET === "undefined") { Object.defineProperties( globalScope["i8"] = function i8(value) { return value << 24 >> 24; }, { - "MIN_VALUE": { value: -128, writable: false }, - "MAX_VALUE": { value: 127, writable: false } + "MIN_VALUE": { value: -128 }, + "MAX_VALUE": { value: 127 } } ); Object.defineProperties( globalScope["i16"] = function i16(value) { return value << 16 >> 16; }, { - "MIN_VALUE": { value: -32768, writable: false }, - "MAX_VALUE": { value: 32767, writable: false } + "MIN_VALUE": { value: -32768 }, + "MAX_VALUE": { value: 32767 } } ); Object.defineProperties( globalScope["i32"] = globalScope["isize"] = function i32(value) { return value | 0; }, { - "MIN_VALUE": { value: -2147483648, writable: false }, - "MAX_VALUE": { value: 2147483647, writable: false } + "MIN_VALUE": { value: -2147483648 }, + "MAX_VALUE": { value: 2147483647 } } ); Object.defineProperties( globalScope["u8"] = function u8(value) { return value & 0xff; }, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 255, writable: false } + "MIN_VALUE": { value: 0 }, + "MAX_VALUE": { value: 255 } } ); Object.defineProperties( globalScope["u16"] = function u16(value) { return value & 0xffff; }, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 65535, writable: false } + "MIN_VALUE": { value: 0 }, + "MAX_VALUE": { value: 65535 } } ); Object.defineProperties( globalScope["u32"] = globalScope["usize"] = function u32(value) { return value >>> 0; }, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 4294967295, writable: false } + "MIN_VALUE": { value: 0 }, + "MAX_VALUE": { value: 4294967295 } } ); Object.defineProperties( globalScope["bool"] = function bool(value) { return !!value; }, { - "MIN_VALUE": { value: false, writable: false }, - "MAX_VALUE": { value: true, writable: false } + "MIN_VALUE": { value: false }, + "MAX_VALUE": { value: true } } ); Object.defineProperties( globalScope["f32"] = function f32(value) { return Math.fround(value); }, { - "EPSILON": { value: 1.1920928955078125e-07, writable: false }, - "MIN_VALUE": { value: 1.401298464324817e-45, writable: false }, - "MAX_VALUE": { value: 3.4028234663852886e+38, writable: false }, - "MIN_NORMAL_VALUE": { value: 1.1754943508222875e-38, writable: false }, - "MIN_SAFE_INTEGER": { value: -16777215, writable: false }, - "MAX_SAFE_INTEGER": { value: 16777215, writable: false }, - "POSITIVE_INFINITY": { value: Infinity, writable: false }, - "NEGATIVE_INFINITY": { value: -Infinity, writable: false }, - "NaN": { value: NaN, writable: false } + "EPSILON": { value: 1.1920928955078125e-07 }, + "MIN_VALUE": { value: 1.401298464324817e-45 }, + "MAX_VALUE": { value: 3.4028234663852886e+38 }, + "MIN_NORMAL_VALUE": { value: 1.1754943508222875e-38 }, + "MIN_SAFE_INTEGER": { value: -16777215 }, + "MAX_SAFE_INTEGER": { value: 16777215 }, + "POSITIVE_INFINITY": { value: Infinity }, + "NEGATIVE_INFINITY": { value: -Infinity }, + "NaN": { value: NaN } } ); Object.defineProperties( globalScope["f64"] = function f64(value) { return +value; }, { - "EPSILON": { value: 2.2204460492503131e-016, writable: false }, - "MIN_VALUE": { value: 5e-324, writable: false }, - "MAX_VALUE": { value: 1.7976931348623157e+308, writable: false }, - "MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308, writable: false }, - "MIN_SAFE_INTEGER": { value: -9007199254740991, writable: false }, - "MAX_SAFE_INTEGER": { value: 9007199254740991, writable: false }, - "POSITIVE_INFINITY": { value: Infinity, writable: false }, - "NEGATIVE_INFINITY": { value: -Infinity, writable: false }, - "NaN": { value: NaN, writable: false } + "EPSILON": { value: 2.2204460492503131e-016 }, + "MIN_VALUE": { value: 5e-324 }, + "MAX_VALUE": { value: 1.7976931348623157e+308 }, + "MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308 }, + "MIN_SAFE_INTEGER": { value: -9007199254740991 }, + "MAX_SAFE_INTEGER": { value: 9007199254740991 }, + "POSITIVE_INFINITY": { value: Infinity }, + "NEGATIVE_INFINITY": { value: -Infinity }, + "NaN": { value: NaN } } ); From 510534ba3c3255910a3c6c3ce2e08ad7264ead66 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 22 Dec 2021 11:51:09 +0200 Subject: [PATCH 3/4] use configurable: true --- std/portable/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/portable/index.js b/std/portable/index.js index 5b01eeffdf..62ba48554b 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -291,7 +291,7 @@ if (typeof globalScope.ASC_TARGET === "undefined") { value: function at(index) { return this[index >= 0 ? index : index + this.length]; }, - enumerable: true + configurable: true }); } @@ -303,7 +303,7 @@ if (typeof globalScope.ASC_TARGET === "undefined") { } return -1; }, - enumerable: true + configurable: true }); } @@ -312,7 +312,7 @@ if (typeof globalScope.ASC_TARGET === "undefined") { value: function wrap(buffer, byteOffset, length) { return new Ctr(buffer, byteOffset, length); }, - enumerable: true + configurable: true }); } }); From 9a2395b0a09020bb978d86814c0a42bc805dd6c0 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 22 Dec 2021 20:07:34 +0200 Subject: [PATCH 4/4] new approach for ctz --- std/portable/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/std/portable/index.js b/std/portable/index.js index 62ba48554b..271d0aa778 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -107,8 +107,7 @@ if (typeof globalScope.ASC_TARGET === "undefined") { globalScope["clz"] = Math.clz32; globalScope["ctz"] = function ctz(value) { - var c = Math.clz32(value & -value); - return value ? 31 - c : c; + return 32 - Math.clz32(~value & (value - 1)); }; globalScope["popcnt"] = function popcnt(value) {