Executing the main method of a nested class?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Executing the main method of a nested class?

David Holmes
I have the following:

/*
  * @test
  * @bug 8046171
  * @compile -XDdisablePrivateAccessors CrashTheJIT.java
  * @run main/othervm -Xcomp CrashTheJIT$Nested
  */

public class CrashTheJIT {

     static class Nested2 {
         private Nested2() { }
     }

     public static class Nested {
         public static void main(String[] args) {
             run();
         }
         private static void run() {
             Nested2 n = new Nested2();
         }
     }
}

but it fails because it seems as part of @run jtreg wants to compile
CrashTheJIT$Nested:

ACTION: compile -- Passed. Compilation successful
REASON: User specified action: run compile -XDdisablePrivateAccessors
CrashTheJIT.java
TIME:   1.591 seconds
messages:
command: compile -XDdisablePrivateAccessors
/export/users/dh198349/valhalla/valhalla-base/hotspot/test/runtime/Nestmates/CrashTheJIT.java
reason: User specified action: run compile -XDdisablePrivateAccessors
CrashTheJIT.java
Mode: othervm
elapsed time (seconds): 1.591
...
STDOUT:
STDERR:

ACTION: build -- Not run. Test running...
REASON: Named class compiled on demand
TIME:   JIT$Nested seconds
messages:
command: build CrashTheJIT$Nested
reason: Named class compiled on demand

TEST RESULT: Error. can't find CrashTheJIT$Nested in test directory or
libraries

----

Note the messed up "TIME:   JIT$Nested seconds" as well!

Is there any way to tell jtreg the @compile already handled everything ??

Thanks,
David
Reply | Threaded
Open this post in threaded view
|

Re: Executing the main method of a nested class?

Jonathan Gibbons


On 09/14/2017 09:38 PM, David Holmes wrote:

> I have the following:
>
> /*
>  * @test
>  * @bug 8046171
>  * @compile -XDdisablePrivateAccessors CrashTheJIT.java
>  * @run main/othervm -Xcomp CrashTheJIT$Nested
>  */
>
> public class CrashTheJIT {
>
>     static class Nested2 {
>         private Nested2() { }
>     }
>
>     public static class Nested {
>         public static void main(String[] args) {
>             run();
>         }
>         private static void run() {
>             Nested2 n = new Nested2();
>         }
>     }
> }
>
> but it fails because it seems as part of @run jtreg wants to compile
> CrashTheJIT$Nested:
>
> ACTION: compile -- Passed. Compilation successful
> REASON: User specified action: run compile -XDdisablePrivateAccessors
> CrashTheJIT.java
> TIME:   1.591 seconds
> messages:
> command: compile -XDdisablePrivateAccessors
> /export/users/dh198349/valhalla/valhalla-base/hotspot/test/runtime/Nestmates/CrashTheJIT.java
> reason: User specified action: run compile -XDdisablePrivateAccessors
> CrashTheJIT.java
> Mode: othervm
> elapsed time (seconds): 1.591
> ...
> STDOUT:
> STDERR:
>
> ACTION: build -- Not run. Test running...
> REASON: Named class compiled on demand
> TIME:   JIT$Nested seconds
> messages:
> command: build CrashTheJIT$Nested
> reason: Named class compiled on demand
>
> TEST RESULT: Error. can't find CrashTheJIT$Nested in test directory or
> libraries
>
> ----
>
> Note the messed up "TIME:   JIT$Nested seconds" as well!
>
> Is there any way to tell jtreg the @compile already handled everything ??
>
> Thanks,
> David

David,

Sorry, executing nested classes is not supported.

-- Jon