comparison test/compiler/uncommontrap/TestStackBangMonitorOwned.java @ 17980:0bf37f737702

8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9 Summary: make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points. Reviewed-by: twisti, kvn
author roland
date Tue, 01 Apr 2014 09:36:49 +0200
parents
children
comparison
equal deleted inserted replaced
17978:ad51f24671c2 17980:0bf37f737702
1 /*
2 * Copyright (c) 2013, 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
24 /*
25 * @test
26 * @bug 8032410
27 * @summary Stack overflow at deoptimization doesn't release owned monitors
28 * @run main/othervm -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,TestStackBangMonitorOwned::m1 -XX:CompileCommand=exclude,TestStackBangMonitorOwned::m2 -Xss256K -XX:-UseOnStackReplacement TestStackBangMonitorOwned
29 *
30 */
31 public class TestStackBangMonitorOwned {
32
33 static class UnloadedClass1 {
34 volatile int field;
35 }
36
37 static Object m1(boolean deopt) {
38 long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
39 l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
40 l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
41 l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
42 l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
43 l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
44 l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
45 l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
46 l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
47 l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
48 l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
49 l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
50 l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
51 l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
52 l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
53 l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
54 l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
55 l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
56 l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
57 l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
58 l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
59 l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
60 l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
61 l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
62 l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
63 l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
64 l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
65 l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
66 l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
67 l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
68 l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
69 l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
70 l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
71 l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
72 l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
73 l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
74 l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
75 l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
76 l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
77 l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
78 l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
79 l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
80 l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
81 l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
82 l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
83 l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
84 l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
85 l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
86 l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
87 l508, l509, l510, l511;
88
89 long ll0, ll1, ll2, ll3, ll4, ll5, ll6, ll7, ll8, ll9, ll10, ll11, ll12,
90 ll13, ll14, ll15, ll16, ll17, ll18, ll19, ll20, ll21, ll22, ll23, ll24,
91 ll25, ll26, ll27, ll28, ll29, ll30, ll31, ll32, ll33, ll34, ll35, ll36,
92 ll37, ll38, ll39, ll40, ll41, ll42, ll43, ll44, ll45, ll46, ll47, ll48,
93 ll49, ll50, ll51, ll52, ll53, ll54, ll55, ll56, ll57, ll58, ll59, ll60,
94 ll61, ll62, ll63, ll64, ll65, ll66, ll67, ll68, ll69, ll70, ll71, ll72,
95 ll73, ll74, ll75, ll76, ll77, ll78, ll79, ll80, ll81, ll82, ll83, ll84,
96 ll85, ll86, ll87, ll88, ll89, ll90, ll91, ll92, ll93, ll94, ll95, ll96,
97 ll97, ll98, ll99, ll100, ll101, ll102, ll103, ll104, ll105, ll106, ll107,
98 ll108, ll109, ll110, ll111, ll112, ll113, ll114, ll115, ll116, ll117,
99 ll118, ll119, ll120, ll121, ll122, ll123, ll124, ll125, ll126, ll127,
100 ll128, ll129, ll130, ll131, ll132, ll133, ll134, ll135, ll136, ll137,
101 ll138, ll139, ll140, ll141, ll142, ll143, ll144, ll145, ll146, ll147,
102 ll148, ll149, ll150, ll151, ll152, ll153, ll154, ll155, ll156, ll157,
103 ll158, ll159, ll160, ll161, ll162, ll163, ll164, ll165, ll166, ll167,
104 ll168, ll169, ll170, ll171, ll172, ll173, ll174, ll175, ll176, ll177,
105 ll178, ll179, ll180, ll181, ll182, ll183, ll184, ll185, ll186, ll187,
106 ll188, ll189, ll190, ll191, ll192, ll193, ll194, ll195, ll196, ll197,
107 ll198, ll199, ll200, ll201, ll202, ll203, ll204, ll205, ll206, ll207,
108 ll208, ll209, ll210, ll211, ll212, ll213, ll214, ll215, ll216, ll217,
109 ll218, ll219, ll220, ll221, ll222, ll223, ll224, ll225, ll226, ll227,
110 ll228, ll229, ll230, ll231, ll232, ll233, ll234, ll235, ll236, ll237,
111 ll238, ll239, ll240, ll241, ll242, ll243, ll244, ll245, ll246, ll247,
112 ll248, ll249, ll250, ll251, ll252, ll253, ll254, ll255, ll256, ll257,
113 ll258, ll259, ll260, ll261, ll262, ll263, ll264, ll265, ll266, ll267,
114 ll268, ll269, ll270, ll271, ll272, ll273, ll274, ll275, ll276, ll277,
115 ll278, ll279, ll280, ll281, ll282, ll283, ll284, ll285, ll286, ll287,
116 ll288, ll289, ll290, ll291, ll292, ll293, ll294, ll295, ll296, ll297,
117 ll298, ll299, ll300, ll301, ll302, ll303, ll304, ll305, ll306, ll307,
118 ll308, ll309, ll310, ll311, ll312, ll313, ll314, ll315, ll316, ll317,
119 ll318, ll319, ll320, ll321, ll322, ll323, ll324, ll325, ll326, ll327,
120 ll328, ll329, ll330, ll331, ll332, ll333, ll334, ll335, ll336, ll337,
121 ll338, ll339, ll340, ll341, ll342, ll343, ll344, ll345, ll346, ll347,
122 ll348, ll349, ll350, ll351, ll352, ll353, ll354, ll355, ll356, ll357,
123 ll358, ll359, ll360, ll361, ll362, ll363, ll364, ll365, ll366, ll367,
124 ll368, ll369, ll370, ll371, ll372, ll373, ll374, ll375, ll376, ll377,
125 ll378, ll379, ll380, ll381, ll382, ll383, ll384, ll385, ll386, ll387,
126 ll388, ll389, ll390, ll391, ll392, ll393, ll394, ll395, ll396, ll397,
127 ll398, ll399, ll400, ll401, ll402, ll403, ll404, ll405, ll406, ll407,
128 ll408, ll409, ll410, ll411, ll412, ll413, ll414, ll415, ll416, ll417,
129 ll418, ll419, ll420, ll421, ll422, ll423, ll424, ll425, ll426, ll427,
130 ll428, ll429, ll430, ll431, ll432, ll433, ll434, ll435, ll436, ll437,
131 ll438, ll439, ll440, ll441, ll442, ll443, ll444, ll445, ll446, ll447,
132 ll448, ll449, ll450, ll451, ll452, ll453, ll454, ll455, ll456, ll457,
133 ll458, ll459, ll460, ll461, ll462, ll463, ll464, ll465, ll466, ll467,
134 ll468, ll469, ll470, ll471, ll472, ll473, ll474, ll475, ll476, ll477,
135 ll478, ll479, ll480, ll481, ll482, ll483, ll484, ll485, ll486, ll487,
136 ll488, ll489, ll490, ll491, ll492, ll493, ll494, ll495, ll496, ll497,
137 ll498, ll499, ll500, ll501, ll502, ll503, ll504, ll505, ll506, ll507,
138 ll508, ll509, ll510, ll511;
139
140 if (deopt) {
141 method_entered = true;
142 synchronized(monitor) {
143 do_monitor_acquire = true;
144 UnloadedClass1 res = new UnloadedClass1(); // forces deopt with c2
145 res.field = 0; //forced deopt with c1
146 return res;
147 }
148 }
149 return null;
150 }
151
152 static boolean m2(boolean deopt) {
153 long l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12,
154 l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24,
155 l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36,
156 l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48,
157 l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60,
158 l61, l62, l63, l64, l65, l66, l67, l68, l69, l70, l71, l72,
159 l73, l74, l75, l76, l77, l78, l79, l80, l81, l82, l83, l84,
160 l85, l86, l87, l88, l89, l90, l91, l92, l93, l94, l95, l96,
161 l97, l98, l99, l100, l101, l102, l103, l104, l105, l106, l107,
162 l108, l109, l110, l111, l112, l113, l114, l115, l116, l117,
163 l118, l119, l120, l121, l122, l123, l124, l125, l126, l127,
164 l128, l129, l130, l131, l132, l133, l134, l135, l136, l137,
165 l138, l139, l140, l141, l142, l143, l144, l145, l146, l147,
166 l148, l149, l150, l151, l152, l153, l154, l155, l156, l157,
167 l158, l159, l160, l161, l162, l163, l164, l165, l166, l167,
168 l168, l169, l170, l171, l172, l173, l174, l175, l176, l177,
169 l178, l179, l180, l181, l182, l183, l184, l185, l186, l187,
170 l188, l189, l190, l191, l192, l193, l194, l195, l196, l197,
171 l198, l199, l200, l201, l202, l203, l204, l205, l206, l207,
172 l208, l209, l210, l211, l212, l213, l214, l215, l216, l217,
173 l218, l219, l220, l221, l222, l223, l224, l225, l226, l227,
174 l228, l229, l230, l231, l232, l233, l234, l235, l236, l237,
175 l238, l239, l240, l241, l242, l243, l244, l245, l246, l247,
176 l248, l249, l250, l251, l252, l253, l254, l255, l256, l257,
177 l258, l259, l260, l261, l262, l263, l264, l265, l266, l267,
178 l268, l269, l270, l271, l272, l273, l274, l275, l276, l277,
179 l278, l279, l280, l281, l282, l283, l284, l285, l286, l287,
180 l288, l289, l290, l291, l292, l293, l294, l295, l296, l297,
181 l298, l299, l300, l301, l302, l303, l304, l305, l306, l307,
182 l308, l309, l310, l311, l312, l313, l314, l315, l316, l317,
183 l318, l319, l320, l321, l322, l323, l324, l325, l326, l327,
184 l328, l329, l330, l331, l332, l333, l334, l335, l336, l337,
185 l338, l339, l340, l341, l342, l343, l344, l345, l346, l347,
186 l348, l349, l350, l351, l352, l353, l354, l355, l356, l357,
187 l358, l359, l360, l361, l362, l363, l364, l365, l366, l367,
188 l368, l369, l370, l371, l372, l373, l374, l375, l376, l377,
189 l378, l379, l380, l381, l382, l383, l384, l385, l386, l387,
190 l388, l389, l390, l391, l392, l393, l394, l395, l396, l397,
191 l398, l399, l400, l401, l402, l403, l404, l405, l406, l407,
192 l408, l409, l410, l411, l412, l413, l414, l415, l416, l417,
193 l418, l419, l420, l421, l422, l423, l424, l425, l426, l427,
194 l428, l429, l430, l431, l432, l433, l434, l435, l436, l437,
195 l438, l439, l440, l441, l442, l443, l444, l445, l446, l447,
196 l448, l449, l450, l451, l452, l453, l454, l455, l456, l457,
197 l458, l459, l460, l461, l462, l463, l464, l465, l466, l467,
198 l468, l469, l470, l471, l472, l473, l474, l475, l476, l477,
199 l478, l479, l480, l481, l482, l483, l484, l485, l486, l487,
200 l488, l489, l490, l491, l492, l493, l494, l495, l496, l497,
201 l498, l499, l500, l501, l502, l503, l504, l505, l506, l507,
202 l508, l509, l510, l511;
203
204 boolean do_m3 = false;
205 try {
206 do_m3 = m2(deopt);
207 } catch (StackOverflowError e) {
208 return true;
209 }
210 if (do_m3) {
211 try {
212 m1(deopt);
213 } catch (StackOverflowError e) {}
214 }
215 return false;
216 }
217
218 // Used for synchronization betwen threads
219 static volatile boolean thread_started = false;
220 static volatile boolean do_monitor_acquire = false;
221 static volatile boolean monitor_acquired = false;
222 static volatile boolean method_entered = false;
223
224 static Object monitor = new Object();
225
226 static public void main(String[] args) {
227 // get m1 compiled
228 for (int i = 0; i < 20000; i++) {
229 m1(false);
230 }
231
232 Thread thread = new Thread() {
233 public void run() {
234 thread_started = true;
235 while(!do_monitor_acquire);
236 System.out.println("Ok to try to acquire the lock");
237 synchronized(monitor) {
238 monitor_acquired = true;
239 }
240 }
241 };
242
243 thread.setDaemon(true);
244 thread.start();
245
246 while(!thread_started);
247
248 m2(true);
249
250 if (!method_entered) {
251 System.out.println("TEST PASSED");
252 return;
253 }
254
255 for (int i = 0; i < 10; i++) {
256 System.out.println("Is lock acquired?");
257 if (monitor_acquired) {
258 System.out.println("TEST PASSED");
259 return;
260 }
261 try {
262 Thread.sleep(10000);
263 } catch(InterruptedException ie) {
264 }
265 }
266 System.out.println("TEST FAILED");
267 }
268 }