diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/emscripten-optimizer/simple_ast.h | 20 | ||||
-rw-r--r-- | src/tools/wasm2js.cpp | 7 | ||||
-rw-r--r-- | src/wasm2js.h | 9 |
3 files changed, 6 insertions, 30 deletions
diff --git a/src/emscripten-optimizer/simple_ast.h b/src/emscripten-optimizer/simple_ast.h index eb43209cc..e4c886dd8 100644 --- a/src/emscripten-optimizer/simple_ast.h +++ b/src/emscripten-optimizer/simple_ast.h @@ -919,25 +919,17 @@ struct JSPrinter { void printName(Ref node) { emit(node->getCString()); } static char* numToString(double d, bool finalize = true) { - // If this number is NaN or infinite then things are a bit tricky. In JS we - // want to eventually use `NaN` and/or `Infinity`, but neither of those - // identifiers are valid in asm.js. Instead we have to explicitly import - // `NaN` and `Infinity` from the global environment, and those names are - // bound locally in an asm function as `nan` and `infinity`. - // - // TODO: the JS names of `NaN` and `Infinity` should be used once literal - // asm.js code isn't generated any more if (std::isnan(d)) { if (std::signbit(d)) { - return (char*)"-nan"; + return (char*)"-NaN"; } else { - return (char*)"nan"; + return (char*)"NaN"; } } else if (!std::isfinite(d)) { if (std::signbit(d)) { - return (char*)"-infinity"; + return (char*)"-Infinity"; } else { - return (char*)"infinity"; + return (char*)"Infinity"; } } bool neg = d < 0; @@ -1193,10 +1185,10 @@ struct JSPrinter { ensure(1); // we temporarily append a 0 char* curr = buffer + last; // ensure might invalidate buffer[used] = 0; - if (strstr(curr, "infinity")) { + if (strstr(curr, "Infinity")) { return; } - if (strstr(curr, "nan")) { + if (strstr(curr, "NaN")) { return; } if (strchr(curr, '.')) { diff --git a/src/tools/wasm2js.cpp b/src/tools/wasm2js.cpp index a6430fe12..79eee56a0 100644 --- a/src/tools/wasm2js.cpp +++ b/src/tools/wasm2js.cpp @@ -788,13 +788,6 @@ void AssertionEmitter::fixCalls(Ref asmjs, Name asmModule) { } void AssertionEmitter::emit() { - // TODO: nan and infinity shouldn't be needed once literal asm.js code isn't - // generated - out << R"( - var nan = NaN; - var infinity = Infinity; - )"; - // When equating floating point values in spec tests we want to use bitwise // equality like wasm does. Unfortunately though NaN makes this tricky. JS // implementations like Spidermonkey and JSC will canonicalize NaN loads from diff --git a/src/wasm2js.h b/src/wasm2js.h index db394c36c..25931db85 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -577,15 +577,6 @@ void Wasm2JSBuilder::addBasics(Ref ast, Module* wasm) { addMath(MATH_CEIL, CEIL); addMath(MATH_TRUNC, TRUNC); addMath(MATH_SQRT, SQRT); - // TODO: this shouldn't be needed once we stop generating literal asm.js code - // NaN and Infinity variables - Ref nanVar = ValueBuilder::makeVar(); - ast->push_back(nanVar); - ValueBuilder::appendToVar(nanVar, "nan", ValueBuilder::makeName("NaN")); - Ref infinityVar = ValueBuilder::makeVar(); - ast->push_back(infinityVar); - ValueBuilder::appendToVar( - infinityVar, "infinity", ValueBuilder::makeName("Infinity")); } static bool needsQuoting(Name name) { |