agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java Thu May 29 11:13:53 2008
--- new/agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java Thu May 29 11:13:52 2008
*** 77,86 ****
--- 77,98 ----
biasedLockPattern = db.lookupLongConstant("markOopDesc::biased_lock_pattern").longValue();
noHash = db.lookupLongConstant("markOopDesc::no_hash").longValue();
noHashInPlace = db.lookupLongConstant("markOopDesc::no_hash_in_place").longValue();
noLockInPlace = db.lookupLongConstant("markOopDesc::no_lock_in_place").longValue();
maxAge = db.lookupLongConstant("markOopDesc::max_age").longValue();
+
+ /* Constants in markOop used by CMS. */
+ cmsBits = db.lookupLongConstant("markOopDesc::cms_bits").longValue();
+ cmsShift = db.lookupLongConstant("markOopDesc::cms_shift").longValue();
+ cmsMask = db.lookupLongConstant("markOopDesc::cms_mask").longValue();
+ cmsMaskInPlace = db.lookupLongConstant("markOopDesc::cms_mask_in_place").longValue();
+ cmsFreeChunkPattern = db.lookupLongConstant("markOopDesc::cms_free_chunk_pattern").longValue();
+ cmsNoCoalescePattern= db.lookupLongConstant("markOopDesc::cms_no_coalesce_pattern").longValue();
+ sizeShift = db.lookupLongConstant("markOopDesc::size_shift").longValue();
+ sizeBits = db.lookupLongConstant("markOopDesc::size_bits").longValue();
+ sizeMask = db.lookupLongConstant("markOopDesc::size_mask").longValue();
+ sizeMaskInPlace = db.lookupLongConstant("markOopDesc::size_mask_in_place").longValue();
}
// Field accessors
private static CIntegerField markField;
*** 118,127 ****
--- 130,151 ----
private static long noHashInPlace;
private static long noLockInPlace;
private static long maxAge;
+ /* Constants in markOop used by CMS. */
+ private static long cmsBits;
+ private static long cmsShift;
+ private static long cmsMask;
+ private static long cmsMaskInPlace;
+ private static long cmsFreeChunkPattern;
+ private static long cmsNoCoalescePattern;
+ private static long sizeShift;
+ private static long sizeBits;
+ private static long sizeMask;
+ private static long sizeMaskInPlace;
+
public Mark(Address addr) {
super(addr);
}
public long value() {
*** 288,293 ****
--- 312,327 ----
// // Prepare address of oop for placement into mark
// inline static markOop encode_pointer_as_mark(void* p) { return markOop(p)->set_marked(); }
//
// // Recover address of oop from encoded form used in mark
// inline void* decode_pointer() { return clear_lock_bits(); }
+
+ // Copy markOop methods for CMS here.
+ private long cmsEncoding() {
+ return Bits.maskBitsLong(value() >> cmsShift, cmsMask);
+ }
+ public boolean isCmsFreeChunk() {
+ return isUnlocked() &&
+ (cmsEncoding() & cmsFreeChunkPattern) == cmsFreeChunkPattern;
+ }
+ public long getSize() { return (long)(value() >> sizeShift); }
}
agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File