comparison agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java @ 904:ef671fb22f73

6868051: (SA) FreeChunk support for compressed oops is broken Reviewed-by: kvn, dcubed
author never
date Thu, 06 Aug 2009 12:24:41 -0700
parents d1605aabd0a1
children 89e0543e1737
comparison
equal deleted inserted replaced
903:15bbd3f505c0 904:ef671fb22f73
61 return (FreeChunk) VMObjectFactory.newObject(FreeChunk.class, prev); 61 return (FreeChunk) VMObjectFactory.newObject(FreeChunk.class, prev);
62 } 62 }
63 63
64 public long size() { 64 public long size() {
65 if (VM.getVM().isCompressedOopsEnabled()) { 65 if (VM.getVM().isCompressedOopsEnabled()) {
66 Mark mark = new Mark(sizeField.getValue(addr)); 66 Mark mark = new Mark(addr.addOffsetTo(sizeField.getOffset()));
67 return mark.getSize(); 67 return mark.getSize();
68 } else { 68 } else {
69 Address size = sizeField.getValue(addr); 69 Address size = sizeField.getValue(addr);
70 Debugger dbg = VM.getVM().getDebugger(); 70 Debugger dbg = VM.getVM().getDebugger();
71 return dbg.getAddressValue(size); 71 return dbg.getAddressValue(size);
81 return f.isFree(); 81 return f.isFree();
82 } 82 }
83 83
84 public boolean isFree() { 84 public boolean isFree() {
85 if (VM.getVM().isCompressedOopsEnabled()) { 85 if (VM.getVM().isCompressedOopsEnabled()) {
86 Mark mark = new Mark(sizeField.getValue(addr)); 86 Mark mark = new Mark(addr.addOffsetTo(sizeField.getOffset()));
87 return mark.isCmsFreeChunk(); 87 return mark.isCmsFreeChunk();
88 } else { 88 } else {
89 Address prev = prevField.getValue(addr); 89 Address prev = prevField.getValue(addr);
90 Debugger dbg = VM.getVM().getDebugger(); 90 Debugger dbg = VM.getVM().getDebugger();
91 long word = dbg.getAddressValue(prev); 91 long word = dbg.getAddressValue(prev);