diff options
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/osr-maze1.js')
-rw-r--r-- | deps/v8/test/mjsunit/compiler/osr-maze1.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/osr-maze1.js b/deps/v8/test/mjsunit/compiler/osr-maze1.js new file mode 100644 index 0000000000..6e192c17b7 --- /dev/null +++ b/deps/v8/test/mjsunit/compiler/osr-maze1.js @@ -0,0 +1,51 @@ +// Copyright 2015 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 --use-osr --turbo-deoptimization + +function bar(goal) { + var count = 0; + var sum = 11; + var i = 35; + while (i-- > 33) { + if (count++ == goal) %OptimizeOsr(); + sum = sum + i; + } + while (i-- > 31) { + if (count++ == goal) %OptimizeOsr(); + j = 9; + while (j-- > 7) { + if (count++ == goal) %OptimizeOsr(); + sum = sum + j * 3; + } + while (j-- > 5) { + if (count++ == goal) %OptimizeOsr(); + sum = sum + j * 5; + } + } + while (i-- > 29) { + if (count++ == goal) %OptimizeOsr(); + while (j-- > 3) { + var k = 10; + if (count++ == goal) %OptimizeOsr(); + while (k-- > 8) { + if (count++ == goal) %OptimizeOsr(); + sum = sum + k * 11; + } + } + while (j-- > 1) { + if (count++ == goal) %OptimizeOsr(); + while (k-- > 6) { + if (count++ == goal) %OptimizeOsr(); + sum = sum + j * 13; + } + } + } + return sum; +} + +for (var i = 0; i < 13; i++) { + %DeoptimizeFunction(bar); + assertEquals(348, bar(i)); +} |