| Index: Source/bindings/dart/DartUtilities.cpp
|
| diff --git a/Source/bindings/dart/DartUtilities.cpp b/Source/bindings/dart/DartUtilities.cpp
|
| index 8c39f886e158c51bf040faff84a42906d1587582..b9d86f76f3285cd4d4404a43aaf4223431bcbe45 100644
|
| --- a/Source/bindings/dart/DartUtilities.cpp
|
| +++ b/Source/bindings/dart/DartUtilities.cpp
|
| @@ -40,6 +40,7 @@
|
| #include "bindings/dart/V8Converter.h"
|
| #include "bindings/v8/ScriptController.h"
|
| #include "bindings/v8/SerializedScriptValue.h"
|
| +#include "bindings/v8/V8Binding.h"
|
| #include "bindings/v8/V8PerIsolateData.h"
|
| #include "core/dom/Document.h"
|
| #include "core/html/canvas/DataView.h"
|
| @@ -296,9 +297,12 @@ unsigned long long DartUtilities::dartToUnsignedLongLong(Dart_Handle object, Dar
|
|
|
| Dart_Handle DartUtilities::numberToDart(double value)
|
| {
|
| - int intValue = static_cast<int>(value);
|
| - if (value == intValue)
|
| - return intToDart(intValue);
|
| + // JS can store integer values that are no greater than 2^53 - 1.
|
| + if (-kJSMaxInteger <= value && value <= kJSMaxInteger) {
|
| + int64_t intValue = static_cast<int64_t>(value);
|
| + if (value == intValue)
|
| + return intToDart(intValue);
|
| + }
|
| return doubleToDart(value);
|
| }
|
|
|
|
|