Skip to content

Commit 38bc59b

Browse files
ssrliveCopilot
andcommitted
Implement Tier 2 builtins and precision fixes
- Math.sumPrecise: scaled Shewchuk exact summation with overflow boundary detection and ascending-magnitude sort for 1-ULP precision - Object.fromEntries: iterator protocol with symbol key support - String.prototype.at: use __to_numeric for proper valueOf/Symbol coercion - String.prototype.isWellFormed/toWellFormed: UTF-16 surrogate detection - String.fromCodePoint: fix dispatch in call_method_builtin - Promise.withResolvers / Promise.try: basic implementation - Error.isError: check via internal [[ErrorData]] slot - RegExp.escape: full spec with UTF-16 awareness - Atomics.pause: integral Number validation with TypeError/RangeError - Symbol.unscopables / Symbol.isConcatSpreadable: well-known symbols - Array.prototype[@@unscopables]: null-prototype object with spec attributes All 41 CI clusters green (40018 pass, 0 new failures). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 0c989cc commit 38bc59b

File tree

3 files changed

+642
-3
lines changed

3 files changed

+642
-3
lines changed

src/core/function_id.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ pub(crate) const BUILTIN_MATH_POW: FunctionID = 41;
5757
pub(crate) const BUILTIN_MATH_RANDOM: FunctionID = 42;
5858
pub(crate) const BUILTIN_MATH_CLZ32: FunctionID = 43;
5959
pub(crate) const BUILTIN_MATH_IMUL: FunctionID = 44;
60+
pub(crate) const BUILTIN_MATH_SUMPRECISE: FunctionID = 45;
6061
// ── Global functions (50–59) ────────────────────────────────────────
6162
pub(crate) const BUILTIN_ISNAN: FunctionID = 50;
6263
pub(crate) const BUILTIN_PARSEINT: FunctionID = 51;
@@ -129,6 +130,9 @@ pub(crate) const BUILTIN_STRING_CODEPOINTAT: FunctionID = 137;
129130
pub(crate) const BUILTIN_STRING_NORMALIZE: FunctionID = 138;
130131
pub(crate) const BUILTIN_STRING_MATCHALL: FunctionID = 139;
131132
pub(crate) const BUILTIN_STRING_FROMCODEPOINT: FunctionID = 140;
133+
pub(crate) const BUILTIN_STRING_AT: FunctionID = 141;
134+
pub(crate) const BUILTIN_STRING_ISWELLFORMED: FunctionID = 142;
135+
pub(crate) const BUILTIN_STRING_TOWELLFORMED: FunctionID = 143;
132136
// ── Number (160–179) ────────────────────────────────────────────────
133137
pub(crate) const BUILTIN_CTOR_NUMBER: FunctionID = 160;
134138
pub(crate) const BUILTIN_NUMBER_ISNAN: FunctionID = 161;
@@ -169,6 +173,7 @@ pub(crate) const BUILTIN_OBJECT_GETOWNPROPDESC: FunctionID = 214;
169173
pub(crate) const BUILTIN_OBJECT_SETPROTOTYPEOF: FunctionID = 215;
170174
pub(crate) const BUILTIN_OBJECT_GETOWNPROPERTYNAMES: FunctionID = 216;
171175
pub(crate) const BUILTIN_OBJ_TOSTRING: FunctionID = 217;
176+
pub(crate) const BUILTIN_OBJECT_FROMENTRIES: FunctionID = 218;
172177
// ── Function (230–239) ──────────────────────────────────────────────
173178
pub(crate) const BUILTIN_CTOR_FUNCTION: FunctionID = 230;
174179
pub(crate) const BUILTIN_FN_CALL: FunctionID = 231;
@@ -182,6 +187,7 @@ pub(crate) const BUILTIN_JSON_PARSE: FunctionID = 241;
182187
pub(crate) const BUILTIN_CTOR_REGEXP: FunctionID = 250;
183188
pub(crate) const BUILTIN_REGEX_EXEC: FunctionID = 251;
184189
pub(crate) const BUILTIN_REGEX_TEST: FunctionID = 252;
190+
pub(crate) const BUILTIN_REGEXP_ESCAPE: FunctionID = 253;
185191
// ── Error constructors (260–269) ────────────────────────────────────
186192
pub(crate) const BUILTIN_CTOR_ERROR: FunctionID = 260;
187193
pub(crate) const BUILTIN_CTOR_TYPEERROR: FunctionID = 261;
@@ -190,6 +196,7 @@ pub(crate) const BUILTIN_CTOR_RANGEERROR: FunctionID = 263;
190196
pub(crate) const BUILTIN_CTOR_REFERENCEERROR: FunctionID = 264;
191197
pub(crate) const BUILTIN_CTOR_EVALERROR: FunctionID = 265;
192198
pub(crate) const BUILTIN_CTOR_URIERROR: FunctionID = 266;
199+
pub(crate) const BUILTIN_ERROR_ISERROR: FunctionID = 267;
193200
// ── Date (270–319) ──────────────────────────────────────────────────
194201
pub(crate) const BUILTIN_CTOR_DATE: FunctionID = 270;
195202
pub(crate) const BUILTIN_DATE_NOW: FunctionID = 271;
@@ -297,6 +304,8 @@ pub(crate) const BUILTIN_PROMISE_RESOLVE: FunctionID = 421;
297304
pub(crate) const BUILTIN_PROMISE_ALL: FunctionID = 422;
298305
pub(crate) const BUILTIN_PROMISE_THEN: FunctionID = 423;
299306
pub(crate) const BUILTIN_PROMISE_NOOP: FunctionID = 424;
307+
pub(crate) const BUILTIN_PROMISE_WITHRESOLVERS: FunctionID = 425;
308+
pub(crate) const BUILTIN_PROMISE_TRY: FunctionID = 426;
300309
// ── Proxy (430–434) ─────────────────────────────────────────────────
301310
pub(crate) const BUILTIN_CTOR_PROXY: FunctionID = 430;
302311
// ── Reflect (435–439) ───────────────────────────────────────────────
@@ -331,6 +340,7 @@ pub(crate) const BUILTIN_ATOMICS_EXCHANGE: FunctionID = 495;
331340
pub(crate) const BUILTIN_ATOMICS_WAIT: FunctionID = 496;
332341
pub(crate) const BUILTIN_ATOMICS_NOTIFY: FunctionID = 497;
333342
pub(crate) const BUILTIN_ATOMICS_WAITASYNC: FunctionID = 498;
343+
pub(crate) const BUILTIN_ATOMICS_PAUSE: FunctionID = 499;
334344
// ── AbstractModuleSource (510–514) ──────────────────────────────────
335345
pub(crate) const BUILTIN_CTOR_ABSTRACT_MODULE_SOURCE: FunctionID = 510;
336346
pub(crate) const BUILTIN_ABSTRACT_MODULE_SOURCE_TOSTRINGTAG_GET: FunctionID = 511;

0 commit comments

Comments
 (0)