test/hotspot/jtreg/runtime/appcds/test-classes/DummyClassHelper.java
changeset 48832 f1e8ddd6fdc4
parent 48138 78b2ecdd3c4b
child 54927 1512d88b24c6
equal deleted inserted replaced
48831:05894c073b7e 48832:f1e8ddd6fdc4
     1 /*
     1 /*
     2  * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    25 import java.lang.*;
    25 import java.lang.*;
    26 import java.lang.reflect.*;
    26 import java.lang.reflect.*;
    27 import sun.hotspot.WhiteBox;
    27 import sun.hotspot.WhiteBox;
    28 
    28 
    29 public class DummyClassHelper {
    29 public class DummyClassHelper {
       
    30     static void checkDummyMethod(Class<?> cls, String className) {
       
    31         Method m = null;
       
    32         try {
       
    33             m = cls.getMethod("thisClassIsDummy");
       
    34             throw new java.lang.RuntimeException(className +
       
    35                 " should be loaded from the jimage and should not have the thisClassIsDummy() method.");
       
    36         } catch(NoSuchMethodException ex) {
       
    37             System.out.println(ex.toString());
       
    38         }
       
    39     }
       
    40 
    30     public static void main(String[] args) throws Exception {
    41     public static void main(String[] args) throws Exception {
    31         String[] classNames = {args[0], args[1]};
    42         String[] classNames = {args[0], args[1]};
    32         Class cls = null;
    43         Class cls = null;
    33         if (args.length == 2) {
    44         boolean doWBCheck = (args.length == 3);
    34             for (int i = 0; i < classNames.length; i++) {
    45         WhiteBox wb = null;
    35                 Method m = null;
    46         if (doWBCheck) {
    36                 cls = Class.forName(classNames[i]);
    47             wb = WhiteBox.getWhiteBox();
    37                 try {
    48         }
    38                     m = cls.getMethod("thisClassIsDummy");
    49         for (int i = 0; i < classNames.length; i++) {
       
    50             cls = Class.forName(classNames[i]);
       
    51             checkDummyMethod(cls, classNames[i]);
       
    52             if (doWBCheck) {
       
    53                 if (!wb.isSharedClass(cls)) {
    39                     throw new java.lang.RuntimeException(classNames[i] +
    54                     throw new java.lang.RuntimeException(classNames[i] +
    40                         " should be loaded from the jimage and should not have the thisClassIsDummy() method.");
    55                         ".class should be in shared space.");
    41                 } catch(NoSuchMethodException ex) {
       
    42                     System.out.println(ex.toString());
       
    43                 }
       
    44             }
       
    45         } else {
       
    46             WhiteBox wb = WhiteBox.getWhiteBox();
       
    47             for (int i = 0; i < classNames.length; i++) {
       
    48                 cls = Class.forName(classNames[i]);
       
    49                 if (!wb.isSharedClass(cls)) {
       
    50                     System.out.println(classNames[i] + ".class" + " is not in shared space as expected.");
       
    51                 } else {
       
    52                     throw new java.lang.RuntimeException(classNames[i] +
       
    53                         ".class shouldn't be in shared space.");
       
    54                 }
    56                 }
    55             }
    57             }
    56         }
    58         }
    57     }
    59     }
    58 }
    60 }