chord.runtime
Class EventHandler

java.lang.Object
  extended by chord.runtime.BasicEventHandler
      extended by chord.runtime.TraceEventHandler
          extended by chord.runtime.EventHandler

public class EventHandler
extends TraceEventHandler

Buffered file-based offline handler of events generated during an instrumented program's execution.

A file is used to communicate events between the JVM running the instrumented program (which produces events) and the JVM running the dynamic program analysis (which consumes events). This handler should suffice for offline dynamic program analyses (i.e. those that handle the events in a separate JVM, either during or after the instrumented program's execution, depending upon whether the value of system property chord.trace.pipe is true or false, respectively). Online analyses (i.e. those that handle events during the instrumented program's execution in the same JVM) must subclass this class and define the relevant event handling methods, i.e. static methods named ".*Event", e.g. acquireLockEvent(int, Object). Which methods are relevant depends upon the instrumentation scheme chosen by the dynamic program analysis; see DynamicAnalysis.getInstrScheme().

Author:
Mayur Naik (mhn@cs.stanford.edu)

Field Summary
static int MISSING_FIELD_VAL
           
protected static InstrScheme scheme
           
static int UNKNOWN_FIELD_VAL
           
 
Fields inherited from class chord.runtime.TraceEventHandler
buffer, TRACE_BLOCK_SIZE_KEY, TRACE_FILE_KEY
 
Fields inherited from class chord.runtime.BasicEventHandler
currentId, objmap, trace
 
Constructor Summary
EventHandler()
           
 
Method Summary
static void acquireLockEvent(int lId, java.lang.Object o)
           
static void aftMethodCallEvent(int iId, java.lang.Object o)
           
static void aftNewEvent(int hId, java.lang.Object o)
           
static void aloadPrimitiveEvent(int eId, java.lang.Object b, int iId)
           
static void aloadReferenceEvent(int eId, java.lang.Object b, int iId, java.lang.Object o)
           
static void astorePrimitiveEvent(int eId, java.lang.Object b, int iId)
           
static void astoreReferenceEvent(int eId, java.lang.Object b, int iId, java.lang.Object o)
           
static void basicBlockEvent(int bId)
           
static void befMethodCallEvent(int iId, java.lang.Object o)
           
static void befNewEvent(int hId)
           
static void enterMainMethodEvent()
           
static void enterMethodEvent(int mId)
           
static void explicitThrowEvent(int pId, java.lang.Object o)
           
static void getfieldPrimitiveEvent(int eId, java.lang.Object b, int fId)
           
static void getfieldReferenceEvent(int eId, java.lang.Object b, int fId, java.lang.Object o)
           
static void getstaticPrimitiveEvent(int eId, java.lang.Object b, int fId)
           
static void getstaticReferenceEvent(int eId, java.lang.Object b, int fId, java.lang.Object o)
           
static void implicitThrowEvent(java.lang.Object o)
           
static void init(java.lang.String args)
           
static void leaveMethodEvent(int mId)
           
static void newArrayEvent(int hId, java.lang.Object o)
           
static void notifyAllEvent(int iId, java.lang.Object o)
           
static void notifyEvent(int iId, java.lang.Object o)
           
static void putfieldPrimitiveEvent(int eId, java.lang.Object b, int fId)
           
static void putfieldReferenceEvent(int eId, java.lang.Object b, int fId, java.lang.Object o)
           
static void putstaticPrimitiveEvent(int eId, java.lang.Object b, int fId)
           
static void putstaticReferenceEvent(int eId, java.lang.Object b, int fId, java.lang.Object o)
           
static void quadEvent(int pId)
           
static void releaseLockEvent(int rId, java.lang.Object o)
           
static void returnPrimitiveEvent(int pId)
           
static void returnReferenceEvent(int pId, java.lang.Object o)
           
static void threadJoinEvent(int iId, java.lang.Object o)
           
static void threadStartEvent(int iId, java.lang.Object o)
           
static void waitEvent(int iId, java.lang.Object o)
           
 
Methods inherited from class chord.runtime.TraceEventHandler
done
 
