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