diff --git a/cli/asc.js b/cli/asc.js index ed0e3bbc..4fbfdd29 100644 --- a/cli/asc.js +++ b/cli/asc.js @@ -277,6 +277,7 @@ exports.main = function main(argv, options, callback) { function parseBacklog() { var sourcePath, sourceText; while ((sourcePath = parser.nextFile()) != null) { + sourceText = null; // Load library file if explicitly requested if (sourcePath.startsWith(exports.libraryPrefix)) { @@ -325,12 +326,12 @@ exports.main = function main(argv, options, callback) { } else { for (let i = 0, k = customLibDirs.length; i < k; ++i) { const dir = customLibDirs[i]; - sourceText = readFile(plainName + ".ts", customLibDirs[i]); + sourceText = readFile(plainName + ".ts", dir); if (sourceText !== null) { sourcePath = exports.libraryPrefix + plainName + ".ts"; break; } else { - sourceText = readFile(indexName + ".ts", customLibDirs[i]); + sourceText = readFile(indexName + ".ts", dir); if (sourceText !== null) { sourcePath = exports.libraryPrefix + indexName + ".ts"; break; @@ -356,17 +357,21 @@ exports.main = function main(argv, options, callback) { // Include runtime template before entry files so its setup runs first { - let templateName = String(args.runtime); - let templateText = exports.libraryFiles["rt/index-" + templateName]; - if (templateText == null) { - templateText = readFile(templateName + ".ts", baseDir); - if (templateText == null) { - return callback(Error("Runtime template '" + templateName + "' not found.")); + let runtimeName = String(args.runtime); + let runtimePath = "rt/index-" + runtimeName; + let runtimeText = exports.libraryFiles[runtimePath]; + if (runtimeText == null) { + runtimePath = runtimeName; + runtimeText = readFile(runtimePath + ".ts", baseDir); + if (runtimeText == null) { + return callback(Error("Runtime '" + runtimeName + "' not found.")); } + } else { + runtimePath = "~lib/" + runtimePath; } stats.parseCount++; stats.parseTime += measure(() => { - parser = assemblyscript.parseFile(templateText, templateName, true, parser); + parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser); }); } diff --git a/tests/compiler/assert-nonnull.ts b/tests/compiler/assert-nonnull.ts index 6e4eed6d..b50dcb9a 100644 --- a/tests/compiler/assert-nonnull.ts +++ b/tests/compiler/assert-nonnull.ts @@ -1,5 +1,3 @@ -import "allocator/arena"; - export function testVar(n: Error | null): Error { return n!; } diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index eff99d11..17f181cb 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -104,7 +104,7 @@ if i32.const 0 i32.const 24 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -127,7 +127,7 @@ if i32.const 0 i32.const 24 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -139,7 +139,7 @@ if i32.const 0 i32.const 24 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -156,7 +156,7 @@ if i32.const 0 i32.const 24 - i32.const 24 + i32.const 22 i32.const 2 call $~lib/builtins/abort unreachable @@ -168,7 +168,7 @@ if i32.const 0 i32.const 24 - i32.const 25 + i32.const 23 i32.const 2 call $~lib/builtins/abort unreachable @@ -200,7 +200,7 @@ if i32.const 0 i32.const 24 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -212,7 +212,7 @@ if i32.const 0 i32.const 24 - i32.const 41 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -229,7 +229,7 @@ if i32.const 0 i32.const 24 - i32.const 47 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -241,7 +241,7 @@ if i32.const 0 i32.const 24 - i32.const 48 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable @@ -266,7 +266,7 @@ if i32.const 0 i32.const 24 - i32.const 58 + i32.const 56 i32.const 4 call $~lib/builtins/abort unreachable @@ -289,7 +289,7 @@ if i32.const 0 i32.const 24 - i32.const 68 + i32.const 66 i32.const 2 call $~lib/builtins/abort unreachable @@ -301,7 +301,7 @@ if i32.const 0 i32.const 24 - i32.const 69 + i32.const 67 i32.const 2 call $~lib/builtins/abort unreachable @@ -340,7 +340,7 @@ if i32.const 0 i32.const 24 - i32.const 86 + i32.const 84 i32.const 2 call $~lib/builtins/abort unreachable @@ -352,7 +352,7 @@ if i32.const 0 i32.const 24 - i32.const 87 + i32.const 85 i32.const 2 call $~lib/builtins/abort unreachable @@ -391,7 +391,7 @@ if i32.const 0 i32.const 24 - i32.const 106 + i32.const 104 i32.const 2 call $~lib/builtins/abort unreachable @@ -403,7 +403,7 @@ if i32.const 0 i32.const 24 - i32.const 107 + i32.const 105 i32.const 2 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/call-super.ts b/tests/compiler/call-super.ts index 4145cbce..aaa5a107 100644 --- a/tests/compiler/call-super.ts +++ b/tests/compiler/call-super.ts @@ -1,5 +1,3 @@ -import "allocator/arena"; - // both constructors present class A { diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index fb79f1a2..82b396cc 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -132,7 +132,7 @@ if i32.const 0 i32.const 24 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -164,7 +164,7 @@ if i32.const 0 i32.const 24 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -177,7 +177,7 @@ if i32.const 0 i32.const 24 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -200,7 +200,7 @@ if i32.const 0 i32.const 24 - i32.const 24 + i32.const 22 i32.const 2 call $~lib/builtins/abort unreachable @@ -213,7 +213,7 @@ if i32.const 0 i32.const 24 - i32.const 25 + i32.const 23 i32.const 2 call $~lib/builtins/abort unreachable @@ -261,7 +261,7 @@ if i32.const 0 i32.const 24 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -274,7 +274,7 @@ if i32.const 0 i32.const 24 - i32.const 41 + i32.const 39 i32.const 4 call $~lib/builtins/abort unreachable @@ -294,7 +294,7 @@ if i32.const 0 i32.const 24 - i32.const 47 + i32.const 45 i32.const 2 call $~lib/builtins/abort unreachable @@ -307,7 +307,7 @@ if i32.const 0 i32.const 24 - i32.const 48 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable @@ -338,7 +338,7 @@ if i32.const 0 i32.const 24 - i32.const 58 + i32.const 56 i32.const 4 call $~lib/builtins/abort unreachable @@ -378,7 +378,7 @@ if i32.const 0 i32.const 24 - i32.const 68 + i32.const 66 i32.const 2 call $~lib/builtins/abort unreachable @@ -391,7 +391,7 @@ if i32.const 0 i32.const 24 - i32.const 69 + i32.const 67 i32.const 2 call $~lib/builtins/abort unreachable @@ -447,7 +447,7 @@ if i32.const 0 i32.const 24 - i32.const 86 + i32.const 84 i32.const 2 call $~lib/builtins/abort unreachable @@ -460,7 +460,7 @@ if i32.const 0 i32.const 24 - i32.const 87 + i32.const 85 i32.const 2 call $~lib/builtins/abort unreachable @@ -516,7 +516,7 @@ if i32.const 0 i32.const 24 - i32.const 106 + i32.const 104 i32.const 2 call $~lib/builtins/abort unreachable @@ -529,7 +529,7 @@ if i32.const 0 i32.const 24 - i32.const 107 + i32.const 105 i32.const 2 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/class.ts b/tests/compiler/class.ts index 0a00636e..80355753 100644 --- a/tests/compiler/class.ts +++ b/tests/compiler/class.ts @@ -1,5 +1,3 @@ -import "allocator/arena"; - class Animal { static ONE: i32 = 1; static add(a: i32, b: i32): i32 { return a + b + Animal.ONE; } diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 1af2d709..b8f42eac 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -39,7 +39,7 @@ if i32.const 0 i32.const 24 - i32.const 15 + i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/exports.ts b/tests/compiler/exports.ts index eb4c58f8..5953536e 100644 --- a/tests/compiler/exports.ts +++ b/tests/compiler/exports.ts @@ -1,5 +1,3 @@ -import "allocator/arena"; - // top-level function export function add(a: i32, b: i32): i32 { return a + b; diff --git a/tests/compiler/getter-call.ts b/tests/compiler/getter-call.ts index a75450f2..968abc6a 100644 --- a/tests/compiler/getter-call.ts +++ b/tests/compiler/getter-call.ts @@ -1,5 +1,3 @@ -import "allocator/arena"; - class C { get x(): () => i32 { return (): i32 => 42; diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index e1fec5af..4a6cea5b 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -149,7 +149,7 @@ if i32.const 0 i32.const 24 - i32.const 97 + i32.const 95 i32.const 2 call $~lib/builtins/abort unreachable @@ -161,7 +161,7 @@ if i32.const 0 i32.const 24 - i32.const 98 + i32.const 96 i32.const 2 call $~lib/builtins/abort unreachable @@ -173,7 +173,7 @@ if i32.const 0 i32.const 24 - i32.const 99 + i32.const 97 i32.const 2 call $~lib/builtins/abort unreachable @@ -185,7 +185,7 @@ if i32.const 0 i32.const 24 - i32.const 100 + i32.const 98 i32.const 2 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/inlining.ts b/tests/compiler/inlining.ts index 44f21984..4c34d848 100644 --- a/tests/compiler/inlining.ts +++ b/tests/compiler/inlining.ts @@ -73,8 +73,6 @@ function test_funcs(): void { test_funcs(); -import "allocator/arena"; - class Baz { a: i32 = 1; b: i32; diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index cbdccedf..71060d88 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -455,7 +455,7 @@ if i32.const 0 i32.const 24 - i32.const 97 + i32.const 95 i32.const 2 call $~lib/builtins/abort unreachable @@ -468,7 +468,7 @@ if i32.const 0 i32.const 24 - i32.const 98 + i32.const 96 i32.const 2 call $~lib/builtins/abort unreachable @@ -481,7 +481,7 @@ if i32.const 0 i32.const 24 - i32.const 99 + i32.const 97 i32.const 2 call $~lib/builtins/abort unreachable @@ -494,7 +494,7 @@ if i32.const 0 i32.const 24 - i32.const 100 + i32.const 98 i32.const 2 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index f150adcf..d56f9943 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -1503,7 +1503,7 @@ if i32.const 0 i32.const 72 - i32.const 7 + i32.const 5 i32.const 0 call $~lib/builtins/abort unreachable @@ -1515,7 +1515,7 @@ if i32.const 0 i32.const 72 - i32.const 9 + i32.const 7 i32.const 0 call $~lib/builtins/abort unreachable @@ -1528,7 +1528,7 @@ if i32.const 0 i32.const 72 - i32.const 10 + i32.const 8 i32.const 0 call $~lib/builtins/abort unreachable @@ -1541,7 +1541,7 @@ if i32.const 0 i32.const 72 - i32.const 12 + i32.const 10 i32.const 0 call $~lib/builtins/abort unreachable @@ -1554,7 +1554,7 @@ if i32.const 0 i32.const 72 - i32.const 13 + i32.const 11 i32.const 0 call $~lib/builtins/abort unreachable @@ -1571,7 +1571,7 @@ if i32.const 0 i32.const 72 - i32.const 14 + i32.const 12 i32.const 0 call $~lib/builtins/abort unreachable @@ -1588,7 +1588,7 @@ if i32.const 0 i32.const 72 - i32.const 15 + i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable @@ -1601,7 +1601,7 @@ if i32.const 0 i32.const 72 - i32.const 16 + i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable @@ -1614,7 +1614,7 @@ if i32.const 0 i32.const 72 - i32.const 17 + i32.const 15 i32.const 0 call $~lib/builtins/abort unreachable @@ -1632,7 +1632,7 @@ if i32.const 0 i32.const 72 - i32.const 20 + i32.const 18 i32.const 0 call $~lib/builtins/abort unreachable @@ -1650,7 +1650,7 @@ if i32.const 0 i32.const 72 - i32.const 21 + i32.const 19 i32.const 0 call $~lib/builtins/abort unreachable @@ -1660,7 +1660,7 @@ if i32.const 0 i32.const 72 - i32.const 27 + i32.const 25 i32.const 0 call $~lib/builtins/abort unreachable @@ -1669,6 +1669,30 @@ call $~lib/number/F32.isSafeInteger i32.const 1 i32.ne + if + i32.const 0 + i32.const 72 + i32.const 26 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + call $~lib/number/F32.isSafeInteger + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f32.const -0 + call $~lib/number/F32.isSafeInteger + i32.const 1 + i32.ne if i32.const 0 i32.const 72 @@ -1677,36 +1701,12 @@ call $~lib/builtins/abort unreachable end - f32.const 0 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 72 - i32.const 29 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f32.const -0 - call $~lib/number/F32.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 72 - i32.const 30 - i32.const 0 - call $~lib/builtins/abort - unreachable - end f32.const nan:0x400000 call $~lib/number/F32.isSafeInteger if i32.const 0 i32.const 72 - i32.const 31 + i32.const 29 i32.const 0 call $~lib/builtins/abort unreachable @@ -1716,7 +1716,7 @@ if i32.const 0 i32.const 72 - i32.const 32 + i32.const 30 i32.const 0 call $~lib/builtins/abort unreachable @@ -1728,7 +1728,7 @@ if i32.const 0 i32.const 72 - i32.const 33 + i32.const 31 i32.const 0 call $~lib/builtins/abort unreachable @@ -1738,7 +1738,7 @@ if i32.const 0 i32.const 72 - i32.const 34 + i32.const 32 i32.const 0 call $~lib/builtins/abort unreachable @@ -1748,7 +1748,7 @@ if i32.const 0 i32.const 72 - i32.const 35 + i32.const 33 i32.const 0 call $~lib/builtins/abort unreachable @@ -1760,7 +1760,7 @@ if i32.const 0 i32.const 72 - i32.const 36 + i32.const 34 i32.const 0 call $~lib/builtins/abort unreachable @@ -1772,7 +1772,7 @@ if i32.const 0 i32.const 72 - i32.const 37 + i32.const 35 i32.const 0 call $~lib/builtins/abort unreachable @@ -1782,7 +1782,7 @@ if i32.const 0 i32.const 72 - i32.const 38 + i32.const 36 i32.const 0 call $~lib/builtins/abort unreachable @@ -1792,7 +1792,7 @@ if i32.const 0 i32.const 72 - i32.const 39 + i32.const 37 i32.const 0 call $~lib/builtins/abort unreachable @@ -1802,7 +1802,7 @@ if i32.const 0 i32.const 72 - i32.const 40 + i32.const 38 i32.const 0 call $~lib/builtins/abort unreachable @@ -1814,7 +1814,7 @@ if i32.const 0 i32.const 72 - i32.const 41 + i32.const 39 i32.const 0 call $~lib/builtins/abort unreachable @@ -1826,7 +1826,7 @@ if i32.const 0 i32.const 72 - i32.const 42 + i32.const 40 i32.const 0 call $~lib/builtins/abort unreachable @@ -1838,7 +1838,7 @@ if i32.const 0 i32.const 72 - i32.const 43 + i32.const 41 i32.const 0 call $~lib/builtins/abort unreachable @@ -1850,7 +1850,7 @@ if i32.const 0 i32.const 72 - i32.const 44 + i32.const 42 i32.const 0 call $~lib/builtins/abort unreachable @@ -1860,7 +1860,7 @@ if i32.const 0 i32.const 72 - i32.const 45 + i32.const 43 i32.const 0 call $~lib/builtins/abort unreachable @@ -1870,7 +1870,7 @@ if i32.const 0 i32.const 72 - i32.const 46 + i32.const 44 i32.const 0 call $~lib/builtins/abort unreachable @@ -1881,7 +1881,7 @@ if i32.const 0 i32.const 72 - i32.const 48 + i32.const 46 i32.const 0 call $~lib/builtins/abort unreachable @@ -1891,7 +1891,7 @@ if i32.const 0 i32.const 72 - i32.const 50 + i32.const 48 i32.const 0 call $~lib/builtins/abort unreachable @@ -1900,6 +1900,30 @@ call $~lib/number/F64.isSafeInteger i32.const 1 i32.ne + if + i32.const 0 + i32.const 72 + i32.const 49 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + call $~lib/number/F64.isSafeInteger + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 72 + i32.const 50 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + f64.const -0 + call $~lib/number/F64.isSafeInteger + i32.const 1 + i32.ne if i32.const 0 i32.const 72 @@ -1908,36 +1932,12 @@ call $~lib/builtins/abort unreachable end - f64.const 0 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 72 - i32.const 52 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - f64.const -0 - call $~lib/number/F64.isSafeInteger - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 72 - i32.const 53 - i32.const 0 - call $~lib/builtins/abort - unreachable - end f64.const nan:0x8000000000000 call $~lib/number/F64.isSafeInteger if i32.const 0 i32.const 72 - i32.const 54 + i32.const 52 i32.const 0 call $~lib/builtins/abort unreachable @@ -1947,7 +1947,7 @@ if i32.const 0 i32.const 72 - i32.const 55 + i32.const 53 i32.const 0 call $~lib/builtins/abort unreachable @@ -1959,7 +1959,7 @@ if i32.const 0 i32.const 72 - i32.const 56 + i32.const 54 i32.const 0 call $~lib/builtins/abort unreachable @@ -1969,7 +1969,7 @@ if i32.const 0 i32.const 72 - i32.const 57 + i32.const 55 i32.const 0 call $~lib/builtins/abort unreachable @@ -1979,7 +1979,7 @@ if i32.const 0 i32.const 72 - i32.const 58 + i32.const 56 i32.const 0 call $~lib/builtins/abort unreachable @@ -1991,7 +1991,7 @@ if i32.const 0 i32.const 72 - i32.const 59 + i32.const 57 i32.const 0 call $~lib/builtins/abort unreachable @@ -2003,7 +2003,7 @@ if i32.const 0 i32.const 72 - i32.const 60 + i32.const 58 i32.const 0 call $~lib/builtins/abort unreachable @@ -2013,7 +2013,7 @@ if i32.const 0 i32.const 72 - i32.const 61 + i32.const 59 i32.const 0 call $~lib/builtins/abort unreachable @@ -2023,7 +2023,7 @@ if i32.const 0 i32.const 72 - i32.const 62 + i32.const 60 i32.const 0 call $~lib/builtins/abort unreachable @@ -2033,7 +2033,7 @@ if i32.const 0 i32.const 72 - i32.const 63 + i32.const 61 i32.const 0 call $~lib/builtins/abort unreachable @@ -2045,7 +2045,7 @@ if i32.const 0 i32.const 72 - i32.const 64 + i32.const 62 i32.const 0 call $~lib/builtins/abort unreachable @@ -2057,7 +2057,7 @@ if i32.const 0 i32.const 72 - i32.const 65 + i32.const 63 i32.const 0 call $~lib/builtins/abort unreachable @@ -2069,7 +2069,7 @@ if i32.const 0 i32.const 72 - i32.const 66 + i32.const 64 i32.const 0 call $~lib/builtins/abort unreachable @@ -2081,7 +2081,7 @@ if i32.const 0 i32.const 72 - i32.const 67 + i32.const 65 i32.const 0 call $~lib/builtins/abort unreachable @@ -2091,7 +2091,7 @@ if i32.const 0 i32.const 72 - i32.const 68 + i32.const 66 i32.const 0 call $~lib/builtins/abort unreachable @@ -2101,7 +2101,7 @@ if i32.const 0 i32.const 72 - i32.const 69 + i32.const 67 i32.const 0 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/number.ts b/tests/compiler/number.ts index 853dcb12..cf7c76db 100644 --- a/tests/compiler/number.ts +++ b/tests/compiler/number.ts @@ -1,5 +1,3 @@ -import "allocator/arena"; - // basic class bindings // variable diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 5e4b55db..5e578f1a 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -3655,7 +3655,7 @@ if i32.const 0 i32.const 520 - i32.const 7 + i32.const 5 i32.const 0 call $~lib/builtins/abort unreachable @@ -3669,7 +3669,7 @@ if i32.const 0 i32.const 520 - i32.const 9 + i32.const 7 i32.const 0 call $~lib/builtins/abort unreachable @@ -3683,7 +3683,7 @@ if i32.const 0 i32.const 520 - i32.const 10 + i32.const 8 i32.const 0 call $~lib/builtins/abort unreachable @@ -3697,7 +3697,7 @@ if i32.const 0 i32.const 520 - i32.const 12 + i32.const 10 i32.const 0 call $~lib/builtins/abort unreachable @@ -3711,7 +3711,7 @@ if i32.const 0 i32.const 520 - i32.const 13 + i32.const 11 i32.const 0 call $~lib/builtins/abort unreachable @@ -3731,7 +3731,7 @@ if i32.const 0 i32.const 520 - i32.const 14 + i32.const 12 i32.const 0 call $~lib/builtins/abort unreachable @@ -3751,7 +3751,7 @@ if i32.const 0 i32.const 520 - i32.const 15 + i32.const 13 i32.const 0 call $~lib/builtins/abort unreachable @@ -3766,7 +3766,7 @@ if i32.const 0 i32.const 520 - i32.const 16 + i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable @@ -3781,7 +3781,7 @@ if i32.const 0 i32.const 520 - i32.const 17 + i32.const 15 i32.const 0 call $~lib/builtins/abort unreachable @@ -3802,7 +3802,7 @@ if i32.const 0 i32.const 520 - i32.const 20 + i32.const 18 i32.const 0 call $~lib/builtins/abort unreachable @@ -3823,7 +3823,7 @@ if i32.const 0 i32.const 520 - i32.const 21 + i32.const 19 i32.const 0 call $~lib/builtins/abort unreachable @@ -3834,7 +3834,7 @@ if i32.const 0 i32.const 520 - i32.const 25 + i32.const 23 i32.const 0 call $~lib/builtins/abort unreachable @@ -3849,7 +3849,7 @@ if i32.const 0 i32.const 520 - i32.const 27 + i32.const 25 i32.const 0 call $~lib/builtins/abort unreachable @@ -3862,7 +3862,7 @@ if i32.const 0 i32.const 520 - i32.const 28 + i32.const 26 i32.const 0 call $~lib/builtins/abort unreachable @@ -3875,7 +3875,7 @@ if i32.const 0 i32.const 520 - i32.const 29 + i32.const 27 i32.const 0 call $~lib/builtins/abort unreachable @@ -3888,7 +3888,7 @@ if i32.const 0 i32.const 520 - i32.const 30 + i32.const 28 i32.const 0 call $~lib/builtins/abort unreachable @@ -3901,7 +3901,7 @@ if i32.const 0 i32.const 520 - i32.const 31 + i32.const 29 i32.const 0 call $~lib/builtins/abort unreachable @@ -3914,7 +3914,7 @@ if i32.const 0 i32.const 520 - i32.const 32 + i32.const 30 i32.const 0 call $~lib/builtins/abort unreachable @@ -3927,7 +3927,7 @@ if i32.const 0 i32.const 520 - i32.const 33 + i32.const 31 i32.const 0 call $~lib/builtins/abort unreachable @@ -3942,7 +3942,7 @@ if i32.const 0 i32.const 520 - i32.const 34 + i32.const 32 i32.const 0 call $~lib/builtins/abort unreachable @@ -3955,7 +3955,7 @@ if i32.const 0 i32.const 520 - i32.const 35 + i32.const 33 i32.const 0 call $~lib/builtins/abort unreachable @@ -3968,7 +3968,7 @@ if i32.const 0 i32.const 520 - i32.const 36 + i32.const 34 i32.const 0 call $~lib/builtins/abort unreachable @@ -3981,7 +3981,7 @@ if i32.const 0 i32.const 520 - i32.const 37 + i32.const 35 i32.const 0 call $~lib/builtins/abort unreachable @@ -3994,7 +3994,7 @@ if i32.const 0 i32.const 520 - i32.const 38 + i32.const 36 i32.const 0 call $~lib/builtins/abort unreachable @@ -4007,7 +4007,7 @@ if i32.const 0 i32.const 520 - i32.const 39 + i32.const 37 i32.const 0 call $~lib/builtins/abort unreachable @@ -4020,7 +4020,7 @@ if i32.const 0 i32.const 520 - i32.const 40 + i32.const 38 i32.const 0 call $~lib/builtins/abort unreachable @@ -4033,7 +4033,7 @@ if i32.const 0 i32.const 520 - i32.const 41 + i32.const 39 i32.const 0 call $~lib/builtins/abort unreachable @@ -4046,7 +4046,7 @@ if i32.const 0 i32.const 520 - i32.const 42 + i32.const 40 i32.const 0 call $~lib/builtins/abort unreachable @@ -4059,7 +4059,7 @@ if i32.const 0 i32.const 520 - i32.const 43 + i32.const 41 i32.const 0 call $~lib/builtins/abort unreachable @@ -4072,7 +4072,7 @@ if i32.const 0 i32.const 520 - i32.const 44 + i32.const 42 i32.const 0 call $~lib/builtins/abort unreachable @@ -4085,7 +4085,7 @@ if i32.const 0 i32.const 520 - i32.const 45 + i32.const 43 i32.const 0 call $~lib/builtins/abort unreachable @@ -4098,7 +4098,7 @@ if i32.const 0 i32.const 520 - i32.const 46 + i32.const 44 i32.const 0 call $~lib/builtins/abort unreachable @@ -4109,7 +4109,7 @@ if i32.const 0 i32.const 520 - i32.const 48 + i32.const 46 i32.const 0 call $~lib/builtins/abort unreachable @@ -4124,7 +4124,7 @@ if i32.const 0 i32.const 520 - i32.const 50 + i32.const 48 i32.const 0 call $~lib/builtins/abort unreachable @@ -4137,7 +4137,7 @@ if i32.const 0 i32.const 520 - i32.const 51 + i32.const 49 i32.const 0 call $~lib/builtins/abort unreachable @@ -4150,7 +4150,7 @@ if i32.const 0 i32.const 520 - i32.const 52 + i32.const 50 i32.const 0 call $~lib/builtins/abort unreachable @@ -4163,7 +4163,7 @@ if i32.const 0 i32.const 520 - i32.const 53 + i32.const 51 i32.const 0 call $~lib/builtins/abort unreachable @@ -4176,7 +4176,7 @@ if i32.const 0 i32.const 520 - i32.const 54 + i32.const 52 i32.const 0 call $~lib/builtins/abort unreachable @@ -4189,7 +4189,7 @@ if i32.const 0 i32.const 520 - i32.const 55 + i32.const 53 i32.const 0 call $~lib/builtins/abort unreachable @@ -4202,7 +4202,7 @@ if i32.const 0 i32.const 520 - i32.const 56 + i32.const 54 i32.const 0 call $~lib/builtins/abort unreachable @@ -4217,7 +4217,7 @@ if i32.const 0 i32.const 520 - i32.const 57 + i32.const 55 i32.const 0 call $~lib/builtins/abort unreachable @@ -4230,7 +4230,7 @@ if i32.const 0 i32.const 520 - i32.const 58 + i32.const 56 i32.const 0 call $~lib/builtins/abort unreachable @@ -4243,7 +4243,7 @@ if i32.const 0 i32.const 520 - i32.const 59 + i32.const 57 i32.const 0 call $~lib/builtins/abort unreachable @@ -4256,7 +4256,7 @@ if i32.const 0 i32.const 520 - i32.const 60 + i32.const 58 i32.const 0 call $~lib/builtins/abort unreachable @@ -4269,7 +4269,7 @@ if i32.const 0 i32.const 520 - i32.const 61 + i32.const 59 i32.const 0 call $~lib/builtins/abort unreachable @@ -4282,7 +4282,7 @@ if i32.const 0 i32.const 520 - i32.const 62 + i32.const 60 i32.const 0 call $~lib/builtins/abort unreachable @@ -4295,7 +4295,7 @@ if i32.const 0 i32.const 520 - i32.const 63 + i32.const 61 i32.const 0 call $~lib/builtins/abort unreachable @@ -4308,7 +4308,7 @@ if i32.const 0 i32.const 520 - i32.const 64 + i32.const 62 i32.const 0 call $~lib/builtins/abort unreachable @@ -4321,7 +4321,7 @@ if i32.const 0 i32.const 520 - i32.const 65 + i32.const 63 i32.const 0 call $~lib/builtins/abort unreachable @@ -4334,7 +4334,7 @@ if i32.const 0 i32.const 520 - i32.const 66 + i32.const 64 i32.const 0 call $~lib/builtins/abort unreachable @@ -4347,7 +4347,7 @@ if i32.const 0 i32.const 520 - i32.const 67 + i32.const 65 i32.const 0 call $~lib/builtins/abort unreachable @@ -4360,7 +4360,7 @@ if i32.const 0 i32.const 520 - i32.const 68 + i32.const 66 i32.const 0 call $~lib/builtins/abort unreachable @@ -4373,7 +4373,7 @@ if i32.const 0 i32.const 520 - i32.const 69 + i32.const 67 i32.const 0 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/optional-typeparameters.ts b/tests/compiler/optional-typeparameters.ts index d4361fb1..49740500 100644 --- a/tests/compiler/optional-typeparameters.ts +++ b/tests/compiler/optional-typeparameters.ts @@ -21,7 +21,6 @@ class TestDerived { } } -import "allocator/arena"; var tConcrete = new TestConcrete(); tConcrete.test(1, 2); var tDerived = new TestDerived() diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index d44565d1..461dad0a 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1602,7 +1602,7 @@ if i32.const 0 i32.const 80 - i32.const 4 + i32.const 2 i32.const 0 call $~lib/builtins/abort unreachable @@ -1610,6 +1610,32 @@ i32.const 48 i32.const 0 call $~lib/array/Array#__get + if + i32.const 0 + i32.const 80 + i32.const 3 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 48 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 4 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 48 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne if i32.const 0 i32.const 80 @@ -1618,32 +1644,6 @@ call $~lib/builtins/abort unreachable end - i32.const 48 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 6 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 48 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 7 - i32.const 0 - call $~lib/builtins/abort - unreachable - end i32.const 284 i32.load i32.const 3 @@ -1651,7 +1651,7 @@ if i32.const 0 i32.const 80 - i32.const 10 + i32.const 8 i32.const 0 call $~lib/builtins/abort unreachable @@ -1659,6 +1659,32 @@ i32.const 272 i32.const 0 call $~lib/array/Array#__get + if + i32.const 0 + i32.const 80 + i32.const 9 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 272 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 10 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 272 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne if i32.const 0 i32.const 80 @@ -1667,38 +1693,12 @@ call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 12 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 13 - i32.const 0 - call $~lib/builtins/abort - unreachable - end global.get $std/array-literal/emptyArrayI32 i32.load offset=12 if i32.const 0 i32.const 80 - i32.const 16 + i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable @@ -1735,7 +1735,7 @@ if i32.const 0 i32.const 80 - i32.const 21 + i32.const 19 i32.const 0 call $~lib/builtins/abort unreachable @@ -1743,6 +1743,32 @@ global.get $std/array-literal/dynamicArrayI8 i32.const 0 call $~lib/array/Array#__get + if + i32.const 0 + i32.const 80 + i32.const 20 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 21 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne if i32.const 0 i32.const 80 @@ -1751,32 +1777,6 @@ call $~lib/builtins/abort unreachable end - global.get $std/array-literal/dynamicArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 23 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 24 - i32.const 0 - call $~lib/builtins/abort - unreachable - end i32.const 0 global.set $std/array-literal/i i32.const 2 @@ -1811,7 +1811,7 @@ if i32.const 0 i32.const 80 - i32.const 29 + i32.const 27 i32.const 0 call $~lib/builtins/abort unreachable @@ -1819,6 +1819,32 @@ global.get $std/array-literal/dynamicArrayI32 i32.const 0 call $~lib/array/Array#__get + if + i32.const 0 + i32.const 80 + i32.const 28 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 80 + i32.const 29 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.ne if i32.const 0 i32.const 80 @@ -1827,32 +1853,6 @@ call $~lib/builtins/abort unreachable end - global.get $std/array-literal/dynamicArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 31 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 80 - i32.const 32 - i32.const 0 - call $~lib/builtins/abort - unreachable - end i32.const 2 i32.const 6 call $~lib/rt/__allocArray @@ -1883,7 +1883,7 @@ if i32.const 0 i32.const 80 - i32.const 36 + i32.const 34 i32.const 0 call $~lib/builtins/abort unreachable @@ -1918,7 +1918,7 @@ if i32.const 0 i32.const 80 - i32.const 40 + i32.const 38 i32.const 0 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.ts b/tests/compiler/std/array-literal.ts index d081720a..f7ddcb3b 100644 --- a/tests/compiler/std/array-literal.ts +++ b/tests/compiler/std/array-literal.ts @@ -1,5 +1,3 @@ -import "collector/dummy"; - const staticArrayI8: i8[] = [0, 1, 2]; assert(staticArrayI8.length == 3); assert(staticArrayI8[0] == 0); diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 3164e32b..24ed71a0 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -3305,6 +3305,34 @@ i32.const 3 i32.eq i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 2 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 3 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz if i32.const 0 i32.const 80 @@ -3314,9 +3342,9 @@ unreachable end global.get $std/array-literal/staticArrayI8 - i32.const 0 + i32.const 2 call $~lib/array/Array#__get - i32.const 0 + i32.const 2 i32.eq i32.eqz if @@ -3327,39 +3355,39 @@ call $~lib/builtins/abort unreachable end - global.get $std/array-literal/staticArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 6 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI8 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 7 - i32.const 0 - call $~lib/builtins/abort - unreachable - end global.get $std/array-literal/staticArrayI32 call $~lib/array/Array#get:length i32.const 3 i32.eq i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 8 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 9 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz if i32.const 0 i32.const 80 @@ -3369,9 +3397,9 @@ unreachable end global.get $std/array-literal/staticArrayI32 - i32.const 0 + i32.const 2 call $~lib/array/Array#__get - i32.const 0 + i32.const 2 i32.eq i32.eqz if @@ -3382,34 +3410,6 @@ call $~lib/builtins/abort unreachable end - global.get $std/array-literal/staticArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 12 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI32 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 13 - i32.const 0 - call $~lib/builtins/abort - unreachable - end global.get $std/array-literal/emptyArrayI32 call $~lib/array/Array#get:length i32.const 0 @@ -3418,7 +3418,7 @@ if i32.const 0 i32.const 80 - i32.const 16 + i32.const 14 i32.const 0 call $~lib/builtins/abort unreachable @@ -3463,6 +3463,34 @@ i32.const 3 i32.eq i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 19 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 20 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI8 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz if i32.const 0 i32.const 80 @@ -3472,9 +3500,9 @@ unreachable end global.get $std/array-literal/dynamicArrayI8 - i32.const 0 + i32.const 2 call $~lib/array/Array#__get - i32.const 0 + i32.const 2 i32.eq i32.eqz if @@ -3485,34 +3513,6 @@ call $~lib/builtins/abort unreachable end - global.get $std/array-literal/dynamicArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 23 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI8 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 24 - i32.const 0 - call $~lib/builtins/abort - unreachable - end i32.const 0 global.set $std/array-literal/i block (result i32) @@ -3555,6 +3555,34 @@ i32.const 3 i32.eq i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 27 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 + i32.const 0 + call $~lib/array/Array#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 80 + i32.const 28 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/dynamicArrayI32 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.eq + i32.eqz if i32.const 0 i32.const 80 @@ -3564,9 +3592,9 @@ unreachable end global.get $std/array-literal/dynamicArrayI32 - i32.const 0 + i32.const 2 call $~lib/array/Array#__get - i32.const 0 + i32.const 2 i32.eq i32.eqz if @@ -3577,34 +3605,6 @@ call $~lib/builtins/abort unreachable end - global.get $std/array-literal/dynamicArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 31 - i32.const 0 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/dynamicArrayI32 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 32 - i32.const 0 - call $~lib/builtins/abort - unreachable - end block (result i32) i32.const 3 i32.const 2 @@ -3645,7 +3645,7 @@ if i32.const 0 i32.const 80 - i32.const 36 + i32.const 34 i32.const 0 call $~lib/builtins/abort unreachable @@ -3690,7 +3690,7 @@ if i32.const 0 i32.const 80 - i32.const 40 + i32.const 38 i32.const 0 call $~lib/builtins/abort unreachable