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); 44537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben MurdochassertThrows(function() { 45537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch buffer5.slice({valueOf : function() { 46537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch %ArrayBufferNeuter(buffer5); 47537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch return 0; 48537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch }}, 100 * 1024 * 1024); 49537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch}, TypeError); 50b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer7 = new ArrayBuffer(100 * 1024 * 1024); 53537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben MurdochassertThrows(function() { 54537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch buffer7.slice(0, {valueOf : function() { 55537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch %ArrayBufferNeuter(buffer7); 56537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch return 100 * 1024 * 1024; 57537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch }}); 58537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch}, TypeError); 59b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 60b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer9 = new ArrayBuffer(1024); 61b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array9 = new Uint8Array(buffer9); 62b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array10 = array9.subarray({valueOf : function() { 63b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch %ArrayBufferNeuter(buffer9); 64b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return 0; 65b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch }}, 1024); 66b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array9.length); 67b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array10.length); 68b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 69b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar buffer11 = new ArrayBuffer(1024); 70b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array11 = new Uint8Array(buffer11); 71b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvar array12 = array11.subarray(0, {valueOf : function() { 72b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch %ArrayBufferNeuter(buffer11); 73b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return 1024; 74b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch }}); 75b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array11.length); 76b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochassertEquals(0, array12.length); 77