| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //-------------------------------------------------------------------------------------------------------
- // 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);
|