| Index: runtime/lib/double.cc
|
| diff --git a/runtime/lib/double.cc b/runtime/lib/double.cc
|
| index 4173c1403d034ad917f12dea13d7f23cd2fc1f4b..e6f8596c022781352b1490979253e83c6097d0b6 100644
|
| --- a/runtime/lib/double.cc
|
| +++ b/runtime/lib/double.cc
|
| @@ -300,6 +300,16 @@ DEFINE_NATIVE_ENTRY(Double_getIsNegative, 1) {
|
| return Bool::Get(signbit(dval) && !isnan(dval)).raw();
|
| }
|
|
|
| +
|
| +DEFINE_NATIVE_ENTRY(Double_flipSignBit, 1) {
|
| + const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0));
|
| + const double in_val = arg.value();
|
| + const int64_t bits =
|
| + *(reinterpret_cast<const int64_t*>(&in_val)) ^ kSignBitDouble;
|
| + const double out_val = *(reinterpret_cast<const double*>(&bits));
|
| + return Double::New(out_val);
|
| +}
|
| +
|
| // Add here only functions using/referring to old-style casts.
|
|
|
| } // namespace dart
|
|
|