summaryrefslogtreecommitdiff
path: root/src/emscripten-optimizer/simple_ast.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emscripten-optimizer/simple_ast.h')
-rw-r--r--src/emscripten-optimizer/simple_ast.h20
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, '.')) {