Mercurial > hg > graal-compiler
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"); |