Chromium Code Reviews| Index: src/runtime.cc |
| diff --git a/src/runtime.cc b/src/runtime.cc |
| index 61eb8ad72a30ff6dd34ae4410c1bca3a644cca00..2ab727b71d8bb303043a9567aabace6b65ba5936 100644 |
| --- a/src/runtime.cc |
| +++ b/src/runtime.cc |
| @@ -7670,6 +7670,34 @@ RUNTIME_UNARY_MATH(log) |
| #undef RUNTIME_UNARY_MATH |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_DoubleHi) { |
| + SealHandleScope shs(isolate); |
| + ASSERT(args.length() == 1); |
| + CONVERT_DOUBLE_ARG_CHECKED(x, 0); |
| + return isolate->heap()->NumberFromDouble( |
| + static_cast<int32_t>(double_to_uint64(x) >> 32)); |
| +} |
| + |
| + |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_DoubleLo) { |
| + SealHandleScope shs(isolate); |
| + ASSERT(args.length() == 1); |
| + CONVERT_DOUBLE_ARG_CHECKED(x, 0); |
| + return isolate->heap()->NumberFromDouble( |
| + static_cast<int32_t>(double_to_uint64(x) & 0xffffffff)); |
|
Sven Panne
2014/03/03 11:28:27
Add an unsigned suffix 'u' to the hexadecimal cons
|
| +} |
| + |
| + |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_ConstructDouble) { |
| + SealHandleScope shs(isolate); |
| + ASSERT(args.length() == 2); |
| + CONVERT_NUMBER_CHECKED(uint32_t, hi, Uint32, args[0]); |
| + CONVERT_NUMBER_CHECKED(uint32_t, lo, Uint32, args[1]); |
| + uint64_t result = (static_cast<uint64_t>(hi) << 32) | lo; |
| + return isolate->heap()->AllocateHeapNumber(uint64_to_double(result)); |
| +} |
| + |
| + |
| // Cube root approximation, refer to: http://metamerist.com/cbrt/cbrt.htm |
| // Using initial approximation adapted from Kahan's cbrt and 4 iterations |
| // of Newton's method. |