diff options
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/inlined-array-pop-opt.js')
-rw-r--r-- | deps/v8/test/mjsunit/compiler/inlined-array-pop-opt.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/inlined-array-pop-opt.js b/deps/v8/test/mjsunit/compiler/inlined-array-pop-opt.js new file mode 100644 index 0000000000..c1301489e7 --- /dev/null +++ b/deps/v8/test/mjsunit/compiler/inlined-array-pop-opt.js @@ -0,0 +1,83 @@ +// Copyright 2016 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() { + function foo(a) { return a.pop(); } + + var x = {}; + var a = [x,x,]; + + assertEquals(x, foo(a)); + assertEquals(x, foo(a)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(undefined, foo(a)); + assertOptimized(foo); +})(); + +(function() { + function foo(a) { return a.pop(); } + + var x = 0; + var a = [x,x,]; + + assertEquals(x, foo(a)); + assertEquals(x, foo(a)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(undefined, foo(a)); + assertOptimized(foo); +})(); + +(function() { + function foo(a) { return a.pop(); } + + var x = 0; + var a = [x,x,x]; + + assertEquals(x, foo(a)); + assertEquals(x, foo(a)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(x, foo(a)); + assertOptimized(foo); +})(); + +(function() { + function foo(a) { return a.pop(); } + + var x = {}; + var a = [x,x,x]; + + assertEquals(x, foo(a)); + assertEquals(x, foo(a)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(x, foo(a)); + assertOptimized(foo); +})(); + +(function() { + function foo(a) { return a.pop(); } + + var a = [,,]; + + assertEquals(undefined, foo(a)); + assertEquals(undefined, foo(a)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(undefined, foo(a)); + assertOptimized(foo); +})(); + +(function() { + var pop = Array.prototype.pop; + + function foo(a) { return a.pop(); } + + var a = [1, 2, 3]; + + assertEquals(3, foo(a)); + assertEquals(2, foo(a)); + %OptimizeFunctionOnNextCall(foo); + assertEquals(1, foo(a)); + assertOptimized(foo); +})(); |