regress-313763.js (1213B)
1 /* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 //----------------------------------------------------------------------------- 7 var BUGNUMBER = 313763; 8 var summary = 'Root jsarray.c creatures'; 9 var actual = ''; 10 var expect = ''; 11 12 printBugNumber(BUGNUMBER); 13 printStatus (summary); 14 printStatus ('This bug requires TOO_MUCH_GC'); 15 16 var N = 0x80000002; 17 var array = Array(N); 18 array[N - 1] = 1; 19 array[N - 2] = 2; 20 21 // Set getter not to wait until engine loops through 2^31 holes in the array. 22 var LOOP_TERMINATOR = "stop_long_loop"; 23 array.__defineGetter__(N - 2, function() { 24 throw "stop_long_loop"; 25 }); 26 27 var prepared_string = String(1); 28 array.__defineGetter__(N - 1, function() { 29 var tmp = prepared_string; 30 prepared_string = null; 31 return tmp; 32 }) 33 34 35 try { 36 array.unshift(1); 37 } catch (e) { 38 if (e !== LOOP_TERMINATOR) 39 throw e; 40 } 41 42 var expect = "1"; 43 var actual = array[N]; 44 printStatus(expect === actual); 45 46 reportCompare(expect, actual, summary);