Class

org.opalj.ai

MultiTracer

Related Doc: package ai

Permalink

class MultiTracer extends AITracer

A tracer that forwards every call to all registered tracers.

Linear Supertypes
AITracer, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. MultiTracer
  2. AITracer
  3. AnyRef
  4. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new MultiTracer(tracers: AITracer*)

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to any2stringadd[MultiTracer] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (MultiTracer, B)

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to ArrowAssoc[MultiTracer] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  6. def abruptMethodExecution(domain: Domain)(pc: Int, exception: Domain.ExceptionValue): Unit

    Permalink

    Called when the analyzed method throws an exception that is not caught within the method.

    Called when the analyzed method throws an exception that is not caught within the method. I.e., the interpreter evaluates an athrow instruction or some other instruction that throws an exception.

    Definition Classes
    MultiTracerAITracer
  7. def abruptSubroutineTermination(domain: Domain)(sourcePC: PC, targetPC: PC, jumpToSubroutineId: Int, terminatedSubroutinesCount: Int, oldWorklist: Chain[PC], newWorklist: Chain[PC]): Unit

    Permalink

    Called when the evaluation of a subroutine terminated abruptly due to an unhandled exception.

    Called when the evaluation of a subroutine terminated abruptly due to an unhandled exception.

    jumpToSubroutineId

    The subroutine that will be continued. The id is the pc of the first instruction of the subroutine. It is 0 if it is the method as such.

    terminatedSubroutinesCount

    The number of subroutines that are terminated.

    Definition Classes
    MultiTracerAITracer
  8. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  9. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  10. def continuingInterpretation(code: Code, domain: Domain)(initialWorkList: Chain[PC], alreadyEvaluated: Chain[PC], operandsArray: Domain.OperandsArray, localsArray: Domain.LocalsArray, memoryLayoutBeforeSubroutineCall: Chain[(PC, Domain.OperandsArray, Domain.LocalsArray)]): Unit

    Permalink

    Called immediately before the abstract interpretation of the specified code is performed.

    Called immediately before the abstract interpretation of the specified code is performed.

    If the tracer changes the operandsArray and/or localsArray, it is the responsibility of the tracer to ensure that the data structures are still valid afterwards.

    Definition Classes
    MultiTracerAITracer
  11. def deadLocalVariable(domain: Domain)(pc: PC, lvIndex: Int): Unit

    Permalink

    Called by the interpret when a local variable with the given index (lvIndex) was set to a new value and, therefore, the reference stored in the local variable previously was useless/dead.

    Called by the interpret when a local variable with the given index (lvIndex) was set to a new value and, therefore, the reference stored in the local variable previously was useless/dead.

    Definition Classes
    MultiTracerAITracer
  12. def domainMessage(domain: Domain, source: Class[_], typeID: String, pc: Option[PC], message: ⇒ String): Unit

    Permalink

    Called by the domain if something noteworthy was determined.

    Called by the domain if something noteworthy was determined.

    domain

    The domain.

    source

    The class (typically the (partial) domain) that generated the message.

    typeID

    A String that identifies the message. This value must not be null, but it can be the empty string.

    message

    The message; a non-null String that is formatted for the console.

    Definition Classes
    MultiTracerAITracer
  13. def ensuring(cond: (MultiTracer) ⇒ Boolean, msg: ⇒ Any): MultiTracer

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to Ensuring[MultiTracer] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  14. def ensuring(cond: (MultiTracer) ⇒ Boolean): MultiTracer

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to Ensuring[MultiTracer] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  15. def ensuring(cond: Boolean, msg: ⇒ Any): MultiTracer

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to Ensuring[MultiTracer] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  16. def ensuring(cond: Boolean): MultiTracer

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to Ensuring[MultiTracer] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  17. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  18. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  19. def establishedConstraint(domain: Domain)(pc: PC, effectivePC: PC, operands: Domain.Operands, locals: Domain.Locals, newOperands: Domain.Operands, newLocals: Domain.Locals): Unit

    Permalink

    Called by the framework if a constraint is established.

    Called by the framework if a constraint is established. Constraints are generally established whenever a conditional jump is performed and the evaluation of the condition wasn't definitive. In this case a constraint will be established for each branch. In general the constraint will be applied before the join of the stack and locals with the successor instruction is done.

    Definition Classes
    MultiTracerAITracer
  20. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  21. def flow(domain: Domain)(currentPC: PC, targetPC: PC, isExceptionalControlFlow: Boolean): Unit

    Permalink

    Called by the interpreter after an instruction (currentPC) was evaluated and before the instruction with the program counter targetPC may be evaluated.

    Called by the interpreter after an instruction (currentPC) was evaluated and before the instruction with the program counter targetPC may be evaluated.

    This method is only called if the instruction with the program counter targetPC will be evaluated in the future and was not yet scheduled. I.e., when the abstract interpreter determines that the evaluation of an instruction does not change the abstract state (associated with the successor instruction) and, therefore, will not schedule the successor instruction this method is not called.

    In case of if or switch instructions flow may be called multiple times (even with the same targetPC) before the method instructionEvaluation is called again.

    Definition Classes
    MultiTracerAITracer
    Note

    OPAL performs a depth-first exploration. However, subroutines are always first finished analyzing before an exception handler - that handles abrupt executions of the subroutine - is evaluated.

  22. def formatted(fmtstr: String): String

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to StringFormat[MultiTracer] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @inline()
  23. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  24. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  25. def initialLocals(domain: Domain)(locals: Domain.Locals): Unit

    Permalink

    The set of initial locals computed when the method is interpreted for the first time.

    The set of initial locals computed when the method is interpreted for the first time.

    Definition Classes
    MultiTracerAITracer
  26. def instructionEvalution(domain: Domain)(pc: PC, instruction: Instruction, operands: Domain.Operands, locals: Domain.Locals): Unit

    Permalink

    Called before an instruction is evaluated.

    Called before an instruction is evaluated.

    This enables the tracer to precisely log the behavior of the abstract interpreter, but also enables the tracer to interrupt the evaluation to, e.g., enable stepping through a program.

    operands

    The operand stack before the execution of the instruction.

    locals

    The registers before the execution of the instruction.

    Definition Classes
    MultiTracerAITracer
  27. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  28. def join(domain: Domain)(pc: PC, thisOperands: Domain.Operands, thisLocals: Domain.Locals, otherOperands: Domain.Operands, otherLocals: Domain.Locals, result: Update[(Domain.Operands, Domain.Locals)]): Unit

    Permalink

    Called by the abstract interpreter whenever two paths converge and the values on the operand stack and the registers are joined.

    Called by the abstract interpreter whenever two paths converge and the values on the operand stack and the registers are joined.

    thisOperands

    The operand stack as it was used the last time when the instruction with the given program counter was evaluated.

    thisLocals

    The registers as they were used the last time when the instruction with the given program counter was evaluated.

    otherOperands

    The current operand stack when we re-reach the instruction

    otherLocals

    The current registers.

    result

    The result of joining the operand stacks and register assignment.

    Definition Classes
    MultiTracerAITracer
  29. def jumpToSubroutine(domain: Domain)(pc: PC, target: PC, nestingLevel: Int): Unit

    Permalink

    Called before a jump to a subroutine.

    Called before a jump to a subroutine.

    Definition Classes
    MultiTracerAITracer
  30. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  31. def noFlow(domain: Domain)(currentPC: PC, targetPC: PC): Unit

    Permalink

    Called by the interpreter if a successor instruction is NOT scheduled, because the abstract state didn't change.

    Called by the interpreter if a successor instruction is NOT scheduled, because the abstract state didn't change.

    Definition Classes
    MultiTracerAITracer
  32. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  33. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  34. def rescheduled(domain: Domain)(sourcePC: PC, targetPC: PC, isExceptionalControlFlow: Boolean, worklist: Chain[PC]): Unit

    Permalink

    Called if the instruction with the targetPC was already scheduled.

    Called if the instruction with the targetPC was already scheduled. I.e., the instruction was already scheduled for evaluation, but is now moved to the first position in the list of all instructions to be executed (related to the specific subroutine). A rescheduled event is also issued if the instruction was the the first in the list of instructions executed next. However, further instructions may be appended to the list before the next instructionEvaluation takes place.

    Definition Classes
    MultiTracerAITracer
    Note

    OPAL performs a depth-first exploration.

  35. def result(result: AIResult): Unit

    Permalink

    Called when the abstract interpretation of a method has completed/was interrupted.

    Called when the abstract interpretation of a method has completed/was interrupted.

    Definition Classes
    MultiTracerAITracer
  36. def ret(domain: Domain)(pc: PC, returnAddress: PC, oldWorklist: Chain[PC], newWorklist: Chain[PC]): Unit

    Permalink

    Called when a RET instruction is encountered.

    Called when a RET instruction is encountered. (That does not necessary imply that the evaluation of the subroutine as such has finished. It is possible that other paths still need to be pursued.)

    Definition Classes
    MultiTracerAITracer
  37. def returnFromSubroutine(domain: Domain)(pc: Int, returnAddress: Int, subroutineInstructions: Chain[Int]): Unit

    Permalink

    Called when the evaluation of a subroutine (JSR/RET) as a whole is completed.

    Called when the evaluation of a subroutine (JSR/RET) as a whole is completed. I.e., all possible paths are analyzed and the fixpoint is reached.

    Definition Classes
    MultiTracerAITracer
  38. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  39. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  40. val tracers: AITracer*

    Permalink
  41. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  42. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  43. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  44. def [B](y: B): (MultiTracer, B)

    Permalink
    Implicit information
    This member is added by an implicit conversion from MultiTracer to ArrowAssoc[MultiTracer] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc

Inherited from AITracer

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd from MultiTracer to any2stringadd[MultiTracer]

Inherited by implicit conversion StringFormat from MultiTracer to StringFormat[MultiTracer]

Inherited by implicit conversion Ensuring from MultiTracer to Ensuring[MultiTracer]

Inherited by implicit conversion ArrowAssoc from MultiTracer to ArrowAssoc[MultiTracer]

Ungrouped