[rvm-research] spare one bit from the object header
王晨曦 <[email protected]> Tue, 29 Sep 2015 19:36:31 +0800
| Newsgroups | gmane.comp.java.jikes.rvm.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, every one.
I want to spare one bit as a flag to mark some particular object from the thin lock bits used in the object header.
In the production configuration ,the ADDRESS_BASED_HASHING is true.
so the object header looks like:
* TTTT TTTT TTTT TTTT TTTT TOHH AAAA AAAA
the bit marked by ‘O’ is the bit I want to spare.
I modified the thin lock definitions:
/** How many bits are allocated to a thin lock? */
public static final int NUM_THIN_LOCK_BITS = ADDRESS_BASED_HASHING ? 21 : 19;
/** How many bits to shift to get the thin lock? */
public static final int THIN_LOCK_SHIFT = ADDRESS_BASED_HASHING ? 11 : 13;
But ,In GenNurseryTraceLocal.java traceObject() method.
I find that ,the spared bit ‘O’ can be set by something I don’t know.
the check code in the traceObject():
Word objWordVal = VM.objectModel.readAvailableBitsWord(object);
Log.write("object header word value:");
Log.writeln(objWordVal);
and the the print info is :
1871 object header word value:0x6e00859f // …. 0101 1001 1111
1876 object header word value:0x6e009dfb // …. 1101 1111 1011
we can see that the spared bit may be set by something.
So,my question is who set this spared bit ?
I checked that the thin lock count bits, it is reduced 1 bit, and I think the thin lock will not use this bit.
Any response is helpful, thank you.
------------------------------------------------------------------------------
_______________________________________________
Jikesrvm-researchers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers