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)
Schedulerinitialize in interface Schedulerpublic void initializeSyncPolicy(VM vm, ApplicationContext appCtx)
SyncPolicyinitializeSyncPolicy in interface SyncPolicypublic void initializeThreadSync(ThreadInfo tiCurrent, ThreadInfo tiNew)
SyncPolicyinitializeThreadSync in interface SyncPolicypublic void setRootCG()
SyncPolicysetRootCG in interface SyncPolicypublic boolean setsBlockedThreadCG(ThreadInfo ti, ElementInfo ei)
setsBlockedThreadCG in interface SyncPolicypublic boolean setsLockAcquisitionCG(ThreadInfo ti, ElementInfo ei)
setsLockAcquisitionCG in interface SyncPolicypublic boolean setsLockReleaseCG(ThreadInfo ti, ElementInfo ei, boolean didUnblock)
setsLockReleaseCG in interface SyncPolicypublic boolean setsTerminationCG(ThreadInfo ti)
setsTerminationCG in interface SyncPolicypublic boolean setsWaitCG(ThreadInfo ti, long timeout)
setsWaitCG in interface SyncPolicypublic boolean setsNotifyCG(ThreadInfo ti, boolean didNotify)
setsNotifyCG in interface SyncPolicypublic boolean setsNotifyAllCG(ThreadInfo ti, boolean didNotify)
setsNotifyAllCG in interface SyncPolicypublic boolean setsStartCG(ThreadInfo tiCurrent, ThreadInfo tiStarted)
setsStartCG in interface SyncPolicypublic boolean setsYieldCG(ThreadInfo ti)
setsYieldCG in interface SyncPolicypublic boolean setsPriorityCG(ThreadInfo ti)
setsPriorityCG in interface SyncPolicypublic boolean setsSleepCG(ThreadInfo ti, long millis, int nanos)
setsSleepCG in interface SyncPolicypublic boolean setsSuspendCG(ThreadInfo tiCurrent, ThreadInfo tiSuspended)
setsSuspendCG in interface SyncPolicypublic boolean setsResumeCG(ThreadInfo tiCurrent, ThreadInfo tiResumed)
setsResumeCG in interface SyncPolicypublic boolean setsJoinCG(ThreadInfo tiCurrent, ThreadInfo tiJoin, long timeout)
setsJoinCG in interface SyncPolicypublic boolean setsStopCG(ThreadInfo tiCurrent, ThreadInfo tiStopped)
setsStopCG in interface SyncPolicypublic boolean setsInterruptCG(ThreadInfo tiCurrent, ThreadInfo tiInterrupted)
setsInterruptCG in interface SyncPolicypublic boolean setsParkCG(ThreadInfo ti, boolean isAbsTime, long timeout)
setsParkCG in interface SyncPolicypublic boolean setsUnparkCG(ThreadInfo tiCurrent, ThreadInfo tiUnparked)
setsUnparkCG in interface SyncPolicypublic boolean setsBeginAtomicCG(ThreadInfo ti)
setsBeginAtomicCG in interface SyncPolicypublic boolean setsEndAtomicCG(ThreadInfo ti)
setsEndAtomicCG in interface SyncPolicypublic boolean setsRescheduleCG(ThreadInfo ti, java.lang.String reason)
setsRescheduleCG in interface SyncPolicypublic boolean setsPostFinalizeCG(ThreadInfo tiFinalizer)
setsPostFinalizeCG in interface SyncPolicypublic void initializeSharednessPolicy(VM vm, ApplicationContext appCtx)
SharednessPolicyinitializeSharednessPolicy in interface SharednessPolicypublic void initializeObjectSharedness(ThreadInfo allocThread, DynamicElementInfo ei)
SharednessPolicyinitializeObjectSharedness in interface SharednessPolicypublic void initializeClassSharedness(ThreadInfo allocThread, StaticElementInfo ei)
SharednessPolicyinitializeClassSharedness in interface SharednessPolicypublic boolean canHaveSharedObjectCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
canHaveSharedObjectCG in interface SharednessPolicypublic ElementInfo updateObjectSharedness(ThreadInfo ti, ElementInfo ei, FieldInfo fi)
updateObjectSharedness in interface SharednessPolicypublic boolean setsSharedObjectCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
setsSharedObjectCG in interface SharednessPolicypublic boolean canHaveSharedClassCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
canHaveSharedClassCG in interface SharednessPolicypublic ElementInfo updateClassSharedness(ThreadInfo ti, ElementInfo ei, FieldInfo fi)
updateClassSharedness in interface SharednessPolicypublic boolean setsSharedClassCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi)
setsSharedClassCG in interface SharednessPolicypublic boolean canHaveSharedArrayCG(ThreadInfo ti, Instruction insn, ElementInfo eiArray, int idx)
canHaveSharedArrayCG in interface SharednessPolicypublic ElementInfo updateArraySharedness(ThreadInfo ti, ElementInfo eiArray, int idx)
updateArraySharedness in interface SharednessPolicypublic boolean setsSharedArrayCG(ThreadInfo ti, Instruction insn, ElementInfo eiArray, int idx)
setsSharedArrayCG in interface SharednessPolicypublic boolean setsSharedObjectExposureCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi, ElementInfo eiExposed)
setsSharedObjectExposureCG in interface SharednessPolicypublic boolean setsSharedClassExposureCG(ThreadInfo ti, Instruction insn, ElementInfo eiFieldOwner, FieldInfo fi, ElementInfo eiExposed)
setsSharedClassExposureCG in interface SharednessPolicypublic void cleanupThreadTermination(ThreadInfo ti)
SharednessPolicycleanupThreadTermination in interface SharednessPolicy