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

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

mercurial