From de690b656ffab2b42f5b0044fb6fba423b3d8887 Mon Sep 17 00:00:00 2001 From: "dslomov@chromium.org" Date: Tue, 25 Mar 2014 12:55:10 +0000 Subject: [PATCH] Allow to neuter array buffer twice in tests. R=jarin@chromium.org Review URL: https://codereview.chromium.org/209083005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/runtime.cc | 4 ++++ test/mjsunit/neuter-twice.js | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 test/mjsunit/neuter-twice.js diff --git a/src/runtime.cc b/src/runtime.cc index d68c8c4..35f4c94 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -911,6 +911,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ArrayBufferIsView) { RUNTIME_FUNCTION(MaybeObject*, Runtime_ArrayBufferNeuter) { HandleScope scope(isolate); CONVERT_ARG_HANDLE_CHECKED(JSArrayBuffer, array_buffer, 0); + if (array_buffer->backing_store() == NULL) { + CHECK(Smi::FromInt(0) == array_buffer->byte_length()); + return isolate->heap()->undefined_value(); + } ASSERT(!array_buffer->is_external()); void* backing_store = array_buffer->backing_store(); size_t byte_length = NumberToSize(isolate, array_buffer->byte_length()); diff --git a/test/mjsunit/neuter-twice.js b/test/mjsunit/neuter-twice.js new file mode 100644 index 0000000..3501cee --- /dev/null +++ b/test/mjsunit/neuter-twice.js @@ -0,0 +1,9 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// Flags: --allow-natives-syntax + +var ab = new ArrayBuffer(100); +%ArrayBufferNeuter(ab); +%ArrayBufferNeuter(ab); -- 2.7.4