Chromium Code Reviews| Index: Source/bindings/core/v8/V8Binding.cpp |
| diff --git a/Source/bindings/core/v8/V8Binding.cpp b/Source/bindings/core/v8/V8Binding.cpp |
| index fd48a502ada3ea0db78f4fb100a94108dd3550de..28a6dea368749b62a6d45ebc30d9019b585f4158 100644 |
| --- a/Source/bindings/core/v8/V8Binding.cpp |
| +++ b/Source/bindings/core/v8/V8Binding.cpp |
| @@ -351,38 +351,30 @@ int32_t toInt32(v8::Handle<v8::Value> value) |
| return toInt32(value, NormalConversion, exceptionState); |
| } |
| -uint32_t toUInt32(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState) |
| +uint32_t toUInt32Slow(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState) |
| { |
| - // Fast case. The value is already a 32-bit unsigned integer. |
| - if (value->IsUint32()) |
| - return value->Uint32Value(); |
| - |
| - // Fast case. The value is a 32-bit signed integer - possibly positive? |
| + ASSERT(!value->IsUint32()); |
| if (value->IsInt32()) { |
| + ASSERT(configuration != NormalConversion); |
| int32_t result = value->Int32Value(); |
| if (result >= 0) |
| return result; |
| if (configuration == EnforceRange) { |
| exceptionState.throwTypeError("Value is outside the 'unsigned long' value range."); |
| return 0; |
| - } |
| - if (configuration == Clamp) |
| + } else { |
|
Jens Widell
2015/02/24 07:43:09
No need for an else branch here since the if-state
|
| + ASSERT(configuration == Clamp); |
| return clampTo<uint32_t>(result); |
| - return result; |
| + } |
| } |
| - v8::Local<v8::Number> numberObject; |
| - if (value->IsNumber()) { |
| - numberObject = value.As<v8::Number>(); |
| - } else { |
| - v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
| - // Can the value be converted to a number? |
| - v8::TryCatch block(isolate); |
| - numberObject = value->ToNumber(isolate); |
| - if (block.HasCaught()) { |
| - exceptionState.rethrowV8Exception(block.Exception()); |
| - return 0; |
| - } |
| + v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
| + // Can the value be converted to a number? |
| + v8::TryCatch block(isolate); |
| + v8::Local<v8::Number> numberObject = value->ToNumber(isolate); |
| + if (block.HasCaught()) { |
| + exceptionState.rethrowV8Exception(block.Exception()); |
| + return 0; |
| } |
| ASSERT(!numberObject.IsEmpty()); |