michael@0: function func1() { return "123" } michael@0: function func2(a,b,c,d,e) { return "123" } michael@0: var imp = { func1:func1, func2:func2 }; michael@0: michael@0: function FFI1(stdlib, foreign) { michael@0: "use asm"; michael@0: michael@0: var func1 = foreign.func1; michael@0: var func2 = foreign.func2; michael@0: michael@0: function g() { michael@0: return func1()|0 michael@0: } michael@0: michael@0: function h() { michael@0: return func2()|0 michael@0: } michael@0: michael@0: return {g:g, h:h}; michael@0: } michael@0: michael@0: var f = FFI1(this, imp); // produces AOT-compiled version michael@0: michael@0: assertEq(f.g(), 123); michael@0: assertEq(f.g(), 123); michael@0: michael@0: assertEq(f.h(), 123); michael@0: assertEq(f.h(), 123);