diff options
| author | Ben Murdoch <benm@google.com> | 2012-01-20 14:57:15 +0000 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2012-01-20 14:57:15 +0000 |
| commit | 2b4ba1175df6a5a6b9b5cda034189197bf6565ec (patch) | |
| tree | 6a4c479deebb22e68c5d7b915609593adee56a92 /test/mjsunit | |
| parent | 35e02d4f35686cd3d202dab09aa0fdf24651afed (diff) | |
| download | android_external_v8-2b4ba1175df6a5a6b9b5cda034189197bf6565ec.tar.gz android_external_v8-2b4ba1175df6a5a6b9b5cda034189197bf6565ec.tar.bz2 android_external_v8-2b4ba1175df6a5a6b9b5cda034189197bf6565ec.zip | |
Merge V8 at r10446: Roll to 3.6.6.19
Bug: 5688872
Change-Id: Ie6be41e043db4e38abeb6b8d92761d7cc2c294bf
Diffstat (limited to 'test/mjsunit')
| -rw-r--r-- | test/mjsunit/compiler/regress-funcaller.js | 11 | ||||
| -rw-r--r-- | test/mjsunit/compiler/regress-lazy-deopt.js | 48 |
2 files changed, 56 insertions, 3 deletions
diff --git a/test/mjsunit/compiler/regress-funcaller.js b/test/mjsunit/compiler/regress-funcaller.js index 88db147a..5c2a5972 100644 --- a/test/mjsunit/compiler/regress-funcaller.js +++ b/test/mjsunit/compiler/regress-funcaller.js @@ -25,6 +25,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Flags: --allow-natives-syntax + // Test function.caller. function A() {} @@ -40,9 +42,10 @@ A.prototype.g = gee; var o = new A(); -for (var i=0; i<5000000; i++) { +for (var i=0; i<5; i++) { o.g(i); } +%OptimizeFunctionOnNextCall(o.g); assertEquals(gee, o.g(0)); assertEquals(null, o.g(1)); @@ -53,9 +56,10 @@ function hej(x) { return o.g(x); } -for (var j=0; j<5000000; j++) { +for (var j=0; j<5; j++) { hej(j); } +%OptimizeFunctionOnNextCall(hej); assertEquals(gee, hej(0)); assertEquals(hej, hej(1)); @@ -66,8 +70,9 @@ function from_eval(x) { return o.g(x); } -for (var j=0; j<5000000; j++) { +for (var j=0; j<5; j++) { from_eval(j); } +%OptimizeFunctionOnNextCall(from_eval); assertEquals(gee, from_eval(0)); assertEquals(from_eval, from_eval(1)); diff --git a/test/mjsunit/compiler/regress-lazy-deopt.js b/test/mjsunit/compiler/regress-lazy-deopt.js new file mode 100644 index 00000000..d1c3d01d --- /dev/null +++ b/test/mjsunit/compiler/regress-lazy-deopt.js @@ -0,0 +1,48 @@ +// Copyright 2011 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --allow-natives-syntax + +// Test lazy deoptimization after CallFunctionStub. + +function foo() { return 1; } + +function f(x, y) { + var a = [0]; + if (x == 0) { + %DeoptimizeFunction(f); + return 1; + } + a[0] = %_CallFunction(null, x - 1, f); + return x >> a[0]; +} + +f(42); +f(42); +assertEquals(42, f(42)); +%OptimizeFunctionOnNextCall(f); +assertEquals(42, f(42)); |
