| Index: src/runtime/runtime-typedarray.cc
|
| diff --git a/src/runtime/runtime-typedarray.cc b/src/runtime/runtime-typedarray.cc
|
| index 4acdba3fc6e1b52fd8ae258d05ae4ce68c0120a3..7c2e277b3f270a74456a9c397aec81d6232e17d5 100644
|
| --- a/src/runtime/runtime-typedarray.cc
|
| +++ b/src/runtime/runtime-typedarray.cc
|
| @@ -13,59 +13,6 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -void Runtime::SetupArrayBuffer(Isolate* isolate,
|
| - Handle<JSArrayBuffer> array_buffer,
|
| - bool is_external, void* data,
|
| - size_t allocated_length, SharedFlag shared) {
|
| - DCHECK(array_buffer->GetInternalFieldCount() ==
|
| - v8::ArrayBuffer::kInternalFieldCount);
|
| - for (int i = 0; i < v8::ArrayBuffer::kInternalFieldCount; i++) {
|
| - array_buffer->SetInternalField(i, Smi::FromInt(0));
|
| - }
|
| - array_buffer->set_backing_store(data);
|
| - array_buffer->set_bit_field(0);
|
| - array_buffer->set_is_external(is_external);
|
| - array_buffer->set_is_neuterable(shared == SharedFlag::kNotShared);
|
| - array_buffer->set_is_shared(shared == SharedFlag::kShared);
|
| -
|
| - if (data && !is_external) {
|
| - isolate->heap()->RegisterNewArrayBuffer(
|
| - isolate->heap()->InNewSpace(*array_buffer), data, allocated_length);
|
| - }
|
| -
|
| - Handle<Object> byte_length =
|
| - isolate->factory()->NewNumberFromSize(allocated_length);
|
| - CHECK(byte_length->IsSmi() || byte_length->IsHeapNumber());
|
| - array_buffer->set_byte_length(*byte_length);
|
| -}
|
| -
|
| -
|
| -bool Runtime::SetupArrayBufferAllocatingData(Isolate* isolate,
|
| - Handle<JSArrayBuffer> array_buffer,
|
| - size_t allocated_length,
|
| - bool initialize,
|
| - SharedFlag shared) {
|
| - void* data;
|
| - CHECK(isolate->array_buffer_allocator() != NULL);
|
| - // Prevent creating array buffers when serializing.
|
| - DCHECK(!isolate->serializer_enabled());
|
| - if (allocated_length != 0) {
|
| - if (initialize) {
|
| - data = isolate->array_buffer_allocator()->Allocate(allocated_length);
|
| - } else {
|
| - data = isolate->array_buffer_allocator()->AllocateUninitialized(
|
| - allocated_length);
|
| - }
|
| - if (data == NULL) return false;
|
| - } else {
|
| - data = NULL;
|
| - }
|
| -
|
| - SetupArrayBuffer(isolate, array_buffer, false, data, allocated_length,
|
| - shared);
|
| - return true;
|
| -}
|
| -
|
|
|
| RUNTIME_FUNCTION(Runtime_ArrayBufferInitialize) {
|
| HandleScope scope(isolate);
|
| @@ -82,8 +29,8 @@ RUNTIME_FUNCTION(Runtime_ArrayBufferInitialize) {
|
| THROW_NEW_ERROR_RETURN_FAILURE(
|
| isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferLength));
|
| }
|
| - if (!Runtime::SetupArrayBufferAllocatingData(
|
| - isolate, holder, allocated_length, true,
|
| + if (!JSArrayBuffer::SetupAllocatingData(
|
| + holder, isolate, allocated_length, true,
|
| is_shared ? SharedFlag::kShared : SharedFlag::kNotShared)) {
|
| THROW_NEW_ERROR_RETURN_FAILURE(
|
| isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferLength));
|
| @@ -239,8 +186,8 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitialize) {
|
| holder->set_elements(*elements);
|
| } else {
|
| Handle<JSArrayBuffer> buffer = isolate->factory()->NewJSArrayBuffer();
|
| - Runtime::SetupArrayBuffer(isolate, buffer, true, NULL, byte_length,
|
| - SharedFlag::kNotShared);
|
| + JSArrayBuffer::Setup(buffer, isolate, true, NULL, byte_length,
|
| + SharedFlag::kNotShared);
|
| holder->set_buffer(*buffer);
|
| Handle<FixedTypedArrayBase> elements =
|
| isolate->factory()->NewFixedTypedArray(static_cast<int>(length),
|
| @@ -314,8 +261,8 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitializeFromArrayLike) {
|
| //
|
| // TODO(dslomov): revise this once we support subclassing.
|
|
|
| - if (!Runtime::SetupArrayBufferAllocatingData(isolate, buffer, byte_length,
|
| - false)) {
|
| + if (!JSArrayBuffer::SetupAllocatingData(buffer, isolate, byte_length,
|
| + false)) {
|
| THROW_NEW_ERROR_RETURN_FAILURE(
|
| isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferLength));
|
| }
|
|
|