Index: test/mjsunit/asm/asm-validation.js |
diff --git a/test/mjsunit/asm/asm-validation.js b/test/mjsunit/asm/asm-validation.js |
index 5996b076772655cbbd8f36dbb7ae0f2f8152c807..eae282ca570ace79bcd2ca6fdd7cc0d68afbafeb 100644 |
--- a/test/mjsunit/asm/asm-validation.js |
+++ b/test/mjsunit/asm/asm-validation.js |
@@ -4,8 +4,8 @@ |
// Flags: --validate-asm --allow-natives-syntax |
-function IsAlwaysOpt(module) { |
- return %GetOptimizationStatus(module) === 3; |
+function assertValidAsm(func) { |
+ assertTrue(%IsAsmWasmCode(func)); |
} |
(function TestModuleArgs() { |
@@ -29,15 +29,16 @@ function IsAlwaysOpt(module) { |
for (var i = 0; i < modules.length; ++i) { |
print('Module' + (i + 1)); |
var module = modules[i]; |
- // TODO(bradnelson): Support modules without the stdlib. |
+ var m = module(); |
+ assertValidAsm(module); |
var m = module({}); |
- assertTrue(%IsAsmWasmCode(module) || IsAlwaysOpt(module)); |
+ assertValidAsm(module); |
var m = module({}, {}); |
- assertTrue(%IsAsmWasmCode(module) || IsAlwaysOpt(module)); |
+ assertValidAsm(module); |
var m = module({}, {}, heap); |
- assertTrue(%IsAsmWasmCode(module) || IsAlwaysOpt(module)); |
+ assertValidAsm(module); |
var m = module({}, {}, heap, {}); |
- assertTrue(%IsAsmWasmCode(module) || IsAlwaysOpt(module)); |
+ assertValidAsm(module); |
} |
})(); |
@@ -48,40 +49,40 @@ function IsAlwaysOpt(module) { |
return { foo: foo }; |
} |
var m = Module({}); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertTrue(%IsNotAsmWasmCode(Module)); |
assertEquals(123, m.foo()); |
})(); |
(function TestBadArgTypes() { |
function Module(a, b, c) { |
"use asm"; |
+ var NaN = a.NaN; |
return {}; |
} |
var m = Module(1, 2, 3); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertTrue(%IsNotAsmWasmCode(Module)); |
assertEquals({}, m); |
})(); |
(function TestBadArgTypesMismatch() { |
function Module(a, b, c) { |
"use asm"; |
+ var NaN = a.NaN; |
return {}; |
} |
var m = Module(1, 2); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertTrue(%IsNotAsmWasmCode(Module)); |
assertEquals({}, m); |
})(); |
(function TestModuleNoStdlib() { |
- // TODO(bradnelson): |
- // Support modules like this if they don't use the whole stdlib. |
function Module() { |
"use asm"; |
function foo() { return 123; } |
return { foo: foo }; |
} |
var m = Module({}); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertValidAsm(Module); |
assertEquals(123, m.foo()); |
})(); |
@@ -93,7 +94,7 @@ function IsAlwaysOpt(module) { |
} |
var heap = new ArrayBuffer(1024 * 1024); |
var m = Module({}, {}, heap); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertTrue(%IsNotAsmWasmCode(Module)); |
assertEquals(123, m.foo()); |
})(); |
@@ -103,9 +104,8 @@ function IsAlwaysOpt(module) { |
function foo() { return 123; } |
return { foo: foo }; |
} |
- // TODO(bradnelson): Support instantiation like this if stdlib is unused. |
var m = Module(); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertValidAsm(Module); |
assertEquals(123, m.foo()); |
})(); |
@@ -116,20 +116,21 @@ function IsAlwaysOpt(module) { |
return { foo: foo }; |
} |
var m = new Module({}, {}); |
- assertTrue(%IsAsmWasmCode(Module) || IsAlwaysOpt(Module)); |
+ assertValidAsm(Module); |
assertEquals(123, m.foo()); |
})(); |
(function TestMultipleFailures() { |
function Module(stdlib) { |
"use asm"; |
+ var NaN = stdlib.NaN; |
function foo() { return 123; } |
return { foo: foo }; |
} |
var m1 = Module(1, 2, 3); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertTrue(%IsNotAsmWasmCode(Module)); |
var m2 = Module(1, 2, 3); |
- assertFalse(%IsAsmWasmCode(Module)); |
+ assertTrue(%IsNotAsmWasmCode(Module)); |
assertEquals(123, m1.foo()); |
assertEquals(123, m2.foo()); |
})(); |
@@ -138,6 +139,7 @@ function IsAlwaysOpt(module) { |
function MkModule() { |
function Module(stdlib, ffi, heap) { |
"use asm"; |
+ var NaN = stdlib.NaN; |
function foo() { return 123; } |
return { foo: foo }; |
} |
@@ -147,9 +149,9 @@ function IsAlwaysOpt(module) { |
var Module2 = MkModule(); |
var heap = new ArrayBuffer(1024 * 1024); |
var m1 = Module1(1, 2, 3); |
- assertFalse(%IsAsmWasmCode(Module1)); |
+ assertTrue(%IsNotAsmWasmCode(Module1)); |
var m2 = Module2({}, {}, heap); |
- assertFalse(%IsAsmWasmCode(Module2)); |
+ assertTrue(%IsNotAsmWasmCode(Module2)); |
assertEquals(123, m1.foo()); |
assertEquals(123, m2.foo()); |
})(); |
@@ -158,6 +160,7 @@ function IsAlwaysOpt(module) { |
function MkModule() { |
function Module(stdlib, ffi, heap) { |
"use asm"; |
+ var NaN = stdlib.NaN; |
function foo() { return 123; } |
return { foo: foo }; |
} |
@@ -166,10 +169,10 @@ function IsAlwaysOpt(module) { |
var Module1 = MkModule(); |
var Module2 = MkModule(); |
var heap = new ArrayBuffer(1024 * 1024); |
- var m1 = Module1({}, {}, heap); |
- assertTrue(%IsAsmWasmCode(Module1) || IsAlwaysOpt(Module1)); |
+ var m1 = Module1({NaN: NaN}, {}, heap); |
+ assertValidAsm(Module1); |
var m2 = Module2(1, 2, 3); |
- assertFalse(%IsAsmWasmCode(Module2)); |
+ assertTrue(%IsNotAsmWasmCode(Module2)); |
assertEquals(123, m1.foo()); |
assertEquals(123, m2.foo()); |
})(); |
@@ -178,6 +181,7 @@ function IsAlwaysOpt(module) { |
function MkModule() { |
function Module(stdlib, ffi, heap) { |
"use asm"; |
+ var NaN = stdlib.NaN; |
function foo() { return 123; } |
return { foo: foo }; |
} |
@@ -186,12 +190,12 @@ function IsAlwaysOpt(module) { |
var Module1 = MkModule(); |
var Module2 = MkModule(); |
var heap = new ArrayBuffer(1024 * 1024); |
- var m1a = Module1({}, {}, heap); |
- assertTrue(%IsAsmWasmCode(Module1) || IsAlwaysOpt(Module1)); |
+ var m1a = Module1({NaN: NaN}, {}, heap); |
+ assertValidAsm(Module1); |
var m2 = Module2(1, 2, 3); |
- assertFalse(%IsAsmWasmCode(Module2)); |
- var m1b = Module1({}, {}, heap); |
- assertFalse(%IsAsmWasmCode(Module1)); |
+ assertTrue(%IsNotAsmWasmCode(Module2)); |
+ var m1b = Module1({NaN: NaN}, {}, heap); |
+ assertTrue(%IsNotAsmWasmCode(Module1)); |
assertEquals(123, m1a.foo()); |
assertEquals(123, m1b.foo()); |
assertEquals(123, m2.foo()); |
@@ -206,6 +210,6 @@ function IsAlwaysOpt(module) { |
var heap = new ArrayBuffer(1024 * 1024); |
var ModuleBound = Module.bind(this, {}, {}, heap); |
var m = ModuleBound(); |
- assertTrue(%IsAsmWasmCode(Module) || IsAlwaysOpt(Module)); |
+ assertValidAsm(Module); |
assertEquals(123, m.foo()); |
})(); |