117 public HeapRegion next() { return positionToNext(); } 118 119 @Override 120 public void remove() { /* not supported */ } 121 122 HeapRegionIterator(long totalLength) { 123 index = 0; 124 length = totalLength; 125 positionToNext(); 126 } 127 } 128 129 public Iterator<HeapRegion> heapRegionIterator(long committedLength) { 130 return new HeapRegionIterator(committedLength); 131 } 132 133 public G1HeapRegionTable(Address addr) { 134 super(addr); 135 } 136 137 public HeapRegion getByAddress(Address addr) { 138 long biasedIndex = addr.asLongValue() >>> shiftBy(); 139 long offset = biasedIndex * HeapRegion.getPointerSize(); 140 Address result = (addr instanceof OopHandle) ? addr.addOffsetToAsOopHandle(offset) 141 : addr.addOffsetTo(offset); 142 return new HeapRegion(result); 143 } 144 } | 117 public HeapRegion next() { return positionToNext(); } 118 119 @Override 120 public void remove() { /* not supported */ } 121 122 HeapRegionIterator(long totalLength) { 123 index = 0; 124 length = totalLength; 125 positionToNext(); 126 } 127 } 128 129 public Iterator<HeapRegion> heapRegionIterator(long committedLength) { 130 return new HeapRegionIterator(committedLength); 131 } 132 133 public G1HeapRegionTable(Address addr) { 134 super(addr); 135 } 136 137 public HeapRegion getByAddress(Address target) { 138 Address arrayAddr = biasedBaseField.getValue(addr); 139 long biasedIndex = target.asLongValue() >>> shiftBy(); 140 long offset = biasedIndex * HeapRegion.getPointerSize(); 141 Address regionAddr = arrayAddr.getAddressAt(offset); 142 return (HeapRegion)VMObjectFactory.newObject(HeapRegion.class, regionAddr); 143 } 144 } |