Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: runtime/lib/double.cc

Issue 10989013: Change IllegalArgumentException to ArgumentError. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated co19 test expectations. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/double_conversion.h" 10 #include "vm/double_conversion.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 GET_NATIVE_ARGUMENT(Smi, fraction_digits, arguments->At(1)); 181 GET_NATIVE_ARGUMENT(Smi, fraction_digits, arguments->At(1));
182 double d = arg.value(); 182 double d = arg.value();
183 intptr_t fraction_digits_value = fraction_digits.Value(); 183 intptr_t fraction_digits_value = fraction_digits.Value();
184 if (0 <= fraction_digits_value && fraction_digits_value <= 20 184 if (0 <= fraction_digits_value && fraction_digits_value <= 20
185 && kLowerBoundary < d && d < kUpperBoundary) { 185 && kLowerBoundary < d && d < kUpperBoundary) {
186 return DoubleToStringAsFixed(d, static_cast<int>(fraction_digits_value)); 186 return DoubleToStringAsFixed(d, static_cast<int>(fraction_digits_value));
187 } else { 187 } else {
188 GrowableArray<const Object*> args; 188 GrowableArray<const Object*> args;
189 args.Add(&String::ZoneHandle(String::New( 189 args.Add(&String::ZoneHandle(String::New(
190 "Illegal arguments to double.toStringAsFixed"))); 190 "Illegal arguments to double.toStringAsFixed")));
191 Exceptions::ThrowByType(Exceptions::kIllegalArgument, args); 191 Exceptions::ThrowByType(Exceptions::kArgument, args);
192 return Object::null(); 192 return Object::null();
193 } 193 }
194 } 194 }
195 195
196 196
197 DEFINE_NATIVE_ENTRY(Double_toStringAsExponential, 2) { 197 DEFINE_NATIVE_ENTRY(Double_toStringAsExponential, 2) {
198 const Double& arg = Double::CheckedHandle(arguments->At(0)); 198 const Double& arg = Double::CheckedHandle(arguments->At(0));
199 GET_NATIVE_ARGUMENT(Smi, fraction_digits, arguments->At(1)); 199 GET_NATIVE_ARGUMENT(Smi, fraction_digits, arguments->At(1));
200 double d = arg.value(); 200 double d = arg.value();
201 intptr_t fraction_digits_value = fraction_digits.Value(); 201 intptr_t fraction_digits_value = fraction_digits.Value();
202 if (-1 <= fraction_digits_value && fraction_digits_value <= 20) { 202 if (-1 <= fraction_digits_value && fraction_digits_value <= 20) {
203 return DoubleToStringAsExponential( 203 return DoubleToStringAsExponential(
204 d, static_cast<int>(fraction_digits_value)); 204 d, static_cast<int>(fraction_digits_value));
205 } else { 205 } else {
206 GrowableArray<const Object*> args; 206 GrowableArray<const Object*> args;
207 args.Add(&String::ZoneHandle(String::New( 207 args.Add(&String::ZoneHandle(String::New(
208 "Illegal arguments to double.toStringAsExponential"))); 208 "Illegal arguments to double.toStringAsExponential")));
209 Exceptions::ThrowByType(Exceptions::kIllegalArgument, args); 209 Exceptions::ThrowByType(Exceptions::kArgument, args);
210 return Object::null(); 210 return Object::null();
211 } 211 }
212 } 212 }
213 213
214 214
215 DEFINE_NATIVE_ENTRY(Double_toStringAsPrecision, 2) { 215 DEFINE_NATIVE_ENTRY(Double_toStringAsPrecision, 2) {
216 const Double& arg = Double::CheckedHandle(arguments->At(0)); 216 const Double& arg = Double::CheckedHandle(arguments->At(0));
217 GET_NATIVE_ARGUMENT(Smi, precision, arguments->At(1)); 217 GET_NATIVE_ARGUMENT(Smi, precision, arguments->At(1));
218 double d = arg.value(); 218 double d = arg.value();
219 intptr_t precision_value = precision.Value(); 219 intptr_t precision_value = precision.Value();
220 if (1 <= precision_value && precision_value <= 21) { 220 if (1 <= precision_value && precision_value <= 21) {
221 return DoubleToStringAsPrecision(d, static_cast<int>(precision_value)); 221 return DoubleToStringAsPrecision(d, static_cast<int>(precision_value));
222 } else { 222 } else {
223 GrowableArray<const Object*> args; 223 GrowableArray<const Object*> args;
224 args.Add(&String::ZoneHandle(String::New( 224 args.Add(&String::ZoneHandle(String::New(
225 "Illegal arguments to double.toStringAsPrecision"))); 225 "Illegal arguments to double.toStringAsPrecision")));
226 Exceptions::ThrowByType(Exceptions::kIllegalArgument, args); 226 Exceptions::ThrowByType(Exceptions::kArgument, args);
227 return Object::null(); 227 return Object::null();
228 } 228 }
229 } 229 }
230 230
231 231
232 DEFINE_NATIVE_ENTRY(Double_isInfinite, 1) { 232 DEFINE_NATIVE_ENTRY(Double_isInfinite, 1) {
233 const Double& arg = Double::CheckedHandle(arguments->At(0)); 233 const Double& arg = Double::CheckedHandle(arguments->At(0));
234 return Bool::Get(isinf(arg.value())); 234 return Bool::Get(isinf(arg.value()));
235 } 235 }
236 236
237 237
238 DEFINE_NATIVE_ENTRY(Double_isNaN, 1) { 238 DEFINE_NATIVE_ENTRY(Double_isNaN, 1) {
239 const Double& arg = Double::CheckedHandle(arguments->At(0)); 239 const Double& arg = Double::CheckedHandle(arguments->At(0));
240 return Bool::Get(isnan(arg.value())); 240 return Bool::Get(isnan(arg.value()));
241 } 241 }
242 242
243 243
244 DEFINE_NATIVE_ENTRY(Double_isNegative, 1) { 244 DEFINE_NATIVE_ENTRY(Double_isNegative, 1) {
245 const Double& arg = Double::CheckedHandle(arguments->At(0)); 245 const Double& arg = Double::CheckedHandle(arguments->At(0));
246 // Include negative zero, infinity. 246 // Include negative zero, infinity.
247 return Bool::Get(signbit(arg.value()) && !isnan(arg.value())); 247 return Bool::Get(signbit(arg.value()) && !isnan(arg.value()));
248 } 248 }
249 249
250 // Add here only functions using/referring to old-style casts. 250 // Add here only functions using/referring to old-style casts.
251 251
252 } // namespace dart 252 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698