test/runtime/6626217/many_loader1.java.foo

Mon, 28 Jul 2014 15:06:38 -0700

author
fzhinkin
date
Mon, 28 Jul 2014 15:06:38 -0700
changeset 6997
dbb05f6d93c4
parent 0
f90c822e73f8
permissions
-rw-r--r--

8051344: JVM crashed in Compile::start() during method parsing w/ UseRTMDeopt turned on
Summary: call rtm_deopt() only if there were no compilation bailouts before.
Reviewed-by: kvn

aoqi@0 1 // A simple class to extend an abstract class and get loaded with different
aoqi@0 2 // loaders. This class is loaded via LOADER1. A similar named class will
aoqi@0 3 // be loaded via LOADER2.
aoqi@0 4 public class many_loader extends bug_21227 {
aoqi@0 5 public You_Have_Been_P0wned _p0wnee;
aoqi@0 6
aoqi@0 7 // I need to compile (hence call in a loop) a function which returns a value
aoqi@0 8 // loaded from classloader other than the system one. The point of this
aoqi@0 9 // call is to give me an abstract 'hook' into a function loaded with a
aoqi@0 10 // foreign loader.
aoqi@0 11
aoqi@0 12 // The original 'make(boolean)' returns a bug_21227. The VM will inject a
aoqi@0 13 // synthetic method to up-cast the returned 'from_loader1' into a
aoqi@0 14 // 'bug_21227'.
aoqi@0 15 public many_loader[] make( IFace iface ) {
aoqi@0 16 // This function needs to return a value known to be loaded from LOADER2.
aoqi@0 17 // Since I need to use a yet different loader, I need to make an unknown
aoqi@0 18 // foreign call. In this case I'll be using an interface to make the
aoqi@0 19 // unknown call, with but a single implementor so the compiler can do the
aoqi@0 20 // upcast statically.
aoqi@0 21 return iface==null ? null : iface.gen();
aoqi@0 22 }
aoqi@0 23 }

mercurial