/* * @(#)ClassLink.java 1.8 06/10/10 * * Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. * */ /* This test case is created to check C stack overflow in ClassLink * routine that loaded all super classes in the class hierarchy before * linking classes through making a new instance of class cl99. */ import java.io.PrintStream; public class ClassLink implements Runnable { public static void main(String args[]) { Thread t = new Thread(new ClassLink()); t.start(); } public void run() { try { Class [] argTypes = new Class[300]; /* Load all 300 classes in a non-recursive way and without * causing them to link. */ for (int i=0; i < 300; i++) { argTypes[i] = Class.forName("cl" + String.valueOf(i), false, getClass().getClassLoader()); System.out.println("Load class" + "cl" + String.valueOf(i)); } /* Make all the classes link. This will involve deep recursion, * possibly causing a StackOverflowError error. */ Object n = new cl299(); System.out.println("Test INAFFECTIVE: no stack overflow." + " Try reducing stack size."); } catch (StackOverflowError s) { s.printStackTrace(); System.out.println("Test PASSED: StackOverflowError thrown."); } catch (Throwable e) { System.out.println("Test FAILED: " + e + " thrown."); } } } class cl0 {} class cl1 extends cl0 {} class cl2 extends cl1 {} class cl3 extends cl2 {} class cl4 extends cl3 {} class cl5 extends cl4 {} class cl6 extends cl5 {} class cl7 extends cl6 {} class cl8 extends cl7 {} class cl9 extends cl8 {} class cl10 extends cl9 {} class cl11 extends cl10 {} class cl12 extends cl11 {} class cl13 extends cl12 {} class cl14 extends cl13 {} class cl15 extends cl14 {} class cl16 extends cl15 {} class cl17 extends cl16 {} class cl18 extends cl17 {} class cl19 extends cl18 {} class cl20 extends cl19 {} class cl21 extends cl20 {} class cl22 extends cl21 {} class cl23 extends cl22 {} class cl24 extends cl23 {} class cl25 extends cl24 {} class cl26 extends cl25 {} class cl27 extends cl26 {} class cl28 extends cl27 {} class cl29 extends cl28 {} class cl30 extends cl29 {} class cl31 extends cl30 {} class cl32 extends cl31 {} class cl33 extends cl32 {} class cl34 extends cl33 {} class cl35 extends cl34 {} class cl36 extends cl35 {} class cl37 extends cl36 {} class cl38 extends cl37 {} class cl39 extends cl38 {} class cl40 extends cl39 {} class cl41 extends cl40 {} class cl42 extends cl41 {} class cl43 extends cl42 {} class cl44 extends cl43 {} class cl45 extends cl44 {} class cl46 extends cl45 {} class cl47 extends cl46 {} class cl48 extends cl47 {} class cl49 extends cl48 {} class cl50 extends cl49 {} class cl51 extends cl50 {} class cl52 extends cl51 {} class cl53 extends cl52 {} class cl54 extends cl53 {} class cl55 extends cl54 {} class cl56 extends cl55 {} class cl57 extends cl56 {} class cl58 extends cl57 {} class cl59 extends cl58 {} class cl60 extends cl59 {} class cl61 extends cl60 {} class cl62 extends cl61 {} class cl63 extends cl62 {} class cl64 extends cl63 {} class cl65 extends cl64 {} class cl66 extends cl65 {} class cl67 extends cl66 {} class cl68 extends cl67 {} class cl69 extends cl68 {} class cl70 extends cl69 {} class cl71 extends cl70 {} class cl72 extends cl71 {} class cl73 extends cl72 {} class cl74 extends cl73 {} class cl75 extends cl74 {} class cl76 extends cl75 {} class cl77 extends cl76 {} class cl78 extends cl77 {} class cl79 extends cl78 {} class cl80 extends cl79 {} class cl81 extends cl80 {} class cl82 extends cl81 {} class cl83 extends cl82 {} class cl84 extends cl83 {} class cl85 extends cl84 {} class cl86 extends cl85 {} class cl87 extends cl86 {} class cl88 extends cl87 {} class cl89 extends cl88 {} class cl90 extends cl89 {} class cl91 extends cl90 {} class cl92 extends cl91 {} class cl93 extends cl92 {} class cl94 extends cl93 {} class cl95 extends cl94 {} class cl96 extends cl95 {} class cl97 extends cl96 {} class cl98 extends cl97 {} class cl99 extends cl98 {} class cl100 extends cl99 {} class cl101 extends cl100 {} class cl102 extends cl101 {} class cl103 extends cl102 {} class cl104 extends cl103 {} class cl105 extends cl104 {} class cl106 extends cl105 {} class cl107 extends cl106 {} class cl108 extends cl107 {} class cl109 extends cl108 {} class cl110 extends cl109 {} class cl111 extends cl110 {} class cl112 extends cl111 {} class cl113 extends cl112 {} class cl114 extends cl113 {} class cl115 extends cl114 {} class cl116 extends cl115 {} class cl117 extends cl116 {} class cl118 extends cl117 {} class cl119 extends cl118 {} class cl120 extends cl119 {} class cl121 extends cl120 {} class cl122 extends cl121 {} class cl123 extends cl122 {} class cl124 extends cl123 {} class cl125 extends cl124 {} class cl126 extends cl125 {} class cl127 extends cl126 {} class cl128 extends cl127 {} class cl129 extends cl128 {} class cl130 extends cl129 {} class cl131 extends cl130 {} class cl132 extends cl131 {} class cl133 extends cl132 {} class cl134 extends cl133 {} class cl135 extends cl134 {} class cl136 extends cl135 {} class cl137 extends cl136 {} class cl138 extends cl137 {} class cl139 extends cl138 {} class cl140 extends cl139 {} class cl141 extends cl140 {} class cl142 extends cl141 {} class cl143 extends cl142 {} class cl144 extends cl143 {} class cl145 extends cl144 {} class cl146 extends cl145 {} class cl147 extends cl146 {} class cl148 extends cl147 {} class cl149 extends cl148 {} class cl150 extends cl149 {} class cl151 extends cl150 {} class cl152 extends cl151 {} class cl153 extends cl152 {} class cl154 extends cl153 {} class cl155 extends cl154 {} class cl156 extends cl155 {} class cl157 extends cl156 {} class cl158 extends cl157 {} class cl159 extends cl158 {} class cl160 extends cl159 {} class cl161 extends cl160 {} class cl162 extends cl161 {} class cl163 extends cl162 {} class cl164 extends cl163 {} class cl165 extends cl164 {} class cl166 extends cl165 {} class cl167 extends cl166 {} class cl168 extends cl167 {} class cl169 extends cl168 {} class cl170 extends cl169 {} class cl171 extends cl170 {} class cl172 extends cl171 {} class cl173 extends cl172 {} class cl174 extends cl173 {} class cl175 extends cl174 {} class cl176 extends cl175 {} class cl177 extends cl176 {} class cl178 extends cl177 {} class cl179 extends cl178 {} class cl180 extends cl179 {} class cl181 extends cl180 {} class cl182 extends cl181 {} class cl183 extends cl182 {} class cl184 extends cl183 {} class cl185 extends cl184 {} class cl186 extends cl185 {} class cl187 extends cl186 {} class cl188 extends cl187 {} class cl189 extends cl188 {} class cl190 extends cl189 {} class cl191 extends cl190 {} class cl192 extends cl191 {} class cl193 extends cl192 {} class cl194 extends cl193 {} class cl195 extends cl194 {} class cl196 extends cl195 {} class cl197 extends cl196 {} class cl198 extends cl197 {} class cl199 extends cl198 {} class cl200 extends cl199 {} class cl201 extends cl200 {} class cl202 extends cl201 {} class cl203 extends cl202 {} class cl204 extends cl203 {} class cl205 extends cl204 {} class cl206 extends cl205 {} class cl207 extends cl206 {} class cl208 extends cl207 {} class cl209 extends cl208 {} class cl210 extends cl209 {} class cl211 extends cl210 {} class cl212 extends cl211 {} class cl213 extends cl212 {} class cl214 extends cl213 {} class cl215 extends cl214 {} class cl216 extends cl215 {} class cl217 extends cl216 {} class cl218 extends cl217 {} class cl219 extends cl218 {} class cl220 extends cl219 {} class cl221 extends cl220 {} class cl222 extends cl221 {} class cl223 extends cl222 {} class cl224 extends cl223 {} class cl225 extends cl224 {} class cl226 extends cl225 {} class cl227 extends cl226 {} class cl228 extends cl227 {} class cl229 extends cl228 {} class cl230 extends cl229 {} class cl231 extends cl230 {} class cl232 extends cl231 {} class cl233 extends cl232 {} class cl234 extends cl233 {} class cl235 extends cl234 {} class cl236 extends cl235 {} class cl237 extends cl236 {} class cl238 extends cl237 {} class cl239 extends cl238 {} class cl240 extends cl239 {} class cl241 extends cl240 {} class cl242 extends cl241 {} class cl243 extends cl242 {} class cl244 extends cl243 {} class cl245 extends cl244 {} class cl246 extends cl245 {} class cl247 extends cl246 {} class cl248 extends cl247 {} class cl249 extends cl248 {} class cl250 extends cl249 {} class cl251 extends cl250 {} class cl252 extends cl251 {} class cl253 extends cl252 {} class cl254 extends cl253 {} class cl255 extends cl254 {} class cl256 extends cl255 {} class cl257 extends cl256 {} class cl258 extends cl257 {} class cl259 extends cl258 {} class cl260 extends cl259 {} class cl261 extends cl260 {} class cl262 extends cl261 {} class cl263 extends cl262 {} class cl264 extends cl263 {} class cl265 extends cl264 {} class cl266 extends cl265 {} class cl267 extends cl266 {} class cl268 extends cl267 {} class cl269 extends cl268 {} class cl270 extends cl269 {} class cl271 extends cl270 {} class cl272 extends cl271 {} class cl273 extends cl272 {} class cl274 extends cl273 {} class cl275 extends cl274 {} class cl276 extends cl275 {} class cl277 extends cl276 {} class cl278 extends cl277 {} class cl279 extends cl278 {} class cl280 extends cl279 {} class cl281 extends cl280 {} class cl282 extends cl281 {} class cl283 extends cl282 {} class cl284 extends cl283 {} class cl285 extends cl284 {} class cl286 extends cl285 {} class cl287 extends cl286 {} class cl288 extends cl287 {} class cl289 extends cl288 {} class cl290 extends cl289 {} class cl291 extends cl290 {} class cl292 extends cl291 {} class cl293 extends cl292 {} class cl294 extends cl293 {} class cl295 extends cl294 {} class cl296 extends cl295 {} class cl297 extends cl296 {} class cl298 extends cl297 {} class cl299 extends cl298 {}