Methods inherited from class chord.runtime.BasicEventHandler
getObjectId, getPrimitiveId
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MISSING_FIELD_VAL

public static final int MISSING_FIELD_VAL
See Also:
Constant Field Values

UNKNOWN_FIELD_VAL

public static final int UNKNOWN_FIELD_VAL
See Also:
Constant Field Values

scheme

protected static InstrScheme scheme
Constructor Detail

EventHandler

public EventHandler()
Method Detail

befNewEvent

public static void befNewEvent(int hId)

aftNewEvent

public static void aftNewEvent(int hId,
                               java.lang.Object o)

newArrayEvent

public static void newArrayEvent(int hId,
                                 java.lang.Object o)

getstaticPrimitiveEvent

public static void getstaticPrimitiveEvent(int eId,
                                           java.lang.Object b,
                                           int fId)

getstaticReferenceEvent

public static void getstaticReferenceEvent(int eId,
                                           java.lang.Object b,
                                           int fId,
                                           java.lang.Object o)

putstaticPrimitiveEvent

public static void putstaticPrimitiveEvent(int eId,
                                           java.lang.Object b,
                                           int fId)

putstaticReferenceEvent

public static void putstaticReferenceEvent(int eId,
                                           java.lang.Object b,
                                           int fId,
                                           java.lang.Object o)

getfieldPrimitiveEvent

public static void getfieldPrimitiveEvent(int eId,
                                          java.lang.Object b,
                                          int fId)

getfieldReferenceEvent

public static void getfieldReferenceEvent(int eId,
                                          java.lang.Object b,
                                          int fId,
                                          java.lang.Object o)

putfieldPrimitiveEvent

public static void putfieldPrimitiveEvent(int eId,
                                          java.lang.Object b,
                                          int fId)

putfieldReferenceEvent

public static void putfieldReferenceEvent(int eId,
                                          java.lang.Object b,
                                          int fId,
                                          java.lang.Object o)

aloadPrimitiveEvent

public static void aloadPrimitiveEvent(int eId,
                                       java.lang.Object b,
                                       int iId)

aloadReferenceEvent

public static void aloadReferenceEvent(int eId,
                                       java.lang.Object b,
                                       int iId,
                                       java.lang.Object o)

astorePrimitiveEvent

public static void astorePrimitiveEvent(int eId,
                                        java.lang.Object b,
                                        int iId)

astoreReferenceEvent

public static void astoreReferenceEvent(int eId,
                                        java.lang.Object b,
                                        int iId,
                                        java.lang.Object o)

threadStartEvent

public static void threadStartEvent(int iId,
                                    java.lang.Object o)

threadJoinEvent

public static void threadJoinEvent(int iId,
                                   java.lang.Object o)

acquireLockEvent

public static void acquireLockEvent(int lId,
                                    java.lang.Object o)

releaseLockEvent

public static void releaseLockEvent(int rId,
                                    java.lang.Object o)

waitEvent

public static void waitEvent(int iId,
                             java.lang.Object o)

notifyEvent

public static void notifyEvent(int iId,
                               java.lang.Object o)

notifyAllEvent

public static void notifyAllEvent(int iId,
                                  java.lang.Object o)

befMethodCallEvent

public static void befMethodCallEvent(int iId,
                                      java.lang.Object o)

aftMethodCallEvent

public static void aftMethodCallEvent(int iId,
                                      java.lang.Object o)

returnPrimitiveEvent

public static void returnPrimitiveEvent(int pId)

returnReferenceEvent

public static void returnReferenceEvent(int pId,
                                        java.lang.Object o)

explicitThrowEvent

public static void explicitThrowEvent(int pId,
                                      java.lang.Object o)

implicitThrowEvent

public static void implicitThrowEvent(java.lang.Object o)

quadEvent

public static void quadEvent(int pId)

basicBlockEvent

public static void basicBlockEvent(int bId)

enterMainMethodEvent

public static void enterMainMethodEvent()

enterMethodEvent

public static void enterMethodEvent(int mId)

leaveMethodEvent

public static void leaveMethodEvent(int mId)

init

public static void init(java.lang.String args)