final class NaiveTACode[P <: AnyRef] extends TACode[P, IdBasedVar]
- Source
- TACode.scala
- Alphabetic
- By Inheritance
- NaiveTACode
- TACode
- CodeSequence
- Attribute
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new NaiveTACode(params: Parameters[P], stmts: Array[Stmt[IdBasedVar]], pcToIndex: Array[Int], cfg: CFG[Stmt[IdBasedVar], TACStmts[IdBasedVar]], exceptionHandlers: ExceptionHandlers)
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
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- val cfg: CFG[Stmt[IdBasedVar], TACStmts[IdBasedVar]]
- Definition Classes
- NaiveTACode → TACode
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def equals(other: Any): Boolean
- Definition Classes
- TACode → AnyRef → Any
- val exceptionHandlers: ExceptionHandlers
- Definition Classes
- NaiveTACode → TACode
- def firstLineNumber(code: Code): Option[Int]
- Definition Classes
- TACode
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final lazy val hashCode: Int
- Definition Classes
- TACode → AnyRef → Any
- def instructions: Array[Stmt[IdBasedVar]]
- Definition Classes
- TACode → CodeSequence
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def kindId: Int
Returns the unique ID that identifies this kind of attribute (Signature, LineNumberTable, ...)
Returns the unique ID that identifies this kind of attribute (Signature, LineNumberTable, ...)
This id can then be used in a switch statement to efficiently identify the attribute.
(attribute.id : @scala.annotation.switch) match { case Signature.Id => ... }
Associating Unique Id
The unique ids are manually associated with the attributes. The attributes use the following IDs:
- (-1 Unknown Attribute)
- 1-5 The ConstantValue Attribute
- 6 The Code Attribute
- 7 The StackMapTable Attribute
- 8 The Exceptions Attribute
- 9 The InnerClasses Attribute
- 10 The EnclosingMethod Attribute
- 11 The Synthetic Attribute
- 12-16 The Signature Attribute
- 17 The SourceFile Attribute
- 18 The SourceDebugExtension Attribute
- 19 The LineNumberTable Attribute
- 20 The LocalVariableTable Attribute
- 21 The LocalVariableTypeTable Attribute
- 22 The Deprecated Attribute
- 23 The RuntimeVisibleAnnotations Attribute
- 24 The RuntimeInvisibleAnnotations Attribute
- 25 The RuntimeVisibleParameterAnnotations Attribute
- 26 The RuntimeInvisibleParameterAnnotations Attribute
- 27 The RuntimeVisibleTypeAnnotations Attribute
- 28 The RuntimeInvisibleTypeAnnotations Attribute
- 29-41 The AnnotationDefault Attribute
- 42 The BootstrapMethods Attribute
- 43 The MethodParameters Attribute
- 44 The Module Attribute (Java 9)
- 45 The ModuleMainClass Attribute (Java 9)
- 46 The ModulePackages Attribute (Java 9)
- 47 The NestHost Attribute (Java 11)
- 48 The NestMembers Attribute (Java 11)
- 49 The Record Attribute (Java 16)
- 1001 OPAL's VirtualTypeFlag Attribute
- 1002 OPAL's SynthesizedClassFiles Attribute
- 1003 OPAL's TACode Attribute (the 3-Address Code)
- def lineNumber(code: Code, index: Int): Option[Int]
- Definition Classes
- TACode
- 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()
- val params: Parameters[P]
The variables which store the method's explicit and implicit (
this
in case of an instance method) parameters.The variables which store the method's explicit and implicit (
this
in case of an instance method) parameters. In case of the ai-based representation (TACAI - default representation), the variables are returned which store (the initial) parameters. If these variables are written and we have a loop which includes the very first instruction, the value will reflect this usage. In case of the naive representation it "just" contains the names of the registers which store the parameters.- Definition Classes
- NaiveTACode → TACode
- def pcOfNextInstruction(pc: Int): Int
- Definition Classes
- TACode → CodeSequence
- def pcOfPreviousInstruction(pc: Int): Int
Returns the pc of the previous instruction which is always the current pc - 1, because the representation is compact.
Returns the pc of the previous instruction which is always the current pc - 1, because the representation is compact.
- Definition Classes
- TACode → CodeSequence
- val pcToIndex: Array[Int]
The mapping between the pcs of the original bytecode instructions to the index of the first statement that was generated for the bytecode instruction - if any.
The mapping between the pcs of the original bytecode instructions to the index of the first statement that was generated for the bytecode instruction - if any. For details see
TACNaive
andTACAI
.- Definition Classes
- NaiveTACode → TACode
- def properStmtIndexForPC(pc: PC): Int
Gives for a bytecode program counter the next index in this TACode that is *not* a CaughtException statement.
Gives for a bytecode program counter the next index in this TACode that is *not* a CaughtException statement.
- Definition Classes
- TACode
- def similar(other: Attribute, config: SimilarityTestConfiguration): Boolean
Returns true if this attribute and the given one are guaranteed to be indistinguishable at runtime.
- val stmts: Array[Stmt[IdBasedVar]]
- Definition Classes
- NaiveTACode → TACode
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- NaiveTACode → AnyRef → Any
- def toString(taCodeType: String, additionalParameters: String): String
- Attributes
- protected[this]
- Definition Classes
- TACode
- 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