| // Copyright 2014 the V8 project authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // Flags: --allow-natives-syntax | 
 |  | 
 | function push_wrapper(array, value) { | 
 |   array.push(value); | 
 | } | 
 | function pop_wrapper(array) { | 
 |   return array.pop(); | 
 | } | 
 |  | 
 | // Test the frzon arrays throw an exception if you try to push to them, both in | 
 | // optimized and non-optimized code. | 
 | var array = [2, 2]; | 
 | Object.freeze(array); | 
 |  | 
 | try { push_wrapper(array, 1); } catch (e) {} | 
 | assertEquals(2, array.length); | 
 | try { push_wrapper(array, 1); } catch (e) {} | 
 | assertEquals(2, array.length); | 
 | %OptimizeFunctionOnNextCall(push_wrapper); | 
 | try { push_wrapper(array, 1); } catch (e) {} | 
 | assertEquals(2, array.length); | 
 | try { push_wrapper(array, 1); } catch (e) {} | 
 | assertEquals(2, array.length); | 
 |  | 
 | try { pop_wrapper(array); } catch (e) {} | 
 | assertEquals(2, array.length); | 
 | try { pop_wrapper(array); } catch (e) {} | 
 | assertEquals(2, array.length); | 
 | %OptimizeFunctionOnNextCall(pop_wrapper); | 
 | try { pop_wrapper(array); } catch (e) {} | 
 | assertEquals(2, array.length); | 
 | try { pop_wrapper(array); } catch (e) {} | 
 | assertEquals(2, array.length); |