1// Copyright 2014 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Flags: --allow-natives-syntax 6 7function push_wrapper(array, value) { 8 array.push(value); 9} 10function pop_wrapper(array) { 11 return array.pop(); 12} 13 14// Test the frzon arrays throw an exception if you try to push to them, both in 15// optimized and non-optimized code. 16var array = [2, 2]; 17Object.freeze(array); 18 19try { push_wrapper(array, 1); } catch (e) {} 20assertEquals(2, array.length); 21try { push_wrapper(array, 1); } catch (e) {} 22assertEquals(2, array.length); 23%OptimizeFunctionOnNextCall(push_wrapper); 24try { push_wrapper(array, 1); } catch (e) {} 25assertEquals(2, array.length); 26try { push_wrapper(array, 1); } catch (e) {} 27assertEquals(2, array.length); 28 29try { pop_wrapper(array); } catch (e) {} 30assertEquals(2, array.length); 31try { pop_wrapper(array); } catch (e) {} 32assertEquals(2, array.length); 33%OptimizeFunctionOnNextCall(pop_wrapper); 34try { pop_wrapper(array); } catch (e) {} 35assertEquals(2, array.length); 36try { pop_wrapper(array); } catch (e) {} 37assertEquals(2, array.length); 38