Register array buffer right after writing it into the object
authorjochen <jochen@chromium.org>
Tue, 30 Jun 2015 12:40:37 +0000 (05:40 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 30 Jun 2015 12:40:54 +0000 (12:40 +0000)
BUG=chromium:504875
R=hpayer@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/1215103003

Cr-Commit-Position: refs/heads/master@{#29377}

src/runtime/runtime-typedarray.cc

index ae10eeb..4d35524 100644 (file)
@@ -28,15 +28,15 @@ void Runtime::SetupArrayBuffer(Isolate* isolate,
   array_buffer->set_is_neuterable(shared == SharedFlag::kNotShared);
   array_buffer->set_is_shared(shared == SharedFlag::kShared);
 
-  Handle<Object> byte_length =
-      isolate->factory()->NewNumberFromSize(allocated_length);
-  CHECK(byte_length->IsSmi() || byte_length->IsHeapNumber());
-  array_buffer->set_byte_length(*byte_length);
-
   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);
 }