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