Mercurial > hg > graal-compiler
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 } |