bug860838-1.js (579B)
1 var counter = 0; 2 function inc() { return counter++ } 3 var imp = { inc:inc }; 4 5 function FFI1(stdlib, foreign) { 6 "use asm"; 7 8 var inc = foreign.inc; 9 10 function g() { 11 return inc()|0 12 } 13 14 return g 15 } 16 17 function FFI2(stdlib, foreign) { 18 "use asm"; 19 20 var inc=foreign.inc; 21 22 function g() { 23 inc() 24 } 25 26 return g 27 } 28 29 30 var f = FFI2(this, imp); // produces AOT-compiled version 31 f() 32 assertEq(counter, 1); 33 34 var f = FFI1(this, imp); // produces AOT-compiled version 35 36 assertEq(f(), 1); 37 assertEq(counter, 2); 38 assertEq(f(), 2); 39 assertEq(counter, 3);