diff options
-rw-r--r-- | src/wasm2asm.h | 16 | ||||
-rw-r--r-- | test/emcc_O2_hello_world.2asm.js | 15 | ||||
-rw-r--r-- | test/unit.2asm.js | 2 |
3 files changed, 33 insertions, 0 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h index e57a0cff8..836fc450c 100644 --- a/src/wasm2asm.h +++ b/src/wasm2asm.h @@ -163,6 +163,7 @@ private: size_t tableSize; void addBasics(Ref ast); + void addImport(Ref ast, Import *import); }; Ref Wasm2AsmBuilder::processWasm(Module* wasm) { @@ -175,6 +176,9 @@ Ref Wasm2AsmBuilder::processWasm(Module* wasm) { asmFunc[3]->push_back(ValueBuilder::makeStatement(ValueBuilder::makeString(USE_ASM))); // create heaps, etc addBasics(asmFunc[3]); + for (auto import : wasm->imports) { + addImport(asmFunc[3], import); + } // figure out the table size tableSize = wasm->table.names.size(); size_t pow2ed = 1; @@ -237,6 +241,18 @@ void Wasm2AsmBuilder::addBasics(Ref ast) { addMath(MATH_IMUL, IMUL); } +void Wasm2AsmBuilder::addImport(Ref ast, Import *import) { + Ref theVar = ValueBuilder::makeVar(); + ast->push_back(theVar); + ValueBuilder::appendToVar(theVar, + fromName(import->name), + ValueBuilder::makeDot( + ValueBuilder::makeName(fromName(import->module)), + fromName(import->base) + ) + ); +} + Ref Wasm2AsmBuilder::processFunction(Function* func) { Ref ret = ValueBuilder::makeFunction(fromName(func->name)); frees.clear(); diff --git a/test/emcc_O2_hello_world.2asm.js b/test/emcc_O2_hello_world.2asm.js index 63d1f62bb..37ec11b41 100644 --- a/test/emcc_O2_hello_world.2asm.js +++ b/test/emcc_O2_hello_world.2asm.js @@ -9,6 +9,21 @@ function asmFunc(global, env, buffer) { var HEAPF32 = new global.Float32Array(buffer); var HEAPF64 = new global.Float64Array(buffer); var Math_imul = global.Math.imul; + var abort = env.abort; + var _pthread_cleanup_pop = env._pthread_cleanup_pop; + var _pthread_self = env._pthread_self; + var _sysconf = env._sysconf; + var ___lock = env.___lock; + var ___syscall6 = env.___syscall6; + var _abort = env._abort; + var _sbrk = env._sbrk; + var _time = env._time; + var _pthread_cleanup_push = env._pthread_cleanup_push; + var _emscripten_memcpy_big = env._emscripten_memcpy_big; + var ___syscall54 = env.___syscall54; + var ___unlock = env.___unlock; + var ___syscall140 = env.___syscall140; + var ___syscall146 = env.___syscall146; function _malloc(i1) { i1 = i1 | 0; var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i52 = 0, i53 = 0, i54 = 0, i55 = 0, i56 = 0, i57 = 0, i58 = 0, i59 = 0, i60 = 0, i61 = 0, i62 = 0, i63 = 0, i64 = 0, i65 = 0, i66 = 0, i67 = 0, i68 = 0, i69 = 0, i70 = 0, i71 = 0, i72 = 0, i73 = 0, i74 = 0, i75 = 0, i76 = 0, i77 = 0, i78 = 0, i79 = 0, i80 = 0, i81 = 0, i82 = 0, i83 = 0, i84 = 0, i85 = 0, i86 = 0, i87 = 0, i88 = 0, i89 = 0, i90 = 0, i91 = 0, i92 = 0, wasm2asm_i32$3 = 0, wasm2asm_i32$2 = 0, wasm2asm_i32$1 = 0, wasm2asm_i32$0 = 0; diff --git a/test/unit.2asm.js b/test/unit.2asm.js index 104b7c22c..a8320d77c 100644 --- a/test/unit.2asm.js +++ b/test/unit.2asm.js @@ -9,6 +9,8 @@ function asmFunc(global, env, buffer) { var HEAPF32 = new global.Float32Array(buffer); var HEAPF64 = new global.Float64Array(buffer); var Math_imul = global.Math.imul; + var f64_to_int = asm2wasm.f64_to_int; + var f64_rem = asm2wasm.f64_rem; function big_negative() { var temp = 0.0; temp = -2147483648.0; |