function func1() { return "123" }
function func2(a,b,c,d,e) { return "123" }
var imp = { func1:func1, func2:func2 };

function FFI1(stdlib, foreign) {
    "use asm";

    var func1 = foreign.func1;
    var func2 = foreign.func2;

    function g() {
      return func1()|0
    }

    function h() {
      return func2()|0
    }

    return {g:g, h:h};
}

var f = FFI1(this, imp);     // produces AOT-compiled version

assertEq(f.g(), 123);
assertEq(f.g(), 123);

assertEq(f.h(), 123);
assertEq(f.h(), 123);