The computational type of the result of the binary expression.
Defines nodes used by statements and expressions.
First the pc (absolute) of the target instruction in the
original bytecode array; then the index of the respective quadruples
instruction.
A JSR Instruction is mapped to two instructions:
A JSR Instruction is mapped to two instructions:
At creation time the pc (absolute) of the target instruction in the
original bytecode array; then the index of the respective quadruples
instruction.
Parameter expressions must occur at the very beginning of the quadruples code and must perform the initial initialization of the register values.
The computational type of the result of the prefix expression.
The id determines the name of the local variable and is equivalent to "the position of the value on the operand stack" or "-1-(the accessed register)".
The id determines the name of the local variable and is equivalent to "the position of the value on the operand stack" or "-1-(the accessed register)". If the id is Int.MinValue then the variable is an intermediate variable that was artificially generated.
Super trait of all quadruple statements.
Common interface of all code optimizers that operate on the three-address code representation.
Encapsulates the result of an optimization/transformation of some three-address code.
Converts the bytecode of a method into a three address representation using quadruples.
Converts the bytecode of a method into a three address representation using quadruples. The converted method has an isomorophic CFG when compared to the original method, but may contain more instructions.
A very simple peephole optimizer which performs intra-basic block constant and copy propagation.
Creates the three-address representation and prints it.
Creates the three-address representation and prints it.
To convert all files of a project to TAC you can use:
import org.opalj.io.write import org.opalj.tac._ import org.opalj.util.PerformanceEvaluation.time val f = new java.io.File("/Users/eichberg/Downloads/presto-verifier-0.147-executable.zip") val p = org.opalj.br.analyses.Project(f) var i = 0 time { p.parForeachMethodWithBody(parallelizationLevel=32){ mi => val (code,_) = org.opalj.tac.AsQuadruples(mi.method,p.classHierarchy) val tac = ToJavaLike(code) val fileNamePrefix = mi.classFile.thisType.toJava+"."+mi.method.name val file = write(tac, fileNamePrefix, ".tac.txt") i+= 1 println(i+":"+file) } }(t => println("Analysis time: "+t.toSeconds))
Converts a list of three-address instructions into a Java like representation.
Common definitions related to the definition and processing of three address code.