porffor 0.2.0-69d30a8 → 0.2.0-6bc63ef

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.
Files changed (50) hide show
  1. package/CONTRIBUTING.md +256 -0
  2. package/README.md +64 -44
  3. package/asur/index.js +2 -2
  4. package/byg/index.js +3 -24
  5. package/compiler/2c.js +2 -53
  6. package/compiler/assemble.js +6 -7
  7. package/compiler/builtins/annexb_string.js +12 -12
  8. package/compiler/builtins/annexb_string.ts +5 -6
  9. package/compiler/builtins/array.ts +15 -15
  10. package/compiler/builtins/base64.ts +4 -79
  11. package/compiler/builtins/boolean.ts +18 -0
  12. package/compiler/builtins/crypto.ts +1 -1
  13. package/compiler/builtins/date.ts +2067 -0
  14. package/compiler/builtins/escape.ts +2 -2
  15. package/compiler/builtins/function.ts +5 -0
  16. package/compiler/builtins/int.ts +2 -4
  17. package/compiler/builtins/number.ts +11 -9
  18. package/compiler/builtins/object.ts +4 -0
  19. package/compiler/builtins/porffor.d.ts +28 -10
  20. package/compiler/builtins/set.ts +187 -0
  21. package/compiler/builtins/string.ts +47 -22
  22. package/compiler/builtins.js +19 -36
  23. package/compiler/codegen.js +239 -199
  24. package/compiler/decompile.js +2 -3
  25. package/compiler/embedding.js +2 -2
  26. package/compiler/encoding.js +0 -14
  27. package/compiler/expression.js +1 -1
  28. package/compiler/generated_builtins.js +1138 -208
  29. package/compiler/index.js +0 -2
  30. package/compiler/opt.js +7 -7
  31. package/compiler/parse.js +5 -5
  32. package/compiler/precompile.js +21 -24
  33. package/compiler/prefs.js +6 -5
  34. package/compiler/prototype.js +19 -19
  35. package/compiler/types.js +3 -2
  36. package/compiler/wasmSpec.js +1 -0
  37. package/compiler/wrap.js +70 -54
  38. package/package.json +1 -1
  39. package/rhemyn/compile.js +42 -25
  40. package/rhemyn/parse.js +4 -5
  41. package/runner/compare.js +0 -1
  42. package/runner/debug.js +1 -6
  43. package/runner/index.js +45 -4
  44. package/runner/profiler.js +15 -42
  45. package/runner/repl.js +3 -9
  46. package/runner/sizes.js +2 -2
  47. package/runner/version.js +3 -3
  48. package/.vscode/launch.json +0 -18
  49. package/compiler/builtins/tostring.ts +0 -45
  50. package/test262_changes_from_1afe9b87d2_to_04-09.md +0 -270
package/runner/compare.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { execSync } from 'node:child_process';
2
- import { pathToFileURL } from 'node:url';
3
2
  import fs from 'node:fs';
4
3
 
5
4
  const [ commitsAgo, file ] = process.argv.slice(2);
package/runner/debug.js CHANGED
@@ -1,9 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import compile from '../compiler/wrap.js';
4
- import fs from 'node:fs';
5
-
6
4
  import Byg from '../byg/index.js';
5
+ import fs from 'node:fs';
7
6
 
8
7
  const file = process.argv.slice(2).find(x => x[0] !== '-');
9
8
  let source = fs.readFileSync(file, 'utf8');
@@ -19,7 +18,6 @@ source = source.replace(/^\s*(function|const)\s*([a-zA-Z0-9]+)(\s*=\s*)?\([^)]*\
19
18
 
20
19
  const lines = source.split('\n');
21
20
  for (let i = 0; i < lines.length; i++) {
22
- // lines[line] = lines[line].replace(/^[^\n}]*;$/, _ => `profile(${line});${_}`);
23
21
  if (lines[i].trim().replace('}', '') !== '') lines[i] = `profile1(Porffor.wasm.i32.const(${i}));` + lines[i];
24
22
  }
25
23
  source = lines.join('\n');
@@ -35,8 +33,6 @@ const byg = Byg({
35
33
  }
36
34
  });
37
35
 
38
- // console.log(source);
39
-
40
36
  let stepIn = false, stepOut = false;
41
37
  const callStack = [];
42
38
 
@@ -72,7 +68,6 @@ try {
72
68
  [
73
69
  {
74
70
  x: termWidth - 1 - 40 - 6,
75
- // y: () => termHeight - 20 - 1 - 4,
76
71
  y: () => 4,
77
72
  width: 40,
78
73
  height: 20,
package/runner/index.js CHANGED
@@ -5,7 +5,7 @@ import fs from 'node:fs';
5
5
 
6
6
  const start = performance.now();
7
7
 
8
- if (process.argv.includes('-compile-hints')) {
8
+ if (process.argv.includes('--compile-hints')) {
9
9
  const v8 = await import('node:v8');
10
10
  v8.setFlagsFromString(`--experimental-wasm-compilation-hints`);
11
11
 
@@ -17,6 +17,47 @@ if (process.argv.includes('-compile-hints')) {
17
17
  // --experimental-wasm-return-call (on by default)
18
18
  }
19
19
 
20
+ if (process.argv.includes('--help')) {
21
+ // description + version
22
+ console.log(`\x1B[1m\x1B[35mPorffor\x1B[0m is a JavaScript engine/runtime/compiler. \x1B[90m(${(await import('./version.js')).default})\x1B[0m`);
23
+
24
+ // basic usage
25
+ console.log(`Usage: \x1B[1mporf [command] path/to/script.js [...prefs] [...args]\x1B[0m`);
26
+
27
+ // commands
28
+ console.log(`\n\u001b[4mCommands\x1B[0m`);
29
+ for (const [ cmd, [ color, desc ] ] of Object.entries({
30
+ run: [ 34, 'Run a JS file' ],
31
+ wasm: [ 34, 'Compile a JS file to a Wasm binary\n' ],
32
+ c: [ 31, 'Compile a JS file to C source code' ],
33
+ native: [ 31, 'Compile a JS file to a native binary\n' ],
34
+ profile: [ 33, 'Profile a JS file' ],
35
+ debug: [ 33, 'Debug a JS file' ],
36
+ 'debug-wasm': [ 33, 'Debug the compiled Wasm of a JS file' ]
37
+ })) {
38
+ console.log(` \x1B[1m\x1B[${color}m${cmd}\x1B[0m${' '.repeat(20 - cmd.length - (desc.startsWith('🧪') ? 3 : 0))}${desc}`);
39
+ }
40
+
41
+ // console.log();
42
+
43
+ // // options
44
+ // console.log(`\n\u001b[4mCommands\x1B[0m`);
45
+ // for (const [ cmd, [ color, desc ] ] of Object.entries({
46
+ // run: [ 34, 'Run a JS file' ],
47
+ // wasm: [ 34, 'Compile a JS file to a Wasm binary\n' ],
48
+ // c: [ 31, 'Compile a JS file to C source code' ],
49
+ // native: [ 31, 'Compile a JS file to a native binary\n' ],
50
+ // profile: [ 33, 'Profile a JS file' ],
51
+ // debug: [ 33, 'Debug a JS file' ],
52
+ // 'debug-wasm': [ 33, 'Debug the compiled Wasm of a JS file' ]
53
+ // })) {
54
+ // console.log(` \x1B[1m\x1B[${color}m${cmd}\x1B[0m${' '.repeat(20 - cmd.length - (desc.startsWith('🧪') ? 3 : 0))}${desc}`);
55
+ // }
56
+
57
+ console.log();
58
+ process.exit(0);
59
+ }
60
+
20
61
  let file = process.argv.slice(2).find(x => x[0] !== '-');
21
62
  if (['run', 'wasm', 'native', 'c', 'profile', 'debug', 'debug-wasm'].includes(file)) {
22
63
  if (file === 'profile') {
@@ -26,11 +67,11 @@ if (['run', 'wasm', 'native', 'c', 'profile', 'debug', 'debug-wasm'].includes(fi
26
67
  }
27
68
 
28
69
  if (['wasm', 'native', 'c'].includes(file)) {
29
- process.argv.push(`-target=${file}`);
70
+ process.argv.push(`--target=${file}`);
30
71
  }
31
72
 
32
73
  if (file === 'debug-wasm') {
33
- process.argv.push('-asur', '-wasm-debug');
74
+ process.argv.push('--asur', '--wasm-debug');
34
75
  }
35
76
 
36
77
  if (file === 'debug') {
@@ -77,7 +118,7 @@ try {
77
118
  if (process.argv.includes('-b')) {
78
119
  const { wasm, exports } = await compile(source, process.argv.includes('--module') ? [ 'module' ] : [], {}, print);
79
120
 
80
- if (!process.argv.includes('-no-run')) exports.main();
121
+ if (!process.argv.includes('--no-run')) exports.main();
81
122
 
82
123
  console.log(`\n\nwasm size: ${wasm.byteLength} bytes`);
83
124
  } else {
@@ -3,22 +3,12 @@
3
3
  import compile from '../compiler/wrap.js';
4
4
  import fs from 'node:fs';
5
5
 
6
- import Prefs from '../compiler/prefs.js';
7
-
8
- // const fast = Prefs.profiler === 'fast';
9
- const fast = !Prefs.experimentalProfiler;
10
-
11
6
  const file = process.argv.slice(2).find(x => x[0] !== '-');
12
7
  let source = fs.readFileSync(file, 'utf8');
13
8
 
14
9
  let profileId = 0;
15
- // source = fast ? source.replace(/^[^\n}]*;$/mg, _ => `profile(${profileId++});${_}profile(${profileId++});`) : source.replace(/^[^\n}]*;$/mg, _ => `profile(${profileId++});profile(${profileId++});${_}profile(${profileId++});`);
16
- // source = fast ? source.replace(/^[^\n}]*;$/mg, _ => `profile(Porffor.wasm.i32.const(${profileId++}));${_}profile(Porffor.wasm.i32.const(${profileId++}));`) : source.replace(/^[^\n}]*;$/mg, _ => `profile(${profileId++});profile(${profileId++});${_}profile(${profileId++});`);
17
- source = fast ? source.replace(/^[^\n}]*;$/mg, _ => `profile1(Porffor.wasm.i32.const(${profileId}));${_}profile2(Porffor.wasm.i32.const(${profileId++}));`) : source.replace(/^[^\n}]*;$/mg, _ => `profile(${profileId++});profile(${profileId++});${_}profile(${profileId++});`);
10
+ source = source.replace(/^[^\n}]*;$/mg, _ => `profile1(Porffor.wasm.i32.const(${profileId}));${_}profile2(Porffor.wasm.i32.const(${profileId++}));`)
18
11
 
19
- // console.log(source);
20
-
21
- // let tmp = new Array(profileId).fill(0);
22
12
  let tmp = new Array(profileId).fill(0);
23
13
  let times = new Array(profileId).fill(0);
24
14
  let samples = 0;
@@ -31,31 +21,19 @@ let last = 0;
31
21
 
32
22
  try {
33
23
  const { exports } = await compile(source, process.argv.includes('--module') ? [ 'module' ] : [], {
34
- y: fast ? n => {
24
+ y: n => {
35
25
  tmp[n] = performance.now();
36
- } : n => { /* todo */ },
37
- z: fast ? n => {
38
- times[n] += performance.now() - tmp[n];
39
- } : n => { /* todo */ }
40
- // z: fast ? n => {
41
- // if (n % 2) {
42
- // tmp[n] += performance.now() - tmp[n - 1];
43
- // } else {
44
- // tmp[n] = performance.now();
45
- // }
46
- // } : n => {
47
- // if (n % 3 === 2) {
48
- // tmp[n] += (performance.now() - tmp[n - 1]) - (tmp[n - 1] - tmp[n - 2]);
49
- // samples++;
50
-
51
- // if (performance.now() > last) {
52
- // process.stdout.write(`\r${spinner[spin++ % 4]} running: collected ${samples} samples...`);
53
- // last = performance.now() + 100;
54
- // }
55
- // } else {
56
- // tmp[n] = performance.now();
57
- // }
58
- // }
26
+ },
27
+ z: n => {
28
+ const t = performance.now();
29
+ times[n] += t - tmp[n];
30
+
31
+ samples++;
32
+ if (t > last) {
33
+ process.stdout.write(`\r${spinner[spin++ % 4]} running: collected ${samples} samples...`);
34
+ last = t + 100;
35
+ }
36
+ }
59
37
  });
60
38
 
61
39
  const start = performance.now();
@@ -64,14 +42,11 @@ try {
64
42
 
65
43
  const total = performance.now() - start;
66
44
 
67
- console.log(`\n${fast ? '' : `samples: ${samples}\n`}total: ${total}ms\n\n` + source.split('\n').map(x => {
45
+ console.log(`\ntotal: ${total}ms\nsamples: ${samples}\n\n\n` + source.split('\n').map(x => {
68
46
  let time = 0;
69
47
  if (x.startsWith('profile')) {
70
- // const id = parseInt(x.slice(8, x.indexOf(')')));
71
- // const id = parseInt(x.slice(31, x.indexOf(')') + 1));
72
48
  const id = parseInt(x.slice(32, x.indexOf(')')));
73
- // time = fast ? tmp[id + 1] : tmp[id + 2];
74
- time = fast ? times[id] : tmp[id + 2];
49
+ time = times[id]
75
50
  }
76
51
 
77
52
  let color = [ 0, 0, 0 ];
@@ -85,8 +60,6 @@ try {
85
60
 
86
61
  const ansiColor = `2;${color[0]};${color[1]};${color[2]}m`;
87
62
 
88
- // const line = x.replace(/profile\([0-9]+\);/g, '');
89
- // const line = x.replace(/profile\(Porffor.wasm.i32.const\([0-9]+\)\);/g, '');
90
63
  const line = x.replace(/profile[0-9]\(Porffor.wasm.i32.const\([0-9]+\)\);/g, '');
91
64
 
92
65
  if (percents) return `\x1b[48;${ansiColor}\x1b[97m${time ? ((time * 100).toFixed(0).padStart(4, ' ') + '%') : ' '}\x1b[0m\x1b[38;${ansiColor}▌\x1b[0m ${line}`;
package/runner/repl.js CHANGED
@@ -1,9 +1,6 @@
1
1
  import compile from '../compiler/wrap.js';
2
2
  import rev from './version.js';
3
3
 
4
- // import repl from 'node:repl';
5
- // import repl from '../../node-repl-polyfill/index.js';
6
-
7
4
  let repl;
8
5
  try {
9
6
  // try importing node:repl
@@ -17,11 +14,9 @@ try {
17
14
  repl = (await import('node-repl-polyfill')).default;
18
15
  }
19
16
 
20
- // process.argv.push('-O0'); // disable opts
21
-
22
17
  globalThis.valtype = 'f64';
23
18
 
24
- const valtypeOpt = process.argv.find(x => x.startsWith('-valtype='));
19
+ const valtypeOpt = process.argv.find(x => x.startsWith('--valtype='));
25
20
  if (valtypeOpt) valtype = valtypeOpt.split('=')[1];
26
21
 
27
22
  let host = globalThis?.navigator?.userAgent;
@@ -81,11 +76,10 @@ const run = async (source, _context, _filename, callback, run = true) => {
81
76
  let toRun = (prev ? (prev + `;\nprint(-0x1337);\n`) : '') + source.trim();
82
77
 
83
78
  let shouldPrint = !prev;
84
- const { exports, wasm, pages } = await compile(toRun, [], {}, str => {
79
+ const { exports, pages } = await compile(toRun, [], {}, str => {
85
80
  if (shouldPrint) process.stdout.write(str);
86
81
  if (str === '-4919') shouldPrint = true;
87
82
  });
88
- // fs.writeFileSync('out.wasm', Buffer.from(wasm));
89
83
 
90
84
  if (run && exports.$) {
91
85
  lastMemory = exports.$;
@@ -116,7 +110,7 @@ replServer.defineCommand('asm', {
116
110
  this.clearBufferedCommand();
117
111
 
118
112
  try {
119
- process.argv.push('-opt-funcs');
113
+ process.argv.push('--opt-funcs');
120
114
  await run('', null, null, () => {}, false);
121
115
  process.argv.pop();
122
116
  } catch { }
package/runner/sizes.js CHANGED
@@ -1,5 +1,5 @@
1
- import fs from 'node:fs';
2
1
  import compile from '../compiler/index.js';
2
+ import fs from 'node:fs';
3
3
 
4
4
  // deno compat
5
5
  const textEncoder = new TextEncoder();
@@ -18,7 +18,7 @@ const perform = async (file, args) => {
18
18
  console.log(label, ' '.repeat(40 - label.length), `${size}b`);
19
19
  };
20
20
 
21
- const argsValtypes = [ '-valtype=i32', '-valtype=i64', '-valtype=f64' ];
21
+ const argsValtypes = [ '--valtype=i32', '--valtype=f64' ];
22
22
  const argsOptlevels = [ '-O0', '-O1', '-O2', '-O3' ];
23
23
 
24
24
  for (const file of [ 'bench/prime_basic.js', 'bench/fib_iter.js', 'test/math_1.js', 'test/math_3.js', 'test/while_1.js', 'test/for_2.js', 'test/unary_3.js', 'test/updateexp_1.js', 'test/eq_3.js', 'test/empty.js' ]) {
package/runner/version.js CHANGED
@@ -1,10 +1,10 @@
1
- import fs from 'node:fs';
1
+ import { readFileSync } from 'node:fs';
2
2
 
3
3
  let rev = 'unknown';
4
4
  try {
5
- rev = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version.split('-')[1].slice(0, 7);
5
+ rev = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version.split('-')[1].slice(0, 7);
6
6
  } catch {
7
- rev = fs.readFileSync(new URL('../.git/refs/heads/main', import.meta.url), 'utf8').trim().slice(0, 7);
7
+ rev = readFileSync(new URL('../.git/refs/heads/main', import.meta.url), 'utf8').trim().slice(0, 7);
8
8
  }
9
9
 
10
10
  export default rev;
@@ -1,18 +0,0 @@
1
- {
2
- // Use IntelliSense to learn about possible attributes.
3
- // Hover to view descriptions of existing attributes.
4
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
- "version": "0.2.0",
6
- "configurations": [
7
- {
8
- "type": "node",
9
- "request": "launch",
10
- "name": "Launch Program",
11
- "skipFiles": [
12
- "<node_internals>/**"
13
- ],
14
- "program": "${workspaceFolder}/runner/index.js",
15
- "args": ["bench/bf.js", "-no-run"]
16
- }
17
- ]
18
- }
@@ -1,45 +0,0 @@
1
- // // @porf -funsafe-no-unlikely-proto-checks -valtype=i32
2
-
3
- export const __Boolean_prototype_toString = (_this: boolean) => {
4
- let out: bytestring = '';
5
- if (_this) out = 'true';
6
- else out = 'false';
7
-
8
- return out;
9
- };
10
-
11
- export const __String_prototype_toString = (_this: string) => {
12
- let out: string = Porffor.s``;
13
- Porffor.clone(_this, out);
14
- return out;
15
- };
16
-
17
- export const ___bytestring_prototype_toString = (_this: bytestring) => {
18
- let out: bytestring = Porffor.bs``;
19
- Porffor.clone(_this, out);
20
- return out;
21
- };
22
-
23
- // // export const __undefined_prototype_toString = (_this: number) => {
24
-
25
- // // };
26
-
27
- export const __Object_prototype_toString = (_this: object) => {
28
- let out: bytestring = '[object Object]';
29
- return out;
30
- };
31
-
32
- export const __Function_prototype_toString = (_this: Function) => {
33
- // todo: actually use source
34
- let out: bytestring = 'function () {}';
35
- return out;
36
- };
37
-
38
-
39
- // // export const ___array_prototype_toString = (_this: any[]) => {
40
- // // return _this.join();
41
- // // };
42
-
43
- // // export const ___regexp_prototype_toString = (_this: number) => {
44
-
45
- // // };
@@ -1,270 +0,0 @@
1
- ## new wasm errors
2
- intl402/supportedLocalesOf-throws-if-element-not-string-or-object.js
3
- built-ins/Boolean/S15.6.1.1_A1_T2.js
4
- built-ins/Boolean/S15.6.1.1_A1_T3.js
5
- built-ins/Boolean/S15.6.1.1_A1_T4.js
6
- built-ins/Boolean/S15.6.1.1_A1_T5.js
7
- built-ins/Boolean/S15.6.1.1_A2.js
8
- built-ins/Boolean/S9.2_A1_T1.js
9
- built-ins/Boolean/S9.2_A2_T1.js
10
- built-ins/Boolean/S9.2_A3_T1.js
11
- built-ins/Boolean/S9.2_A4_T1.js
12
- built-ins/Boolean/S9.2_A4_T3.js
13
- built-ins/Boolean/S9.2_A5_T1.js
14
- built-ins/Boolean/S9.2_A5_T3.js
15
- built-ins/Boolean/S9.2_A6_T1.js
16
- built-ins/Number/MAX_SAFE_INTEGER.js
17
- built-ins/Number/MIN_SAFE_INTEGER.js
18
- language/function-code/10.4.3-1-103.js
19
- language/function-code/10.4.3-1-105.js
20
- annexB/language/global-code/block-decl-global-init.js
21
- annexB/language/global-code/if-decl-else-decl-a-global-init.js
22
- annexB/language/global-code/if-decl-else-decl-b-global-init.js
23
- annexB/language/global-code/if-decl-else-stmt-global-init.js
24
- annexB/language/global-code/if-decl-no-else-global-init.js
25
- annexB/language/global-code/if-stmt-else-decl-global-init.js
26
- built-ins/Array/Symbol.species/symbol-species.js
27
- built-ins/ArrayBuffer/Symbol.species/symbol-species.js
28
- built-ins/Map/Symbol.species/symbol-species.js
29
- built-ins/Object/defineProperties/15.2.3.7-6-a-249.js
30
- built-ins/Object/defineProperty/15.2.3.6-4-260.js
31
- built-ins/Promise/Symbol.species/prop-desc.js
32
- built-ins/RegExp/Symbol.species/symbol-species.js
33
- built-ins/Set/Symbol.species/symbol-species.js
34
- built-ins/TypedArray/Symbol.species/prop-desc.js
35
- language/eval-code/direct/var-env-var-init-global-new.js
36
- language/expressions/arrow-function/prototype-rules.js
37
- language/expressions/coalesce/chainable-if-parenthesis-covered-logical-or.js
38
- language/expressions/instanceof/S15.3.5.3_A1_T2.js
39
- language/expressions/logical-assignment/lgcl-and-assignment-operator-unresolved-rhs-put.js
40
- language/expressions/logical-assignment/lgcl-and-assignment-operator-unresolved-rhs.js
41
- language/expressions/logical-assignment/lgcl-and-whitespace.js
42
- language/expressions/logical-assignment/lgcl-nullish-assignment-operator-unresolved-rhs-put.js
43
- language/expressions/logical-assignment/lgcl-nullish-assignment-operator-unresolved-rhs.js
44
- language/expressions/logical-assignment/lgcl-nullish-whitespace.js
45
- language/expressions/logical-assignment/lgcl-or-assignment-operator-unresolved-rhs-put.js
46
- language/expressions/logical-assignment/lgcl-or-assignment-operator-unresolved-rhs.js
47
- language/expressions/logical-assignment/lgcl-or-whitespace.js
48
- language/literals/boolean/S7.8.2_A1_T1.js
49
- language/literals/boolean/S7.8.2_A1_T2.js
50
- annexB/language/expressions/logical-assignment/emulates-undefined-and.js
51
- annexB/language/expressions/logical-assignment/emulates-undefined-coalesce.js
52
- annexB/language/expressions/logical-assignment/emulates-undefined-or.js
53
- built-ins/Array/prototype/sort/precise-comparefn-throws.js
54
- built-ins/Array/prototype/sort/precise-getter-appends-elements.js
55
- built-ins/Array/prototype/sort/precise-getter-decreases-length.js
56
- built-ins/Array/prototype/sort/precise-getter-deletes-predecessor.js
57
- built-ins/Array/prototype/sort/precise-getter-deletes-successor.js
58
- built-ins/Array/prototype/sort/precise-getter-increases-length.js
59
- built-ins/Array/prototype/sort/precise-getter-pops-elements.js
60
- built-ins/Array/prototype/sort/precise-getter-sets-predecessor.js
61
- built-ins/Array/prototype/sort/precise-getter-sets-successor.js
62
- built-ins/Array/prototype/sort/precise-prototype-accessors.js
63
- built-ins/Array/prototype/sort/precise-prototype-element.js
64
- built-ins/Array/prototype/sort/precise-setter-appends-elements.js
65
- built-ins/Array/prototype/sort/precise-setter-deletes-predecessor.js
66
- built-ins/Array/prototype/sort/precise-setter-deletes-successor.js
67
- built-ins/Array/prototype/sort/precise-setter-increases-length.js
68
- built-ins/Array/prototype/sort/precise-setter-sets-predecessor.js
69
- built-ins/Array/prototype/sort/precise-setter-sets-successor.js
70
- built-ins/ArrayBuffer/prototype/byteLength/prop-desc.js
71
- built-ins/ArrayBuffer/prototype/detached/prop-desc.js
72
- built-ins/ArrayBuffer/prototype/maxByteLength/prop-desc.js
73
- built-ins/ArrayBuffer/prototype/resizable/prop-desc.js
74
- built-ins/DataView/prototype/buffer/prop-desc.js
75
- built-ins/DataView/prototype/byteLength/prop-desc.js
76
- built-ins/DataView/prototype/byteOffset/prop-desc.js
77
- built-ins/Object/prototype/__proto__/prop-desc.js
78
- built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js
79
- built-ins/RegExp/prototype/dotAll/prop-desc.js
80
- built-ins/RegExp/prototype/flags/prop-desc.js
81
- built-ins/RegExp/prototype/hasIndices/prop-desc.js
82
- built-ins/RegExp/prototype/source/prop-desc.js
83
- built-ins/RegExp/prototype/unicodeSets/prop-desc.js
84
- built-ins/SharedArrayBuffer/prototype/byteLength/prop-desc.js
85
- built-ins/SharedArrayBuffer/prototype/growable/prop-desc.js
86
- built-ins/SharedArrayBuffer/prototype/maxByteLength/prop-desc.js
87
- built-ins/Symbol/prototype/description/descriptor.js
88
- built-ins/TypedArray/prototype/Symbol.toStringTag/invoked-as-accessor.js
89
- built-ins/TypedArray/prototype/Symbol.toStringTag/prop-desc.js
90
- built-ins/TypedArray/prototype/buffer/prop-desc.js
91
- built-ins/TypedArray/prototype/byteLength/prop-desc.js
92
- built-ins/TypedArray/prototype/byteOffset/prop-desc.js
93
- built-ins/TypedArray/prototype/length/prop-desc.js
94
- built-ins/TypedArrayConstructors/ctors/length-arg/toindex-length.js
95
- built-ins/TypedArrayConstructors/ctors-bigint/length-arg/toindex-length.js
96
- intl402/Collator/prototype/compare/prop-desc.js
97
- intl402/DateTimeFormat/prototype/format/prop-desc.js
98
- intl402/Locale/prototype/baseName/prop-desc.js
99
- intl402/Locale/prototype/calendar/prop-desc.js
100
- intl402/Locale/prototype/caseFirst/prop-desc.js
101
- intl402/Locale/prototype/collation/prop-desc.js
102
- intl402/Locale/prototype/firstDayOfWeek/prop-desc.js
103
- intl402/Locale/prototype/hourCycle/prop-desc.js
104
- intl402/Locale/prototype/language/prop-desc.js
105
- intl402/Locale/prototype/numberingSystem/prop-desc.js
106
- intl402/Locale/prototype/numeric/prop-desc.js
107
- intl402/Locale/prototype/region/prop-desc.js
108
- intl402/Locale/prototype/script/prop-desc.js
109
- intl402/NumberFormat/prototype/format/prop-desc.js
110
- language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-getter.js
111
- language/expressions/arrow-function/dstr/dflt-obj-ptrn-rest-val-obj.js
112
- language/expressions/function/dstr/dflt-obj-ptrn-rest-getter.js
113
- language/expressions/function/dstr/dflt-obj-ptrn-rest-val-obj.js
114
- language/statements/function/dstr/dflt-obj-ptrn-rest-getter.js
115
- language/statements/function/dstr/dflt-obj-ptrn-rest-val-obj.js
116
- language/statements/try/dstr/obj-ptrn-rest-val-obj.js
117
- annexB/built-ins/RegExp/legacy-accessors/lastMatch/prop-desc.js
118
- annexB/built-ins/RegExp/legacy-accessors/lastParen/prop-desc.js
119
- annexB/built-ins/RegExp/legacy-accessors/leftContext/prop-desc.js
120
- annexB/built-ins/RegExp/legacy-accessors/rightContext/prop-desc.js
121
- built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/invoked-as-accessor.js
122
- built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/prop-desc.js
123
-
124
-
125
- ## new passes
126
- built-ins/RegExp/S15.10.2.6_A3_T3.js
127
- language/expressions/in/S11.8.7_A2.1_T3.js
128
- language/expressions/in/S11.8.7_A3.js
129
- language/types/reference/S8.7_A2.js
130
- built-ins/RegExp/prototype/test/y-fail-return.js
131
-
132
-
133
- ## new fails
134
- built-ins/Boolean/S15.6.1.1_A1_T1.js
135
- built-ins/Boolean/S15.6.1.1_A1_T3.js
136
- built-ins/Boolean/S15.6.1.1_A1_T5.js
137
- built-ins/Boolean/S15.6.1.1_A2.js
138
- built-ins/Boolean/S9.2_A1_T1.js
139
- built-ins/Boolean/S9.2_A2_T1.js
140
- built-ins/Boolean/S9.2_A3_T1.js
141
- built-ins/Boolean/S9.2_A4_T3.js
142
- built-ins/Boolean/S9.2_A5_T1.js
143
- annexB/built-ins/RegExp/incomplete_hex_unicode_escape.js
144
- language/expressions/addition/S11.6.1_A3.1_T1.1.js
145
- language/expressions/addition/S11.6.1_A3.1_T2.1.js
146
- language/expressions/addition/S11.6.1_A3.1_T2.5.js
147
- language/expressions/bitwise-and/S11.10.1_A3_T1.1.js
148
- language/expressions/bitwise-and/S11.10.1_A3_T2.1.js
149
- language/expressions/bitwise-and/S11.10.1_A3_T2.8.js
150
- language/expressions/bitwise-and/S11.10.1_A3_T2.9.js
151
- language/expressions/bitwise-not/S11.4.8_A3_T1.js
152
- language/expressions/bitwise-or/S11.10.3_A3_T1.1.js
153
- language/expressions/bitwise-or/S11.10.3_A3_T2.1.js
154
- language/expressions/bitwise-or/S11.10.3_A3_T2.8.js
155
- language/expressions/bitwise-or/S11.10.3_A3_T2.9.js
156
- language/expressions/bitwise-xor/S11.10.2_A3_T1.1.js
157
- language/expressions/bitwise-xor/S11.10.2_A3_T2.1.js
158
- language/expressions/bitwise-xor/S11.10.2_A3_T2.8.js
159
- language/expressions/bitwise-xor/S11.10.2_A3_T2.9.js
160
- language/expressions/coalesce/chainable-if-parenthesis-covered-logical-or.js
161
- language/expressions/compound-assignment/S11.13.2_A4.10_T1.1.js
162
- language/expressions/compound-assignment/S11.13.2_A4.10_T2.1.js
163
- language/expressions/compound-assignment/S11.13.2_A4.10_T2.8.js
164
- language/expressions/compound-assignment/S11.13.2_A4.10_T2.9.js
165
- language/expressions/compound-assignment/S11.13.2_A4.11_T1.1.js
166
- language/expressions/compound-assignment/S11.13.2_A4.11_T2.1.js
167
- language/expressions/compound-assignment/S11.13.2_A4.11_T2.8.js
168
- language/expressions/compound-assignment/S11.13.2_A4.11_T2.9.js
169
- language/expressions/compound-assignment/S11.13.2_A4.1_T1.1.js
170
- language/expressions/compound-assignment/S11.13.2_A4.1_T2.1.js
171
- language/expressions/compound-assignment/S11.13.2_A4.1_T2.9.js
172
- language/expressions/compound-assignment/S11.13.2_A4.2_T1.1.js
173
- language/expressions/compound-assignment/S11.13.2_A4.2_T2.1.js
174
- language/expressions/compound-assignment/S11.13.2_A4.2_T2.9.js
175
- language/expressions/compound-assignment/S11.13.2_A4.3_T1.1.js
176
- language/expressions/compound-assignment/S11.13.2_A4.3_T2.1.js
177
- language/expressions/compound-assignment/S11.13.2_A4.3_T2.9.js
178
- language/expressions/compound-assignment/S11.13.2_A4.4_T1.1.js
179
- language/expressions/compound-assignment/S11.13.2_A4.4_T2.1.js
180
- language/expressions/compound-assignment/S11.13.2_A4.4_T2.5.js
181
- language/expressions/compound-assignment/S11.13.2_A4.5_T1.1.js
182
- language/expressions/compound-assignment/S11.13.2_A4.5_T2.1.js
183
- language/expressions/compound-assignment/S11.13.2_A4.5_T2.9.js
184
- language/expressions/compound-assignment/S11.13.2_A4.6_T1.1.js
185
- language/expressions/compound-assignment/S11.13.2_A4.6_T2.1.js
186
- language/expressions/compound-assignment/S11.13.2_A4.6_T2.8.js
187
- language/expressions/compound-assignment/S11.13.2_A4.6_T2.9.js
188
- language/expressions/compound-assignment/S11.13.2_A4.7_T1.1.js
189
- language/expressions/compound-assignment/S11.13.2_A4.7_T2.1.js
190
- language/expressions/compound-assignment/S11.13.2_A4.7_T2.8.js
191
- language/expressions/compound-assignment/S11.13.2_A4.7_T2.9.js
192
- language/expressions/compound-assignment/S11.13.2_A4.8_T1.1.js
193
- language/expressions/compound-assignment/S11.13.2_A4.8_T2.1.js
194
- language/expressions/compound-assignment/S11.13.2_A4.8_T2.8.js
195
- language/expressions/compound-assignment/S11.13.2_A4.8_T2.9.js
196
- language/expressions/compound-assignment/S11.13.2_A4.9_T1.1.js
197
- language/expressions/compound-assignment/S11.13.2_A4.9_T2.1.js
198
- language/expressions/compound-assignment/S11.13.2_A4.9_T2.8.js
199
- language/expressions/compound-assignment/S11.13.2_A4.9_T2.9.js
200
- language/expressions/conditional/S11.12_A2.1_T1.js
201
- language/expressions/conditional/S11.12_A3_T1.js
202
- language/expressions/division/S11.5.2_A3_T1.1.js
203
- language/expressions/division/S11.5.2_A3_T2.1.js
204
- language/expressions/division/S11.5.2_A3_T2.9.js
205
- language/expressions/does-not-equals/S11.9.2_A4.1_T1.js
206
- language/expressions/does-not-equals/S11.9.2_A4.1_T2.js
207
- language/expressions/equals/S11.9.1_A4.1_T1.js
208
- language/expressions/equals/S11.9.1_A4.1_T2.js
209
- language/expressions/greater-than/S11.8.2_A3.1_T1.1.js
210
- language/expressions/greater-than/S11.8.2_A3.1_T2.1.js
211
- language/expressions/greater-than/S11.8.2_A3.1_T2.9.js
212
- language/expressions/greater-than/S11.8.2_A4.10.js
213
- language/expressions/greater-than-or-equal/S11.8.4_A3.1_T1.1.js
214
- language/expressions/greater-than-or-equal/S11.8.4_A3.1_T2.1.js
215
- language/expressions/greater-than-or-equal/S11.8.4_A3.1_T2.9.js
216
- language/expressions/grouping/S11.1.6_A3_T1.js
217
- language/expressions/left-shift/S11.7.1_A3_T1.1.js
218
- language/expressions/left-shift/S11.7.1_A3_T2.1.js
219
- language/expressions/left-shift/S11.7.1_A3_T2.8.js
220
- language/expressions/left-shift/S11.7.1_A3_T2.9.js
221
- language/expressions/left-shift/S9.5_A3.1_T1.js
222
- language/expressions/less-than/S11.8.1_A3.1_T1.1.js
223
- language/expressions/less-than/S11.8.1_A3.1_T2.1.js
224
- language/expressions/less-than/S11.8.1_A3.1_T2.9.js
225
- language/expressions/less-than-or-equal/S11.8.3_A3.1_T1.1.js
226
- language/expressions/less-than-or-equal/S11.8.3_A3.1_T2.1.js
227
- language/expressions/less-than-or-equal/S11.8.3_A3.1_T2.9.js
228
- language/expressions/logical-and/S11.11.1_A2.1_T1.js
229
- language/expressions/logical-and/S11.11.1_A3_T1.js
230
- language/expressions/logical-assignment/lgcl-and-assignment-operator-unresolved-rhs-put.js
231
- language/expressions/logical-assignment/lgcl-and-whitespace.js
232
- language/expressions/logical-assignment/lgcl-nullish-assignment-operator-unresolved-rhs-put.js
233
- language/expressions/logical-assignment/lgcl-nullish-whitespace.js
234
- language/expressions/logical-assignment/lgcl-or-assignment-operator-unresolved-rhs-put.js
235
- language/expressions/logical-assignment/lgcl-or-whitespace.js
236
- language/expressions/logical-or/S11.11.2_A3_T1.js
237
- language/expressions/modulus/S11.5.3_A3_T1.1.js
238
- language/expressions/modulus/S11.5.3_A3_T2.1.js
239
- language/expressions/modulus/S11.5.3_A3_T2.9.js
240
- language/expressions/multiplication/S11.5.1_A3_T1.1.js
241
- language/expressions/multiplication/S11.5.1_A3_T2.1.js
242
- language/expressions/multiplication/S11.5.1_A3_T2.9.js
243
- language/expressions/prefix-decrement/S11.4.5_A4_T1.js
244
- language/expressions/prefix-increment/S11.4.4_A4_T1.js
245
- language/expressions/right-shift/S11.7.2_A3_T1.1.js
246
- language/expressions/right-shift/S11.7.2_A3_T2.1.js
247
- language/expressions/right-shift/S11.7.2_A3_T2.8.js
248
- language/expressions/right-shift/S11.7.2_A3_T2.9.js
249
- language/expressions/strict-does-not-equals/S11.9.5_A4.1_T1.js
250
- language/expressions/strict-does-not-equals/S11.9.5_A4.1_T2.js
251
- language/expressions/strict-equals/S11.9.4_A4.1_T1.js
252
- language/expressions/strict-equals/S11.9.4_A4.1_T2.js
253
- language/expressions/subtraction/S11.6.2_A3_T1.1.js
254
- language/expressions/subtraction/S11.6.2_A3_T2.1.js
255
- language/expressions/subtraction/S11.6.2_A3_T2.9.js
256
- language/expressions/unary-plus/S11.4.6_A3_T1.js
257
- language/expressions/unsigned-right-shift/S11.7.3_A3_T1.1.js
258
- language/expressions/unsigned-right-shift/S11.7.3_A3_T2.1.js
259
- language/expressions/unsigned-right-shift/S11.7.3_A3_T2.8.js
260
- language/expressions/unsigned-right-shift/S11.7.3_A3_T2.9.js
261
- language/expressions/unsigned-right-shift/S9.6_A3.1_T1.js
262
- language/expressions/void/S11.4.2_A4_T1.js
263
- language/literals/boolean/S7.8.2_A1_T1.js
264
- language/literals/boolean/S7.8.2_A1_T2.js
265
- language/statements/for-of/string-astral-truncated.js
266
- language/statements/function/S13.2.1_A6_T1.js
267
- language/statements/function/S13.2.1_A6_T2.js
268
- language/statements/function/S13.2.1_A6_T3.js
269
- language/statements/function/S13.2.1_A6_T4.js
270
- built-ins/String/prototype/at/returns-code-unit.js