Chromium Code Reviews| Index: src/runtime.cc |
| diff --git a/src/runtime.cc b/src/runtime.cc |
| index 2cf033c4ebbb9920a7fd3dbac12c52bc16baa7d4..af073ba72e8aa3c0c65b7f07ee3be8b14e3c5fac 100644 |
| --- a/src/runtime.cc |
| +++ b/src/runtime.cc |
| @@ -917,6 +917,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_TypedArrayInitialize) { |
| ASSERT(byte_length % element_size == 0); |
| size_t length = byte_length / element_size; |
| + if (length > static_cast<unsigned>(Smi::kMaxValue)) { |
| + return isolate->Throw(*isolate->factory()-> |
| + NewRangeError("invalid_array_buffer_length", |
| + HandleVector<Object>(NULL, 0))); |
| + } |
| + |
| Handle<Object> length_obj = isolate->factory()->NewNumberFromSize(length); |
| holder->set_length(*length_obj); |
| holder->set_weak_next(buffer->weak_first_view()); |
| @@ -935,7 +941,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_TypedArrayInitialize) { |
| // If an array-like object happens to be a typed array of the same type, |
| // initializes backing store using memove. |
| // |
| -// Returns true if backing store was initialized or false otherwise. |
| +// Returns true if backing stor e was initialized or false otherwise. |
|
Jakob Kummerow
2013/11/15 15:13:08
nit: accidental edit
Dmitry Lomov (no reviews)
2013/11/15 16:03:07
Done.
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_TypedArrayInitializeFromArrayLike) { |
| HandleScope scope(isolate); |
| ASSERT(args.length() == 4); |
| @@ -956,7 +962,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_TypedArrayInitializeFromArrayLike) { |
| Handle<JSArrayBuffer> buffer = isolate->factory()->NewJSArrayBuffer(); |
| size_t length = NumberToSize(isolate, *length_obj); |
| - if (length > (kMaxInt / element_size)) { |
| + |
| + if ((length > static_cast<unsigned>(Smi::kMaxValue)) || |
| + (length > (kMaxInt / element_size))) { |
| return isolate->Throw(*isolate->factory()-> |
| NewRangeError("invalid_array_buffer_length", |
| HandleVector<Object>(NULL, 0))); |
| @@ -14813,6 +14821,11 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_InternalArrayConstructor) { |
| } |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_MaxSmi) { |
| + return Smi::FromInt(Smi::kMaxValue); |
| +} |
| + |
| + |
| // ---------------------------------------------------------------------------- |
| // Implementation of Runtime |