From 394f9d803f9dba4301c2567c9c3c20c803278fa5 Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 10:53:21 -0700 Subject: [PATCH 01/11] bad [ci skip] --- auto_update_tests.py | 10 - src/wasm2js.h | 350 ++---------- test/wasm2js.asserts.js | 6 +- test/wasm2js.traps.js | 6 +- test/wasm2js/call_indirect.2asm.js | 242 ++++---- test/wasm2js/conversions-modified.2asm.js | 16 +- test/wasm2js/emscripten.2asm.js | 2 +- test/wasm2js/endianness.2asm.js | 66 +-- test/wasm2js/f64.2asm.js | 18 +- test/wasm2js/float_literals-modified.2asm.js | 180 ++---- test/wasm2js/float_misc.2asm.js | 18 +- test/wasm2js/func-ptr-offset.2asm.js | 9 +- test/wasm2js/func.2asm.js | 102 ++-- test/wasm2js/func_ptrs.2asm.js | 27 +- test/wasm2js/grow-memory-tricky.2asm.js | 10 +- test/wasm2js/i64.2asm.js | 50 +- test/wasm2js/int_exprs.2asm.js | 550 +++++-------------- test/wasm2js/left-to-right.2asm.js | 250 +++------ test/wasm2js/loop.2asm.js | 3 +- test/wasm2js/reinterpret.2asm.js | 14 +- test/wasm2js/select.2asm.js | 4 +- test/wasm2js/traps.2asm.js | 100 +--- test/wasm2js/unaligned.2asm.js | 46 +- 23 files changed, 600 insertions(+), 1479 deletions(-) diff --git a/auto_update_tests.py b/auto_update_tests.py index cbb1246a5e1..05d9c1bd029 100755 --- a/auto_update_tests.py +++ b/auto_update_tests.py @@ -330,17 +330,7 @@ def update_reduce_tests(): def main(): - update_asm_js_tests() - lld.update_lld_tests() - update_wasm_opt_tests() - update_bin_fmt_tests() - update_example_tests() - update_wasm_dis_tests() - update_ctor_eval_tests() wasm2js.update_wasm2js_tests() - update_metadce_tests() - update_reduce_tests() - update_binaryen_js_tests() print '\n[ success! ]' diff --git a/src/wasm2js.h b/src/wasm2js.h index faad6c3fac9..d3d61822e6e 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -98,42 +98,11 @@ static uint64_t constOffset(const T& segment) { // is tricky because wasm has statements == expressions, or in // other words, things like `break` and `if` can show up // in places where JS can't handle them, like inside an -// a loop's condition check. +// a loop's condition check. For that reason we use flat IR here. +// We do optimize it later, to allow some nesting, but we avoid +// non-JS-compatible nesting like block return values control +// flow in an if condition, etc. // -// We therefore need the ability to lower an expression into -// a block of statements, and we keep statementizing until we -// reach a context in which we can emit those statments. This -// requires that we create temp variables to store values -// that would otherwise flow directly into their targets if -// we were an expression (e.g. if a loop's condition check -// is a bunch of statements, we execute those statements, -// then use the computed value in the loop's condition; -// we might also be able to avoid an assign to a temp var -// at the end of those statements, and put just that -// value in the loop's condition). -// -// It is possible to do this in a single pass, if we just -// allocate temp vars freely. However, pathological cases -// can easily show bad behavior here, with many unnecessary -// temp vars. We could rely on optimization passes like -// Emscripten's eliminate/registerize pair, but we want -// wasm2js to be fairly fast to run, as it might run on -// the client. -// -// The approach taken here therefore performs 2 passes on -// each function. First, it finds which expression will need to -// be statementized. It also sees which labels can receive a break -// with a value. Given that information, in the second pass we can -// allocate // temp vars in an efficient manner, as we know when we -// need them and when their use is finished. They are allocated -// using an RAII class, so that they are automatically freed -// when the scope ends. This means that a node cannot allocate -// its own temp var; instead, the parent - which knows the -// child will return a value in a temp var - allocates it, -// and tells the child what temp var to emit to. The child -// can then pass forward that temp var to its children, -// optimizing away unnecessary forwarding. - class Wasm2JSBuilder { MixedArena allocator; @@ -151,11 +120,6 @@ class Wasm2JSBuilder { Ref processWasm(Module* wasm, Name funcName = ASM_FUNC); Ref processFunction(Module* wasm, Function* func); - // The first pass on an expression: scan it to see whether it will - // need to be statementized, and note spooky returns of values at - // a distance (aka break with a value). - void scanFunctionBody(Expression* curr); - // The second pass on an expression: process it fully, generating // JS // @param result Whether the context we are in receives a value, @@ -244,14 +208,6 @@ class Wasm2JSBuilder { return ret; } - void setStatement(Expression* curr) { - willBeStatement.insert(curr); - } - - bool isStatement(Expression* curr) { - return curr && willBeStatement.find(curr) != willBeStatement.end(); - } - size_t getTableSize() { return tableSize; } @@ -264,9 +220,6 @@ class Wasm2JSBuilder { // Which are currently free to use std::vector> frees; // type => list of free names - // Expressions that will be a statement. - std::set willBeStatement; - // Mangled names cache by interned names. // Utilizes the usually reused underlying cstring's pointer as the key. std::unordered_map mangledNames[(int) NameScope::Max]; @@ -692,31 +645,10 @@ Ref Wasm2JSBuilder::processFunction(Module* m, Function* func) { size_t theVarIndex = ret[3]->size(); ret[3]->push_back(theVar); // body - auto appendFinalReturn = [&] (Ref retVal) { - flattenAppend( - ret, - ValueBuilder::makeReturn( - makeAsmCoercion(retVal, wasmToAsmType(func->result)) - ) - ); - }; - scanFunctionBody(func->body); bool endsInReturn = expressionEndsInReturn(func->body); if (endsInReturn) { // return already taken care of flattenAppend(ret, processFunctionBody(m, func, NO_RESULT)); - } else if (isStatement(func->body)) { - // store result in variable then return it - IString result = - func->result != none ? getTemp(func->result, func) : NO_RESULT; - flattenAppend(ret, processFunctionBody(m, func, result)); - if (func->result != none) { - appendFinalReturn(ValueBuilder::makeName(result)); - freeTemp(func->result, result); - } - } else if (func->result != none) { - // whole thing is an expression, just return body - appendFinalReturn(processFunctionBody(m, func, EXPRESSION_RESULT)); } else { // func has no return flattenAppend(ret, processFunctionBody(m, func, NO_RESULT)); @@ -736,95 +668,13 @@ Ref Wasm2JSBuilder::processFunction(Module* m, Function* func) { assert(frees[i32].size() == temps[i32]); // all temp vars should be free at the end assert(frees[f32].size() == temps[f32]); // all temp vars should be free at the end assert(frees[f64].size() == temps[f64]); // all temp vars should be free at the end - // cleanups - willBeStatement.clear(); return ret; } -void Wasm2JSBuilder::scanFunctionBody(Expression* curr) { - struct ExpressionScanner : public PostWalker { - Wasm2JSBuilder* parent; - - ExpressionScanner(Wasm2JSBuilder* parent) : parent(parent) {} - - // Visitors - - void visitBlock(Block* curr) { - parent->setStatement(curr); - } - void visitIf(If* curr) { - parent->setStatement(curr); - } - void visitLoop(Loop* curr) { - parent->setStatement(curr); - } - void visitBreak(Break* curr) { - parent->setStatement(curr); - } - void visitSwitch(Switch* curr) { - parent->setStatement(curr); - } - void visitCall(Call* curr) { - for (auto item : curr->operands) { - if (parent->isStatement(item)) { - parent->setStatement(curr); - break; - } - } - } - void visitCallIndirect(CallIndirect* curr) { - // TODO: this is a pessimization that probably wants to get tweaked in - // the future. If none of the arguments have any side effects then we - // should be able to safely have tighter codegen. - parent->setStatement(curr); - } - void visitSetLocal(SetLocal* curr) { - if (parent->isStatement(curr->value)) { - parent->setStatement(curr); - } - } - void visitLoad(Load* curr) { - if (parent->isStatement(curr->ptr)) { - parent->setStatement(curr); - } - } - void visitStore(Store* curr) { - parent->setStatement(curr); - } - void visitUnary(Unary* curr) { - if (parent->isStatement(curr->value)) { - parent->setStatement(curr); - } - } - void visitBinary(Binary* curr) { - if (parent->isStatement(curr->left) || parent->isStatement(curr->right)) { - parent->setStatement(curr); - } - } - void visitSelect(Select* curr) { - if (parent->isStatement(curr->ifTrue) || parent->isStatement(curr->ifFalse) || parent->isStatement(curr->condition)) { - parent->setStatement(curr); - } - } - void visitReturn(Return* curr) { - parent->setStatement(curr); - } - void visitHost(Host* curr) { - for (auto item : curr->operands) { - if (parent->isStatement(item)) { - parent->setStatement(curr); - break; - } - } - } - }; - ExpressionScanner(this).walk(curr); -} - Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString result) { struct ExpressionProcessor : public Visitor { Wasm2JSBuilder* parent; - IString result; + IString result; // TODO: remove Function* func; Module* module; MixedArena allocator; @@ -877,22 +727,11 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul return visit(curr, temp.temp); } - // this result is for an asm expression slot, but it might be a statement - Ref visitForExpression(Expression* curr, Type type, IString& tempName) { - if (isStatement(curr)) { - ScopedTemp temp(type, parent, func); - tempName = temp.temp; - return visit(curr, temp); - } else { - return visit(curr, EXPRESSION_RESULT); - } - } - Ref visitAndAssign(Expression* curr, IString result) { Ref ret = visit(curr, result); // if it's not already a statement, then it's an expression, and we need to assign it // (if it is a statement, it already assigns to the result var) - if (!isStatement(curr) && result != NO_RESULT) { + if (0 /* FIXME waka 1? */ && result != NO_RESULT) { ret = ValueBuilder::makeStatement( ValueBuilder::makeBinary(ValueBuilder::makeName(result), SET, ret)); } @@ -903,10 +742,6 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul return visitAndAssign(curr, temp.getName()); } - bool isStatement(Expression* curr) { - return parent->isStatement(curr); - } - // Expressions with control flow turn into a block, which we must // then handle, even if we are an expression. bool isBlock(Ref ast) { @@ -952,7 +787,7 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul Ref visitIf(If* curr) { IString temp; - Ref condition = visitForExpression(curr->condition, i32, temp); + Ref condition = visit(curr->condition, EXPRESSION_RESULT); Ref ifTrue = ValueBuilder::makeStatement(visitAndAssign(curr->ifTrue, result)); Ref ifFalse; if (curr->ifFalse) { @@ -1008,14 +843,7 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul Ref visitSwitch(Switch* curr) { assert(!curr->value); Ref ret = ValueBuilder::makeBlock(); - Ref condition; - if (isStatement(curr->condition)) { - ScopedTemp temp(i32, parent, func); - flattenAppend(ret[2], visit(curr->condition, temp)); - condition = temp.getAstName(); - } else { - condition = visit(curr->condition, EXPRESSION_RESULT); - } + Ref condition = visit(curr->condition, EXPRESSION_RESULT); Ref theSwitch = ValueBuilder::makeSwitch(makeAsmCoercion(condition, ASM_INT)); ret[1]->push_back(theSwitch); @@ -1028,6 +856,16 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul return ret; } + Ref visitCall(Call* curr) { + Ref theCall = ValueBuilder::makeCall(fromName(curr->target, NameScope::Top)); + for (auto operand : curr->operands) { + theCall[2]->push_back( + makeAsmCoercion(visit(operand, EXPRESSION_RESULT), + wasmToAsmType(operand->type))); + } + return makeAsmCoercion(theCall, wasmToAsmType(curr->type)); + } + Ref makeStatementizedCall(ExpressionList& operands, Ref ret, std::function genTheCall, @@ -1058,34 +896,10 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul return ret; } - Ref visitGenericCall(Expression* curr, Name target, - ExpressionList& operands) { - Ref theCall = ValueBuilder::makeCall(fromName(target, NameScope::Top)); - if (!isStatement(curr)) { - // none of our operands is a statement; go right ahead and create a - // simple expression - for (auto operand : operands) { - theCall[2]->push_back( - makeAsmCoercion(visit(operand, EXPRESSION_RESULT), - wasmToAsmType(operand->type))); - } - return makeAsmCoercion(theCall, wasmToAsmType(curr->type)); - } - // we must statementize them all - return makeStatementizedCall(operands, ValueBuilder::makeBlock(), - [&]() { return theCall; }, - result, curr->type); - } - - Ref visitCall(Call* curr) { - return visitGenericCall(curr, curr->target, curr->operands); - } - Ref visitCallIndirect(CallIndirect* curr) { // TODO: the codegen here is a pessimization of what the ideal codegen // looks like. Eventually if necessary this should be tightened up in the // case that the argument expression doesn't have any side effects. - assert(isStatement(curr)); Ref ret = ValueBuilder::makeBlock(); ScopedTemp idx(i32, parent, func); return makeStatementizedCall( @@ -1103,27 +917,12 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul ); } + // TODO: remove Ref makeSetVar(Expression* curr, Expression* value, Name name, NameScope scope) { - if (!isStatement(curr)) { - return ValueBuilder::makeBinary( - ValueBuilder::makeName(fromName(name, scope)), SET, - visit(value, EXPRESSION_RESULT) - ); - } - // if result was provided, our child can just assign there. - // Otherwise, allocate a temp for it to assign to. - ScopedTemp temp(value->type, parent, func, result); - Ref ret = blockify(visit(value, temp)); - // the output was assigned to result, so we can just assign it to our target - ret[1]->push_back( - ValueBuilder::makeStatement( - ValueBuilder::makeBinary( - ValueBuilder::makeName(fromName(name, scope)), SET, - temp.getAstName() - ) - ) + return ValueBuilder::makeBinary( + ValueBuilder::makeName(fromName(name, scope)), SET, + visit(value, EXPRESSION_RESULT) ); - return ret; } Ref visitGetLocal(GetLocal* curr) { @@ -1150,16 +949,6 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitLoad(Load* curr) { - if (isStatement(curr)) { - ScopedTemp temp(i32, parent, func); - GetLocal fakeLocal(allocator); - fakeLocal.index = func->getLocalIndex(temp.getName()); - Load fakeLoad = *curr; - fakeLoad.ptr = &fakeLocal; - Ref ret = blockify(visitAndAssign(curr->ptr, temp)); - flattenAppend(ret, visitAndAssign(&fakeLoad, result)); - return ret; - } if (curr->align != 0 && curr->align < curr->bytes) { // set the pointer to a local ScopedTemp temp(i32, parent, func); @@ -1244,23 +1033,8 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitStore(Store* curr) { - if (isStatement(curr)) { - ScopedTemp tempPtr(i32, parent, func); - ScopedTemp tempValue(curr->valueType, parent, func); - GetLocal fakeLocalPtr(allocator); - fakeLocalPtr.index = func->getLocalIndex(tempPtr.getName()); - fakeLocalPtr.type = curr->ptr->type; - GetLocal fakeLocalValue(allocator); - fakeLocalValue.index = func->getLocalIndex(tempValue.getName()); - fakeLocalValue.type = curr->value->type; - Store fakeStore = *curr; - fakeStore.ptr = &fakeLocalPtr; - fakeStore.value = &fakeLocalValue; - Ref ret = blockify(visitAndAssign(curr->ptr, tempPtr)); - flattenAppend(ret, visitAndAssign(curr->value, tempValue)); - flattenAppend(ret, visitAndAssign(&fakeStore, result)); - return ret; - } + // FIXME if memory growth, store ptr cannot contain a function call + // (select and call_indirect too?) if (curr->align != 0 && curr->align < curr->bytes) { // set the pointer to a local ScopedTemp temp(i32, parent, func); @@ -1350,7 +1124,6 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitDrop(Drop* curr) { - assert(!isStatement(curr)); return visitAndAssign(curr->value, result); } @@ -1389,16 +1162,6 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitUnary(Unary* curr) { - if (isStatement(curr)) { - ScopedTemp temp(curr->value->type, parent, func); - GetLocal fakeLocal(allocator); - fakeLocal.index = func->getLocalIndex(temp.getName()); - Unary fakeUnary = *curr; - fakeUnary.value = &fakeLocal; - Ref ret = blockify(visitAndAssign(curr->value, temp)); - flattenAppend(ret, visitAndAssign(&fakeUnary, result)); - return ret; - } // normal unary switch (curr->type) { case i32: { @@ -1580,21 +1343,6 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitBinary(Binary* curr) { - if (isStatement(curr)) { - ScopedTemp tempLeft(curr->left->type, parent, func); - GetLocal fakeLocalLeft(allocator); - fakeLocalLeft.index = func->getLocalIndex(tempLeft.getName()); - ScopedTemp tempRight(curr->right->type, parent, func); - GetLocal fakeLocalRight(allocator); - fakeLocalRight.index = func->getLocalIndex(tempRight.getName()); - Binary fakeBinary = *curr; - fakeBinary.left = &fakeLocalLeft; - fakeBinary.right = &fakeLocalRight; - Ref ret = blockify(visitAndAssign(curr->left, tempLeft)); - flattenAppend(ret, visitAndAssign(curr->right, tempRight)); - flattenAppend(ret, visitAndAssign(&fakeBinary, result)); - return ret; - } // normal binary Ref left = visit(curr->left, EXPRESSION_RESULT); Ref right = visit(curr->right, EXPRESSION_RESULT); @@ -1765,26 +1513,6 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitSelect(Select* curr) { - if (isStatement(curr)) { - ScopedTemp tempIfTrue(curr->ifTrue->type, parent, func); - GetLocal fakeLocalIfTrue(allocator); - fakeLocalIfTrue.index = func->getLocalIndex(tempIfTrue.getName()); - ScopedTemp tempIfFalse(curr->ifFalse->type, parent, func); - GetLocal fakeLocalIfFalse(allocator); - fakeLocalIfFalse.index = func->getLocalIndex(tempIfFalse.getName()); - ScopedTemp tempCondition(i32, parent, func); - GetLocal fakeCondition(allocator); - fakeCondition.index = func->getLocalIndex(tempCondition.getName()); - Select fakeSelect = *curr; - fakeSelect.ifTrue = &fakeLocalIfTrue; - fakeSelect.ifFalse = &fakeLocalIfFalse; - fakeSelect.condition = &fakeCondition; - Ref ret = blockify(visitAndAssign(curr->ifTrue, tempIfTrue)); - flattenAppend(ret, visitAndAssign(curr->ifFalse, tempIfFalse)); - flattenAppend(ret, visitAndAssign(curr->condition, tempCondition)); - flattenAppend(ret, visitAndAssign(&fakeSelect, result)); - return ret; - } // normal select ScopedTemp tempIfTrue(curr->type, parent, func), tempIfFalse(curr->type, parent, func), @@ -1810,26 +1538,14 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitReturn(Return* curr) { - if (curr->value == nullptr) { + if (!curr->value) { return ValueBuilder::makeReturn(Ref()); } - if (isStatement(curr->value)) { - ScopedTemp temp(curr->value->type, parent, func); - Ref ret = ValueBuilder::makeBlock(); - flattenAppend(ret, visitAndAssign(curr->value, temp)); - Ref coerced = makeAsmCoercion( - temp.getAstName(), - wasmToAsmType(curr->value->type) - ); - flattenAppend(ret, ValueBuilder::makeReturn(coerced)); - return ret; - } else { - Ref val = makeAsmCoercion( - visit(curr->value, NO_RESULT), - wasmToAsmType(curr->value->type) - ); - return ValueBuilder::makeReturn(val); - } + Ref val = makeAsmCoercion( + visit(curr->value, NO_RESULT), + wasmToAsmType(curr->value->type) + ); + return ValueBuilder::makeReturn(val); } Ref visitHost(Host* curr) { @@ -1844,11 +1560,7 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } else { return ValueBuilder::makeCall(ABORT_FUNC); } - if (isStatement(curr)) { - return ValueBuilder::makeBinary(ValueBuilder::makeName(result), SET, call); - } else { - return call; - } + return call; } Ref visitNop(Nop* curr) { diff --git a/test/wasm2js.asserts.js b/test/wasm2js.asserts.js index 3ab4b1d081e..82151762cb5 100644 --- a/test/wasm2js.asserts.js +++ b/test/wasm2js.asserts.js @@ -79,15 +79,13 @@ function asmFunc0(global, env, buffer) { const memasmFunc0 = new ArrayBuffer(65536); const retasmFunc0 = asmFunc0({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc0); function check1() { - var wasm2js_i32$0 = 0; retasmFunc0.empty(); - wasm2js_i32$0 = 1; - return wasm2js_i32$0 | 0; + 1; } if (!check1()) throw 'assertion failed: ( assert_return ( call empty ) )'; function check2() { - return (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0) | 0; + (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0); } if (!check2()) throw 'assertion failed: ( assert_return ( call add ( i32.const 1 ) ( i32.const 1 ) ) ( i32.const 2 ) )'; diff --git a/test/wasm2js.traps.js b/test/wasm2js.traps.js index 65659966d08..f63b35b4fff 100644 --- a/test/wasm2js.traps.js +++ b/test/wasm2js.traps.js @@ -79,15 +79,13 @@ function asmFunc0(global, env, buffer) { const memasmFunc0 = new ArrayBuffer(65536); const retasmFunc0 = asmFunc0({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc0); function check1() { - var wasm2js_i32$0 = 0; retasmFunc0.empty(); - wasm2js_i32$0 = 1; - return wasm2js_i32$0 | 0; + 1; } if (!check1()) throw 'assertion failed: ( assert_return ( call empty ) )'; function check2() { - return (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0) | 0; + (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0); } if (!check2()) throw 'assertion failed: ( assert_return ( call add ( i32.const 1 ) ( i32.const 1 ) ) ( i32.const 2 ) )'; diff --git a/test/wasm2js/call_indirect.2asm.js b/test/wasm2js/call_indirect.2asm.js index 070ae836a3c..ecf161dbb35 100644 --- a/test/wasm2js/call_indirect.2asm.js +++ b/test/wasm2js/call_indirect.2asm.js @@ -119,139 +119,153 @@ function asmFunc(global, env, buffer) { } function $16() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$1 = 0; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1]() | 0; - return wasm2js_i32$0 | 0; + var wasm2js_i32$0 = 0; + return { + 0; + FUNCTION_TABLE[wasm2js_i32$0]() | 0; + } | 0; } function $17() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$1 = 1; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1]() | 0; - i64toi32_i32$0 = wasm2js_i32$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0; + i64toi32_i32$0 = { + 1; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0]() | 0; + }; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; } function $18() { - var wasm2js_f32$0 = Math_fround(0), wasm2js_i32$0 = 0; - wasm2js_i32$0 = 2; - wasm2js_f32$0 = Math_fround(FUNCTION_TABLE[wasm2js_i32$0]()); - return Math_fround(wasm2js_f32$0); + var wasm2js_i32$0 = 0; + return Math_fround({ + 2; + Math_fround(FUNCTION_TABLE[wasm2js_i32$0]()); + }); } function $19() { - var wasm2js_f64$0 = 0.0, wasm2js_i32$0 = 0; - wasm2js_i32$0 = 3; - wasm2js_f64$0 = +FUNCTION_TABLE[wasm2js_i32$0](); - return +wasm2js_f64$0; + var wasm2js_i32$0 = 0; + return +{ + 3; + +FUNCTION_TABLE[wasm2js_i32$0](); + }; } function $20() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = 0; - wasm2js_i32$2 = 100; - wasm2js_i32$3 = i64toi32_i32$0; - wasm2js_i32$1 = 5; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; - i64toi32_i32$0 = wasm2js_i32$0; + i64toi32_i32$0 = { + 100; + i64toi32_i32$0; + 5; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + }; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; } function $21() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; - wasm2js_i32$2 = 32; - wasm2js_i32$1 = 4; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0) | 0; - return wasm2js_i32$0 | 0; + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + return { + 32; + 4; + FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; + } | 0; } function $22() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = 0; - wasm2js_i32$2 = 64; - wasm2js_i32$3 = i64toi32_i32$0; - wasm2js_i32$1 = 5; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; - i64toi32_i32$0 = wasm2js_i32$0; + i64toi32_i32$0 = { + 64; + i64toi32_i32$0; + 5; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + }; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; } function $23() { - var wasm2js_f32$0 = Math_fround(0), wasm2js_i32$0 = 0, wasm2js_f32$1 = Math_fround(0); - wasm2js_f32$1 = Math_fround(1.3200000524520874); - wasm2js_i32$0 = 6; - wasm2js_f32$0 = Math_fround(FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$1))); - return Math_fround(wasm2js_f32$0); + var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0); + return Math_fround({ + Math_fround(1.3200000524520874); + 6; + Math_fround(FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0))); + }); } function $24() { - var wasm2js_f64$0 = 0.0, wasm2js_i32$0 = 0, wasm2js_f64$1 = 0.0; - wasm2js_f64$1 = 1.64; - wasm2js_i32$0 = 7; - wasm2js_f64$0 = +FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$1); - return +wasm2js_f64$0; + var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; + return +{ + 1.64; + 7; + +FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0); + }; } function $25() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_i32$2 = 0; - wasm2js_f32$0 = Math_fround(32.099998474121094); - wasm2js_i32$2 = 32; - wasm2js_i32$1 = 8; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](Math_fround(wasm2js_f32$0), wasm2js_i32$2 | 0) | 0; - return wasm2js_i32$0 | 0; + var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_i32$1 = 0; + return { + Math_fround(32.099998474121094); + 32; + 8; + FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), wasm2js_i32$1 | 0) | 0; + } | 0; } function $26() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0, wasm2js_i32$4 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; i64toi32_i32$0 = 0; - wasm2js_i32$2 = 32; - wasm2js_i32$3 = 64; - wasm2js_i32$4 = i64toi32_i32$0; - wasm2js_i32$1 = 9; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0) | 0; - i64toi32_i32$0 = wasm2js_i32$0; + i64toi32_i32$0 = { + 32; + 64; + i64toi32_i32$0; + 9; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; + }; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; } function $27() { - var wasm2js_f32$0 = Math_fround(0), wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_f32$1 = Math_fround(0); - wasm2js_f64$0 = 64.0; - wasm2js_f32$1 = Math_fround(32.0); - wasm2js_i32$0 = 10; - wasm2js_f32$0 = Math_fround(FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, Math_fround(wasm2js_f32$1))); - return Math_fround(wasm2js_f32$0); + var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_f32$0 = Math_fround(0); + return Math_fround({ + 64.0; + Math_fround(32.0); + 10; + Math_fround(FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, Math_fround(wasm2js_f32$0))); + }); } function $28() { - var wasm2js_f64$0 = 0.0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_f64$1 = 0.0; - wasm2js_i32$1 = 64; - wasm2js_i32$2 = 0; - wasm2js_f64$1 = 64.1; - wasm2js_i32$0 = 11; - wasm2js_f64$0 = +FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1); - return +wasm2js_f64$0; + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_f64$0 = 0.0; + return +{ + 64; + 0; + 64.1; + 11; + +FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$0); + }; } function $29($0, $1, $1$hi) { $0 = $0 | 0; $1 = $1 | 0; $1$hi = $1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = $1$hi; - wasm2js_i32$2 = $1; - wasm2js_i32$3 = i64toi32_i32$0; - wasm2js_i32$1 = $0; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; - i64toi32_i32$0 = wasm2js_i32$0; + i64toi32_i32$0 = { + $1; + i64toi32_i32$0; + $0; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + }; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -259,13 +273,14 @@ function asmFunc(global, env, buffer) { function $30($0) { $0 = $0 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = 0; - wasm2js_i32$2 = 9; - wasm2js_i32$3 = i64toi32_i32$0; - wasm2js_i32$1 = $0; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; - i64toi32_i32$0 = wasm2js_i32$0; + i64toi32_i32$0 = { + 9; + i64toi32_i32$0; + $0; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + }; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -274,7 +289,7 @@ function asmFunc(global, env, buffer) { function fac($0, $0$hi) { $0 = $0 | 0; $0$hi = $0$hi | 0; - var i64toi32_i32$5 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, $8 = 0, $8$hi = 0, i64toi32_i32$3 = 0, $6 = 0, $6$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$5 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, $8 = 0, $8$hi = 0, i64toi32_i32$3 = 0, $6 = 0, $6$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = $0$hi; if (($0 | i64toi32_i32$0 | 0 | 0) == (0 | 0)) { { @@ -289,11 +304,12 @@ function asmFunc(global, env, buffer) { i64toi32_i32$3 = 1; i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) + 0 | 0; i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - wasm2js_i32$2 = i64toi32_i32$2 - i64toi32_i32$3 | 0; - wasm2js_i32$3 = i64toi32_i32$5; - wasm2js_i32$1 = 12; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; - i64toi32_i32$5 = wasm2js_i32$0; + i64toi32_i32$5 = { + i64toi32_i32$2 - i64toi32_i32$3 | 0; + i64toi32_i32$5; + 12; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + }; i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; $6 = i64toi32_i32$5; $6$hi = i64toi32_i32$2; @@ -314,7 +330,7 @@ function asmFunc(global, env, buffer) { function fib($0, $0$hi) { $0 = $0 | 0; $0$hi = $0$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$6 = 0, $10 = 0, $10$hi = 0, $5 = 0, $5$hi = 0, $8 = 0, $8$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$6 = 0, $10 = 0, $10$hi = 0, $5 = 0, $5$hi = 0, $8 = 0, $8$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = $0$hi; i64toi32_i32$2 = $0; i64toi32_i32$1 = 0; @@ -335,11 +351,12 @@ function asmFunc(global, env, buffer) { i64toi32_i32$6 = i64toi32_i32$3 >>> 0 < i64toi32_i32$1 >>> 0; i64toi32_i32$5 = i64toi32_i32$6 + i64toi32_i32$0 | 0; i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; - wasm2js_i32$2 = i64toi32_i32$4; - wasm2js_i32$3 = i64toi32_i32$5; - wasm2js_i32$1 = 13; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; - i64toi32_i32$5 = wasm2js_i32$0; + i64toi32_i32$5 = { + i64toi32_i32$4; + i64toi32_i32$5; + 13; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + }; i64toi32_i32$3 = i64toi32_i32$HIGH_BITS; $5 = i64toi32_i32$5; $5$hi = i64toi32_i32$3; @@ -352,11 +369,12 @@ function asmFunc(global, env, buffer) { i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$1 >>> 0; i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$5 | 0; i64toi32_i32$4 = i64toi32_i32$3 - i64toi32_i32$4 | 0; - wasm2js_i32$3 = i64toi32_i32$0; - wasm2js_i32$2 = i64toi32_i32$4; - wasm2js_i32$1 = 13; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$3 | 0, wasm2js_i32$2 | 0) | 0; - i64toi32_i32$4 = wasm2js_i32$0; + i64toi32_i32$4 = { + i64toi32_i32$0; + i64toi32_i32$4; + 13; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$2 | 0, wasm2js_i32$1 | 0) | 0; + }; i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; $8 = i64toi32_i32$4; $8$hi = i64toi32_i32$2; @@ -381,15 +399,14 @@ function asmFunc(global, env, buffer) { function even($0) { $0 = $0 | 0; - var $6 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; + var $6 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; if (($0 | 0) == (0 | 0)) { $6 = 44 } else { - { - wasm2js_i32$2 = $0 - 1 | 0; - wasm2js_i32$1 = 15; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0) | 0; - $6 = wasm2js_i32$0; + $6 = { + $0 - 1 | 0; + 15; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; } } return $6 | 0; @@ -397,15 +414,14 @@ function asmFunc(global, env, buffer) { function odd($0) { $0 = $0 | 0; - var $6 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; + var $6 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; if (($0 | 0) == (0 | 0)) { $6 = 99 } else { - { - wasm2js_i32$2 = $0 - 1 | 0; - wasm2js_i32$1 = 14; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1](wasm2js_i32$2 | 0) | 0; - $6 = wasm2js_i32$0; + $6 = { + $0 - 1 | 0; + 14; + wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; } } return $6 | 0; @@ -413,19 +429,19 @@ function asmFunc(global, env, buffer) { function runaway() { var wasm2js_i32$0 = 0; - wasm2js_i32$0 = 16; + 16; FUNCTION_TABLE[wasm2js_i32$0](); } function mutual_runaway1() { var wasm2js_i32$0 = 0; - wasm2js_i32$0 = 18; + 18; FUNCTION_TABLE[wasm2js_i32$0](); } function mutual_runaway2() { var wasm2js_i32$0 = 0; - wasm2js_i32$0 = 17; + 17; FUNCTION_TABLE[wasm2js_i32$0](); } diff --git a/test/wasm2js/conversions-modified.2asm.js b/test/wasm2js/conversions-modified.2asm.js index 5b5605d5a53..9fcbafeaad0 100644 --- a/test/wasm2js/conversions-modified.2asm.js +++ b/test/wasm2js/conversions-modified.2asm.js @@ -227,14 +227,10 @@ function asmFunc(global, env, buffer) { function $22(x, x$hi) { x = x | 0; x$hi = x$hi | 0; - var i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + var i64toi32_i32$0 = 0; i64toi32_i32$0 = x$hi; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = x; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$0; - HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; + HEAP32[__tempMemory__ >> 2] = x; + HEAP32[(__tempMemory__ + 4 | 0) >> 2] = i64toi32_i32$0; return +(+HEAPF64[__tempMemory__ >> 3]); } @@ -245,10 +241,8 @@ function asmFunc(global, env, buffer) { function $24(x) { x = +x; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = x; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = x; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; diff --git a/test/wasm2js/emscripten.2asm.js b/test/wasm2js/emscripten.2asm.js index b0509ebb67c..8e935bc5f58 100644 --- a/test/wasm2js/emscripten.2asm.js +++ b/test/wasm2js/emscripten.2asm.js @@ -30,7 +30,7 @@ function asmFunc(global, env, buffer) { var wasm2js_i32$0 = 0; syscall$6(1 | 0, 2 | 0) | 0; syscall$54(3 | 0, 4 | 0) | 0; - wasm2js_i32$0 = HEAP32[(0 + 1030 | 0) >> 2] | 0; + HEAP32[(0 + 1030 | 0) >> 2] | 0; FUNCTION_TABLE[wasm2js_i32$0](); } diff --git a/test/wasm2js/endianness.2asm.js b/test/wasm2js/endianness.2asm.js index d25be132963..51bf2ccadac 100644 --- a/test/wasm2js/endianness.2asm.js +++ b/test/wasm2js/endianness.2asm.js @@ -29,13 +29,8 @@ function asmFunc(global, env, buffer) { function i16_store_little(address, value) { address = address | 0; value = value | 0; - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = address; - wasm2js_i32$1 = value; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; - wasm2js_i32$0 = address + 1 | 0; - wasm2js_i32$1 = value >>> 8 | 0; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[address >> 0] = value; + HEAP8[(address + 1 | 0) >> 0] = value >>> 8 | 0; } function i32_store_little(address, value) { @@ -201,10 +196,8 @@ function asmFunc(global, env, buffer) { function $15(value) { value = +value; - var i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = value; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0; + HEAPF64[__tempMemory__ >> 3] = value; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64_store_little(0 | 0, HEAP32[__tempMemory__ >> 2] | 0 | 0, i64toi32_i32$0 | 0); return +(+HEAPF64[0 >> 3]); @@ -212,30 +205,22 @@ function asmFunc(global, env, buffer) { function $16(value) { value = value | 0; - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = value; - HEAP16[wasm2js_i32$0 >> 1] = wasm2js_i32$1; + HEAP16[0 >> 1] = value; return i16_load_little(0 | 0) | 0 | 0; } function $17(value) { value = value | 0; - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = value; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; + HEAP32[0 >> 2] = value; return i32_load_little(0 | 0) | 0 | 0; } function $18(value, value$hi) { value = value | 0; value$hi = value$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; i64toi32_i32$0 = value$hi; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = value; - HEAP16[wasm2js_i32$0 >> 1] = wasm2js_i32$1; + HEAP16[0 >> 1] = value; i64toi32_i32$0 = 0; i64toi32_i32$1 = i16_load_little(0 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -245,11 +230,9 @@ function asmFunc(global, env, buffer) { function $19(value, value$hi) { value = value | 0; value$hi = value$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; i64toi32_i32$0 = value$hi; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = value; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; + HEAP32[0 >> 2] = value; i64toi32_i32$0 = 0; i64toi32_i32$1 = i32_load_little(0 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -259,15 +242,11 @@ function asmFunc(global, env, buffer) { function $20(value, value$hi) { value = value | 0; value$hi = value$hi | 0; - var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; i64toi32_i32$0 = value$hi; i64toi32_i32$1 = 0; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = value; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$0; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = value; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$0), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$0 = i64_load_little(0 | 0) | 0; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -276,27 +255,18 @@ function asmFunc(global, env, buffer) { function $21(value) { value = Math_fround(value); - var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0); - wasm2js_i32$0 = 0; - wasm2js_f32$0 = value; - HEAPF32[wasm2js_i32$0 >> 2] = wasm2js_f32$0; + HEAPF32[0 >> 2] = value; return Math_fround((HEAP32[0] = i32_load_little(0 | 0) | 0, HEAPF32[0])); } function $22(value) { value = +value; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = 0; - wasm2js_f64$0 = value; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[0 >> 3] = value; i64toi32_i32$0 = i64_load_little(0 | 0) | 0; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$1; - HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; + HEAP32[__tempMemory__ >> 2] = i64toi32_i32$0; + HEAP32[(__tempMemory__ + 4 | 0) >> 2] = i64toi32_i32$1; return +(+HEAPF64[__tempMemory__ >> 3]); } diff --git a/test/wasm2js/f64.2asm.js b/test/wasm2js/f64.2asm.js index 6eeeafaf505..5ea48f48363 100644 --- a/test/wasm2js/f64.2asm.js +++ b/test/wasm2js/f64.2asm.js @@ -97,10 +97,8 @@ function asmFunc(global, env, buffer) { function $13(x, y) { x = +x; y = +y; - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $4_1 = 0, $4$hi = 0, $7_1 = 0, $7$hi = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = x; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $4_1 = 0, $4$hi = 0, $7_1 = 0, $7$hi = 0; + HEAPF64[__tempMemory__ >> 3] = x; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$2 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$1 = 2147483647; @@ -108,9 +106,7 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0; $4_1 = i64toi32_i32$2 & i64toi32_i32$3 | 0; $4$hi = i64toi32_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = y; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + HEAPF64[__tempMemory__ >> 3] = y; i64toi32_i32$1 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$0 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$2 = 2147483648; @@ -123,12 +119,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$0 = $7$hi; i64toi32_i32$3 = $7_1; i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$1 | i64toi32_i32$3 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$0; - HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; + HEAP32[__tempMemory__ >> 2] = i64toi32_i32$1 | i64toi32_i32$3 | 0; + HEAP32[(__tempMemory__ + 4 | 0) >> 2] = i64toi32_i32$0; return +(+HEAPF64[__tempMemory__ >> 3]); } diff --git a/test/wasm2js/float_literals-modified.2asm.js b/test/wasm2js/float_literals-modified.2asm.js index 9dc248093f9..11cd2b49cef 100644 --- a/test/wasm2js/float_literals-modified.2asm.js +++ b/test/wasm2js/float_literals-modified.2asm.js @@ -147,10 +147,8 @@ function asmFunc(global, env, buffer) { } function $30() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -158,10 +156,8 @@ function asmFunc(global, env, buffer) { } function $31() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -169,10 +165,8 @@ function asmFunc(global, env, buffer) { } function $32() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = -nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = -nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -180,10 +174,8 @@ function asmFunc(global, env, buffer) { } function $33() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -191,10 +183,8 @@ function asmFunc(global, env, buffer) { } function $34() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -202,10 +192,8 @@ function asmFunc(global, env, buffer) { } function $35() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = -nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = -nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -213,10 +201,8 @@ function asmFunc(global, env, buffer) { } function $36() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -224,10 +210,8 @@ function asmFunc(global, env, buffer) { } function $37() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -235,10 +219,8 @@ function asmFunc(global, env, buffer) { } function $38() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = -nan; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = -nan; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -246,10 +228,8 @@ function asmFunc(global, env, buffer) { } function $39() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = infinity; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = infinity; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -257,10 +237,8 @@ function asmFunc(global, env, buffer) { } function $40() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = infinity; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = infinity; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -268,10 +246,8 @@ function asmFunc(global, env, buffer) { } function $41() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = -infinity; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = -infinity; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -279,10 +255,8 @@ function asmFunc(global, env, buffer) { } function $42() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 0.0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 0.0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -290,10 +264,8 @@ function asmFunc(global, env, buffer) { } function $43() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 0.0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 0.0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -301,10 +273,8 @@ function asmFunc(global, env, buffer) { } function $44() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = -0.0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = -0.0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -312,10 +282,8 @@ function asmFunc(global, env, buffer) { } function $45() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 6.283185307179586; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 6.283185307179586; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -323,10 +291,8 @@ function asmFunc(global, env, buffer) { } function $46() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 5.0e-324; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 5.0e-324; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -334,10 +300,8 @@ function asmFunc(global, env, buffer) { } function $47() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 2.2250738585072014e-308; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 2.2250738585072014e-308; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -345,10 +309,8 @@ function asmFunc(global, env, buffer) { } function $48() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 2.225073858507201e-308; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 2.225073858507201e-308; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -356,10 +318,8 @@ function asmFunc(global, env, buffer) { } function $49() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 1797693134862315708145274.0e284; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 1797693134862315708145274.0e284; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -367,10 +327,8 @@ function asmFunc(global, env, buffer) { } function $50() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 1267650600228229401496703.0e6; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 1267650600228229401496703.0e6; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -378,10 +336,8 @@ function asmFunc(global, env, buffer) { } function $51() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 0.0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 0.0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -389,10 +345,8 @@ function asmFunc(global, env, buffer) { } function $52() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 0.0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 0.0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -400,10 +354,8 @@ function asmFunc(global, env, buffer) { } function $53() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = -0.0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = -0.0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -411,10 +363,8 @@ function asmFunc(global, env, buffer) { } function $54() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 6.283185307179586; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 6.283185307179586; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -422,10 +372,8 @@ function asmFunc(global, env, buffer) { } function $55() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 5.0e-324; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 5.0e-324; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -433,10 +381,8 @@ function asmFunc(global, env, buffer) { } function $56() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 2.2250738585072014e-308; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 2.2250738585072014e-308; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -444,10 +390,8 @@ function asmFunc(global, env, buffer) { } function $57() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 2.225073858507201e-308; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 2.225073858507201e-308; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -455,10 +399,8 @@ function asmFunc(global, env, buffer) { } function $58() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 1797693134862315708145274.0e284; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 1797693134862315708145274.0e284; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; @@ -466,10 +408,8 @@ function asmFunc(global, env, buffer) { } function $59() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 1.e+100; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 1.e+100; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; diff --git a/test/wasm2js/float_misc.2asm.js b/test/wasm2js/float_misc.2asm.js index ad9c34c3990..e573712d470 100644 --- a/test/wasm2js/float_misc.2asm.js +++ b/test/wasm2js/float_misc.2asm.js @@ -142,10 +142,8 @@ function asmFunc(global, env, buffer) { function $21(x, y) { x = +x; y = +y; - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $4_1 = 0, $4$hi = 0, $7_1 = 0, $7$hi = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = x; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $4_1 = 0, $4$hi = 0, $7_1 = 0, $7$hi = 0; + HEAPF64[__tempMemory__ >> 3] = x; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$2 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$1 = 2147483647; @@ -153,9 +151,7 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0; $4_1 = i64toi32_i32$2 & i64toi32_i32$3 | 0; $4$hi = i64toi32_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = y; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + HEAPF64[__tempMemory__ >> 3] = y; i64toi32_i32$1 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$0 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$2 = 2147483648; @@ -168,12 +164,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$0 = $7$hi; i64toi32_i32$3 = $7_1; i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$1 | i64toi32_i32$3 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$0; - HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; + HEAP32[__tempMemory__ >> 2] = i64toi32_i32$1 | i64toi32_i32$3 | 0; + HEAP32[(__tempMemory__ + 4 | 0) >> 2] = i64toi32_i32$0; return +(+HEAPF64[__tempMemory__ >> 3]); } diff --git a/test/wasm2js/func-ptr-offset.2asm.js b/test/wasm2js/func-ptr-offset.2asm.js index 3e1865dae70..7de522728b5 100644 --- a/test/wasm2js/func-ptr-offset.2asm.js +++ b/test/wasm2js/func-ptr-offset.2asm.js @@ -35,10 +35,11 @@ function asmFunc(global, env, buffer) { function $3($0) { $0 = $0 | 0; - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$1 = $0; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1]() | 0; - return wasm2js_i32$0 | 0; + var wasm2js_i32$0 = 0; + return { + $0; + FUNCTION_TABLE[wasm2js_i32$0]() | 0; + } | 0; } var FUNCTION_TABLE = [null, t1, t2, t3]; diff --git a/test/wasm2js/func.2asm.js b/test/wasm2js/func.2asm.js index 81a4682bcbb..7d25f591d68 100644 --- a/test/wasm2js/func.2asm.js +++ b/test/wasm2js/func.2asm.js @@ -396,9 +396,9 @@ function asmFunc(global, env, buffer) { function $76() { var wasm2js_i32$0 = 0; - wasm2js_i32$0 = 1; + 1; FUNCTION_TABLE[wasm2js_i32$0](); - wasm2js_i32$0 = 4; + 4; FUNCTION_TABLE[wasm2js_i32$0](); } @@ -407,73 +407,73 @@ function asmFunc(global, env, buffer) { i64toi32_i32$0 = 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = 0; - wasm2js_f64$0 = 0.0; - wasm2js_i32$1 = 0; - wasm2js_i32$2 = i64toi32_i32$0; - wasm2js_f64$1 = 0.0; - wasm2js_i32$3 = 0; - wasm2js_i32$4 = i64toi32_i32$1; - wasm2js_f64$2 = 0.0; - wasm2js_i32$5 = 0; - wasm2js_i32$6 = i64toi32_i32$2; - wasm2js_f32$0 = Math_fround(0.0); - wasm2js_i32$7 = 0; - wasm2js_i32$0 = 0; + 0.0; + 0; + i64toi32_i32$0; + 0.0; + 0; + i64toi32_i32$1; + 0.0; + 0; + i64toi32_i32$2; + Math_fround(0.0); + 0; + 0; FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); i64toi32_i32$2 = 0; i64toi32_i32$1 = 0; i64toi32_i32$0 = 0; - wasm2js_f64$2 = 0.0; - wasm2js_i32$7 = 0; - wasm2js_i32$6 = i64toi32_i32$2; - wasm2js_f64$1 = 0.0; - wasm2js_i32$5 = 0; - wasm2js_i32$4 = i64toi32_i32$1; - wasm2js_f64$0 = 0.0; - wasm2js_i32$3 = 0; - wasm2js_i32$2 = i64toi32_i32$0; - wasm2js_f32$0 = Math_fround(0.0); - wasm2js_i32$1 = 0; - wasm2js_i32$0 = 2; + 0.0; + 0; + i64toi32_i32$2; + 0.0; + 0; + i64toi32_i32$1; + 0.0; + 0; + i64toi32_i32$0; + Math_fround(0.0); + 0; + 2; FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$2, wasm2js_i32$7 | 0, wasm2js_i32$6 | 0, +wasm2js_f64$1, wasm2js_i32$5 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$0, wasm2js_i32$3 | 0, wasm2js_i32$2 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$1 | 0); i64toi32_i32$0 = 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = 0; - wasm2js_f64$0 = 0.0; - wasm2js_i32$1 = 0; - wasm2js_i32$2 = i64toi32_i32$0; - wasm2js_f64$1 = 0.0; - wasm2js_i32$3 = 0; - wasm2js_i32$4 = i64toi32_i32$1; - wasm2js_f64$2 = 0.0; - wasm2js_i32$5 = 0; - wasm2js_i32$6 = i64toi32_i32$2; - wasm2js_f32$0 = Math_fround(0.0); - wasm2js_i32$7 = 0; - wasm2js_i32$0 = 3; + 0.0; + 0; + i64toi32_i32$0; + 0.0; + 0; + i64toi32_i32$1; + 0.0; + 0; + i64toi32_i32$2; + Math_fround(0.0); + 0; + 3; FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); } function $78() { var wasm2js_i32$0 = 0; - wasm2js_i32$0 = 1; + 1; FUNCTION_TABLE[wasm2js_i32$0](); } function $79() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_f64$1 = 0.0, wasm2js_i32$3 = 0, wasm2js_i32$4 = 0, wasm2js_f64$2 = 0.0, wasm2js_i32$5 = 0, wasm2js_i32$6 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_i32$7 = 0; - wasm2js_f64$0 = 0.0; - wasm2js_i32$1 = 0; - wasm2js_i32$2 = 0; - wasm2js_f64$1 = 0.0; - wasm2js_i32$3 = 0; - wasm2js_i32$4 = 0; - wasm2js_f64$2 = 0.0; - wasm2js_i32$5 = 0; - wasm2js_i32$6 = 0; - wasm2js_f32$0 = Math_fround(0.0); - wasm2js_i32$7 = 0; - wasm2js_i32$0 = 0; + 0.0; + 0; + 0; + 0.0; + 0; + 0; + 0.0; + 0; + 0; + Math_fround(0.0); + 0; + 0; FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); } diff --git a/test/wasm2js/func_ptrs.2asm.js b/test/wasm2js/func_ptrs.2asm.js index 9798a0622d1..2951ba6418b 100644 --- a/test/wasm2js/func_ptrs.2asm.js +++ b/test/wasm2js/func_ptrs.2asm.js @@ -102,18 +102,20 @@ function asmFunc(global, env, buffer) { function $5(i) { i = i | 0; - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$1 = i; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1]() | 0; - return wasm2js_i32$0 | 0; + var wasm2js_i32$0 = 0; + return { + i; + FUNCTION_TABLE[wasm2js_i32$0]() | 0; + } | 0; } function $6(i) { i = i | 0; - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$1 = i; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1]() | 0; - return wasm2js_i32$0 | 0; + var wasm2js_i32$0 = 0; + return { + i; + FUNCTION_TABLE[wasm2js_i32$0]() | 0; + } | 0; } var FUNCTION_TABLE = [t1, t2, t3, u1, u2, t1, t3]; @@ -160,10 +162,11 @@ function asmFunc(global, env, buffer) { function $2(i) { i = i | 0; - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$1 = i; - wasm2js_i32$0 = FUNCTION_TABLE[wasm2js_i32$1]() | 0; - return wasm2js_i32$0 | 0; + var wasm2js_i32$0 = 0; + return { + i; + FUNCTION_TABLE[wasm2js_i32$0]() | 0; + } | 0; } var FUNCTION_TABLE = [t1, t2]; diff --git a/test/wasm2js/grow-memory-tricky.2asm.js b/test/wasm2js/grow-memory-tricky.2asm.js index 1775db6d466..34fa6ddb664 100644 --- a/test/wasm2js/grow-memory-tricky.2asm.js +++ b/test/wasm2js/grow-memory-tricky.2asm.js @@ -22,18 +22,12 @@ function asmFunc(global, env, buffer) { var nan = global.NaN; var infinity = global.Infinity; function $0() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = __wasm_grow_memory(1 | 0); - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; + HEAP32[0 >> 2] = __wasm_grow_memory(1 | 0); return HEAP32[0 >> 2] | 0 | 0; } function $1() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = grow() | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; + HEAP32[0 >> 2] = grow() | 0; return HEAP32[0 >> 2] | 0 | 0; } diff --git a/test/wasm2js/i64.2asm.js b/test/wasm2js/i64.2asm.js index bafb0da5bf8..2ea192156e5 100644 --- a/test/wasm2js/i64.2asm.js +++ b/test/wasm2js/i64.2asm.js @@ -3012,7 +3012,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -3089,12 +3089,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3160,12 +3156,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3203,12 +3195,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3223,12 +3211,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -3450,12 +3434,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -3485,12 +3465,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; diff --git a/test/wasm2js/int_exprs.2asm.js b/test/wasm2js/int_exprs.2asm.js index 5d62f463790..26f02c16580 100644 --- a/test/wasm2js/int_exprs.2asm.js +++ b/test/wasm2js/int_exprs.2asm.js @@ -1325,7 +1325,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -1402,12 +1402,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1473,12 +1469,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1516,12 +1508,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1536,12 +1524,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -1763,12 +1747,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -1798,12 +1778,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -2274,7 +2250,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -2351,12 +2327,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2422,12 +2394,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2465,12 +2433,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2485,12 +2449,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -2712,12 +2672,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -2747,12 +2703,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -3079,7 +3031,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -3156,12 +3108,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3227,12 +3175,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3270,12 +3214,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3290,12 +3230,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -3517,12 +3453,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -3552,12 +3484,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -3824,7 +3752,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -3901,12 +3829,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3972,12 +3896,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4015,12 +3935,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4035,12 +3951,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -4262,12 +4174,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -4297,12 +4205,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -4650,7 +4554,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -4727,12 +4631,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4798,12 +4698,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4841,12 +4737,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4861,12 +4753,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -5088,12 +4976,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -5123,12 +5007,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -5493,7 +5373,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -5570,12 +5450,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5641,12 +5517,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5684,12 +5556,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5704,12 +5572,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -5931,12 +5795,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -5966,12 +5826,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -6336,7 +6192,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -6413,12 +6269,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -6484,12 +6336,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -6527,12 +6375,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -6547,12 +6391,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -6774,12 +6614,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -6809,12 +6645,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -7179,7 +7011,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -7256,12 +7088,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -7327,12 +7155,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -7370,12 +7194,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -7390,12 +7210,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -7617,12 +7433,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -7652,12 +7464,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -7998,7 +7806,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -8075,12 +7883,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8146,12 +7950,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8189,12 +7989,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8209,12 +8005,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -8436,12 +8228,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -8471,12 +8259,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -8820,7 +8604,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -8897,12 +8681,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8968,12 +8748,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9011,12 +8787,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9031,12 +8803,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -9258,12 +9026,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -9293,12 +9057,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -9642,7 +9402,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -9719,12 +9479,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9790,12 +9546,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9833,12 +9585,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9853,12 +9601,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -10080,12 +9824,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -10115,12 +9855,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; diff --git a/test/wasm2js/left-to-right.2asm.js b/test/wasm2js/left-to-right.2asm.js index 78e903396c5..a4a5717498c 100644 --- a/test/wasm2js/left-to-right.2asm.js +++ b/test/wasm2js/left-to-right.2asm.js @@ -77,26 +77,14 @@ function asmFunc(global, env, buffer) { } function reset() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; + HEAP32[8 >> 2] = 0; } function bump() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - wasm2js_i32$0 = 11; - wasm2js_i32$1 = HEAPU8[10 >> 0] | 0; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; - wasm2js_i32$0 = 10; - wasm2js_i32$1 = HEAPU8[9 >> 0] | 0; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; - wasm2js_i32$0 = 9; - wasm2js_i32$1 = HEAPU8[8 >> 0] | 0; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 4294967293; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[11 >> 0] = HEAPU8[10 >> 0] | 0; + HEAP8[10 >> 0] = HEAPU8[9 >> 0] | 0; + HEAP8[9 >> 0] = HEAPU8[8 >> 0] | 0; + HEAP8[8 >> 0] = 4294967293; } function get() { @@ -104,150 +92,104 @@ function asmFunc(global, env, buffer) { } function i32_left() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 1; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 1; return 0 | 0; } function i32_right() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 2; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 2; return 1 | 0; } function i32_callee() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 4; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 4; return 0 | 0; } function i32_bool() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 5; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 5; return 0 | 0; } function i64_left() { - var i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + var i64toi32_i32$0 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 1; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 1; i64toi32_i32$0 = 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; return 0 | 0; } function i64_right() { - var i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + var i64toi32_i32$0 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 2; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 2; i64toi32_i32$0 = 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$0; return 1 | 0; } function i64_callee() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 4; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 4; return 2 | 0; } function i64_bool() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 5; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 5; return 0 | 0; } function f32_left() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 1; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 1; return Math_fround(Math_fround(0.0)); } function f32_right() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 2; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 2; return Math_fround(Math_fround(1.0)); } function f32_callee() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 4; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 4; return 4 | 0; } function f32_bool() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 5; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 5; return 0 | 0; } function f64_left() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 1; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 1; return +(0.0); } function f64_right() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 2; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 2; return +(1.0); } function f64_callee() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 4; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 4; return 6 | 0; } function f64_bool() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; bump(); - wasm2js_i32$0 = 8; - wasm2js_i32$1 = 5; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[8 >> 0] = 5; return 0 | 0; } @@ -412,29 +354,20 @@ function asmFunc(global, env, buffer) { } function $58() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_i32$1 = i32_right() | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; + HEAP32[(i32_left() | 0) >> 2] = i32_right() | 0; return get() | 0 | 0; } function $59() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_i32$1 = i32_right() | 0; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[(i32_left() | 0) >> 0] = i32_right() | 0; return get() | 0 | 0; } function $60() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_i32$1 = i32_right() | 0; - HEAP16[wasm2js_i32$0 >> 1] = wasm2js_i32$1; + HEAP16[(i32_left() | 0) >> 1] = i32_right() | 0; return get() | 0 | 0; } @@ -447,9 +380,9 @@ function asmFunc(global, env, buffer) { function $62() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; reset(); - wasm2js_i32$1 = i32_left() | 0; - wasm2js_i32$2 = i32_right() | 0; - wasm2js_i32$0 = i32_callee() | 0; + i32_left() | 0; + i32_right() | 0; + i32_callee() | 0; FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; return get() | 0 | 0; } @@ -979,46 +912,33 @@ function asmFunc(global, env, buffer) { } function $87() { - var i64toi32_i32$0 = 0, $0 = 0, i64toi32_i32$1 = 0, $1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$0 = 0, $0 = 0, i64toi32_i32$1 = 0, $1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); $0 = i32_left() | 0; i64toi32_i32$0 = i64_right() | 0; i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; $1 = i64toi32_i32$0; i64toi32_i32$0 = $0; - wasm2js_i32$0 = i64toi32_i32$0; - wasm2js_i32$1 = $1; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$0; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$0 >> 2] = $1; + (wasm2js_i32$0 = i64toi32_i32$0, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; return get() | 0 | 0; } function $88() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_i32$1 = i64_right() | 0; - HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; + HEAP8[(i32_left() | 0) >> 0] = i64_right() | 0; return get() | 0 | 0; } function $89() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_i32$1 = i64_right() | 0; - HEAP16[wasm2js_i32$0 >> 1] = wasm2js_i32$1; + HEAP16[(i32_left() | 0) >> 1] = i64_right() | 0; return get() | 0 | 0; } function $90() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_i32$1 = i64_right() | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; + HEAP32[(i32_left() | 0) >> 2] = i64_right() | 0; return get() | 0 | 0; } @@ -1052,11 +972,11 @@ function asmFunc(global, env, buffer) { $1$hi = i64toi32_i32$0; i64toi32_i32$0 = $0$hi; i64toi32_i32$1 = $1$hi; - wasm2js_i32$1 = $0; - wasm2js_i32$2 = i64toi32_i32$0; - wasm2js_i32$3 = $1; - wasm2js_i32$4 = i64toi32_i32$1; - wasm2js_i32$0 = i64_callee() | 0; + $0; + i64toi32_i32$0; + $1; + i64toi32_i32$1; + i64_callee() | 0; FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0) | 0; return get() | 0 | 0; } @@ -1157,11 +1077,8 @@ function asmFunc(global, env, buffer) { } function $107() { - var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0); reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_f32$0 = Math_fround(f32_right()); - HEAPF32[wasm2js_i32$0 >> 2] = wasm2js_f32$0; + HEAPF32[(i32_left() | 0) >> 2] = Math_fround(f32_right()); return get() | 0 | 0; } @@ -1174,9 +1091,9 @@ function asmFunc(global, env, buffer) { function $109() { var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_f32$1 = Math_fround(0); reset(); - wasm2js_f32$0 = Math_fround(f32_left()); - wasm2js_f32$1 = Math_fround(f32_right()); - wasm2js_i32$0 = f32_callee() | 0; + Math_fround(f32_left()); + Math_fround(f32_right()); + f32_callee() | 0; FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), Math_fround(wasm2js_f32$1)) | 0; return get() | 0 | 0; } @@ -1213,12 +1130,10 @@ function asmFunc(global, env, buffer) { } function $115() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $0 = 0.0, $2 = 0, $2$hi = 0, $3 = 0.0, $5 = 0, $5$hi = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0; + var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $0 = 0.0, $2 = 0, $2$hi = 0, $3 = 0.0, $5 = 0, $5$hi = 0; reset(); $0 = +f64_left(); - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = $0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + HEAPF64[__tempMemory__ >> 3] = $0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$2 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$1 = 2147483647; @@ -1227,9 +1142,7 @@ function asmFunc(global, env, buffer) { $2 = i64toi32_i32$2 & i64toi32_i32$3 | 0; $2$hi = i64toi32_i32$1; $3 = +f64_right(); - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = $3; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + HEAPF64[__tempMemory__ >> 3] = $3; i64toi32_i32$1 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$0 = HEAP32[__tempMemory__ >> 2] | 0; i64toi32_i32$2 = 2147483648; @@ -1242,12 +1155,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$0 = $5$hi; i64toi32_i32$3 = $5; i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$1 | i64toi32_i32$3 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$0; - HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; + HEAP32[__tempMemory__ >> 2] = i64toi32_i32$1 | i64toi32_i32$3 | 0; + HEAP32[(__tempMemory__ + 4 | 0) >> 2] = i64toi32_i32$0; +HEAPF64[__tempMemory__ >> 3]; return get() | 0 | 0; } @@ -1301,11 +1210,8 @@ function asmFunc(global, env, buffer) { } function $124() { - var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; reset(); - wasm2js_i32$0 = i32_left() | 0; - wasm2js_f64$0 = +f64_right(); - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + HEAPF64[(i32_left() | 0) >> 3] = +f64_right(); return get() | 0 | 0; } @@ -1318,9 +1224,9 @@ function asmFunc(global, env, buffer) { function $126() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_f64$1 = 0.0; reset(); - wasm2js_f64$0 = +f64_left(); - wasm2js_f64$1 = +f64_right(); - wasm2js_i32$0 = f64_callee() | 0; + +f64_left(); + +f64_right(); + f64_callee() | 0; FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, +wasm2js_f64$1) | 0; return get() | 0 | 0; } @@ -1680,7 +1586,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, var$8$hi = 0, $48_1 = 0, $49_1 = 0, $50_1 = 0, $51_1 = 0, var$7$hi = 0, $52_1 = 0, $60_1 = 0, $65$hi = 0, $67_1 = 0, $67$hi = 0, $68_1 = 0, $93_1 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, var$8$hi = 0, $48_1 = 0, $49_1 = 0, $50_1 = 0, $51_1 = 0, var$7$hi = 0, $52_1 = 0, $60_1 = 0, $65$hi = 0, $67_1 = 0, $67$hi = 0, $68_1 = 0, $93_1 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -1757,12 +1663,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1828,12 +1730,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68_1 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60_1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68_1; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68_1; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1871,12 +1769,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93_1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44_1; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44_1; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1891,12 +1785,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -2118,12 +2008,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -2153,12 +2039,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; diff --git a/test/wasm2js/loop.2asm.js b/test/wasm2js/loop.2asm.js index 84646905b62..7d7f9400104 100644 --- a/test/wasm2js/loop.2asm.js +++ b/test/wasm2js/loop.2asm.js @@ -351,7 +351,7 @@ function asmFunc(global, env, buffer) { } function $14() { - var $0 = 0, $1_1 = 0, $6_1 = 0, $2_1 = 0, $7_1 = 0, $3_1 = 0, $8_1 = 0, $5_1 = 0, wasm2js_i32$0 = 0; + var $0 = 0, $1_1 = 0, $6_1 = 0, $2_1 = 0, $7_1 = 0, $3_1 = 0, $8_1 = 0, $5_1 = 0; $0 = 0; $1_1 = $0; loop_in : do { @@ -361,7 +361,6 @@ function asmFunc(global, env, buffer) { } while (1); break loop_in; } while (1); - return wasm2js_i32$0 | 0; } function fx() { diff --git a/test/wasm2js/reinterpret.2asm.js b/test/wasm2js/reinterpret.2asm.js index 018de2245aa..892c5d3744b 100644 --- a/test/wasm2js/reinterpret.2asm.js +++ b/test/wasm2js/reinterpret.2asm.js @@ -31,17 +31,11 @@ function asmFunc(global, env, buffer) { function $2($0, $0$hi) { $0 = $0 | 0; $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0, $3$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_f64$0 = 0.0; + var i64toi32_i32$0 = 0, $3$hi = 0; i64toi32_i32$0 = $0$hi; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = $0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$0; - HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = +HEAPF64[__tempMemory__ >> 3]; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + HEAP32[__tempMemory__ >> 2] = $0; + HEAP32[(__tempMemory__ + 4 | 0) >> 2] = i64toi32_i32$0; + HEAPF64[__tempMemory__ >> 3] = +HEAPF64[__tempMemory__ >> 3]; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; $3$hi = i64toi32_i32$0; i64toi32_i32$0 = $0$hi; diff --git a/test/wasm2js/select.2asm.js b/test/wasm2js/select.2asm.js index fdc12ba9252..264ebb0718f 100644 --- a/test/wasm2js/select.2asm.js +++ b/test/wasm2js/select.2asm.js @@ -68,13 +68,13 @@ function asmFunc(global, env, buffer) { function $4(cond) { cond = cond | 0; var $1_1 = 0; - return abort() | 0; + abort(); } function $5(cond) { cond = cond | 0; var $1_1 = 0; - return abort() | 0; + abort(); } function legalstub$1($0_1, $1_1, $2_1, $3_1, $4_1) { diff --git a/test/wasm2js/traps.2asm.js b/test/wasm2js/traps.2asm.js index 63a027e9ff3..361001cfa2e 100644 --- a/test/wasm2js/traps.2asm.js +++ b/test/wasm2js/traps.2asm.js @@ -373,7 +373,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -450,12 +450,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -521,12 +517,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -564,12 +556,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -584,12 +572,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -811,12 +795,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -846,12 +826,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -1268,7 +1244,7 @@ function asmFunc(global, env, buffer) { var$0$hi = var$0$hi | 0; var$1 = var$1 | 0; var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, var$8$hi = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0, var$7$hi = 0, $52 = 0, $60 = 0, $65$hi = 0, $67 = 0, $67$hi = 0, $68 = 0, $93 = 0, $124$hi = 0, $133$hi = 0, $138$hi = 0, var$8 = 0, $144 = 0, $144$hi = 0, $146$hi = 0, $148 = 0, $148$hi = 0, $155 = 0, $155$hi = 0, $158$hi = 0, var$7 = 0, $170$hi = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; label$1 : { label$2 : { label$3 : { @@ -1345,12 +1321,8 @@ function asmFunc(global, env, buffer) { var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$0 - Math_imul(var$2, var$3) | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$0 - Math_imul(var$2, var$3) | 0; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1416,12 +1388,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; $68 = i64toi32_i32$3 | i64toi32_i32$0 | 0; i64toi32_i32$3 = $60; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = $68; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$3; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$3 >> 2] = $68; + (wasm2js_i32$0 = i64toi32_i32$3, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1459,12 +1427,8 @@ function asmFunc(global, env, buffer) { } } i64toi32_i32$2 = $93; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = $44; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$1; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = $44; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$1), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1479,12 +1443,8 @@ function asmFunc(global, env, buffer) { i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; i64toi32_i32$1 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = var$4 & var$0 | 0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$2; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$1 >> 2] = var$4 & var$0 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$2), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -1706,12 +1666,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$5$hi; i64toi32_i32$2 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = var$5; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$2; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$2 >> 2] = var$5; + (wasm2js_i32$0 = i64toi32_i32$2, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -1741,12 +1697,8 @@ function asmFunc(global, env, buffer) { } i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = __tempMemory__; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = var$0; - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = i64toi32_i32$5; - wasm2js_i32$1 = i64toi32_i32$3; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + HEAP32[i64toi32_i32$5 >> 2] = var$0; + (wasm2js_i32$0 = i64toi32_i32$5, wasm2js_i32$1 = i64toi32_i32$3), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; diff --git a/test/wasm2js/unaligned.2asm.js b/test/wasm2js/unaligned.2asm.js index fceb55a3e9a..e79c3fd6487 100644 --- a/test/wasm2js/unaligned.2asm.js +++ b/test/wasm2js/unaligned.2asm.js @@ -46,56 +46,38 @@ function asmFunc(global, env, buffer) { } function $3() { - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; + var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0; i64toi32_i32$2 = 0; i64toi32_i32$1 = (wasm2js_i32$0 = i64toi32_i32$2, HEAPU8[(wasm2js_i32$0 + 4 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2js_i32$0 + 5 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2js_i32$0 + 6 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2js_i32$0 + 7 | 0) >> 0] | 0 | 0) << 24); - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = (wasm2js_i32$2 = i64toi32_i32$2, HEAPU8[wasm2js_i32$2 >> 0] | 0 | 0 | (HEAPU8[(wasm2js_i32$2 + 1 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2js_i32$2 + 2 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2js_i32$2 + 3 | 0) >> 0] | 0 | 0) << 24); - HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; - wasm2js_i32$0 = __tempMemory__; - wasm2js_i32$1 = i64toi32_i32$1; - HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1; + HEAP32[__tempMemory__ >> 2] = (wasm2js_i32$0 = i64toi32_i32$2, HEAPU8[wasm2js_i32$0 >> 0] | 0 | 0 | (HEAPU8[(wasm2js_i32$0 + 1 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2js_i32$0 + 2 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2js_i32$0 + 3 | 0) >> 0] | 0 | 0) << 24); + HEAP32[(__tempMemory__ + 4 | 0) >> 2] = i64toi32_i32$1; return +(+HEAPF64[__tempMemory__ >> 3]); } function $4() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = 0; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[wasm2js_i32$2 >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 1 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 2 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 3 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + (wasm2js_i32$0 = 0, wasm2js_i32$1 = 0), ((HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 1 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 2 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 3 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; } function $5() { - var i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; + var i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; i64toi32_i32$1 = 0; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = 0; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[wasm2js_i32$2 >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 1 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 2 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 3 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = 0; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = 0), ((HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 1 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 2 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 3 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = 0), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; } function $6() { - var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; - wasm2js_i32$0 = 0; - wasm2js_i32$1 = (HEAPF32[0] = Math_fround(0.0), HEAP32[0] | 0); - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[wasm2js_i32$2 >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 1 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 2 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 3 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + (wasm2js_i32$0 = 0, wasm2js_i32$1 = (HEAPF32[0] = Math_fround(0.0), HEAP32[0] | 0)), ((HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 1 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 2 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 3 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; } function $7() { - var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; - wasm2js_i32$0 = __tempMemory__; - wasm2js_f64$0 = 0.0; - HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; + var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + HEAPF64[__tempMemory__ >> 3] = 0.0; i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0; i64toi32_i32$1 = 0; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = HEAP32[__tempMemory__ >> 2] | 0; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[wasm2js_i32$2 >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 1 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 2 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 3 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; - wasm2js_i32$0 = i64toi32_i32$1; - wasm2js_i32$1 = i64toi32_i32$0; - (wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = HEAP32[__tempMemory__ >> 2] | 0), ((HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 1 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 2 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 3 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; + (wasm2js_i32$0 = i64toi32_i32$1, wasm2js_i32$1 = i64toi32_i32$0), ((HEAP8[(wasm2js_i32$0 + 4 | 0) >> 0] = wasm2js_i32$1 & 255 | 0, HEAP8[(wasm2js_i32$0 + 5 | 0) >> 0] = (wasm2js_i32$1 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 6 | 0) >> 0] = (wasm2js_i32$1 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$0 + 7 | 0) >> 0] = (wasm2js_i32$1 >>> 24 | 0) & 255 | 0; } function legalstub$1() { From 0cb562104093781ada4d8002ea0309aceae62de8 Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 12:50:10 -0700 Subject: [PATCH 02/11] fixes [ci skip] --- src/tools/wasm2js.cpp | 3 ++- src/wasm2js.h | 44 +++++++++++++++++++------------------------ 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/tools/wasm2js.cpp b/src/tools/wasm2js.cpp index 67a5d33b6d8..bc35ae4ebb8 100644 --- a/src/tools/wasm2js.cpp +++ b/src/tools/wasm2js.cpp @@ -57,6 +57,7 @@ class AssertionEmitter { SExpressionWasmBuilder& sexpBuilder; Output& out; Wasm2JSBuilder::Flags flags; + Module tempAllocationModule; Ref emitAssertReturnFunc(Builder& wasmBuilder, Element& e, @@ -75,7 +76,7 @@ class AssertionEmitter { Ref processFunction(Function* func) { Wasm2JSBuilder sub(flags); - return sub.processFunction(nullptr, func); + return sub.processStandaloneFunction(&tempAllocationModule, func); } void emitFunction(Ref func) { diff --git a/src/wasm2js.h b/src/wasm2js.h index d3d61822e6e..6125797606a 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -118,7 +118,10 @@ class Wasm2JSBuilder { Wasm2JSBuilder(Flags f) : flags(f) {} Ref processWasm(Module* wasm, Name funcName = ASM_FUNC); - Ref processFunction(Module* wasm, Function* func); + Ref processFunction(Module* wasm, Function* func, bool standalone=false); + Ref processStandaloneFunction(Module* wasm, Function* func) { + return processFunction(wasm, func, true); + } // The second pass on an expression: process it fully, generating // JS @@ -599,23 +602,21 @@ void Wasm2JSBuilder::addGlobal(Ref ast, Global* global) { } } -static bool expressionEndsInReturn(Expression *e) { - if (e->is()) { - return true; - } - if (!e->is()) { - return false; +Ref Wasm2JSBuilder::processFunction(Module* m, Function* func, bool standaloneFunction) { + if (standaloneFunction) { + // We are only printing a function, not a whole module. Prepare it for + // translation now (if there were a module, we'd have done this for all + // functions in parallel, earlier). + PassRunner runner(m); + // We only run a subset of all passes here. TODO: create a full valid module + // for each assertion body. + runner.add("flatten"); + runner.add("simplify-locals-notee-nostructure"); + runner.add("reorder-locals"); + runner.add("vacuum"); + runner.runOnFunction(func); } - ExpressionList* stats = &static_cast(e)->list; - return expressionEndsInReturn((*stats)[stats->size()-1]); -} -Ref Wasm2JSBuilder::processFunction(Module* m, Function* func) { - if (flags.debug) { - static int fns = 0; - std::cerr << "processFunction " << (fns++) << " " << func->name - << std::endl; - } // We will be symbolically referring to all variables in the function, so make // sure that everything has a name and it's unique. Names::ensureNames(func); @@ -645,14 +646,7 @@ Ref Wasm2JSBuilder::processFunction(Module* m, Function* func) { size_t theVarIndex = ret[3]->size(); ret[3]->push_back(theVar); // body - bool endsInReturn = expressionEndsInReturn(func->body); - if (endsInReturn) { - // return already taken care of - flattenAppend(ret, processFunctionBody(m, func, NO_RESULT)); - } else { - // func has no return - flattenAppend(ret, processFunctionBody(m, func, NO_RESULT)); - } + flattenAppend(ret, processFunctionBody(m, func, NO_RESULT)); // vars, including new temp vars for (Index i = func->getVarIndexBase(); i < func->getNumLocals(); i++) { ValueBuilder::appendToVar( @@ -1542,7 +1536,7 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul return ValueBuilder::makeReturn(Ref()); } Ref val = makeAsmCoercion( - visit(curr->value, NO_RESULT), + visit(curr->value, EXPRESSION_RESULT), wasmToAsmType(curr->value->type) ); return ValueBuilder::makeReturn(val); From 8654b0a5d773201aafd9f3aea48c535dac44700c Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 13:17:54 -0700 Subject: [PATCH 03/11] progress [ci skip] --- src/wasm2js.h | 64 +++++-------- test/wasm2js.asserts.js | 4 +- test/wasm2js.traps.js | 4 +- test/wasm2js/call_indirect.2asm.js | 138 +++++---------------------- test/wasm2js/emscripten.2asm.js | 3 +- test/wasm2js/func-ptr-offset.2asm.js | 5 +- test/wasm2js/func.2asm.js | 65 ++----------- test/wasm2js/func_ptrs.2asm.js | 15 +-- test/wasm2js/left-to-right.2asm.js | 22 +---- 9 files changed, 69 insertions(+), 251 deletions(-) diff --git a/src/wasm2js.h b/src/wasm2js.h index 6125797606a..5c22c5393fa 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -68,6 +68,15 @@ void flattenAppend(Ref ast, Ref extra) { } } +// Appends extra to a chain of sequence elements +void sequenceAppend(Ref& ast, Ref extra) { + if (!ast.get()) { + ast = extra; + return; + } + ast = ValueBuilder::makeSeq(ast, extra); +} + // Used when taking a wasm name and generating a JS identifier. Each scope here // is used to ensure that all names have a unique name but the same wasm name // within a scope always resolves to the same symbol. @@ -725,7 +734,7 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul Ref ret = visit(curr, result); // if it's not already a statement, then it's an expression, and we need to assign it // (if it is a statement, it already assigns to the result var) - if (0 /* FIXME waka 1? */ && result != NO_RESULT) { + if (result != NO_RESULT) { ret = ValueBuilder::makeStatement( ValueBuilder::makeBinary(ValueBuilder::makeName(result), SET, ret)); } @@ -860,57 +869,36 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul return makeAsmCoercion(theCall, wasmToAsmType(curr->type)); } - Ref makeStatementizedCall(ExpressionList& operands, - Ref ret, - std::function genTheCall, - IString result, - Type type) { + Ref visitCallIndirect(CallIndirect* curr) { + // TODO: the codegen here is a pessimization of what the ideal codegen + // looks like. Eventually if necessary this should be tightened up in the + // case that the argument expression doesn't have any side effects. + Ref ret; + ScopedTemp idx(i32, parent, func); std::vector temps; // TODO: utility class, with destructor? - for (auto& operand : operands) { + for (auto& operand : curr->operands) { temps.push_back(new ScopedTemp(operand->type, parent, func)); IString temp = temps.back()->temp; - flattenAppend(ret, visitAndAssign(operand, temp)); + sequenceAppend(ret, visitAndAssign(operand, temp)); } - Ref theCall = genTheCall(); + sequenceAppend(ret, visitAndAssign(curr->target, idx)); + Ref theCall = ValueBuilder::makeCall(ValueBuilder::makeSub( + ValueBuilder::makeName(FUNCTION_TABLE), + idx.getAstName() + )); for (size_t i = 0; i < temps.size(); i++) { IString temp = temps[i]->temp; - auto &operand = operands[i]; + auto &operand = curr->operands[i]; theCall[2]->push_back(makeAsmCoercion(ValueBuilder::makeName(temp), wasmToAsmType(operand->type))); } - theCall = makeAsmCoercion(theCall, wasmToAsmType(type)); - if (result != NO_RESULT) { - theCall = ValueBuilder::makeStatement( - ValueBuilder::makeBinary( - ValueBuilder::makeName(result), SET, theCall)); - } - flattenAppend(ret, theCall); + theCall = makeAsmCoercion(theCall, wasmToAsmType(curr->type)); + sequenceAppend(ret, theCall); for (auto temp : temps) { delete temp; } return ret; } - Ref visitCallIndirect(CallIndirect* curr) { - // TODO: the codegen here is a pessimization of what the ideal codegen - // looks like. Eventually if necessary this should be tightened up in the - // case that the argument expression doesn't have any side effects. - Ref ret = ValueBuilder::makeBlock(); - ScopedTemp idx(i32, parent, func); - return makeStatementizedCall( - curr->operands, - ret, - [&]() { - flattenAppend(ret, visitAndAssign(curr->target, idx)); - return ValueBuilder::makeCall(ValueBuilder::makeSub( - ValueBuilder::makeName(FUNCTION_TABLE), - idx.getAstName() - )); - }, - result, - curr->type - ); - } - // TODO: remove Ref makeSetVar(Expression* curr, Expression* value, Name name, NameScope scope) { return ValueBuilder::makeBinary( diff --git a/test/wasm2js.asserts.js b/test/wasm2js.asserts.js index 82151762cb5..3f0fb670924 100644 --- a/test/wasm2js.asserts.js +++ b/test/wasm2js.asserts.js @@ -80,12 +80,12 @@ const memasmFunc0 = new ArrayBuffer(65536); const retasmFunc0 = asmFunc0({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc0); function check1() { retasmFunc0.empty(); - 1; + return 1 | 0; } if (!check1()) throw 'assertion failed: ( assert_return ( call empty ) )'; function check2() { - (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0); + return (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0) | 0; } if (!check2()) throw 'assertion failed: ( assert_return ( call add ( i32.const 1 ) ( i32.const 1 ) ) ( i32.const 2 ) )'; diff --git a/test/wasm2js.traps.js b/test/wasm2js.traps.js index f63b35b4fff..780acadfc68 100644 --- a/test/wasm2js.traps.js +++ b/test/wasm2js.traps.js @@ -80,12 +80,12 @@ const memasmFunc0 = new ArrayBuffer(65536); const retasmFunc0 = asmFunc0({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc0); function check1() { retasmFunc0.empty(); - 1; + return 1 | 0; } if (!check1()) throw 'assertion failed: ( assert_return ( call empty ) )'; function check2() { - (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0); + return (retasmFunc0.add(1 | 0, 1 | 0) | 0 | 0) == (2 | 0) | 0; } if (!check2()) throw 'assertion failed: ( assert_return ( call add ( i32.const 1 ) ( i32.const 1 ) ) ( i32.const 2 ) )'; diff --git a/test/wasm2js/call_indirect.2asm.js b/test/wasm2js/call_indirect.2asm.js index ecf161dbb35..ae5792dd10d 100644 --- a/test/wasm2js/call_indirect.2asm.js +++ b/test/wasm2js/call_indirect.2asm.js @@ -120,18 +120,12 @@ function asmFunc(global, env, buffer) { function $16() { var wasm2js_i32$0 = 0; - return { - 0; - FUNCTION_TABLE[wasm2js_i32$0]() | 0; - } | 0; + return (wasm2js_i32$0 = 0, FUNCTION_TABLE[wasm2js_i32$0]() | 0) | 0; } function $17() { var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0; - i64toi32_i32$0 = { - 1; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0]() | 0; - }; + i64toi32_i32$0 = (wasm2js_i32$0 = 1, FUNCTION_TABLE[wasm2js_i32$0]() | 0); i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -139,29 +133,18 @@ function asmFunc(global, env, buffer) { function $18() { var wasm2js_i32$0 = 0; - return Math_fround({ - 2; - Math_fround(FUNCTION_TABLE[wasm2js_i32$0]()); - }); + return Math_fround((wasm2js_i32$0 = 2, Math_fround(FUNCTION_TABLE[wasm2js_i32$0]()))); } function $19() { var wasm2js_i32$0 = 0; - return +{ - 3; - +FUNCTION_TABLE[wasm2js_i32$0](); - }; + return +(wasm2js_i32$0 = 3, +FUNCTION_TABLE[wasm2js_i32$0]()); } function $20() { var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = 0; - i64toi32_i32$0 = { - 100; - i64toi32_i32$0; - 5; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; - }; + i64toi32_i32$0 = (((wasm2js_i32$1 = 100, wasm2js_i32$2 = i64toi32_i32$0), wasm2js_i32$0 = 5), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0); i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -169,22 +152,13 @@ function asmFunc(global, env, buffer) { function $21() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - return { - 32; - 4; - FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; - } | 0; + return ((wasm2js_i32$1 = 32, wasm2js_i32$0 = 4), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0) | 0; } function $22() { var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = 0; - i64toi32_i32$0 = { - 64; - i64toi32_i32$0; - 5; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; - }; + i64toi32_i32$0 = (((wasm2js_i32$1 = 64, wasm2js_i32$2 = i64toi32_i32$0), wasm2js_i32$0 = 5), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0); i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -192,42 +166,23 @@ function asmFunc(global, env, buffer) { function $23() { var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0); - return Math_fround({ - Math_fround(1.3200000524520874); - 6; - Math_fround(FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0))); - }); + return Math_fround(((wasm2js_f32$0 = Math_fround(1.3200000524520874), wasm2js_i32$0 = 6), Math_fround(FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0))))); } function $24() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; - return +{ - 1.64; - 7; - +FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0); - }; + return +((wasm2js_f64$0 = 1.64, wasm2js_i32$0 = 7), +FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0)); } function $25() { var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_i32$1 = 0; - return { - Math_fround(32.099998474121094); - 32; - 8; - FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), wasm2js_i32$1 | 0) | 0; - } | 0; + return (((wasm2js_f32$0 = Math_fround(32.099998474121094), wasm2js_i32$1 = 32), wasm2js_i32$0 = 8), FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), wasm2js_i32$1 | 0) | 0) | 0; } function $26() { var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0; i64toi32_i32$0 = 0; - i64toi32_i32$0 = { - 32; - 64; - i64toi32_i32$0; - 9; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0; - }; + i64toi32_i32$0 = ((((wasm2js_i32$1 = 32, wasm2js_i32$2 = 64), wasm2js_i32$3 = i64toi32_i32$0), wasm2js_i32$0 = 9), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, wasm2js_i32$3 | 0) | 0); i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -235,23 +190,12 @@ function asmFunc(global, env, buffer) { function $27() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_f32$0 = Math_fround(0); - return Math_fround({ - 64.0; - Math_fround(32.0); - 10; - Math_fround(FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, Math_fround(wasm2js_f32$0))); - }); + return Math_fround((((wasm2js_f64$0 = 64.0, wasm2js_f32$0 = Math_fround(32.0)), wasm2js_i32$0 = 10), Math_fround(FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, Math_fround(wasm2js_f32$0))))); } function $28() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_f64$0 = 0.0; - return +{ - 64; - 0; - 64.1; - 11; - +FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$0); - }; + return +((((wasm2js_i32$1 = 64, wasm2js_i32$2 = 0), wasm2js_f64$0 = 64.1), wasm2js_i32$0 = 11), +FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$0)); } function $29($0, $1, $1$hi) { @@ -260,12 +204,7 @@ function asmFunc(global, env, buffer) { $1$hi = $1$hi | 0; var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = $1$hi; - i64toi32_i32$0 = { - $1; - i64toi32_i32$0; - $0; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; - }; + i64toi32_i32$0 = (((wasm2js_i32$1 = $1, wasm2js_i32$2 = i64toi32_i32$0), wasm2js_i32$0 = $0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0); i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -275,12 +214,7 @@ function asmFunc(global, env, buffer) { $0 = $0 | 0; var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; i64toi32_i32$0 = 0; - i64toi32_i32$0 = { - 9; - i64toi32_i32$0; - $0; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; - }; + i64toi32_i32$0 = (((wasm2js_i32$1 = 9, wasm2js_i32$2 = i64toi32_i32$0), wasm2js_i32$0 = $0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0); i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; return i64toi32_i32$0 | 0; @@ -304,12 +238,7 @@ function asmFunc(global, env, buffer) { i64toi32_i32$3 = 1; i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) + 0 | 0; i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - i64toi32_i32$5 = { - i64toi32_i32$2 - i64toi32_i32$3 | 0; - i64toi32_i32$5; - 12; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; - }; + i64toi32_i32$5 = (((wasm2js_i32$1 = i64toi32_i32$2 - i64toi32_i32$3 | 0, wasm2js_i32$2 = i64toi32_i32$5), wasm2js_i32$0 = 12), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0); i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; $6 = i64toi32_i32$5; $6$hi = i64toi32_i32$2; @@ -351,12 +280,7 @@ function asmFunc(global, env, buffer) { i64toi32_i32$6 = i64toi32_i32$3 >>> 0 < i64toi32_i32$1 >>> 0; i64toi32_i32$5 = i64toi32_i32$6 + i64toi32_i32$0 | 0; i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; - i64toi32_i32$5 = { - i64toi32_i32$4; - i64toi32_i32$5; - 13; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; - }; + i64toi32_i32$5 = (((wasm2js_i32$1 = i64toi32_i32$4, wasm2js_i32$2 = i64toi32_i32$5), wasm2js_i32$0 = 13), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0); i64toi32_i32$3 = i64toi32_i32$HIGH_BITS; $5 = i64toi32_i32$5; $5$hi = i64toi32_i32$3; @@ -369,12 +293,7 @@ function asmFunc(global, env, buffer) { i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$1 >>> 0; i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$5 | 0; i64toi32_i32$4 = i64toi32_i32$3 - i64toi32_i32$4 | 0; - i64toi32_i32$4 = { - i64toi32_i32$0; - i64toi32_i32$4; - 13; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$2 | 0, wasm2js_i32$1 | 0) | 0; - }; + i64toi32_i32$4 = (((wasm2js_i32$2 = i64toi32_i32$0, wasm2js_i32$1 = i64toi32_i32$4), wasm2js_i32$0 = 13), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$2 | 0, wasm2js_i32$1 | 0) | 0); i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; $8 = i64toi32_i32$4; $8$hi = i64toi32_i32$2; @@ -403,11 +322,7 @@ function asmFunc(global, env, buffer) { if (($0 | 0) == (0 | 0)) { $6 = 44 } else { - $6 = { - $0 - 1 | 0; - 15; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; - } + $6 = ((wasm2js_i32$1 = $0 - 1 | 0, wasm2js_i32$0 = 15), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0) } return $6 | 0; } @@ -418,31 +333,24 @@ function asmFunc(global, env, buffer) { if (($0 | 0) == (0 | 0)) { $6 = 99 } else { - $6 = { - $0 - 1 | 0; - 14; - wasm2js$expresult = FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; - } + $6 = ((wasm2js_i32$1 = $0 - 1 | 0, wasm2js_i32$0 = 14), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0) } return $6 | 0; } function runaway() { var wasm2js_i32$0 = 0; - 16; - FUNCTION_TABLE[wasm2js_i32$0](); + wasm2js_i32$0 = 16, FUNCTION_TABLE[wasm2js_i32$0](); } function mutual_runaway1() { var wasm2js_i32$0 = 0; - 18; - FUNCTION_TABLE[wasm2js_i32$0](); + wasm2js_i32$0 = 18, FUNCTION_TABLE[wasm2js_i32$0](); } function mutual_runaway2() { var wasm2js_i32$0 = 0; - 17; - FUNCTION_TABLE[wasm2js_i32$0](); + wasm2js_i32$0 = 17, FUNCTION_TABLE[wasm2js_i32$0](); } function legalstub$17() { diff --git a/test/wasm2js/emscripten.2asm.js b/test/wasm2js/emscripten.2asm.js index 8e935bc5f58..a0639aad0b0 100644 --- a/test/wasm2js/emscripten.2asm.js +++ b/test/wasm2js/emscripten.2asm.js @@ -30,8 +30,7 @@ function asmFunc(global, env, buffer) { var wasm2js_i32$0 = 0; syscall$6(1 | 0, 2 | 0) | 0; syscall$54(3 | 0, 4 | 0) | 0; - HEAP32[(0 + 1030 | 0) >> 2] | 0; - FUNCTION_TABLE[wasm2js_i32$0](); + wasm2js_i32$0 = HEAP32[(0 + 1030 | 0) >> 2] | 0, FUNCTION_TABLE[wasm2js_i32$0](); } function other() { diff --git a/test/wasm2js/func-ptr-offset.2asm.js b/test/wasm2js/func-ptr-offset.2asm.js index 7de522728b5..b90f1200892 100644 --- a/test/wasm2js/func-ptr-offset.2asm.js +++ b/test/wasm2js/func-ptr-offset.2asm.js @@ -36,10 +36,7 @@ function asmFunc(global, env, buffer) { function $3($0) { $0 = $0 | 0; var wasm2js_i32$0 = 0; - return { - $0; - FUNCTION_TABLE[wasm2js_i32$0]() | 0; - } | 0; + return (wasm2js_i32$0 = $0, FUNCTION_TABLE[wasm2js_i32$0]() | 0) | 0; } var FUNCTION_TABLE = [null, t1, t2, t3]; diff --git a/test/wasm2js/func.2asm.js b/test/wasm2js/func.2asm.js index 7d25f591d68..d40854bb6c6 100644 --- a/test/wasm2js/func.2asm.js +++ b/test/wasm2js/func.2asm.js @@ -396,10 +396,8 @@ function asmFunc(global, env, buffer) { function $76() { var wasm2js_i32$0 = 0; - 1; - FUNCTION_TABLE[wasm2js_i32$0](); - 4; - FUNCTION_TABLE[wasm2js_i32$0](); + wasm2js_i32$0 = 1, FUNCTION_TABLE[wasm2js_i32$0](); + wasm2js_i32$0 = 4, FUNCTION_TABLE[wasm2js_i32$0](); } function $77() { @@ -407,74 +405,25 @@ function asmFunc(global, env, buffer) { i64toi32_i32$0 = 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = 0; - 0.0; - 0; - i64toi32_i32$0; - 0.0; - 0; - i64toi32_i32$1; - 0.0; - 0; - i64toi32_i32$2; - Math_fround(0.0); - 0; - 0; - FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); + (((((((((((wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0), wasm2js_i32$2 = i64toi32_i32$0), wasm2js_f64$1 = 0.0), wasm2js_i32$3 = 0), wasm2js_i32$4 = i64toi32_i32$1), wasm2js_f64$2 = 0.0), wasm2js_i32$5 = 0), wasm2js_i32$6 = i64toi32_i32$2), wasm2js_f32$0 = Math_fround(0.0)), wasm2js_i32$7 = 0), wasm2js_i32$0 = 0), FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); i64toi32_i32$2 = 0; i64toi32_i32$1 = 0; i64toi32_i32$0 = 0; - 0.0; - 0; - i64toi32_i32$2; - 0.0; - 0; - i64toi32_i32$1; - 0.0; - 0; - i64toi32_i32$0; - Math_fround(0.0); - 0; - 2; - FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$2, wasm2js_i32$7 | 0, wasm2js_i32$6 | 0, +wasm2js_f64$1, wasm2js_i32$5 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$0, wasm2js_i32$3 | 0, wasm2js_i32$2 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$1 | 0); + (((((((((((wasm2js_f64$2 = 0.0, wasm2js_i32$7 = 0), wasm2js_i32$6 = i64toi32_i32$2), wasm2js_f64$1 = 0.0), wasm2js_i32$5 = 0), wasm2js_i32$4 = i64toi32_i32$1), wasm2js_f64$0 = 0.0), wasm2js_i32$3 = 0), wasm2js_i32$2 = i64toi32_i32$0), wasm2js_f32$0 = Math_fround(0.0)), wasm2js_i32$1 = 0), wasm2js_i32$0 = 2), FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$2, wasm2js_i32$7 | 0, wasm2js_i32$6 | 0, +wasm2js_f64$1, wasm2js_i32$5 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$0, wasm2js_i32$3 | 0, wasm2js_i32$2 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$1 | 0); i64toi32_i32$0 = 0; i64toi32_i32$1 = 0; i64toi32_i32$2 = 0; - 0.0; - 0; - i64toi32_i32$0; - 0.0; - 0; - i64toi32_i32$1; - 0.0; - 0; - i64toi32_i32$2; - Math_fround(0.0); - 0; - 3; - FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); + (((((((((((wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0), wasm2js_i32$2 = i64toi32_i32$0), wasm2js_f64$1 = 0.0), wasm2js_i32$3 = 0), wasm2js_i32$4 = i64toi32_i32$1), wasm2js_f64$2 = 0.0), wasm2js_i32$5 = 0), wasm2js_i32$6 = i64toi32_i32$2), wasm2js_f32$0 = Math_fround(0.0)), wasm2js_i32$7 = 0), wasm2js_i32$0 = 3), FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); } function $78() { var wasm2js_i32$0 = 0; - 1; - FUNCTION_TABLE[wasm2js_i32$0](); + wasm2js_i32$0 = 1, FUNCTION_TABLE[wasm2js_i32$0](); } function $79() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_f64$1 = 0.0, wasm2js_i32$3 = 0, wasm2js_i32$4 = 0, wasm2js_f64$2 = 0.0, wasm2js_i32$5 = 0, wasm2js_i32$6 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_i32$7 = 0; - 0.0; - 0; - 0; - 0.0; - 0; - 0; - 0.0; - 0; - 0; - Math_fround(0.0); - 0; - 0; - FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); + (((((((((((wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0), wasm2js_i32$2 = 0), wasm2js_f64$1 = 0.0), wasm2js_i32$3 = 0), wasm2js_i32$4 = 0), wasm2js_f64$2 = 0.0), wasm2js_i32$5 = 0), wasm2js_i32$6 = 0), wasm2js_f32$0 = Math_fround(0.0)), wasm2js_i32$7 = 0), wasm2js_i32$0 = 0), FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0); } function legalstub$24() { diff --git a/test/wasm2js/func_ptrs.2asm.js b/test/wasm2js/func_ptrs.2asm.js index 2951ba6418b..09515b0069c 100644 --- a/test/wasm2js/func_ptrs.2asm.js +++ b/test/wasm2js/func_ptrs.2asm.js @@ -103,19 +103,13 @@ function asmFunc(global, env, buffer) { function $5(i) { i = i | 0; var wasm2js_i32$0 = 0; - return { - i; - FUNCTION_TABLE[wasm2js_i32$0]() | 0; - } | 0; + return (wasm2js_i32$0 = i, FUNCTION_TABLE[wasm2js_i32$0]() | 0) | 0; } function $6(i) { i = i | 0; var wasm2js_i32$0 = 0; - return { - i; - FUNCTION_TABLE[wasm2js_i32$0]() | 0; - } | 0; + return (wasm2js_i32$0 = i, FUNCTION_TABLE[wasm2js_i32$0]() | 0) | 0; } var FUNCTION_TABLE = [t1, t2, t3, u1, u2, t1, t3]; @@ -163,10 +157,7 @@ function asmFunc(global, env, buffer) { function $2(i) { i = i | 0; var wasm2js_i32$0 = 0; - return { - i; - FUNCTION_TABLE[wasm2js_i32$0]() | 0; - } | 0; + return (wasm2js_i32$0 = i, FUNCTION_TABLE[wasm2js_i32$0]() | 0) | 0; } var FUNCTION_TABLE = [t1, t2]; diff --git a/test/wasm2js/left-to-right.2asm.js b/test/wasm2js/left-to-right.2asm.js index a4a5717498c..252a41d5c76 100644 --- a/test/wasm2js/left-to-right.2asm.js +++ b/test/wasm2js/left-to-right.2asm.js @@ -380,10 +380,7 @@ function asmFunc(global, env, buffer) { function $62() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; reset(); - i32_left() | 0; - i32_right() | 0; - i32_callee() | 0; - FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + ((wasm2js_i32$1 = i32_left() | 0, wasm2js_i32$2 = i32_right() | 0), wasm2js_i32$0 = i32_callee() | 0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; return get() | 0 | 0; } @@ -972,12 +969,7 @@ function asmFunc(global, env, buffer) { $1$hi = i64toi32_i32$0; i64toi32_i32$0 = $0$hi; i64toi32_i32$1 = $1$hi; - $0; - i64toi32_i32$0; - $1; - i64toi32_i32$1; - i64_callee() | 0; - FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0) | 0; + ((((wasm2js_i32$1 = $0, wasm2js_i32$2 = i64toi32_i32$0), wasm2js_i32$3 = $1), wasm2js_i32$4 = i64toi32_i32$1), wasm2js_i32$0 = i64_callee() | 0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0) | 0; return get() | 0 | 0; } @@ -1091,10 +1083,7 @@ function asmFunc(global, env, buffer) { function $109() { var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_f32$1 = Math_fround(0); reset(); - Math_fround(f32_left()); - Math_fround(f32_right()); - f32_callee() | 0; - FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), Math_fround(wasm2js_f32$1)) | 0; + ((wasm2js_f32$0 = Math_fround(f32_left()), wasm2js_f32$1 = Math_fround(f32_right())), wasm2js_i32$0 = f32_callee() | 0), FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), Math_fround(wasm2js_f32$1)) | 0; return get() | 0 | 0; } @@ -1224,10 +1213,7 @@ function asmFunc(global, env, buffer) { function $126() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_f64$1 = 0.0; reset(); - +f64_left(); - +f64_right(); - f64_callee() | 0; - FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, +wasm2js_f64$1) | 0; + ((wasm2js_f64$0 = +f64_left(), wasm2js_f64$1 = +f64_right()), wasm2js_i32$0 = f64_callee() | 0), FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, +wasm2js_f64$1) | 0; return get() | 0 | 0; } From fea62e9bf6e14cd29b70339226dddf179a6d9aca Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 13:35:21 -0700 Subject: [PATCH 04/11] fix [ci skip] --- src/wasm2js.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wasm2js.h b/src/wasm2js.h index 5c22c5393fa..1c8d807d644 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -355,7 +355,7 @@ Ref Wasm2JSBuilder::processWasm(Module* wasm, Name funcName) { std::move(params), i32, std::move(vars), - builder.makeGetGlobal(INT64_TO_32_HIGH_BITS, i32) + builder.makeReturn(builder.makeGetGlobal(INT64_TO_32_HIGH_BITS, i32)) ))); auto e = new Export(); e->name = WASM_FETCH_HIGH_BITS; From 20639864587cd9a114c05e3a2473a6dc1d167a49 Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 13:40:49 -0700 Subject: [PATCH 05/11] comment [ci skip] --- src/wasm2js.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wasm2js.h b/src/wasm2js.h index 1c8d807d644..bf493ce45e7 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -1016,7 +1016,7 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul Ref visitStore(Store* curr) { // FIXME if memory growth, store ptr cannot contain a function call - // (select and call_indirect too?) + // also other stores to memory, check them, all makeSub's if (curr->align != 0 && curr->align < curr->bytes) { // set the pointer to a local ScopedTemp temp(i32, parent, func); From fe1cabcf7f1fc2f6f414f7770f41285f22a57af2 Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 15:35:16 -0700 Subject: [PATCH 06/11] fix memory growth stores --- src/wasm2js.h | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/wasm2js.h b/src/wasm2js.h index bf493ce45e7..08109381003 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -34,6 +34,7 @@ #include "emscripten-optimizer/optimizer.h" #include "mixed_arena.h" #include "asm_v_wasm.h" +#include "ir/find_all.h" #include "ir/import-utils.h" #include "ir/load-utils.h" #include "ir/module-utils.h" @@ -688,7 +689,7 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul struct ScopedTemp { Wasm2JSBuilder* parent; Type type; - IString temp; + IString temp; // TODO: switch to indexes; avoid names bool needFree; // @param possible if provided, this is a variable we can use as our temp. it has already been // allocated in a higher scope, and we can just assign to it as our result is @@ -1015,6 +1016,37 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul } Ref visitStore(Store* curr) { + if (module->memory.initial < module->memory.max && curr->type != unreachable) { + // In JS, if memory grows then it is dangerous to write + // HEAP[f()] = .. + // or + // HEAP[..] = f() + // since if the call swaps HEAP (in a growth operation) then + // we will not actually write to the new version (since the + // semantics of JS mean we already looked at HEAP and have + // decided where to assign to). + if (!FindAll(curr->ptr).list.empty() || + !FindAll(curr->ptr).list.empty() || + !FindAll(curr->value).list.empty() || + !FindAll(curr->value).list.empty()) { + Ref ret; + ScopedTemp ptr(i32, parent, func); + sequenceAppend(ret, visitAndAssign(curr->ptr, ptr)); + ScopedTemp value(curr->value->type, parent, func); + sequenceAppend(ret, visitAndAssign(curr->value, value)); + GetLocal getPtr; + getPtr.index = func->getLocalIndex(ptr.getName()); + getPtr.type = i32; + GetLocal getValue; + getPtr.index = func->getLocalIndex(value.getName()); + getPtr.type = curr->value->type; + Store fakeStore = *curr; + curr->ptr = &getPtr; + curr->value = &getValue; + sequenceAppend(ret, visitStore(&fakeStore)); + return ret; + } + } // FIXME if memory growth, store ptr cannot contain a function call // also other stores to memory, check them, all makeSub's if (curr->align != 0 && curr->align < curr->bytes) { From 89b5964dbb965d505a6cfeaf32efdd045aa3b1c0 Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 15:39:45 -0700 Subject: [PATCH 07/11] fix [ci skip] --- check.py | 1 + src/wasm2js.h | 4 ++-- test/wasm2js/grow-memory-tricky.2asm.js | 3 ++- test/wasm2js/left-to-right.2asm.js | 24 ++++++++++++++++-------- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/check.py b/check.py index 37840fac09c..f9f89bdf8e8 100755 --- a/check.py +++ b/check.py @@ -582,6 +582,7 @@ def run_unittest(): # Run all the tests def main(): + wasm2js.test_wasm2js() run_help_tests() run_wasm_opt_tests() asm2wasm.test_asm2wasm() diff --git a/src/wasm2js.h b/src/wasm2js.h index 08109381003..1fd297f1b07 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -1041,8 +1041,8 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul getPtr.index = func->getLocalIndex(value.getName()); getPtr.type = curr->value->type; Store fakeStore = *curr; - curr->ptr = &getPtr; - curr->value = &getValue; + fakeStore.ptr = &getPtr; + fakeStore.value = &getValue; sequenceAppend(ret, visitStore(&fakeStore)); return ret; } diff --git a/test/wasm2js/grow-memory-tricky.2asm.js b/test/wasm2js/grow-memory-tricky.2asm.js index 34fa6ddb664..5b84249c666 100644 --- a/test/wasm2js/grow-memory-tricky.2asm.js +++ b/test/wasm2js/grow-memory-tricky.2asm.js @@ -27,7 +27,8 @@ function asmFunc(global, env, buffer) { } function $1() { - HEAP32[0 >> 2] = grow() | 0; + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + (wasm2js_i32$0 = 0, wasm2js_i32$1 = grow() | 0), HEAP32[wasm2js_i32$1 >> 2] = wasm2js_i32$0; return HEAP32[0 >> 2] | 0 | 0; } diff --git a/test/wasm2js/left-to-right.2asm.js b/test/wasm2js/left-to-right.2asm.js index 252a41d5c76..9c2537f7236 100644 --- a/test/wasm2js/left-to-right.2asm.js +++ b/test/wasm2js/left-to-right.2asm.js @@ -354,20 +354,23 @@ function asmFunc(global, env, buffer) { } function $58() { + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - HEAP32[(i32_left() | 0) >> 2] = i32_right() | 0; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP32[wasm2js_i32$1 >> 2] = $15059208; return get() | 0 | 0; } function $59() { + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - HEAP8[(i32_left() | 0) >> 0] = i32_right() | 0; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP8[wasm2js_i32$1 >> 0] = $15840104; return get() | 0 | 0; } function $60() { + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - HEAP16[(i32_left() | 0) >> 1] = i32_right() | 0; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP16[wasm2js_i32$1 >> 1] = $15838712; return get() | 0 | 0; } @@ -922,20 +925,23 @@ function asmFunc(global, env, buffer) { } function $88() { + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - HEAP8[(i32_left() | 0) >> 0] = i64_right() | 0; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP8[wasm2js_i32$1 >> 0] = $15837112; return get() | 0 | 0; } function $89() { + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - HEAP16[(i32_left() | 0) >> 1] = i64_right() | 0; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP16[wasm2js_i32$1 >> 1] = $15790552; return get() | 0 | 0; } function $90() { + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - HEAP32[(i32_left() | 0) >> 2] = i64_right() | 0; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP32[wasm2js_i32$1 >> 2] = $15851624; return get() | 0 | 0; } @@ -1069,8 +1075,9 @@ function asmFunc(global, env, buffer) { } function $107() { + var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0); reset(); - HEAPF32[(i32_left() | 0) >> 2] = Math_fround(f32_right()); + (wasm2js_i32$0 = i32_left() | 0, wasm2js_f32$0 = Math_fround(f32_right())), HEAPF32[wasm2js_f32$0 >> 2] = $15280376; return get() | 0 | 0; } @@ -1199,8 +1206,9 @@ function asmFunc(global, env, buffer) { } function $124() { + var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; reset(); - HEAPF64[(i32_left() | 0) >> 3] = +f64_right(); + (wasm2js_i32$0 = i32_left() | 0, wasm2js_f64$0 = +f64_right()), HEAPF64[wasm2js_f64$0 >> 3] = $15876232; return get() | 0 | 0; } From 1fbf1e5833baf7ba5eb02c97c08e36a88d52e2fc Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 15:54:12 -0700 Subject: [PATCH 08/11] fix [ci skip] --- src/wasm2js.h | 4 ++-- test/wasm2js/grow-memory-tricky.2asm.js | 2 +- test/wasm2js/left-to-right.2asm.js | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/wasm2js.h b/src/wasm2js.h index 1fd297f1b07..16702e307c4 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -1038,8 +1038,8 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul getPtr.index = func->getLocalIndex(ptr.getName()); getPtr.type = i32; GetLocal getValue; - getPtr.index = func->getLocalIndex(value.getName()); - getPtr.type = curr->value->type; + getValue.index = func->getLocalIndex(value.getName()); + getValue.type = curr->value->type; Store fakeStore = *curr; fakeStore.ptr = &getPtr; fakeStore.value = &getValue; diff --git a/test/wasm2js/grow-memory-tricky.2asm.js b/test/wasm2js/grow-memory-tricky.2asm.js index 5b84249c666..64ca9b2d879 100644 --- a/test/wasm2js/grow-memory-tricky.2asm.js +++ b/test/wasm2js/grow-memory-tricky.2asm.js @@ -28,7 +28,7 @@ function asmFunc(global, env, buffer) { function $1() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; - (wasm2js_i32$0 = 0, wasm2js_i32$1 = grow() | 0), HEAP32[wasm2js_i32$1 >> 2] = wasm2js_i32$0; + (wasm2js_i32$0 = 0, wasm2js_i32$1 = grow() | 0), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; return HEAP32[0 >> 2] | 0 | 0; } diff --git a/test/wasm2js/left-to-right.2asm.js b/test/wasm2js/left-to-right.2asm.js index 9c2537f7236..cdb90d3bcd8 100644 --- a/test/wasm2js/left-to-right.2asm.js +++ b/test/wasm2js/left-to-right.2asm.js @@ -356,21 +356,21 @@ function asmFunc(global, env, buffer) { function $58() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP32[wasm2js_i32$1 >> 2] = $15059208; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; return get() | 0 | 0; } function $59() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP8[wasm2js_i32$1 >> 0] = $15840104; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; return get() | 0 | 0; } function $60() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP16[wasm2js_i32$1 >> 1] = $15838712; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i32_right() | 0), HEAP16[wasm2js_i32$0 >> 1] = wasm2js_i32$1; return get() | 0 | 0; } @@ -927,21 +927,21 @@ function asmFunc(global, env, buffer) { function $88() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP8[wasm2js_i32$1 >> 0] = $15837112; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1; return get() | 0 | 0; } function $89() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP16[wasm2js_i32$1 >> 1] = $15790552; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP16[wasm2js_i32$0 >> 1] = wasm2js_i32$1; return get() | 0 | 0; } function $90() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP32[wasm2js_i32$1 >> 2] = $15851624; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_i32$1 = i64_right() | 0), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; return get() | 0 | 0; } @@ -1077,7 +1077,7 @@ function asmFunc(global, env, buffer) { function $107() { var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0); reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_f32$0 = Math_fround(f32_right())), HEAPF32[wasm2js_f32$0 >> 2] = $15280376; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_f32$0 = Math_fround(f32_right())), HEAPF32[wasm2js_i32$0 >> 2] = wasm2js_f32$0; return get() | 0 | 0; } @@ -1208,7 +1208,7 @@ function asmFunc(global, env, buffer) { function $124() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0; reset(); - (wasm2js_i32$0 = i32_left() | 0, wasm2js_f64$0 = +f64_right()), HEAPF64[wasm2js_f64$0 >> 3] = $15876232; + (wasm2js_i32$0 = i32_left() | 0, wasm2js_f64$0 = +f64_right()), HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0; return get() | 0 | 0; } From cdb8526c9ce32eac830e12c03826c2a03f8817cd Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 16:12:18 -0700 Subject: [PATCH 09/11] [ci skip] --- src/wasm2js.h | 6 ++++-- test/wasm2js/grow-memory-tricky.2asm.js | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/wasm2js.h b/src/wasm2js.h index 16702e307c4..fdc49a729b4 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -1026,9 +1026,11 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func, IString resul // semantics of JS mean we already looked at HEAP and have // decided where to assign to). if (!FindAll(curr->ptr).list.empty() || - !FindAll(curr->ptr).list.empty() || !FindAll(curr->value).list.empty() || - !FindAll(curr->value).list.empty()) { + !FindAll(curr->ptr).list.empty() || + !FindAll(curr->value).list.empty() || + !FindAll(curr->ptr).list.empty() || + !FindAll(curr->value).list.empty()) { Ref ret; ScopedTemp ptr(i32, parent, func); sequenceAppend(ret, visitAndAssign(curr->ptr, ptr)); diff --git a/test/wasm2js/grow-memory-tricky.2asm.js b/test/wasm2js/grow-memory-tricky.2asm.js index 64ca9b2d879..b3f2408c3df 100644 --- a/test/wasm2js/grow-memory-tricky.2asm.js +++ b/test/wasm2js/grow-memory-tricky.2asm.js @@ -22,7 +22,8 @@ function asmFunc(global, env, buffer) { var nan = global.NaN; var infinity = global.Infinity; function $0() { - HEAP32[0 >> 2] = __wasm_grow_memory(1 | 0); + var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; + (wasm2js_i32$0 = 0, wasm2js_i32$1 = __wasm_grow_memory(1 | 0)), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; return HEAP32[0 >> 2] | 0 | 0; } From 0fd3e61d5ffde206d9d82ff476291df4c45214bd Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 18:43:26 -0700 Subject: [PATCH 10/11] restore --- auto_update_tests.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/auto_update_tests.py b/auto_update_tests.py index 05d9c1bd029..cbb1246a5e1 100755 --- a/auto_update_tests.py +++ b/auto_update_tests.py @@ -330,7 +330,17 @@ def update_reduce_tests(): def main(): + update_asm_js_tests() + lld.update_lld_tests() + update_wasm_opt_tests() + update_bin_fmt_tests() + update_example_tests() + update_wasm_dis_tests() + update_ctor_eval_tests() wasm2js.update_wasm2js_tests() + update_metadce_tests() + update_reduce_tests() + update_binaryen_js_tests() print '\n[ success! ]' From 2109a89938cc0c4771fb61c593a3125ca07ec04b Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 20 Apr 2019 18:45:12 -0700 Subject: [PATCH 11/11] revert --- check.py | 1 - 1 file changed, 1 deletion(-) diff --git a/check.py b/check.py index f9f89bdf8e8..37840fac09c 100755 --- a/check.py +++ b/check.py @@ -582,7 +582,6 @@ def run_unittest(): # Run all the tests def main(): - wasm2js.test_wasm2js() run_help_tests() run_wasm_opt_tests() asm2wasm.test_asm2wasm()