| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include <math.h> | 5 #include <math.h> |
| 6 | 6 |
| 7 #include "vm/bootstrap_natives.h" | 7 #include "vm/bootstrap_natives.h" |
| 8 | 8 |
| 9 #include "vm/bigint_operations.h" | 9 #include "vm/bigint_operations.h" |
| 10 #include "vm/code_generator.h" // DartModulo. | 10 #include "vm/code_generator.h" // DartModulo. |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 | 113 |
| 114 | 114 |
| 115 DEFINE_NATIVE_ENTRY(Double_greaterThan, 2) { | 115 DEFINE_NATIVE_ENTRY(Double_greaterThan, 2) { |
| 116 const Double& left = Double::CheckedHandle(arguments->NativeArgAt(0)); | 116 const Double& left = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 117 GET_NON_NULL_NATIVE_ARGUMENT(Double, right, arguments->NativeArgAt(1)); | 117 GET_NON_NULL_NATIVE_ARGUMENT(Double, right, arguments->NativeArgAt(1)); |
| 118 bool result = right.IsNull() ? false : (left.value() > right.value()); | 118 bool result = right.IsNull() ? false : (left.value() > right.value()); |
| 119 if (FLAG_trace_intrinsified_natives) { | 119 if (FLAG_trace_intrinsified_natives) { |
| 120 OS::Print("Double_greaterThan %s > %s\n", | 120 OS::Print("Double_greaterThan %s > %s\n", |
| 121 left.ToCString(), right.ToCString()); | 121 left.ToCString(), right.ToCString()); |
| 122 } | 122 } |
| 123 return Bool::Get(result); | 123 return Bool::Get(result).raw(); |
| 124 } | 124 } |
| 125 | 125 |
| 126 | 126 |
| 127 DEFINE_NATIVE_ENTRY(Double_greaterThanFromInteger, 2) { | 127 DEFINE_NATIVE_ENTRY(Double_greaterThanFromInteger, 2) { |
| 128 const Double& right = Double::CheckedHandle(arguments->NativeArgAt(0)); | 128 const Double& right = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 129 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); | 129 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); |
| 130 return Bool::Get(left.AsDoubleValue() > right.value()); | 130 return Bool::Get(left.AsDoubleValue() > right.value()).raw(); |
| 131 } | 131 } |
| 132 | 132 |
| 133 | 133 |
| 134 DEFINE_NATIVE_ENTRY(Double_equal, 2) { | 134 DEFINE_NATIVE_ENTRY(Double_equal, 2) { |
| 135 const Double& left = Double::CheckedHandle(arguments->NativeArgAt(0)); | 135 const Double& left = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 136 GET_NON_NULL_NATIVE_ARGUMENT(Double, right, arguments->NativeArgAt(1)); | 136 GET_NON_NULL_NATIVE_ARGUMENT(Double, right, arguments->NativeArgAt(1)); |
| 137 bool result = right.IsNull() ? false : (left.value() == right.value()); | 137 bool result = right.IsNull() ? false : (left.value() == right.value()); |
| 138 if (FLAG_trace_intrinsified_natives) { | 138 if (FLAG_trace_intrinsified_natives) { |
| 139 OS::Print("Double_equal %s == %s\n", | 139 OS::Print("Double_equal %s == %s\n", |
| 140 left.ToCString(), right.ToCString()); | 140 left.ToCString(), right.ToCString()); |
| 141 } | 141 } |
| 142 return Bool::Get(result); | 142 return Bool::Get(result).raw(); |
| 143 } | 143 } |
| 144 | 144 |
| 145 | 145 |
| 146 DEFINE_NATIVE_ENTRY(Double_equalToInteger, 2) { | 146 DEFINE_NATIVE_ENTRY(Double_equalToInteger, 2) { |
| 147 const Double& left = Double::CheckedHandle(arguments->NativeArgAt(0)); | 147 const Double& left = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 148 GET_NON_NULL_NATIVE_ARGUMENT(Integer, right, arguments->NativeArgAt(1)); | 148 GET_NON_NULL_NATIVE_ARGUMENT(Integer, right, arguments->NativeArgAt(1)); |
| 149 return Bool::Get(left.value() == right.AsDoubleValue()); | 149 return Bool::Get(left.value() == right.AsDoubleValue()).raw(); |
| 150 } | 150 } |
| 151 | 151 |
| 152 | 152 |
| 153 DEFINE_NATIVE_ENTRY(Double_round, 1) { | 153 DEFINE_NATIVE_ENTRY(Double_round, 1) { |
| 154 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); | 154 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 155 return Double::New(round(arg.value())); | 155 return Double::New(round(arg.value())); |
| 156 } | 156 } |
| 157 | 157 |
| 158 DEFINE_NATIVE_ENTRY(Double_floor, 1) { | 158 DEFINE_NATIVE_ENTRY(Double_floor, 1) { |
| 159 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); | 159 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 args.SetAt(0, String::Handle( | 258 args.SetAt(0, String::Handle( |
| 259 String::New("Illegal arguments to double.toStringAsPrecision"))); | 259 String::New("Illegal arguments to double.toStringAsPrecision"))); |
| 260 Exceptions::ThrowByType(Exceptions::kArgument, args); | 260 Exceptions::ThrowByType(Exceptions::kArgument, args); |
| 261 return Object::null(); | 261 return Object::null(); |
| 262 } | 262 } |
| 263 } | 263 } |
| 264 | 264 |
| 265 | 265 |
| 266 DEFINE_NATIVE_ENTRY(Double_getIsInfinite, 1) { | 266 DEFINE_NATIVE_ENTRY(Double_getIsInfinite, 1) { |
| 267 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); | 267 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 268 return Bool::Get(isinf(arg.value())); | 268 return Bool::Get(isinf(arg.value())).raw(); |
| 269 } | 269 } |
| 270 | 270 |
| 271 | 271 |
| 272 DEFINE_NATIVE_ENTRY(Double_getIsNaN, 1) { | 272 DEFINE_NATIVE_ENTRY(Double_getIsNaN, 1) { |
| 273 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); | 273 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 274 return Bool::Get(isnan(arg.value())); | 274 return Bool::Get(isnan(arg.value())).raw(); |
| 275 } | 275 } |
| 276 | 276 |
| 277 | 277 |
| 278 DEFINE_NATIVE_ENTRY(Double_getIsNegative, 1) { | 278 DEFINE_NATIVE_ENTRY(Double_getIsNegative, 1) { |
| 279 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); | 279 const Double& arg = Double::CheckedHandle(arguments->NativeArgAt(0)); |
| 280 // Include negative zero, infinity. | 280 // Include negative zero, infinity. |
| 281 return Bool::Get(signbit(arg.value()) && !isnan(arg.value())); | 281 return Bool::Get(signbit(arg.value()) && !isnan(arg.value())).raw(); |
| 282 } | 282 } |
| 283 | 283 |
| 284 // Add here only functions using/referring to old-style casts. | 284 // Add here only functions using/referring to old-style casts. |
| 285 | 285 |
| 286 } // namespace dart | 286 } // namespace dart |
| OLD | NEW |