comparison agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapSet.java @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children d1605aabd0a1
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
66 } 66 }
67 67
68 public void visitValueLocation(Address valueAddr) { 68 public void visitValueLocation(Address valueAddr) {
69 } 69 }
70 70
71 public void visitDeadLocation(Address deadAddr) { 71 public void visitNarrowOopLocation(Address narrowOopAddr) {
72 addressVisitor.visitCompOopAddress(narrowOopAddr);
72 } 73 }
73 } 74 }
74 75
75 static { 76 static {
76 VM.registerVMInitializedObserver(new Observer() { 77 VM.registerVMInitializedObserver(new Observer() {
195 visitor.visitDerivedOopLocation(baseLoc, derivedLoc); 196 visitor.visitDerivedOopLocation(baseLoc, derivedLoc);
196 } 197 }
197 } 198 }
198 } 199 }
199 200
200 // We want dead, value and oop oop_types 201 // We want narow oop, value and oop oop_types
201 OopMapValue.OopTypes[] values = new OopMapValue.OopTypes[] { 202 OopMapValue.OopTypes[] values = new OopMapValue.OopTypes[] {
202 OopMapValue.OopTypes.OOP_VALUE, OopMapValue.OopTypes.VALUE_VALUE, OopMapValue.OopTypes.DEAD_VALUE 203 OopMapValue.OopTypes.OOP_VALUE, OopMapValue.OopTypes.VALUE_VALUE, OopMapValue.OopTypes.NARROWOOP_VALUE
203 }; 204 };
204 205
205 { 206 {
206 for (OopMapStream oms = new OopMapStream(map, values); !oms.isDone(); oms.next()) { 207 for (OopMapStream oms = new OopMapStream(map, values); !oms.isDone(); oms.next()) {
207 omv = oms.getCurrent(); 208 omv = oms.getCurrent();
212 // to detect in the debugging system 213 // to detect in the debugging system
213 // assert(Universe::is_heap_or_null(*loc), "found non oop pointer"); 214 // assert(Universe::is_heap_or_null(*loc), "found non oop pointer");
214 visitor.visitOopLocation(loc); 215 visitor.visitOopLocation(loc);
215 } else if (omv.getType() == OopMapValue.OopTypes.VALUE_VALUE) { 216 } else if (omv.getType() == OopMapValue.OopTypes.VALUE_VALUE) {
216 visitor.visitValueLocation(loc); 217 visitor.visitValueLocation(loc);
217 } else if (omv.getType() == OopMapValue.OopTypes.DEAD_VALUE) { 218 } else if (omv.getType() == OopMapValue.OopTypes.NARROWOOP_VALUE) {
218 visitor.visitDeadLocation(loc); 219 visitor.visitNarrowOopLocation(loc);
219 } 220 }
220 } 221 }
221 } 222 }
222 } 223 }
223 } 224 }