Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/vmTestbase/vm/compiler/optimizations/partialpeel/Do.java
41161 views
1
/*
2
* Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
package vm.compiler.optimizations.partialpeel;
24
25
import nsk.share.GoldChecker;
26
import vm.compiler.share.CompilerTest;
27
import vm.compiler.share.CompilerTestLauncher;
28
import vm.compiler.share.Random;
29
30
import java.util.Arrays;
31
import java.util.List;
32
33
public class Do {
34
35
36
public static void main(String[] args) {
37
GoldChecker goldChecker = new GoldChecker("Do");
38
39
for(CompilerTest test: doTests) {
40
goldChecker.println(test + " = " + CompilerTestLauncher.launch(test));
41
}
42
43
goldChecker.check();
44
}
45
46
private final static int N = 1000;
47
private final static int x0 = 232;
48
private final static int x1 = 562;
49
private final static int x2 = 526;
50
private final static int x3 = 774;
51
52
public static final List<CompilerTest<Integer>> doTests = Arrays.asList(
53
new CompilerTest<Integer>("do1") {
54
@Override
55
public Integer execute(Random random) {
56
int s = random.nextInt(1000);
57
int i = 0;
58
do {
59
if (s * i > x0) {
60
break;
61
}
62
s++;
63
i++;
64
} while (i < N);
65
return s + i;
66
}
67
},
68
69
//do + break on sum of inductive vars
70
new CompilerTest<Integer>("do2") {
71
@Override
72
public Integer execute(Random random) {
73
int s = random.nextInt(1000);
74
int i = 0;
75
do {
76
if (s + i > x0) {
77
break;
78
}
79
s++;
80
i++;
81
} while (i < N);
82
return s + i;
83
}
84
},
85
86
//do + break on shifted inductive vars
87
new CompilerTest<Integer>("do3") {
88
@Override
89
public Integer execute(Random random) {
90
int s = random.nextInt(1000);
91
int i = 0;
92
do {
93
if (x3 + s < x0) {
94
break;
95
}
96
s += i;
97
i++;
98
} while (i < N);
99
return s + i;
100
}
101
},
102
103
//do + break on shifted inductive vars + invariant condition
104
new CompilerTest<Integer>("do4") {
105
@Override
106
public Integer execute(Random random) {
107
int i = x0 + random.nextInt(1000);
108
int j = x1;
109
int k = x2;
110
111
do {
112
if (x3 + k < x0) {
113
break;
114
}
115
i++;
116
k++;
117
if (x2 > x1) {
118
j += i;
119
k += j;
120
}
121
122
} while (i < N);
123
return k + i;
124
}
125
},
126
127
//do + break on shifted inductive vars + invariant condition
128
new CompilerTest<Integer>("do5") {
129
@Override
130
public Integer execute(Random random) {
131
int i = x0 + random.nextInt(1000);
132
int j = x1;
133
int k = x2;
134
135
do {
136
if (k < x0) {
137
break;
138
}
139
i++;
140
if (x2 > x1) {
141
j += i;
142
k += j;
143
}
144
145
} while (i < N);
146
return k + i;
147
}
148
},
149
150
//do + break on hidden inductive vars + invariant condition
151
new CompilerTest<Integer>("do6") {
152
@Override
153
public Integer execute(Random random) {
154
int i = x0;
155
int j = x1 + random.nextInt(1000);
156
int k = x2;
157
158
do {
159
if (k < x0) {
160
break;
161
}
162
i++;
163
k++;
164
if (k > x1) {
165
j += i;
166
k += j + i;
167
}
168
169
} while (i < N);
170
return k + i;
171
}
172
}
173
174
);
175
}
176
177