| Index: src/runtime/runtime-typedarray.cc
|
| diff --git a/src/runtime/runtime-typedarray.cc b/src/runtime/runtime-typedarray.cc
|
| index 510ceb1ac9631e4ebb9fc97f2f958fb0d3fccf2d..a1aacd7aa8a744236c311f8698e8b0f8b810016b 100644
|
| --- a/src/runtime/runtime-typedarray.cc
|
| +++ b/src/runtime/runtime-typedarray.cc
|
| @@ -51,9 +51,18 @@ void Runtime::SetupArrayBuffer(Isolate* isolate,
|
| CHECK(byte_length->IsSmi() || byte_length->IsHeapNumber());
|
| array_buffer->set_byte_length(*byte_length);
|
|
|
| - array_buffer->set_weak_next(isolate->heap()->array_buffers_list());
|
| - CHECK(isolate->heap()->InNewSpace(*array_buffer));
|
| - isolate->heap()->set_array_buffers_list(*array_buffer);
|
| + if (isolate->heap()->InNewSpace(*array_buffer) ||
|
| + isolate->heap()->array_buffers_list()->IsUndefined()) {
|
| + array_buffer->set_weak_next(isolate->heap()->array_buffers_list());
|
| + isolate->heap()->set_array_buffers_list(*array_buffer);
|
| + if (isolate->heap()->last_array_buffer_in_list()->IsUndefined()) {
|
| + isolate->heap()->set_last_array_buffer_in_list(*array_buffer);
|
| + }
|
| + } else {
|
| + JSArrayBuffer::cast(isolate->heap()->last_array_buffer_in_list())
|
| + ->set_weak_next(*array_buffer);
|
| + isolate->heap()->set_last_array_buffer_in_list(*array_buffer);
|
| + }
|
| array_buffer->set_weak_first_view(isolate->heap()->undefined_value());
|
| }
|
|
|
|
|