OLD | NEW |
(Empty) | |
| 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 |
| 7 var v = 0; |
| 8 |
| 9 function push_wrapper(array, value) { |
| 10 array.push(value); |
| 11 } |
| 12 function pop_wrapper(array) { |
| 13 return array.pop(); |
| 14 } |
| 15 |
| 16 // Test that Object.observe() notification events are properly sent from |
| 17 // Array.push() and Array.pop() both from optimized and un-optimized code. |
| 18 var array = []; |
| 19 |
| 20 function somethingChanged(changes) { |
| 21 v++; |
| 22 } |
| 23 |
| 24 Object.observe(array, somethingChanged); |
| 25 push_wrapper(array, 1); |
| 26 %RunMicrotasks(); |
| 27 assertEquals(1, array.length); |
| 28 assertEquals(1, v); |
| 29 push_wrapper(array, 1); |
| 30 %RunMicrotasks(); |
| 31 assertEquals(2, array.length); |
| 32 assertEquals(2, v); |
| 33 %OptimizeFunctionOnNextCall(push_wrapper); |
| 34 push_wrapper(array, 1); |
| 35 %RunMicrotasks(); |
| 36 assertEquals(3, array.length); |
| 37 assertEquals(3, v); |
| 38 push_wrapper(array, 1); |
| 39 %RunMicrotasks(); |
| 40 assertEquals(4, array.length); |
| 41 assertEquals(4, v); |
| 42 |
| 43 pop_wrapper(array); |
| 44 %RunMicrotasks(); |
| 45 assertEquals(3, array.length); |
| 46 assertEquals(5, v); |
| 47 pop_wrapper(array); |
| 48 %RunMicrotasks(); |
| 49 assertEquals(2, array.length); |
| 50 assertEquals(6, v); |
| 51 %OptimizeFunctionOnNextCall(pop_wrapper); |
| 52 pop_wrapper(array); |
| 53 %RunMicrotasks(); |
| 54 assertEquals(1, array.length); |
| 55 assertEquals(7, v); |
| 56 pop_wrapper(array); |
| 57 %RunMicrotasks(); |
| 58 assertEquals(0, array.length); |
| 59 assertEquals(8, v); |
OLD | NEW |