testBug1125561.js (1020B)
1 load(libdir + "asm.js"); 2 3 setJitCompilerOption("ion.warmup.trigger", 0); 4 setJitCompilerOption("baseline.warmup.trigger", 0); 5 setJitCompilerOption("offthread-compilation.enable", 0); 6 7 function ffi1() { assertJitStackInvariants() } 8 function ffi2() { return { valueOf() { assertJitStackInvariants() } } } 9 10 // FFI with no coercion 11 var m = asmCompile('stdlib', 'foreign', ` 12 "use asm"; 13 var ffi = foreign.ffi; 14 function f() { ffi(); } 15 return f 16 `); 17 var f = asmLink(m, null, {ffi:ffi1}); 18 f(); 19 f(); 20 21 // FFI with ToInt32 coercion 22 var m = asmCompile('stdlib', 'foreign', ` 23 "use asm"; 24 var ffi = foreign.ffi; 25 function f() { ffi() | 0; } 26 return f 27 `); 28 var f = asmLink(m, null, {ffi:ffi1}); 29 f(); 30 f(); 31 var f = asmLink(m, null, {ffi:ffi2}); 32 f(); 33 f(); 34 35 // FFI with ToNumber coercion 36 var m = asmCompile('stdlib', 'foreign', ` 37 "use asm"; 38 var ffi = foreign.ffi; 39 function f() { +ffi(); } 40 return f 41 `); 42 var f = asmLink(m, this, {ffi:ffi1}); 43 f(); 44 f(); 45 var f = asmLink(m, this, {ffi:ffi2}); 46 f(); 47 f();