org.jikesrvm.objectmodel
Interface ThinLockConstants

All Superinterfaces:
SizeConstants
All Known Subinterfaces:
ArchitectureSpecific.BaselineConstants, BaselineConstants, Constants, MiscHeaderConstants
All Known Implementing Classes:
AbstractMethod, ArchitectureSpecific.BaselineCompilerImpl, ArchitectureSpecific.BaselineExceptionDeliverer, ArchitectureSpecific.BaselineGCMapIterator, ArchitectureSpecific.JNICompiler, ArchitectureSpecific.JNIGCMapIterator, ArchitectureSpecific.LazyCompilationTrampoline, ArchitectureSpecific.OutOfLineMachineCode, ArchitectureSpecificOpt.AssemblerOpt, ArchitectureSpecificOpt.BaselineExecutionStateExtractor, ArchitectureSpecificOpt.CodeInstaller, ArchitectureSpecificOpt.OptExecutionStateExtractor, ArchitectureSpecificOpt.OptGCMapIterator, ArchitectureSpecificOpt.PostThreadSwitch, AssemblerBase, AssemblerDriver, AssemblerOpt, Barriers, BaselineCompiledMethod, BaselineCompilerImpl, BaselineExceptionDeliverer, BaselineExecutionStateExtractor, BaselineGCMapIterator, ClassFileReader, ClassLoaderProxy, CodeInstaller, Collection, CompilerDNA, ControllerMemory, CounterBasedSampling, DebugUtil, DynamicLinker, ExecutionStateExtractor, Instruction, JNICompiler, JNIGCMapIterator, JSRInfo, LazyCompilationTrampoline, Lock, MiscHeader, NativeMethod, NormalMethod, ObjectModel, OnStackReplacementPlan, OptExecutionStateExtractor, OptGCMapIterator, OptGenericGCMapIterator, OptMachineCodeMap, OutOfLineMachineCode, PostThreadSwitch, Primitive, ReferenceMaps, Reflection, RuntimeCompiler, RuntimeEntrypoints, RVMArray, RVMClass, RVMClassLoader, RVMField, RVMMember, RVMMethod, RVMThread, RVMType, ScanThread, SpinLock, Statics, TableBasedDynamicLinker, ThinLock, UnboxedType, VM

public interface ThinLockConstants
extends SizeConstants

Constants used to implement thin locks.

A portion of a word, either in the object header or in some other location, is used to provide light weight synchronization operations. This class defines how the bits available for thin locks are allocated. Either a lock is in fat state, in which case it looks like 1Z..Z where Z..Z is the id of a heavy lock, or it is in thin state in which case it looks like 0I..IC..C where I is the thread id of the thread that owns the lock and C is the recursion count of the lock.

 aaaaTTTTTTTTTTbbbbb
 JavaHeader.NUM_THIN_LOCK_BITS = # of T's
 JavaHeader.THIN_LOCK_SHIFT = # of b's
 


Field Summary
static int TL_DEDICATED_U16_OFFSET
           
static int TL_DEDICATED_U16_SHIFT
           
static Word TL_LOCK_COUNT_MASK
           
static int TL_LOCK_COUNT_SHIFT
           
static Word TL_LOCK_COUNT_UNIT
           
static Word TL_LOCK_ID_MASK
           
static int TL_LOCK_ID_SHIFT
           
static int TL_NUM_BITS_RC
           
static int TL_NUM_BITS_STAT
           
static int TL_NUM_BITS_TID
           
static Word TL_STAT_BIASABLE
           
static Word TL_STAT_FAT
           
static Word TL_STAT_MASK
           
static int TL_STAT_SHIFT
           
static Word TL_STAT_THIN
           
static Word TL_THREAD_ID_MASK
           
static int TL_THREAD_ID_SHIFT
           
static Word TL_UNLOCK_MASK
           
 
Fields inherited from interface org.jikesrvm.SizeConstants
BITS_IN_ADDRESS, BITS_IN_BOOLEAN, BITS_IN_BYTE, BITS_IN_CHAR, BITS_IN_DOUBLE, BITS_IN_EXTENT, BITS_IN_FLOAT, BITS_IN_INT, BITS_IN_LONG, BITS_IN_OFFSET, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BOOLEAN, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_DOUBLE, BYTES_IN_EXTENT, BYTES_IN_FLOAT, BYTES_IN_INT, BYTES_IN_LONG, BYTES_IN_OFFSET, BYTES_IN_PAGE, BYTES_IN_SHORT, BYTES_IN_WORD, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BOOLEAN, LOG_BITS_IN_BYTE, LOG_BITS_IN_CHAR, LOG_BITS_IN_DOUBLE, LOG_BITS_IN_EXTENT, LOG_BITS_IN_FLOAT, LOG_BITS_IN_INT, LOG_BITS_IN_LONG, LOG_BITS_IN_OFFSET, LOG_BITS_IN_PAGE, LOG_BITS_IN_SHORT, LOG_BITS_IN_WORD, LOG_BYTES_IN_ADDRESS, LOG_BYTES_IN_BOOLEAN, LOG_BYTES_IN_BYTE, LOG_BYTES_IN_CHAR, LOG_BYTES_IN_DOUBLE, LOG_BYTES_IN_EXTENT, LOG_BYTES_IN_FLOAT, LOG_BYTES_IN_INT, LOG_BYTES_IN_LONG, LOG_BYTES_IN_OFFSET, LOG_BYTES_IN_PAGE, LOG_BYTES_IN_SHORT, LOG_BYTES_IN_WORD
 

Field Detail

TL_NUM_BITS_STAT

static final int TL_NUM_BITS_STAT
See Also:
Constant Field Values

TL_NUM_BITS_TID

static final int TL_NUM_BITS_TID
See Also:
Constant Field Values

TL_NUM_BITS_RC

static final int TL_NUM_BITS_RC

TL_THREAD_ID_SHIFT

static final int TL_THREAD_ID_SHIFT

TL_LOCK_COUNT_SHIFT

static final int TL_LOCK_COUNT_SHIFT

TL_STAT_SHIFT

static final int TL_STAT_SHIFT

TL_LOCK_ID_SHIFT

static final int TL_LOCK_ID_SHIFT

TL_DEDICATED_U16_OFFSET

static final int TL_DEDICATED_U16_OFFSET
See Also:
Constant Field Values

TL_DEDICATED_U16_SHIFT

static final int TL_DEDICATED_U16_SHIFT
See Also:
Constant Field Values

TL_LOCK_COUNT_UNIT

static final Word TL_LOCK_COUNT_UNIT

TL_LOCK_COUNT_MASK

static final Word TL_LOCK_COUNT_MASK

TL_THREAD_ID_MASK

static final Word TL_THREAD_ID_MASK

TL_LOCK_ID_MASK

static final Word TL_LOCK_ID_MASK

TL_STAT_MASK

static final Word TL_STAT_MASK

TL_UNLOCK_MASK

static final Word TL_UNLOCK_MASK

TL_STAT_BIASABLE

static final Word TL_STAT_BIASABLE

TL_STAT_THIN

static final Word TL_STAT_THIN

TL_STAT_FAT

static final Word TL_STAT_FAT