public class DelegatingScheduler extends java.lang.Object implements Scheduler
Modifier and Type | Field and Description |
---|---|
protected SharednessPolicy |
sharednessPolicy |
protected SyncPolicy |
syncPolicy |
BEGIN_ATOMIC, BLOCK, END_ATOMIC, INTERRUPT, JOIN, LOCK, NOTIFY, NOTIFYALL, PARK, POST_FINALIZE, PRIORITY, RELEASE, RESCHEDULE, RESUME, ROOT, SLEEP, START, STOP, SUSPEND, TERMINATE, UNPARK, WAIT, YIELD
Constructor and Description |
---|
DelegatingScheduler(Config config) |
Modifier and Type | Method and Description |
---|---|
boolean |
canHaveSharedArrayCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiArray,
int idx) |
boolean |
canHaveSharedClassCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiFieldOwner,
FieldInfo fi) |
boolean |
canHaveSharedObjectCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiFieldOwner,
FieldInfo fi) |
void |
cleanupThreadTermination(ThreadInfo ti)
give policy a chance to clean up referencing ThreadInfoSets upon
thread termination
|
void |
initialize(VM vm,
ApplicationContext appCtx)
per application initialization
|
void |
initializeClassSharedness(ThreadInfo allocThread,
StaticElementInfo ei)
initializeSharednessPolicy class specific sharedness data
|
void |
initializeObjectSharedness(ThreadInfo allocThread,
DynamicElementInfo ei)
initializeSharednessPolicy object specific sharedness data
|
void |
initializeSharednessPolicy(VM vm,
ApplicationContext appCtx)
per application / SystemClassLoaderInfo specific initialization of this policy
|
void |
initializeSyncPolicy(VM vm,
ApplicationContext appCtx)
called once per application, after the VM is fully initialized
|
void |
initializeThreadSync(ThreadInfo tiCurrent,
ThreadInfo tiNew)
called during ThreadInfo initialization, before Thread.start()
|
void |
setRootCG()
set the very first CG, which is not optional
|
boolean |
setsBeginAtomicCG(ThreadInfo ti) |
boolean |
setsBlockedThreadCG(ThreadInfo ti,
ElementInfo ei) |
boolean |
setsEndAtomicCG(ThreadInfo ti) |
boolean |
setsInterruptCG(ThreadInfo tiCurrent,
ThreadInfo tiInterrupted) |
boolean |
setsJoinCG(ThreadInfo tiCurrent,
ThreadInfo tiJoin,
long timeout) |
boolean |
setsLockAcquisitionCG(ThreadInfo ti,
ElementInfo ei) |
boolean |
setsLockReleaseCG(ThreadInfo ti,
ElementInfo ei,
boolean didUnblock) |
boolean |
setsNotifyAllCG(ThreadInfo ti,
boolean didNotify) |
boolean |
setsNotifyCG(ThreadInfo ti,
boolean didNotify) |
boolean |
setsParkCG(ThreadInfo ti,
boolean isAbsTime,
long timeout) |
boolean |
setsPostFinalizeCG(ThreadInfo tiFinalizer) |
boolean |
setsPriorityCG(ThreadInfo ti) |
boolean |
setsRescheduleCG(ThreadInfo ti,
java.lang.String reason) |
boolean |
setsResumeCG(ThreadInfo tiCurrent,
ThreadInfo tiResumed) |
boolean |
setsSharedArrayCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiArray,
int idx) |
boolean |
setsSharedClassCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiFieldOwner,
FieldInfo fi) |
boolean |
setsSharedClassExposureCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiFieldOwner,
FieldInfo fi,
ElementInfo eiExposed) |
boolean |
setsSharedObjectCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiFieldOwner,
FieldInfo fi) |
boolean |
setsSharedObjectExposureCG(ThreadInfo ti,
Instruction insn,
ElementInfo eiFieldOwner,
FieldInfo fi,
ElementInfo eiExposed) |
boolean |
setsSleepCG(ThreadInfo ti,
long millis,
int nanos) |
boolean |
setsStartCG(ThreadInfo tiCurrent,
ThreadInfo tiStarted) |
boolean |
setsStopCG(ThreadInfo tiCurrent,
ThreadInfo tiStopped) |
boolean |
setsSuspendCG(ThreadInfo tiCurrent,
ThreadInfo tiSuspended) |
boolean |
setsTerminationCG(ThreadInfo ti) |
boolean |
setsUnparkCG(ThreadInfo tiCurrent,
ThreadInfo tiUnparked) |
boolean |
setsWaitCG(ThreadInfo ti,
long timeout) |
boolean |
setsYieldCG(ThreadInfo ti) |
ElementInfo |
updateArraySharedness(ThreadInfo ti,
ElementInfo eiArray,
int idx) |
ElementInfo |
updateClassSharedness(ThreadInfo ti,
ElementInfo ei,
FieldInfo fi) |
ElementInfo |
updateObjectSharedness(ThreadInfo ti,
ElementInfo ei,
FieldInfo fi) |
protected SyncPolicy syncPolicy
protected SharednessPolicy sharednessPolicy
public DelegatingScheduler(Config config)
public void initialize(VM vm, ApplicationContext appCtx)
Scheduler
initialize
in interface Scheduler
public void initializeSyncPolicy(VM vm, ApplicationContext appCtx)
SyncPolicy
initializeSyncPolicy
in interface SyncPolicy
public void initializeThreadSync(ThreadInfo tiCurrent, ThreadInfo tiNew)
SyncPolicy
initializeThreadSync
in interface SyncPolicy
public void setRootCG()
SyncPolicy
setRootCG
in interface SyncPolicy
public boolean setsBlockedThreadCG(ThreadInfo ti, ElementInfo ei)
setsBlockedThreadCG
in interface SyncPolicy
public boolean setsLockAcquisitionCG(ThreadInfo ti, ElementInfo ei)
setsLockAcquisitionCG
in interface SyncPolicy
public boolean setsLockReleaseCG(ThreadInfo ti, ElementInfo ei, boolean didUnblock)
setsLockReleaseCG
in interface SyncPolicy
public boolean setsTerminationCG(ThreadInfo ti)
setsTerminationCG
in interface SyncPolicy
public boolean setsWaitCG(ThreadInfo ti, long timeout)
setsWaitCG
in interface SyncPolicy
public boolean setsNotifyCG(ThreadInfo ti, boolean didNotify)
setsNotifyCG
in interface SyncPolicy
public boolean setsNotifyAllCG(ThreadInfo ti, boolean didNotify)
setsNotifyAllCG
in interface SyncPolicy
public boolean setsStartCG(ThreadInfo tiCurrent, ThreadInfo tiStarted)
setsStartCG
in interface SyncPolicy
public boolean setsYieldCG(ThreadInfo ti)
setsYieldCG
in interface SyncPolicy
public boolean setsPriorityCG(ThreadInfo ti)
setsPriorityCG
in interface SyncPolicy
public boolean setsSleepCG(ThreadInfo ti, long millis, int nanos)
setsSleepCG
in interface SyncPolicy
public boolean setsSuspendCG(ThreadInfo tiCurrent, ThreadInfo tiSuspended)
setsSuspendCG
in interface SyncPolicy
public boolean setsResumeCG(ThreadInfo tiCurrent, ThreadInfo tiResumed)
setsResumeCG
in interface SyncPolicy
public boolean setsJoinCG(ThreadInfo tiCurrent, ThreadInfo tiJoin, long timeout)
setsJoinCG
in interface SyncPolicy
public boolean setsStopCG(ThreadInfo tiCurrent, ThreadInfo tiStopped)
setsStopCG
in interface SyncPolicy
public boolean setsInterruptCG(ThreadInfo tiCurrent, ThreadInfo tiInterrupted)
setsInterruptCG
in interface SyncPolicy
public boolean setsParkCG(ThreadInfo ti, boolean isAbsTime, long timeout)
setsParkCG
in interface SyncPolicy
public boolean setsUnparkCG(ThreadInfo tiCurrent, ThreadInfo tiUnparked)
setsUnparkCG
in interface SyncPolicy
public boolean setsBeginAtomicCG(ThreadInfo ti)
setsBeginAtomicCG
in interface SyncPolicy
public boolean setsEndAtomicCG(ThreadInfo ti)
setsEndAtomicCG
in interface SyncPolicy
public boolean setsRescheduleCG(ThreadInfo ti, java.lang.String reason)
setsRescheduleCG
in interface SyncPolicy
public boolean setsPostFinalizeCG(ThreadInfo tiFinalizer)
setsPostFinalizeCG
in interface SyncPolicy
public void initializeSharednessPolicy(VM vm, ApplicationContext appCtx)
SharednessPolicy
initializeSharednessPolicy
in interface SharednessPolicy
public void initializeObjectSharedness(ThreadInfo allocThread, DynamicElementInfo ei)
SharednessPolicy
initializeObjectSharedness
in interface SharednessPolicy
public void initializeClassSharedness(ThreadInfo allocThread, StaticElementInfo ei)
SharednessPolicy
initializeClassSharedness
in interface SharednessPolicy
public boolean canHaveSharedObjectCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
canHaveSharedObjectCG
in interface SharednessPolicy
public ElementInfo updateObjectSharedness(ThreadInfo ti, ElementInfo ei, FieldInfo fi)
updateObjectSharedness
in interface SharednessPolicy
public boolean setsSharedObjectCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
setsSharedObjectCG
in interface SharednessPolicy
public boolean canHaveSharedClassCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
canHaveSharedClassCG
in interface SharednessPolicy
public ElementInfo updateClassSharedness(ThreadInfo ti, ElementInfo ei, FieldInfo fi)
updateClassSharedness
in interface SharednessPolicy
public boolean setsSharedClassCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
setsSharedClassCG
in interface SharednessPolicy
public boolean canHaveSharedArrayCG(ThreadInfo ti, Instruction insn, ElementInfo eiArray, int idx)
canHaveSharedArrayCG
in interface SharednessPolicy
public ElementInfo updateArraySharedness(ThreadInfo ti, ElementInfo eiArray, int idx)
updateArraySharedness
in interface SharednessPolicy
public boolean setsSharedArrayCG(ThreadInfo ti, Instruction insn, ElementInfo eiArray, int idx)
setsSharedArrayCG
in interface SharednessPolicy
public boolean setsSharedObjectExposureCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi, ElementInfo eiExposed)
setsSharedObjectExposureCG
in interface SharednessPolicy
public boolean setsSharedClassExposureCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi, ElementInfo eiExposed)
setsSharedClassExposureCG
in interface SharednessPolicy
public void cleanupThreadTermination(ThreadInfo ti)
SharednessPolicy
cleanupThreadTermination
in interface SharednessPolicy