regress-353004.js revision b8a8cc1952d61a2f3a2568848933943a543b5d3e
1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2014 the V8 project authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file.
4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Flags: --allow-natives-syntax
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer1 = new ArrayBuffer(100 * 1024);
8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array1 = new Uint8Array(buffer1, {valueOf : function() {
10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  %ArrayBufferNeuter(buffer1);
11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  return 0;
12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}});
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array1.length);
15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
16b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer2 = new ArrayBuffer(100 * 1024);
17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
18b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertThrows(function() {
19b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  var array2 = new Uint8Array(buffer2, 0, {valueOf : function() {
20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      %ArrayBufferNeuter(buffer2);
21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      return 100 * 1024;
22b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }});
23b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}, RangeError);
24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
25b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
26b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer3 = new ArrayBuffer(100 * 1024 * 1024);
27b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar dataView1 = new DataView(buffer3, {valueOf : function() {
28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  %ArrayBufferNeuter(buffer3);
29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  return 0;
30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}});
31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, dataView1.byteLength);
33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer4 = new ArrayBuffer(100 * 1024);
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertThrows(function() {
36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  var dataView2 = new DataView(buffer4, 0, {valueOf : function() {
37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    %ArrayBufferNeuter(buffer4);
38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    return 100 * 1024 * 1024;
39b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }});
40b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}, RangeError);
41b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer5 = new ArrayBuffer(100 * 1024);
44b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer6 = buffer5.slice({valueOf : function() {
45b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  %ArrayBufferNeuter(buffer5);
46b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  return 0;
47b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}}, 100 * 1024 * 1024);
48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, buffer6.byteLength);
49b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
50b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer7 = new ArrayBuffer(100 * 1024 * 1024);
52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer8 = buffer7.slice(0, {valueOf : function() {
53b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  %ArrayBufferNeuter(buffer7);
54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  return 100 * 1024 * 1024;
55b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}});
56b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, buffer8.byteLength);
57b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
58b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer9 = new ArrayBuffer(1024);
59b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array9 = new Uint8Array(buffer9);
60b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array10 = array9.subarray({valueOf : function() {
61b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    %ArrayBufferNeuter(buffer9);
62b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    return 0;
63b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }}, 1024);
64b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array9.length);
65b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array10.length);
66b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
67b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer11 = new ArrayBuffer(1024);
68b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array11 = new Uint8Array(buffer11);
69b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array12 = array11.subarray(0, {valueOf : function() {
70b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      %ArrayBufferNeuter(buffer11);
71b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch      return 1024;
72b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    }});
73b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array11.length);
74b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array12.length);
75