diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/asmjs/shared-constants.cpp | 4 | ||||
-rw-r--r-- | src/asmjs/shared-constants.h | 4 | ||||
-rw-r--r-- | src/wasm2js.h | 73 |
3 files changed, 16 insertions, 65 deletions
diff --git a/src/asmjs/shared-constants.cpp b/src/asmjs/shared-constants.cpp index 37594108a..476f55f1f 100644 --- a/src/asmjs/shared-constants.cpp +++ b/src/asmjs/shared-constants.cpp @@ -19,10 +19,6 @@ namespace wasm { cashew::IString GLOBAL("global"); -cashew::IString NAN_("NaN"); -cashew::IString INFINITY_("Infinity"); -cashew::IString NAN__("nan"); -cashew::IString INFINITY__("infinity"); cashew::IString TOPMOST("topmost"); cashew::IString INT8ARRAY("Int8Array"); cashew::IString INT16ARRAY("Int16Array"); diff --git a/src/asmjs/shared-constants.h b/src/asmjs/shared-constants.h index 503e975dd..91130e24e 100644 --- a/src/asmjs/shared-constants.h +++ b/src/asmjs/shared-constants.h @@ -22,10 +22,6 @@ namespace wasm { extern cashew::IString GLOBAL; -extern cashew::IString NAN_; -extern cashew::IString INFINITY_; -extern cashew::IString NAN__; -extern cashew::IString INFINITY__; extern cashew::IString TOPMOST; extern cashew::IString INT8ARRAY; extern cashew::IString INT16ARRAY; diff --git a/src/wasm2js.h b/src/wasm2js.h index 705c62153..8ab6ab5cf 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -381,7 +381,6 @@ Ref Wasm2JSBuilder::processWasm(Module* wasm, Name funcName) { Ref ret = ValueBuilder::makeToplevel(); Ref asmFunc = ValueBuilder::makeFunction(funcName); ret[1]->push_back(asmFunc); - ValueBuilder::appendArgumentToFunction(asmFunc, GLOBAL); ValueBuilder::appendArgumentToFunction(asmFunc, ENV); if (wasm->memory.exists) { @@ -491,12 +490,10 @@ void Wasm2JSBuilder::addBasics(Ref ast, Module* wasm) { auto addHeap = [&](IString name, IString view) { Ref theVar = ValueBuilder::makeVar(); ast->push_back(theVar); - ValueBuilder::appendToVar( - theVar, - name, - ValueBuilder::makeNew(ValueBuilder::makeCall( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), view), - ValueBuilder::makeName(BUFFER)))); + ValueBuilder::appendToVar(theVar, + name, + ValueBuilder::makeNew(ValueBuilder::makeCall( + view, ValueBuilder::makeName(BUFFER)))); }; addHeap(HEAP8, INT8ARRAY); addHeap(HEAP16, INT16ARRAY); @@ -512,10 +509,7 @@ void Wasm2JSBuilder::addBasics(Ref ast, Module* wasm) { Ref theVar = ValueBuilder::makeVar(); ast->push_back(theVar); ValueBuilder::appendToVar( - theVar, - name, - ValueBuilder::makeDot( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), MATH), base)); + theVar, name, ValueBuilder::makeDot(ValueBuilder::makeName(MATH), base)); }; addMath(MATH_IMUL, IMUL); addMath(MATH_FROUND, FROUND); @@ -537,16 +531,11 @@ void Wasm2JSBuilder::addBasics(Ref ast, Module* wasm) { // NaN and Infinity variables Ref nanVar = ValueBuilder::makeVar(); ast->push_back(nanVar); - ValueBuilder::appendToVar( - nanVar, - "nan", - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), "NaN")); + ValueBuilder::appendToVar(nanVar, "nan", ValueBuilder::makeName("NaN")); Ref infinityVar = ValueBuilder::makeVar(); ast->push_back(infinityVar); ValueBuilder::appendToVar( - infinityVar, - "infinity", - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), "Infinity")); + infinityVar, "infinity", ValueBuilder::makeName("Infinity")); } void Wasm2JSBuilder::addFunctionImport(Ref ast, Function* import) { @@ -2293,12 +2282,11 @@ void Wasm2JSBuilder::addMemoryGrowFunc(Ref ast, Module* wasm) { Ref newHEAP8 = ValueBuilder::makeVar(); ValueBuilder::appendToBlock(block, newHEAP8); - ValueBuilder::appendToVar( - newHEAP8, - IString("newHEAP8"), - ValueBuilder::makeNew(ValueBuilder::makeCall( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), INT8ARRAY), - ValueBuilder::makeName(IString("newBuffer"))))); + ValueBuilder::appendToVar(newHEAP8, + IString("newHEAP8"), + ValueBuilder::makeNew(ValueBuilder::makeCall( + ValueBuilder::makeName(INT8ARRAY), + ValueBuilder::makeName(IString("newBuffer"))))); ValueBuilder::appendToBlock( block, @@ -2320,7 +2308,7 @@ void Wasm2JSBuilder::addMemoryGrowFunc(Ref ast, Module* wasm) { ValueBuilder::makeName(name), SET, ValueBuilder::makeNew(ValueBuilder::makeCall( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), view), + ValueBuilder::makeName(view), ValueBuilder::makeName(IString("newBuffer")))))); }; @@ -2469,23 +2457,7 @@ void Wasm2JSGlue::emitPostEmscripten() { return std::string("asmLibraryArg['") + asmangle(globalName) + "']"; }); - out << "return asmFunc({\n" - << " 'Int8Array': Int8Array,\n" - << " 'Int16Array': Int16Array,\n" - << " 'Int32Array': Int32Array,\n" - << " 'Uint8Array': Uint8Array,\n" - << " 'Uint16Array': Uint16Array,\n" - << " 'Uint32Array': Uint32Array,\n" - << " 'Float32Array': Float32Array,\n" - << " 'Float64Array': Float64Array,\n" - << " 'NaN': NaN,\n" - << " 'Infinity': Infinity,\n" - << " 'Math': Math\n" - << " },\n" - << " asmLibraryArg,\n" - << " wasmMemory.buffer\n" - << ")" - << "\n" + out << "return asmFunc(asmLibraryArg, wasmMemory.buffer)\n" << "\n" << "}"; } @@ -2507,21 +2479,8 @@ void Wasm2JSGlue::emitPostES6() { // Actually invoke the `asmFunc` generated function, passing in all global // values followed by all imports - out << "var ret" << moduleName.str << " = " << moduleName.str << "({\n" - << " Math,\n" - << " Int8Array,\n" - << " Uint8Array,\n" - << " Int16Array,\n" - << " Uint16Array,\n" - << " Int32Array,\n" - << " Uint32Array,\n" - << " Float32Array,\n" - << " Float64Array,\n" - << " NaN,\n" - << " Infinity\n" - << " }, {\n"; - - out << " abort: function() { throw new Error('abort'); }"; + out << "var ret" << moduleName.str << " = " << moduleName.str << "("; + out << " { abort: function() { throw new Error('abort'); }"; ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { // The special helpers are emitted in the glue, see code and comments |