comparison agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.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 c18cbe5936b8
children
comparison
equal deleted inserted replaced
6847:65d07d9ee446 6848:8e47bac5643a
56 // heap data. 56 // heap data.
57 protected long oopSize; 57 protected long oopSize;
58 protected long heapOopSize; 58 protected long heapOopSize;
59 protected long narrowOopBase; // heap base for compressed oops. 59 protected long narrowOopBase; // heap base for compressed oops.
60 protected int narrowOopShift; // shift to decode compressed oops. 60 protected int narrowOopShift; // shift to decode compressed oops.
61 // class metadata space
62 protected long klassPtrSize;
63 protected long narrowKlassBase; // heap base for compressed klass ptrs.
64 protected int narrowKlassShift; // shift to decode compressed klass ptrs.
61 // Should be initialized if desired by calling initCache() 65 // Should be initialized if desired by calling initCache()
62 private PageCache cache; 66 private PageCache cache;
63 67
64 // State for faster accessors that don't allocate memory on each read 68 // State for faster accessors that don't allocate memory on each read
65 private boolean useFastAccessors; 69 private boolean useFastAccessors;
157 (jshortSize == 2)); 161 (jshortSize == 2));
158 162
159 javaPrimitiveTypesConfigured = true; 163 javaPrimitiveTypesConfigured = true;
160 } 164 }
161 165
162 public void putHeapConst(long heapOopSize, long narrowOopBase, int narrowOopShift) { 166 public void putHeapConst(long heapOopSize, long klassPtrSize, long narrowOopBase, int narrowOopShift,
167 long narrowKlassBase, int narrowKlassShift) {
163 this.heapOopSize = heapOopSize; 168 this.heapOopSize = heapOopSize;
169 this.klassPtrSize = klassPtrSize;
164 this.narrowOopBase = narrowOopBase; 170 this.narrowOopBase = narrowOopBase;
165 this.narrowOopShift = narrowOopShift; 171 this.narrowOopShift = narrowOopShift;
172 this.narrowKlassBase = narrowKlassBase;
173 this.narrowKlassShift = narrowKlassShift;
166 } 174 }
167 175
168 /** May be called by subclasses if desired to initialize the page 176 /** May be called by subclasses if desired to initialize the page
169 cache but may not be overridden */ 177 cache but may not be overridden */
170 protected final void initCache(long pageSize, long maxNumPages) { 178 protected final void initCache(long pageSize, long maxNumPages) {
462 value = (long)(narrowOopBase + (long)(value << narrowOopShift)); 470 value = (long)(narrowOopBase + (long)(value << narrowOopShift));
463 } 471 }
464 return value; 472 return value;
465 } 473 }
466 474
475 protected long readCompKlassAddressValue(long address)
476 throws UnmappedAddressException, UnalignedAddressException {
477 long value = readCInteger(address, getKlassPtrSize(), true);
478 if (value != 0) {
479 value = (long)(narrowKlassBase + (long)(value << narrowKlassShift));
480 }
481 return value;
482 }
483
467 protected void writeAddressValue(long address, long value) 484 protected void writeAddressValue(long address, long value)
468 throws UnmappedAddressException, UnalignedAddressException { 485 throws UnmappedAddressException, UnalignedAddressException {
469 writeCInteger(address, machDesc.getAddressSize(), value); 486 writeCInteger(address, machDesc.getAddressSize(), value);
470 } 487 }
471 488
549 return narrowOopBase; 566 return narrowOopBase;
550 } 567 }
551 public int getNarrowOopShift() { 568 public int getNarrowOopShift() {
552 return narrowOopShift; 569 return narrowOopShift;
553 } 570 }
571
572 public long getKlassPtrSize() {
573 return klassPtrSize;
574 }
575
576 public long getNarrowKlassBase() {
577 return narrowKlassBase;
578 }
579 public int getNarrowKlassShift() {
580 return narrowKlassShift;
581 }
554 } 582 }