agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File cms-comp Cdiff agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java

agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java

Print this page

        

*** 26,35 **** --- 26,36 ---- import java.util.*; import sun.jvm.hotspot.debugger.*; import sun.jvm.hotspot.types.*; import sun.jvm.hotspot.runtime.*; + import sun.jvm.hotspot.oops.*; public class FreeChunk extends VMObject { static { VM.registerVMInitializedObserver(new Observer() { public void update(Observable o, Object data) {
*** 40,56 **** private static synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("FreeChunk"); nextField = type.getAddressField("_next"); prevField = type.getAddressField("_prev"); ! sizeField = type.getCIntegerField("_size"); } // Fields private static AddressField nextField; private static AddressField prevField; ! private static CIntegerField sizeField; // Accessors public FreeChunk next() { return (FreeChunk) VMObjectFactory.newObject(FreeChunk.class, nextField.getValue(addr)); } --- 41,57 ---- private static synchronized void initialize(TypeDataBase db) { Type type = db.lookupType("FreeChunk"); nextField = type.getAddressField("_next"); prevField = type.getAddressField("_prev"); ! sizeField = type.getAddressField("_size"); } // Fields private static AddressField nextField; private static AddressField prevField; ! private static AddressField sizeField; // Accessors public FreeChunk next() { return (FreeChunk) VMObjectFactory.newObject(FreeChunk.class, nextField.getValue(addr)); }
*** 59,80 **** Address prev = prevField.getValue(addr).andWithMask(~0x3); return (FreeChunk) VMObjectFactory.newObject(FreeChunk.class, prev); } public long size() { ! return sizeField.getValue(addr); } public FreeChunk(Address addr) { super(addr); } ! public static boolean secondWordIndicatesFreeChunk(long word) { ! return (word & 0x1L) == 0x1L; } public boolean isFree() { ! Debugger dbg = VM.getVM().getDebugger(); Address prev = prevField.getValue(addr); ! return secondWordIndicatesFreeChunk(dbg.getAddressValue(prev)); } } --- 60,95 ---- Address prev = prevField.getValue(addr).andWithMask(~0x3); return (FreeChunk) VMObjectFactory.newObject(FreeChunk.class, prev); } public long size() { ! if (VM.getVM().isCompressedOopsEnabled()) { ! Mark mark = new Mark(sizeField.getValue(addr)); ! return mark.getSize(); ! } else { ! Address size = sizeField.getValue(addr); ! Debugger dbg = VM.getVM().getDebugger(); ! return dbg.getAddressValue(size); } + } public FreeChunk(Address addr) { super(addr); } ! public static boolean indicatesFreeChunk(Address cur) { ! FreeChunk f = new FreeChunk(cur); ! return f.isFree(); } public boolean isFree() { ! if (VM.getVM().isCompressedOopsEnabled()) { ! Mark mark = new Mark(sizeField.getValue(addr)); ! return mark.isCmsFreeChunk(); ! } else { Address prev = prevField.getValue(addr); ! Debugger dbg = VM.getVM().getDebugger(); ! long word = dbg.getAddressValue(prev); ! return (word & 0x1L) == 0x1L; } + } }
agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File