Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index c3610fbe3ffb6df22c959dd2384d79759cc3011c..457180b140dc6ab3fb2e4aa5b8e873078b658180 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -962,12 +962,6 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitialize) { |
arrayId <= Runtime::ARRAY_ID_LAST); |
RUNTIME_ASSERT(maybe_buffer->IsNull() || maybe_buffer->IsJSArrayBuffer()); |
- ASSERT(holder->GetInternalFieldCount() == |
- v8::ArrayBufferView::kInternalFieldCount); |
- for (int i = 0; i < v8::ArrayBufferView::kInternalFieldCount; i++) { |
- holder->SetInternalField(i, Smi::FromInt(0)); |
- } |
- |
ExternalArrayType array_type = kExternalInt8Array; // Bogus initialization. |
size_t element_size = 1; // Bogus initialization. |
ElementsKind external_elements_kind = |
@@ -978,7 +972,6 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitialize) { |
&external_elements_kind, |
&fixed_elements_kind, |
&element_size); |
- |
RUNTIME_ASSERT(holder->map()->elements_kind() == fixed_elements_kind); |
size_t byte_offset = 0; |
@@ -986,9 +979,6 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitialize) { |
RUNTIME_ASSERT(TryNumberToSize(isolate, *byte_offset_object, &byte_offset)); |
RUNTIME_ASSERT(TryNumberToSize(isolate, *byte_length_object, &byte_length)); |
- holder->set_byte_offset(*byte_offset_object); |
- holder->set_byte_length(*byte_length_object); |
- |
RUNTIME_ASSERT(byte_length % element_size == 0); |
size_t length = byte_length / element_size; |
@@ -998,8 +988,6 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitialize) { |
HandleVector<Object>(NULL, 0))); |
} |
- Handle<Object> length_obj = isolate->factory()->NewNumberFromSize(length); |
- holder->set_length(*length_obj); |
if (!maybe_buffer->IsNull()) { |
Handle<JSArrayBuffer> buffer(JSArrayBuffer::cast(*maybe_buffer)); |
@@ -1028,6 +1016,18 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitialize) { |
static_cast<int>(length), array_type); |
holder->set_elements(*elements); |
} |
+ |
+ ASSERT(holder->GetInternalFieldCount() == |
Dmitry Lomov (no reviews)
2014/05/21 11:02:46
Nit: could you move this whole initialization bloc
|
+ v8::ArrayBufferView::kInternalFieldCount); |
+ for (int i = 0; i < v8::ArrayBufferView::kInternalFieldCount; i++) { |
+ holder->SetInternalField(i, Smi::FromInt(0)); |
+ } |
+ |
+ Handle<Object> length_obj = isolate->factory()->NewNumberFromSize(length); |
+ holder->set_length(*length_obj); |
+ holder->set_byte_offset(*byte_offset_object); |
+ holder->set_byte_length(*byte_length_object); |
+ |
return isolate->heap()->undefined_value(); |
} |
@@ -1048,12 +1048,6 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitializeFromArrayLike) { |
RUNTIME_ASSERT(arrayId >= Runtime::ARRAY_ID_FIRST && |
arrayId <= Runtime::ARRAY_ID_LAST); |
- ASSERT(holder->GetInternalFieldCount() == |
- v8::ArrayBufferView::kInternalFieldCount); |
- for (int i = 0; i < v8::ArrayBufferView::kInternalFieldCount; i++) { |
- holder->SetInternalField(i, Smi::FromInt(0)); |
- } |
- |
ExternalArrayType array_type = kExternalInt8Array; // Bogus initialization. |
size_t element_size = 1; // Bogus initialization. |
ElementsKind external_elements_kind = |
@@ -1083,6 +1077,12 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitializeFromArrayLike) { |
} |
size_t byte_length = length * element_size; |
+ ASSERT(holder->GetInternalFieldCount() == |
+ v8::ArrayBufferView::kInternalFieldCount); |
+ for (int i = 0; i < v8::ArrayBufferView::kInternalFieldCount; i++) { |
+ holder->SetInternalField(i, Smi::FromInt(0)); |
+ } |
+ |
// NOTE: not initializing backing store. |
// We assume that the caller of this function will initialize holder |
// with the loop |