|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjist.runtime.ClassTraversal.Empty
jist.runtime.RewriterTraversalModifyEntityInvocation
class RewriterTraversalModifyEntityInvocation
Traversal object that intercepts any method invocation instructions to entity objects. This conversion is a little bit tricky, because it involves a bit more bytecode generation. The basic idea has three parts. First, the appropriate method object is selected from the corresponding method stub field. Second, corresponding entity reference (or entity, in the case of a "this." call) is passed along. Lastly, all the invocation parameters on the stack are placed an object array of the appropriate size. Primitive types are first converted into their object equivalents.
Controller.newEntityReference(jist.runtime.Entity)
,
JistAPI.Entity
,
EntityRef
Field Summary | |
---|---|
private org.apache.bcel.generic.ConstantPoolGen |
cpg
class constant pool. |
private org.apache.bcel.generic.InstructionFactory |
ifc
class instruction factory. |
private Rewriter |
rewriter
primary rewriter. |
Constructor Summary | |
---|---|
RewriterTraversalModifyEntityInvocation(Rewriter rewriter)
Create rewriter object to modify entity invocation points. |
Method Summary | |
---|---|
org.apache.bcel.generic.ClassGen |
doClass(org.apache.bcel.generic.ClassGen cg)
Upcall to process class before field and method processing. |
void |
doInstruction(org.apache.bcel.generic.ClassGen cg,
org.apache.bcel.generic.MethodGen mg,
org.apache.bcel.generic.InstructionHandle ih,
org.apache.bcel.generic.Instruction inst)
Upcall to process instruction. Note that instructions can be inserted and deleted directly using the BCEL API, and therefore this method returns void . |
private void |
packParametersIntoArray(org.apache.bcel.generic.InstructionList il,
org.apache.bcel.generic.Type[] args,
org.apache.bcel.generic.MethodGen mg,
org.apache.bcel.generic.InstructionHandle ih)
Insert code to pack method parameters into object array. |
Methods inherited from class jist.runtime.ClassTraversal.Empty |
---|
doClassPost, doField, doMethod, doMethodPost |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private org.apache.bcel.generic.InstructionFactory ifc
private org.apache.bcel.generic.ConstantPoolGen cpg
private Rewriter rewriter
Constructor Detail |
---|
public RewriterTraversalModifyEntityInvocation(Rewriter rewriter)
rewriter
- reference to primary rewriterMethod Detail |
---|
public org.apache.bcel.generic.ClassGen doClass(org.apache.bcel.generic.ClassGen cg)
doClass
in interface ClassTraversal.Visitor
doClass
in class ClassTraversal.Empty
cg
- BCEL class generator object to process
private void packParametersIntoArray(org.apache.bcel.generic.InstructionList il, org.apache.bcel.generic.Type[] args, org.apache.bcel.generic.MethodGen mg, org.apache.bcel.generic.InstructionHandle ih) throws java.lang.ClassNotFoundException
il
- instruction listargs
- method argumentsmg
- method objectih
- instruction handle
java.lang.ClassNotFoundException
public void doInstruction(org.apache.bcel.generic.ClassGen cg, org.apache.bcel.generic.MethodGen mg, org.apache.bcel.generic.InstructionHandle ih, org.apache.bcel.generic.Instruction inst) throws java.lang.ClassNotFoundException
void
.
doInstruction
in interface ClassTraversal.Visitor
doInstruction
in class ClassTraversal.Empty
cg
- BCEL class generator objectmg
- BCEL method generator objectih
- BCEL instruction handle object to processinst
- BCEL instruction object to process
java.lang.ClassNotFoundException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |