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