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