OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 | 400 |
401 return numberObject->Uint32Value(); | 401 return numberObject->Uint32Value(); |
402 } | 402 } |
403 | 403 |
404 uint32_t toUInt32(v8::Handle<v8::Value> value) | 404 uint32_t toUInt32(v8::Handle<v8::Value> value) |
405 { | 405 { |
406 NonThrowableExceptionState exceptionState; | 406 NonThrowableExceptionState exceptionState; |
407 return toUInt32(value, NormalConversion, exceptionState); | 407 return toUInt32(value, NormalConversion, exceptionState); |
408 } | 408 } |
409 | 409 |
410 int64_t toInt64(v8::Handle<v8::Value> value, IntegerConversionConfiguration conf
iguration, ExceptionState& exceptionState) | 410 int64_t toInt64Slow(v8::Handle<v8::Value> value, IntegerConversionConfiguration
configuration, ExceptionState& exceptionState) |
411 { | 411 { |
412 // Clamping not supported for int64_t/long long int. See Source/wtf/MathExtr
as.h. | 412 ASSERT(!value->IsInt32()); |
413 ASSERT(configuration != Clamp); | |
414 | |
415 // Fast case. The value is a 32-bit integer. | |
416 if (value->IsInt32()) | |
417 return value->Int32Value(); | |
418 | 413 |
419 v8::Local<v8::Number> numberObject; | 414 v8::Local<v8::Number> numberObject; |
420 if (value->IsNumber()) { | 415 v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
421 numberObject = value.As<v8::Number>(); | 416 // Can the value be converted to a number? |
422 } else { | 417 v8::TryCatch block(isolate); |
423 v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 418 numberObject = value->ToNumber(isolate); |
424 // Can the value be converted to a number? | 419 if (block.HasCaught()) { |
425 v8::TryCatch block(isolate); | 420 exceptionState.rethrowV8Exception(block.Exception()); |
426 numberObject = value->ToNumber(isolate); | 421 return 0; |
427 if (block.HasCaught()) { | |
428 exceptionState.rethrowV8Exception(block.Exception()); | |
429 return 0; | |
430 } | |
431 } | 422 } |
432 ASSERT(!numberObject.IsEmpty()); | 423 ASSERT(!numberObject.IsEmpty()); |
433 | 424 |
434 double numberValue = numberObject->Value(); | 425 double numberValue = numberObject->Value(); |
435 | 426 |
436 if (configuration == EnforceRange) | 427 if (configuration == EnforceRange) |
437 return enforceRange(numberValue, -kJSMaxInteger, kJSMaxInteger, "long lo
ng", exceptionState); | 428 return enforceRange(numberValue, -kJSMaxInteger, kJSMaxInteger, "long lo
ng", exceptionState); |
438 | 429 |
439 if (std::isnan(numberValue) || std::isinf(numberValue)) | 430 if (std::isnan(numberValue) || std::isinf(numberValue)) |
440 return 0; | 431 return 0; |
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1051 { | 1042 { |
1052 v8ConstructorAttributeGetter(info); | 1043 v8ConstructorAttributeGetter(info); |
1053 } | 1044 } |
1054 | 1045 |
1055 void v8ConstructorAttributeGetterAsAccessor(const v8::FunctionCallbackInfo<v8::V
alue>& info) | 1046 void v8ConstructorAttributeGetterAsAccessor(const v8::FunctionCallbackInfo<v8::V
alue>& info) |
1056 { | 1047 { |
1057 v8ConstructorAttributeGetter(info); | 1048 v8ConstructorAttributeGetter(info); |
1058 } | 1049 } |
1059 | 1050 |
1060 } // namespace blink | 1051 } // namespace blink |
OLD | NEW |