comparison agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java @ 6848:8e47bac5643a

7054512: Compress class pointers after perm gen removal Summary: support of compress class pointers in the compilers. Reviewed-by: kvn, twisti
author roland
date Tue, 09 Oct 2012 10:11:38 +0200
parents 5a98bf7d847b
children ec0c4951286c
comparison
equal deleted inserted replaced
6847:65d07d9ee446 6848:8e47bac5643a
101 private int objectAlignmentInBytes; 101 private int objectAlignmentInBytes;
102 private int minObjAlignmentInBytes; 102 private int minObjAlignmentInBytes;
103 private int logMinObjAlignmentInBytes; 103 private int logMinObjAlignmentInBytes;
104 private int heapWordSize; 104 private int heapWordSize;
105 private int heapOopSize; 105 private int heapOopSize;
106 private int klassPtrSize;
106 private int oopSize; 107 private int oopSize;
107 /** This is only present in a non-core build */ 108 /** This is only present in a non-core build */
108 private CodeCache codeCache; 109 private CodeCache codeCache;
109 /** This is only present in a C1 build */ 110 /** This is only present in a C1 build */
110 private Runtime1 runtime1; 111 private Runtime1 runtime1;
127 private static Type intxType; 128 private static Type intxType;
128 private static Type uintxType; 129 private static Type uintxType;
129 private static CIntegerType boolType; 130 private static CIntegerType boolType;
130 private Boolean sharingEnabled; 131 private Boolean sharingEnabled;
131 private Boolean compressedOopsEnabled; 132 private Boolean compressedOopsEnabled;
132 private Boolean compressedHeadersEnabled; 133 private Boolean compressedKlassPointersEnabled;
133 134
134 // command line flags supplied to VM - see struct Flag in globals.hpp 135 // command line flags supplied to VM - see struct Flag in globals.hpp
135 public static final class Flag { 136 public static final class Flag {
136 private String type; 137 private String type;
137 private String name; 138 private String name;
348 // Size info for oops within java objects is fixed 349 // Size info for oops within java objects is fixed
349 heapOopSize = (int)getIntSize(); 350 heapOopSize = (int)getIntSize();
350 } else { 351 } else {
351 heapOopSize = (int)getOopSize(); 352 heapOopSize = (int)getOopSize();
352 } 353 }
354
355 if (isCompressedKlassPointersEnabled()) {
356 klassPtrSize = (int)getIntSize();
357 } else {
358 klassPtrSize = (int)getOopSize(); // same as an oop
359 }
353 } 360 }
354 361
355 /** This could be used by a reflective runtime system */ 362 /** This could be used by a reflective runtime system */
356 public static void initialize(TypeDataBase db, boolean isBigEndian) { 363 public static void initialize(TypeDataBase db, boolean isBigEndian) {
357 if (soleInstance != null) { 364 if (soleInstance != null) {
372 379
373 for (Iterator iter = vmInitializedObservers.iterator(); iter.hasNext(); ) { 380 for (Iterator iter = vmInitializedObservers.iterator(); iter.hasNext(); ) {
374 ((Observer) iter.next()).update(null, null); 381 ((Observer) iter.next()).update(null, null);
375 } 382 }
376 383
377 debugger.putHeapConst(soleInstance.getHeapOopSize(), Universe.getNarrowOopBase(), 384 debugger.putHeapConst(soleInstance.getHeapOopSize(), soleInstance.getKlassPtrSize(),
378 Universe.getNarrowOopShift()); 385 Universe.getNarrowOopBase(), Universe.getNarrowOopShift(),
386 Universe.getNarrowKlassBase(), Universe.getNarrowKlassShift());
379 } 387 }
380 388
381 /** This is used by the debugging system */ 389 /** This is used by the debugging system */
382 public static void shutdown() { 390 public static void shutdown() {
383 soleInstance = null; 391 soleInstance = null;
534 } 542 }
535 543
536 public int getHeapOopSize() { 544 public int getHeapOopSize() {
537 return heapOopSize; 545 return heapOopSize;
538 } 546 }
547
548 public int getKlassPtrSize() {
549 return klassPtrSize;
550 }
539 /** Utility routine for getting data structure alignment correct */ 551 /** Utility routine for getting data structure alignment correct */
540 public long alignUp(long size, long alignment) { 552 public long alignUp(long size, long alignment) {
541 return (size + alignment - 1) & ~(alignment - 1); 553 return (size + alignment - 1) & ~(alignment - 1);
542 } 554 }
543 555
782 (flag.getBool()? Boolean.TRUE: Boolean.FALSE); 794 (flag.getBool()? Boolean.TRUE: Boolean.FALSE);
783 } 795 }
784 return compressedOopsEnabled.booleanValue(); 796 return compressedOopsEnabled.booleanValue();
785 } 797 }
786 798
787 public boolean isCompressedHeadersEnabled() { 799 public boolean isCompressedKlassPointersEnabled() {
788 if (compressedHeadersEnabled == null) { 800 if (compressedKlassPointersEnabled == null) {
789 Flag flag = getCommandLineFlag("UseCompressedHeaders"); 801 Flag flag = getCommandLineFlag("UseCompressedKlassPointers");
790 compressedHeadersEnabled = (flag == null) ? Boolean.FALSE: 802 compressedKlassPointersEnabled = (flag == null) ? Boolean.FALSE:
791 (flag.getBool()? Boolean.TRUE: Boolean.FALSE); 803 (flag.getBool()? Boolean.TRUE: Boolean.FALSE);
792 } 804 }
793 return compressedHeadersEnabled.booleanValue(); 805 return compressedKlassPointersEnabled.booleanValue();
794 } 806 }
795 807
796 public int getObjectAlignmentInBytes() { 808 public int getObjectAlignmentInBytes() {
797 if (objectAlignmentInBytes == 0) { 809 if (objectAlignmentInBytes == 0) {
798 Flag flag = getCommandLineFlag("ObjectAlignmentInBytes"); 810 Flag flag = getCommandLineFlag("ObjectAlignmentInBytes");