osr-maze1.js 1.56 KB
Newer Older
1 2 3 4
// 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.

5
// Flags: --allow-natives-syntax --use-osr
6 7 8 9 10

function bar(goal) {
  var count = 0;
  var sum = 11;
  var i = 35;
11
  %PrepareFunctionForOptimization(bar);
12 13 14 15
  while (i-- > 33) {
    if (count++ == goal) %OptimizeOsr();
    sum = sum + i;
  }
16
  %PrepareFunctionForOptimization(bar);
17 18 19
  while (i-- > 31) {
    if (count++ == goal) %OptimizeOsr();
    j = 9;
20
    %PrepareFunctionForOptimization(bar);
21 22 23 24
    while (j-- > 7) {
      if (count++ == goal) %OptimizeOsr();
      sum = sum + j * 3;
    }
25
    %PrepareFunctionForOptimization(bar);
26 27 28 29 30 31
    while (j-- > 5) {
      if (count++ == goal) %OptimizeOsr();
      sum = sum + j * 5;
    }
  }
  while (i-- > 29) {
32
    %PrepareFunctionForOptimization(bar);
33 34 35
    if (count++ == goal) %OptimizeOsr();
    while (j-- > 3) {
      var k = 10;
36
      %PrepareFunctionForOptimization(bar);
37 38
      if (count++ == goal) %OptimizeOsr();
      while (k-- > 8) {
39
        %PrepareFunctionForOptimization(bar);
40 41 42 43 44
        if (count++ == goal) %OptimizeOsr();
        sum = sum + k * 11;
      }
    }
    while (j-- > 1) {
45
      %PrepareFunctionForOptimization(bar);
46 47
      if (count++ == goal) %OptimizeOsr();
      while (k-- > 6) {
48
        %PrepareFunctionForOptimization(bar);
49 50 51 52 53 54 55
        if (count++ == goal) %OptimizeOsr();
        sum = sum + j * 13;
      }
    }
  }
  return sum;
}
56
%PrepareFunctionForOptimization(bar);
57 58 59 60 61

for (var i = 0; i < 13; i++) {
  %DeoptimizeFunction(bar);
  assertEquals(348, bar(i));
}