blob: 742327c126fcfeb458bcc42d4d98c17cff4d9cab [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
function foo(stdlib, imports, heap)
{
"use asm";
var fr = stdlib.Math.fround;
var a = 3;
var impa = +imports.c;
var I32 =stdlib.Int32Array;
var HEAP32 = new stdlib.Int32Array(heap);
const b = 3.5;
var inf = stdlib.Infinity;
var I8=stdlib.Int8Array;
var len = stdlib.byteLength;
var ln2 = stdlib.Math.LN2;
var i8= new I8(heap);
var c = fr(4);
var sn = stdlib.Math.sin;
var impFunc = imports.bar;
var impb = imports.d|0;
var U8 =stdlib.Uint8Array;
var HEAPU8 =new stdlib.Uint8Array(heap);
function ch(b2)
{
if(len(b2) & 0xffffff || len(b2) <= 0xffffff || len(b2) > 0x80000000)
return false;
HEAP32=new I32(b2);
i8=new I8(b2);
HEAPU8=new U8(b2);
heap=b2;
return true
}
function f(param)
{
param = param|0;
var e = 0.;
a = (a+param)|0;
a = (impb+a)|0;
impa = +(impa+b);
c = fr(c+c);
impFunc(+c);
e = +sn(+impa);
a = (a + (HEAPU8[a|0]|0))|0;
return +e;
}
function g(b)
{
b = b|0;
impa = +table1[b&3](b);
i8[a|0] = impb|0;
impa = +(impa + ln2);
return +impa;
}
var table1 = [f, g, f, g];
return {fExp:f, gExp:g, ch:ch};
}
this['byteLength'] = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);
var buffer = new ArrayBuffer(1<<24);
var module1 = foo(this, {bar: function f(c){print("import func, val " + c)}, c: 4.5, d: 12}, buffer);
var module2 = foo(this, {bar: function f(c){print("import2 func, val " + c)}, c: 5.5, d: 13}, new ArrayBuffer(1<<25));
print(Math.round(module1.gExp(2)));
print(Math.round(module1.fExp(1)));
function testFunc(m)
{
print("testFunc");
print(Math.round(m.fExp(1)));
print(Math.round(m.gExp(2)));
print(m.ch(new ArrayBuffer(1<<25)));
print(Math.round(m.gExp(2)));
}
testFunc(module1);
var module3 = foo(this, {bar: function f(c){print("import3 func, val " + c)}, c: 6.5, d: 14}, new ArrayBuffer(1<<25));
testFunc(module2);
testFunc(module3);
testFunc(module1);
testFunc(module2);
testFunc(module3);