|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectsofya.apps.atomicity.RBAutomata
public class RBAutomata
Atomicity checking automata implementing the simple reduction-based algorithm for a single method invocation on a single thread.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface sofya.ed.semantic.EventListener |
|---|
EventListener.Arguments, EventListener.CallData, EventListener.ExceptionData, EventListener.FieldData, EventListener.MethodData, EventListener.MonitorData, EventListener.NewAllocationData, EventListener.ObjectData, EventListener.ThreadData, EventListener.ThreadStatus |
| Field Summary | |
|---|---|
protected static int |
ACCEPT_L
Constant indicating the automata is the left-mover accepting state. |
protected static int |
ACCEPT_R
Constant indicating the automata is in the right-mover or non-mover event accepting state. |
protected EventClassifier |
classifier
Reference to the global event classifier, so that global classification can be read if necessary. |
MethodSignature |
method
Signature of the method for which this automata is checking for atomicity. |
protected static int |
REJECT
Constant indicating that the automata is in the rejecting state (the regular expression R*N?L* has been violated). |
protected int |
state
The current state of the automata. |
| Constructor Summary | |
|---|---|
RBAutomata(EventClassifier classifier,
MethodSignature method)
Creates a new reduction-based atomicity checking automata. |
|
| Method Summary | |
|---|---|
void |
callReturnEvent(EventListener.ThreadData td,
EventListener.CallData cd,
boolean exceptional)
Notification that a thread has returned from a method call. |
void |
classPrepareEvent(EventListener.ThreadData td,
java.lang.String className)
Notification that a class was prepared (this is, loaded by the classloader). |
void |
constructorCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
Notification that a constructor was invoked. |
void |
constructorEnterEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
Notification that a constructor was entered. |
void |
constructorExitEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
Notification that a constructor was exited. |
void |
exceptionCatchEvent(EventListener.ThreadData td,
EventListener.ExceptionData ed)
Notification that an exception was caught. |
void |
exceptionThrowEvent(EventListener.ThreadData td,
EventListener.ExceptionData ed)
Notification that an exception was thrown. |
void |
executionStarted()
Notification that the system has begun executing user code. |
void |
instanceFieldAccessEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.FieldData fd)
Notification that an instance field was read. |
void |
instanceFieldWriteEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.FieldData fd)
Notification that an instance field was written. |
void |
interfaceCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
Notification that an interface method was called. |
boolean |
isAccepting()
Reports whether the automata accepts the current method invocation as atomic. |
void |
monitorAcquireEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
Notification that a thread has acquired a monitor. |
void |
monitorContendEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
Notification that a thread is contending for a monitor. |
void |
monitorPreReleaseEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
Notification that a thread is about to release a monitor. |
void |
monitorReleaseEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
Notification that a thread has released a monitor. |
void |
newAllocationEvent(EventListener.ThreadData td,
EventListener.NewAllocationData nad)
Notification that an object was allocated by a NEW
instruction. |
void |
staticCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
Notification that a static method was called. |
void |
staticFieldAccessEvent(EventListener.ThreadData td,
EventListener.FieldData fd)
Notification that a static field was read. |
void |
staticFieldWriteEvent(EventListener.ThreadData td,
EventListener.FieldData fd)
Notification that a static field was written. |
void |
staticInitializerEnterEvent(EventListener.ThreadData td,
EventListener.MethodData md)
Notification that a static initializer was entered. |
void |
staticMethodEnterEvent(EventListener.ThreadData td,
EventListener.MethodData md)
Notification that a static method was entered. |
void |
staticMethodExitEvent(EventListener.ThreadData td,
EventListener.MethodData md)
Notification that a static method was exited. |
void |
systemExited()
Notification that the system has terminated. |
void |
systemStarted()
Notification that the target virtual machine has been launched. |
void |
threadDeathEvent(EventListener.ThreadData td)
Notification that a thread has terminated. |
void |
threadStartEvent(EventListener.ThreadData td)
Notification that a thread has started. |
protected void |
update(EventClassifier.EventClass eventClass)
Updates the state of the automata based on the current event. |
void |
virtualCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
Notification that a virtual method was called. |
void |
virtualMethodEnterEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
Notification that a virtual method was entered. |
void |
virtualMethodExitEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
Notification that a virtual method was exited. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected int state
protected static final int REJECT
protected static final int ACCEPT_R
protected static final int ACCEPT_L
protected final EventClassifier classifier
public final MethodSignature method
| Constructor Detail |
|---|
public RBAutomata(EventClassifier classifier,
MethodSignature method)
classifier - Reference to the global event classifier, so that the
published global classifications can be accessed if necessary.method - Signature of the method for which this automata is
to check for atomicity.| Method Detail |
|---|
public boolean isAccepting()
true if the automata found this invocation of
the method to be atomic, false otherwise.protected void update(EventClassifier.EventClass eventClass)
eventClass - Classification of the event as a left-mover,
right-mover, non-mover, or both-mover.public void systemStarted()
EventListener
systemStarted in interface EventListenerpublic void executionStarted()
EventListenerThis event will be preceded by thread start events.
executionStarted in interface EventListenerpublic void threadStartEvent(EventListener.ThreadData td)
EventListener
threadStartEvent in interface EventListenertd - Information about the newly started thread.public void threadDeathEvent(EventListener.ThreadData td)
EventListener
threadDeathEvent in interface EventListenertd - Information about the terminated thread.
public void classPrepareEvent(EventListener.ThreadData td,
java.lang.String className)
EventListener
classPrepareEvent in interface EventListenertd - Information about the thread which caused the class to
be prepared.className - Name of the class which was prepared.
public void monitorContendEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
EventListener
monitorContendEvent in interface EventListenertd - Information about the thread which is contending for a monitor.od - Information about the object which owns the monitor.md - Information about the location of the monitor contention.
public void monitorAcquireEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
EventListener
monitorAcquireEvent in interface EventListenertd - Information about the thread which acquired a monitor.od - Information about the object which owns the monitor.md - Information about the location of the monitor acquisition.
public void monitorPreReleaseEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
EventListener
monitorPreReleaseEvent in interface EventListenertd - Information about the thread which is about to release a
monitor.od - Information about the object which owns the monitor.md - Information about the location of the monitor about to
be released event..
public void monitorReleaseEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MonitorData md)
EventListener
monitorReleaseEvent in interface EventListenertd - Information about the thread which released a monitor.od - Information about the object which owns the monitor.md - Information about the location of the monitor release.
public void newAllocationEvent(EventListener.ThreadData td,
EventListener.NewAllocationData nad)
EventListenerNEW
instruction.
This event cannot yet associate a unique identifier with the
object, because this event only represents the allocation of
a reference to which an object of a given class may be assigned.
In other words, no actual object has yet been created. A unique
ID can be obtained once a constructor is executed, which is
signaled by the EventListener.constructorEnterEvent(sofya.ed.semantic.EventListener.ThreadData, sofya.ed.semantic.EventListener.ObjectData, sofya.ed.semantic.EventListener.MethodData).
newAllocationEvent in interface EventListenertd - Information about the thread which allocated the object.nad - Information about the new allocation.
public void constructorCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
EventListener
constructorCallEvent in interface EventListenertd - Information about the thread which invoked the constructor.cd - Information about the particular constructor which
was invoked.
public void constructorEnterEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
EventListenerThis is the first point during the object creation process at which the object can be uniquely identified.
constructorEnterEvent in interface EventListenertd - Information about the thread executing the constructor.od - Information about the object under construction.
At the time of this event, only the object ID will be
valid.md - Information about the entered constructor.
public void constructorExitEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
EventListenerNOTE: This event is raised only if the constructor completes normally. If a constructor throws an escaping exception, the object is not successfully created and thus further events related to the object are not possible.
constructorExitEvent in interface EventListenertd - Information about the thread executing the constructor.od - Information about the object under construction.
At the time of this event, only the object ID will be
valid.md - Information about the exited constructor.
public void staticFieldAccessEvent(EventListener.ThreadData td,
EventListener.FieldData fd)
EventListener
staticFieldAccessEvent in interface EventListenertd - Information about the thread in which the field access
occurred.fd - Information about the accessed field.
public void instanceFieldAccessEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.FieldData fd)
EventListener
instanceFieldAccessEvent in interface EventListenertd - Information about the thread in which the field access
occurred.od - Information about the object which owns the accessed field.fd - Information about the accessed field.
public void staticFieldWriteEvent(EventListener.ThreadData td,
EventListener.FieldData fd)
EventListener
staticFieldWriteEvent in interface EventListenertd - Information about the thread in which the field write
occurred.fd - Information about the written field.
public void instanceFieldWriteEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.FieldData fd)
EventListener
instanceFieldWriteEvent in interface EventListenertd - Information about the thread in which the field write
occurred.od - Information about the object which owns the written field.fd - Information about the written field.
public void staticCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
EventListener
staticCallEvent in interface EventListenertd - Information about the thread which called the method.cd - Information about the called method.
public void virtualCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
EventListener
virtualCallEvent in interface EventListenertd - Information about the thread which called the method.cd - Information about the called method.
public void interfaceCallEvent(EventListener.ThreadData td,
EventListener.CallData cd)
EventListener
interfaceCallEvent in interface EventListenertd - Information about the thread which called the method.cd - Information about the called method.
public void callReturnEvent(EventListener.ThreadData td,
EventListener.CallData cd,
boolean exceptional)
EventListener
callReturnEvent in interface EventListenertd - Information about the thread in which the method call
returned.cd - Information about the called method from which
control returned.exceptional - Flag indicating whether the method returned
exceptionally.
public void virtualMethodEnterEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
EventListener
virtualMethodEnterEvent in interface EventListenertd - Information about the thread executing the method.od - Information about the object on which the virtual
method was called.md - Information about the entered method.
public void virtualMethodExitEvent(EventListener.ThreadData td,
EventListener.ObjectData od,
EventListener.MethodData md)
EventListener
virtualMethodExitEvent in interface EventListenertd - Information about the thread executing the method.od - Information about the object on which the virtual
method was called.md - Information about the exited method.
public void staticMethodEnterEvent(EventListener.ThreadData td,
EventListener.MethodData md)
EventListener
staticMethodEnterEvent in interface EventListenertd - Information about the thread executing the method.md - Information about the entered method.
public void staticMethodExitEvent(EventListener.ThreadData td,
EventListener.MethodData md)
EventListener
staticMethodExitEvent in interface EventListenertd - Information about the thread executing the method.md - Information about the exited method.
public void exceptionThrowEvent(EventListener.ThreadData td,
EventListener.ExceptionData ed)
EventListener
exceptionThrowEvent in interface EventListenertd - Information about the thread in which the exception was
thrown.ed - Information about the thrown exception.
public void exceptionCatchEvent(EventListener.ThreadData td,
EventListener.ExceptionData ed)
EventListener
exceptionCatchEvent in interface EventListenertd - Information about the thread in which the exception was
caught.ed - Information about the caught exception.
public void staticInitializerEnterEvent(EventListener.ThreadData td,
EventListener.MethodData md)
EventListener
staticInitializerEnterEvent in interface EventListenertd - Information about the thread executing the static initializer.md - Information about the entered static initializer.public void systemExited()
EventListener
systemExited in interface EventListener
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||