diff options
Diffstat (limited to 'src/assembler.cc')
-rw-r--r-- | src/assembler.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/assembler.cc b/src/assembler.cc index fb9a4af1..ef2094f6 100644 --- a/src/assembler.cc +++ b/src/assembler.cc @@ -553,8 +553,9 @@ ExternalReference::ExternalReference(Builtins::CFunctionId id) : address_(Redirect(Builtins::c_function_address(id))) {} -ExternalReference::ExternalReference(ApiFunction* fun) - : address_(Redirect(fun->address())) {} +ExternalReference::ExternalReference( + ApiFunction* fun, Type type = ExternalReference::BUILTIN_CALL) + : address_(Redirect(fun->address(), type)) {} ExternalReference::ExternalReference(Builtins::Name name) @@ -838,8 +839,8 @@ double power_double_double(double x, double y) { return power_double_int(x, y_int); // Returns 1.0 for exponent 0. } if (!isinf(x)) { - if (y == 0.5) return sqrt(x); - if (y == -0.5) return 1.0 / sqrt(x); + if (y == 0.5) return sqrt(x + 0.0); // -0 must be converted to +0. + if (y == -0.5) return 1.0 / sqrt(x + 0.0); } if (isnan(y) || ((x == 1 || x == -1) && isinf(y))) { return OS::nan_value(); @@ -888,17 +889,18 @@ ExternalReference ExternalReference::double_fp_operation( UNREACHABLE(); } // Passing true as 2nd parameter indicates that they return an fp value. - return ExternalReference(Redirect(FUNCTION_ADDR(function), true)); + return ExternalReference(Redirect(FUNCTION_ADDR(function), FP_RETURN_CALL)); } ExternalReference ExternalReference::compare_doubles() { return ExternalReference(Redirect(FUNCTION_ADDR(native_compare_doubles), - false)); + BUILTIN_CALL)); } -ExternalReferenceRedirector* ExternalReference::redirector_ = NULL; +ExternalReference::ExternalReferenceRedirector* + ExternalReference::redirector_ = NULL; #ifdef ENABLE_DEBUGGER_SUPPORT |