< prev index next >

test/compiler/jvmci/common/CTVMUtilities.java

Print this page




  40 import java.lang.reflect.Executable;
  41 import java.lang.reflect.Field;
  42 import java.lang.reflect.Method;
  43 import java.lang.reflect.Modifier;
  44 import java.lang.reflect.Module;
  45 import java.lang.reflect.Parameter;
  46 import java.util.HashMap;
  47 import java.util.Map;
  48 import java.util.TreeMap;
  49 
  50 public class CTVMUtilities {
  51     /*
  52      * A method to return HotSpotResolvedJavaMethod object using class object
  53      * and method as input
  54      */
  55     public static HotSpotResolvedJavaMethod getResolvedMethod(Class<?> cls,
  56             Executable method) {
  57         if (!(method instanceof Method || method instanceof Constructor)) {
  58             throw new Error("wrong executable type " + method.getClass());
  59         }
  60         Field slotField;
  61         int slot;
  62         try {
  63             slotField = method.getClass().getDeclaredField("slot");
  64             boolean old = slotField.isAccessible();
  65             slotField.setAccessible(true);
  66             slot = slotField.getInt(method);
  67             slotField.setAccessible(old);
  68         } catch (ReflectiveOperationException e) {
  69             throw new Error("TEST BUG: Can't get slot field", e);
  70         }
  71         return CompilerToVMHelper.getResolvedJavaMethodAtSlot(cls, slot);
  72     }
  73 
  74     public static HotSpotResolvedJavaMethod getResolvedMethod(
  75             Executable method) {
  76         return getResolvedMethod(method.getDeclaringClass(), method);
  77     }
  78 
  79     public static InstalledCode getInstalledCode(String name, long address,
  80             long entryPoint) {
  81         return new InstalledCodeStub(name, address, entryPoint);
  82     }
  83     private static class InstalledCodeStub extends InstalledCode {
  84         private InstalledCodeStub(String name, long address, long entryPoint) {
  85             super(name);
  86             this.address = address;
  87             this.entryPoint = entryPoint;
  88         }
  89     }
  90     public static Map<Integer, Integer> getBciToLineNumber(Executable method) {
  91         Map<Integer, Integer> lineNumbers = new TreeMap<>();




  40 import java.lang.reflect.Executable;
  41 import java.lang.reflect.Field;
  42 import java.lang.reflect.Method;
  43 import java.lang.reflect.Modifier;
  44 import java.lang.reflect.Module;
  45 import java.lang.reflect.Parameter;
  46 import java.util.HashMap;
  47 import java.util.Map;
  48 import java.util.TreeMap;
  49 
  50 public class CTVMUtilities {
  51     /*
  52      * A method to return HotSpotResolvedJavaMethod object using class object
  53      * and method as input
  54      */
  55     public static HotSpotResolvedJavaMethod getResolvedMethod(Class<?> cls,
  56             Executable method) {
  57         if (!(method instanceof Method || method instanceof Constructor)) {
  58             throw new Error("wrong executable type " + method.getClass());
  59         }
  60         return CompilerToVMHelper.asResolvedJavaMethod(method);











  61     }
  62 
  63     public static HotSpotResolvedJavaMethod getResolvedMethod(
  64             Executable method) {
  65         return getResolvedMethod(method.getDeclaringClass(), method);
  66     }
  67 
  68     public static InstalledCode getInstalledCode(String name, long address,
  69             long entryPoint) {
  70         return new InstalledCodeStub(name, address, entryPoint);
  71     }
  72     private static class InstalledCodeStub extends InstalledCode {
  73         private InstalledCodeStub(String name, long address, long entryPoint) {
  74             super(name);
  75             this.address = address;
  76             this.entryPoint = entryPoint;
  77         }
  78     }
  79     public static Map<Integer, Integer> getBciToLineNumber(Executable method) {
  80         Map<Integer, Integer> lineNumbers = new TreeMap<>();


< prev index next >