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

Unified Diff: Source/bindings/core/v8/V8Binding.cpp

Issue 993333002: bindings: Use Maybe APIs in toXXX() functions (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/bindings/core/v8/V8Binding.h ('k') | Source/bindings/core/v8/V8BindingMacros.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/core/v8/V8Binding.cpp
diff --git a/Source/bindings/core/v8/V8Binding.cpp b/Source/bindings/core/v8/V8Binding.cpp
index 68c856af103c17f42bab7f6fe9513dad57e7149d..6d7b77e483afa64d21973f2c114780e3406e94f7 100644
--- a/Source/bindings/core/v8/V8Binding.cpp
+++ b/Source/bindings/core/v8/V8Binding.cpp
@@ -164,7 +164,7 @@ static inline T toSmallerInt(v8::Isolate* isolate, v8::Handle<v8::Value> value,
// Fast case. The value is already a 32-bit integer in the right range.
if (value->IsInt32()) {
- int32_t result = value->Int32Value();
+ int32_t result = value.As<v8::Int32>()->Value();
if (result >= LimitsTrait::minValue && result <= LimitsTrait::maxValue)
return static_cast<T>(result);
if (configuration == EnforceRange) {
@@ -183,8 +183,7 @@ static inline T toSmallerInt(v8::Isolate* isolate, v8::Handle<v8::Value> value,
} else {
// Can the value be converted to a number?
v8::TryCatch block(isolate);
- numberObject = value->ToNumber(isolate);
- if (block.HasCaught()) {
+ if (!v8Call(value->ToNumber(isolate->GetCurrentContext()), numberObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return 0;
}
@@ -217,7 +216,7 @@ static inline T toSmallerUInt(v8::Isolate* isolate, v8::Handle<v8::Value> value,
// Fast case. The value is a 32-bit signed integer - possibly positive?
if (value->IsInt32()) {
- int32_t result = value->Int32Value();
+ int32_t result = value.As<v8::Int32>()->Value();
if (result >= 0 && result <= LimitsTrait::maxValue)
return static_cast<T>(result);
if (configuration == EnforceRange) {
@@ -235,8 +234,7 @@ static inline T toSmallerUInt(v8::Isolate* isolate, v8::Handle<v8::Value> value,
} else {
// Can the value be converted to a number?
v8::TryCatch block(isolate);
- numberObject = value->ToNumber(isolate);
- if (block.HasCaught()) {
+ if (!v8Call(value->ToNumber(isolate->GetCurrentContext()), numberObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return 0;
}
@@ -286,8 +284,8 @@ int32_t toInt32Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, IntegerCo
ASSERT(!value->IsInt32());
// Can the value be converted to a number?
v8::TryCatch block(isolate);
- v8::Local<v8::Number> numberObject = value->ToNumber(isolate);
- if (block.HasCaught()) {
+ v8::Local<v8::Number> numberObject;
+ if (!v8Call(value->ToNumber(isolate->GetCurrentContext()), numberObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return 0;
}
@@ -307,7 +305,12 @@ int32_t toInt32Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, IntegerCo
if (std::isinf(numberValue))
return 0;
- return numberObject->Int32Value();
+ int32_t result;
+ if (!v8Call(numberObject->Int32Value(isolate->GetCurrentContext()), result, block)) {
+ exceptionState.rethrowV8Exception(block.Exception());
Jens Widell 2015/03/25 11:11:15 Technically, this call can't fail, since numberObj
haraken 2015/03/25 11:53:44 In practice this call won't fail, but conceptually
+ return 0;
+ }
+ return result;
}
uint32_t toUInt32Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
@@ -315,7 +318,7 @@ uint32_t toUInt32Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, Integer
ASSERT(!value->IsUint32());
if (value->IsInt32()) {
ASSERT(configuration != NormalConversion);
- int32_t result = value->Int32Value();
+ int32_t result = value.As<v8::Int32>()->Value();
if (result >= 0)
return result;
if (configuration == EnforceRange) {
@@ -328,8 +331,8 @@ uint32_t toUInt32Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, Integer
// Can the value be converted to a number?
v8::TryCatch block(isolate);
- v8::Local<v8::Number> numberObject = value->ToNumber(isolate);
- if (block.HasCaught()) {
+ v8::Local<v8::Number> numberObject;
+ if (!v8Call(value->ToNumber(isolate->GetCurrentContext()), numberObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return 0;
}
@@ -349,7 +352,12 @@ uint32_t toUInt32Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, Integer
if (std::isinf(numberValue))
return 0;
- return numberObject->Uint32Value();
+ uint32_t result;
+ if (!v8Call(numberObject->Uint32Value(isolate->GetCurrentContext()), result, block)) {
+ exceptionState.rethrowV8Exception(block.Exception());
Jens Widell 2015/03/25 11:11:15 Same here.
+ return 0;
+ }
+ return result;
}
int64_t toInt64Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
@@ -359,8 +367,7 @@ int64_t toInt64Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, IntegerCo
v8::Local<v8::Number> numberObject;
// Can the value be converted to a number?
v8::TryCatch block(isolate);
- numberObject = value->ToNumber(isolate);
- if (block.HasCaught()) {
+ if (!v8Call(value->ToNumber(isolate->GetCurrentContext()), numberObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return 0;
}
@@ -385,7 +392,7 @@ uint64_t toUInt64Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, Integer
ASSERT(!value->IsUint32());
if (value->IsInt32()) {
ASSERT(configuration != NormalConversion);
- int32_t result = value->Int32Value();
+ int32_t result = value.As<v8::Int32>()->Value();
if (result >= 0)
return result;
if (configuration == EnforceRange) {
@@ -399,8 +406,7 @@ uint64_t toUInt64Slow(v8::Isolate* isolate, v8::Handle<v8::Value> value, Integer
v8::Local<v8::Number> numberObject;
// Can the value be converted to a number?
v8::TryCatch block(isolate);
- numberObject = value->ToNumber(isolate);
- if (block.HasCaught()) {
+ if (!v8Call(value->ToNumber(isolate->GetCurrentContext()), numberObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return 0;
}
@@ -442,8 +448,8 @@ double toDoubleSlow(v8::Isolate* isolate, v8::Handle<v8::Value> value, Exception
{
ASSERT(!value->IsNumber());
v8::TryCatch block(isolate);
- double doubleValue = value->NumberValue();
- if (block.HasCaught()) {
+ double doubleValue;
+ if (!v8Call(value->NumberValue(isolate->GetCurrentContext()), doubleValue, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return 0;
}
@@ -478,8 +484,7 @@ String toByteString(v8::Isolate* isolate, v8::Handle<v8::Value> value, Exception
stringObject = value.As<v8::String>();
} else {
v8::TryCatch block(isolate);
- stringObject = value->ToString(isolate);
- if (block.HasCaught()) {
+ if (!v8Call(value->ToString(isolate->GetCurrentContext()), stringObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return String();
}
@@ -613,8 +618,7 @@ String toUSVString(v8::Isolate* isolate, v8::Handle<v8::Value> value, ExceptionS
stringObject = value.As<v8::String>();
} else {
v8::TryCatch block(isolate);
- stringObject = value->ToString(isolate);
- if (block.HasCaught()) {
+ if (!v8Call(value->ToString(isolate->GetCurrentContext()), stringObject, block)) {
exceptionState.rethrowV8Exception(block.Exception());
return String();
}
« no previous file with comments | « Source/bindings/core/v8/V8Binding.h ('k') | Source/bindings/core/v8/V8BindingMacros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698