summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm2asm.h16
-rw-r--r--test/emcc_O2_hello_world.2asm.js15
-rw-r--r--test/unit.2asm.js2
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;