41 static {
42 VM.registerVMInitializedObserver(new Observer() {
43 public void update(Observable o, Object data) {
44 initialize(VM.getVM().getTypeDataBase());
45 }
46 });
47 }
48
49 private static boolean typeExists(TypeDataBase db, String type) {
50 try {
51 db.lookupType(type);
52 } catch (RuntimeException e) {
53 return false;
54 }
55 return true;
56 }
57
58 private static synchronized void initialize(TypeDataBase db) {
59 Type type = db.lookupType("CompressedKlassPointers");
60
61 baseField = type.getAddressField("_narrow_klass._base");
62 shiftField = type.getCIntegerField("_narrow_klass._shift");
63 }
64
65 public CompressedKlassPointers() {
66 }
67
68 public static long getBase() {
69 if (baseField.getValue() == null) {
70 return 0;
71 } else {
72 return baseField.getValue().minus(null);
73 }
74 }
75
76 public static int getShift() {
77 return (int)shiftField.getValue();
78 }
79 }
|
41 static {
42 VM.registerVMInitializedObserver(new Observer() {
43 public void update(Observable o, Object data) {
44 initialize(VM.getVM().getTypeDataBase());
45 }
46 });
47 }
48
49 private static boolean typeExists(TypeDataBase db, String type) {
50 try {
51 db.lookupType(type);
52 } catch (RuntimeException e) {
53 return false;
54 }
55 return true;
56 }
57
58 private static synchronized void initialize(TypeDataBase db) {
59 Type type = db.lookupType("CompressedKlassPointers");
60
61 baseField = type.getAddressField("_base");
62 shiftField = type.getCIntegerField("_shift_copy");
63 }
64
65 public CompressedKlassPointers() {
66 }
67
68 public static long getBase() {
69 if (baseField.getValue() == null) {
70 return 0;
71 } else {
72 System.out.println("base: " + baseField.getValue().minus(null));
73 return baseField.getValue().minus(null);
74 }
75 }
76
77 public static int getShift() {
78
79 System.out.println("shift: " + (int)shiftField.getValue());
80 return (int)shiftField.getValue();
81 }
82 }
|