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