test/hotspot/jtreg/testlibrary/jvmti/TransformerAgent.java
changeset 48864 42a2dc52a4e9
parent 47216 71c04702a3d5
equal deleted inserted replaced
48863:ca551fa1c8cd 48864:42a2dc52a4e9
    55         premain(args, inst);
    55         premain(args, inst);
    56     }
    56     }
    57 
    57 
    58 
    58 
    59     static class SimpleTransformer implements ClassFileTransformer {
    59     static class SimpleTransformer implements ClassFileTransformer {
    60        public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
    60         public byte[] transform(ClassLoader loader, String name, Class<?> classBeingRedefined,
    61                             ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
    61                                 ProtectionDomain pd, byte[] buffer) throws IllegalClassFormatException {
       
    62             try {
       
    63                 log("SimpleTransformer called for: " + name + "@" + incrCounter(name));
       
    64                 if (!shouldTransform(name))
       
    65                     return null;
    62 
    66 
    63             log("SimpleTransformer called for: " + name + "@" + incrCounter(name));
    67                 log("transforming: class name = " + name);
    64             if (!shouldTransform(name))
    68                 int nrOfReplacements = TransformUtil.replace(buffer, TransformUtil.BeforePattern,
    65                 return null;
    69                                                            TransformUtil.AfterPattern);
    66 
    70                 log("replaced the string, nrOfReplacements = " + nrOfReplacements);
    67             log("transforming: class name = " + name);
    71             } catch (Throwable t) {
    68             int nrOfReplacements = TransformUtil.replace(buffer, TransformUtil.BeforePattern,
    72                 // The retransform native code that called this method does not propagate
    69                                                          TransformUtil.AfterPattern);
    73                 // exceptions. Instead of getting an uninformative generic error, catch
    70             log("replaced the string, nrOfReplacements = " + nrOfReplacements);
    74                 // problems here and print it, then exit.
       
    75                 log("Transformation failed!");
       
    76                 t.printStackTrace();
       
    77                 System.exit(1);
       
    78             }
    71             return buffer;
    79             return buffer;
    72         }
    80         }
    73 
    81 
    74         // Check class name pattern, since test should only transform certain classes
    82         // Check class name pattern, since test should only transform certain classes
    75         private static boolean shouldTransform(String name) {
    83         private static boolean shouldTransform(String name) {