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<>();
|