trait PerformInvocationsWithRecursionDetection extends PerformInvocations with TheMemoryLayout
Enables to perform invocations.
Example
(PerformInvocationsWithRecursionDetection is in particular used by BugPicker's domain.)
- Self Type
- PerformInvocationsWithRecursionDetection with ValuesFactory with ReferenceValuesDomain with TheProject with TheMethod with Configuration
- Source
- PerformInvocationsWithRecursionDetection.scala
- Alphabetic
- By Inheritance
- PerformInvocationsWithRecursionDetection
- TheMemoryLayout
- PerformInvocations
- MethodCallsHandling
- MethodCallsDomain
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- abstract type CalledMethodDomain <: TargetDomain with ChildPerformInvocationsWithRecursionDetection with MethodCallResults
- Definition Classes
- PerformInvocationsWithRecursionDetection → PerformInvocations
- type MethodCallResult = Computation[(PerformInvocationsWithRecursionDetection.this)#DomainValue, (PerformInvocationsWithRecursionDetection.this)#ExceptionValues]
- Definition Classes
- MethodCallsDomain
Abstract Value Members
- abstract def calledMethodAI: AI[_ >: (PerformInvocationsWithRecursionDetection.this)#CalledMethodDomain]
The abstract interpreter that will be used for the abstract interpretation.
The abstract interpreter that will be used for the abstract interpretation.
- Definition Classes
- PerformInvocations
- abstract def calledMethodDomain(method: Method): (PerformInvocationsWithRecursionDetection.this)#CalledMethodDomain
The domain that will be used to perform the abstract interpretation of the called method.
The domain that will be used to perform the abstract interpretation of the called method.
In general, explicit support is required to identify recursive calls if the domain also follows method invocations.
- Attributes
- protected[this]
- Definition Classes
- PerformInvocations
- abstract def calledMethodsStore: CalledMethodsStore { val domain: PerformInvocationsWithRecursionDetection.this.coordinatingDomain.type }
- abstract val coordinatingDomain: BaseDomain
- abstract def frequentEvaluationWarningLevel: Int
- abstract def invokedynamic(pc: Int, bootstrapMethod: BootstrapMethod, name: String, methodDescriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Definition Classes
- MethodCallsDomain
- abstract def shouldInvocationBePerformed(method: Method): Boolean
Returns
true
if the given method should be invoked.Returns
true
if the given method should be invoked.- Definition Classes
- PerformInvocations
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def MethodCallResult(potentialExceptions: Iterable[(PerformInvocationsWithRecursionDetection.this)#ExceptionValue]): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
Factory method called to create a MethodCallResult.
Factory method called to create a MethodCallResult.
- Attributes
- protected[this]
- Definition Classes
- MethodCallsHandling
- def MethodCallResult(returnValue: (PerformInvocationsWithRecursionDetection.this)#DomainValue, exceptions: Iterable[(PerformInvocationsWithRecursionDetection.this)#ExceptionValue]): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
Factory method called to create a MethodCallResult.
Factory method called to create a MethodCallResult.
- Attributes
- protected[this]
- Definition Classes
- MethodCallsHandling
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- def doInvoke(pc: Int, method: Method, operands: (PerformInvocationsWithRecursionDetection.this)#Operands, fallback: () => (PerformInvocationsWithRecursionDetection.this)#MethodCallResult): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
Performs the invocation of the given method using the given operands.
Performs the invocation of the given method using the given operands.
- Attributes
- protected[this]
- Definition Classes
- PerformInvocationsWithRecursionDetection → PerformInvocations
- def doInvoke(method: Method, calledMethodDomain: (PerformInvocationsWithRecursionDetection.this)#CalledMethodDomain)(parameters: PerformInvocations.CalledMethodDomain.Locals): AIResult { val domain: calledMethodDomain.type }
- Attributes
- protected[this]
- Definition Classes
- PerformInvocations
- def doInvokeNonVirtual(pc: Int, declaringClass: ObjectType, isInterface: Boolean, name: String, descriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands, fallback: () => (PerformInvocationsWithRecursionDetection.this)#MethodCallResult): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Attributes
- protected[this]
- Definition Classes
- PerformInvocations
- def doInvokeVirtual(pc: Int, declaringClass: ReferenceType, isInterface: Boolean, name: String, descriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands, fallback: () => (PerformInvocationsWithRecursionDetection.this)#MethodCallResult): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
The default implementation only supports the case where we can precisely resolve the target.
The default implementation only supports the case where we can precisely resolve the target.
- Definition Classes
- PerformInvocations
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def getPotentialExceptions(pc: Int): List[(PerformInvocationsWithRecursionDetection.this)#ExceptionValue]
- Attributes
- protected[this]
- Definition Classes
- MethodCallsHandling
- def handleInstanceBasedInvoke(pc: Int, methodDescriptor: MethodDescriptor, targetMethods: Set[Method], receiverIsNull: Answer, operands: (PerformInvocationsWithRecursionDetection.this)#Operands): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- methodDescriptor
The method descriptor as specified by the invoke instruction. In case of the invocation of a signature polymorphic method using org.opalj.br.instructions.INVOKEVIRTUAL the descriptor of the invoked method may differ from the descriptor used by the method. Nevertheless, the MethodCallResult has to satisfy the requirements of the caller. In particular regarding the return type.
- Attributes
- protected[this]
- Definition Classes
- MethodCallsHandling
- def handleInstanceBasedInvoke(pc: Int, methodDescriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Attributes
- protected[this]
- Definition Classes
- MethodCallsHandling
- def handleInstanceBasedInvoke(pc: Int, methodDescriptor: MethodDescriptor, receiverIsNull: Answer): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Attributes
- protected[this]
- Definition Classes
- MethodCallsHandling
- def handleInvoke(pc: Int, methodDescriptor: MethodDescriptor): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Attributes
- protected[this]
- Definition Classes
- MethodCallsHandling
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def invokeinterface(pc: Int, declaringClass: ObjectType, name: String, descriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Definition Classes
- PerformInvocations → MethodCallsDomain
- def invokespecial(pc: Int, declaringClass: ObjectType, isInterface: Boolean, name: String, descriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Definition Classes
- PerformInvocations → MethodCallsDomain
- def invokestatic(pc: Int, declaringClass: ObjectType, isInterface: Boolean, name: String, descriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
For those
invokestatic
calls for which we have no concrete method (e.g., the respective class file was never loaded or the method is native) or if we have a recursive invocation, the super implementation is called.For those
invokestatic
calls for which we have no concrete method (e.g., the respective class file was never loaded or the method is native) or if we have a recursive invocation, the super implementation is called.- Definition Classes
- PerformInvocations → MethodCallsDomain
- def invokevirtual(pc: Int, declaringClass: ReferenceType, name: String, descriptor: MethodDescriptor, operands: (PerformInvocationsWithRecursionDetection.this)#Operands): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Definition Classes
- PerformInvocations → MethodCallsDomain
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def localsArray: (PerformInvocationsWithRecursionDetection.this)#LocalsArray
- Definition Classes
- TheMemoryLayout
- def memoryLayoutBeforeSubroutineCall: List[(PC, (PerformInvocationsWithRecursionDetection.this)#OperandsArray, (PerformInvocationsWithRecursionDetection.this)#LocalsArray)]
- Definition Classes
- TheMemoryLayout
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- def operandsArray: (PerformInvocationsWithRecursionDetection.this)#OperandsArray
- Definition Classes
- TheMemoryLayout
- def subroutinesLocalsArray: (PerformInvocationsWithRecursionDetection.this)#LocalsArray
- Definition Classes
- TheMemoryLayout
- def subroutinesOperandsArray: (PerformInvocationsWithRecursionDetection.this)#OperandsArray
- Definition Classes
- TheMemoryLayout
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def testAndDoInvoke(pc: Int, method: Method, operands: (PerformInvocationsWithRecursionDetection.this)#Operands, fallback: () => (PerformInvocationsWithRecursionDetection.this)#MethodCallResult): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
- Attributes
- protected[this]
- Definition Classes
- PerformInvocations
- def toString(): String
- Definition Classes
- AnyRef → Any
- def transformResult(callerPC: Int, calledMethod: Method, originalOperands: (PerformInvocationsWithRecursionDetection.this)#Operands, calledMethodDomain: (PerformInvocationsWithRecursionDetection.this)#CalledMethodDomain)(passedParameters: PerformInvocations.CalledMethodDomain.Locals, result: AIResult { val domain: calledMethodDomain.type }): (PerformInvocationsWithRecursionDetection.this)#MethodCallResult
Converts the results (
DomainValue
s) of the evaluation of the called method into the calling domain.Converts the results (
DomainValue
s) of the evaluation of the called method into the calling domain.If the returned value is one of the parameters (determined using reference identity), then the parameter is mapped back to the original operand.
- Attributes
- protected[this]
- Definition Classes
- PerformInvocations
- def useExceptionsThrownByCalledMethod: Boolean
If
true
the exceptions thrown by the called method will be used during the evaluation of the calling method.If
true
the exceptions thrown by the called method will be used during the evaluation of the calling method.- Definition Classes
- PerformInvocations
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated