diff options
Diffstat (limited to 'src/emscripten-optimizer/simple_ast.h')
-rw-r--r-- | src/emscripten-optimizer/simple_ast.h | 20 |
1 files changed, 6 insertions, 14 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, '.')) { |