|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.glassfish.pfl.dynamic.codegen.impl.ByteCodeUtility
public final class ByteCodeUtility
Class that is responsible for low-level bytecode generation using ASM. It provides methods that directly generate bytecode in a MethodVisitor. This will often be accompanied by type analysis, such as in determining the correct sort of return instruction to use, or how to generate code for a constant.
| Constructor Summary | |
|---|---|
ByteCodeUtility(org.glassfish.pfl.objectweb.asm.ClassWriter cw,
ClassGeneratorImpl cg)
|
|
ByteCodeUtility(org.glassfish.pfl.objectweb.asm.ClassWriter cw,
ClassGeneratorImpl cg,
boolean debug,
PrintStream ps)
Construct an instance of ByteCodeUtility from an ASM ClassWriter and a codegen ClassGeneratorImpl. |
|
| Method Summary | |
|---|---|
void |
addField(FieldGenerator arg)
|
void |
callEmitter(EmitterFactory.Emitter emitter)
|
void |
emitArrayStore()
|
void |
emitBinaryOperator(ExpressionFactory.BinaryOperatorExpression arg)
|
void |
emitBranch(MyLabel target)
|
void |
emitCast(Type from,
Type to)
|
void |
emitConditionalBranch(MyLabel falseBranch)
|
void |
emitConstantExpression(Type type,
Object value)
|
void |
emitConversion(Type from,
Type to)
|
void |
emitDup()
|
void |
emitExceptionTableEntry(org.glassfish.pfl.objectweb.asm.Label start,
org.glassfish.pfl.objectweb.asm.Label end,
org.glassfish.pfl.objectweb.asm.Label handler,
Type exceptionType)
|
void |
emitInstanceof(Type type)
|
void |
emitInvoke(Type type,
String name,
Signature sig)
Emit the appropriate non-static INVOKE instruction as follows: If type is an interface, emit INVOKEINTERFACE. |
void |
emitJsr(org.glassfish.pfl.objectweb.asm.Label label)
|
void |
emitLabel(Attribute<MyLabel> attr,
Node node)
|
void |
emitMethodEnd(MethodGenerator mg,
org.glassfish.pfl.objectweb.asm.Label returnLabel,
Variable returnVariable,
boolean dump)
|
void |
emitMethodStart(MethodGenerator mg)
|
void |
emitNewArrayCall(Type type)
|
void |
emitNewCall(Type type)
Emit the NEW, DUP sequence required at the start of a new call. |
void |
emitNewInvoke(Type type,
Signature sig)
Emit the INVOKESPECIAL instruction for calling a constructor with the given signature. |
void |
emitPop()
|
void |
emitRet(Variable var)
|
void |
emitSpecialInvoke(Type type,
String name,
Signature sig)
Emit the INVOKESPECIAL instruction for calling a method with the given signature. |
void |
emitStaticInvoke(Type type,
String name,
Signature sig)
Emit a static INVOKE instruction. |
void |
emitThisExpression()
|
void |
emitThrow()
|
int |
typeCode(Type type)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public ByteCodeUtility(org.glassfish.pfl.objectweb.asm.ClassWriter cw,
ClassGeneratorImpl cg,
boolean debug,
PrintStream ps)
public ByteCodeUtility(org.glassfish.pfl.objectweb.asm.ClassWriter cw,
ClassGeneratorImpl cg)
| Method Detail |
|---|
public void addField(FieldGenerator arg)
public void emitMethodStart(MethodGenerator mg)
public void emitMethodEnd(MethodGenerator mg,
org.glassfish.pfl.objectweb.asm.Label returnLabel,
Variable returnVariable,
boolean dump)
public void emitRet(Variable var)
public void emitConstantExpression(Type type,
Object value)
public void emitThisExpression()
public void emitConditionalBranch(MyLabel falseBranch)
public void emitBranch(MyLabel target)
public void emitLabel(Attribute<MyLabel> attr,
Node node)
public void emitNewCall(Type type)
public void emitInstanceof(Type type)
public void emitCast(Type from,
Type to)
public void emitDup()
public void emitArrayStore()
public int typeCode(Type type)
public void emitNewArrayCall(Type type)
public void emitStaticInvoke(Type type,
String name,
Signature sig)
public void emitInvoke(Type type,
String name,
Signature sig)
public void emitNewInvoke(Type type,
Signature sig)
public void emitSpecialInvoke(Type type,
String name,
Signature sig)
public void emitThrow()
public void emitExceptionTableEntry(org.glassfish.pfl.objectweb.asm.Label start,
org.glassfish.pfl.objectweb.asm.Label end,
org.glassfish.pfl.objectweb.asm.Label handler,
Type exceptionType)
public void emitJsr(org.glassfish.pfl.objectweb.asm.Label label)
public void callEmitter(EmitterFactory.Emitter emitter)
public void emitPop()
public void emitConversion(Type from,
Type to)
public void emitBinaryOperator(ExpressionFactory.BinaryOperatorExpression arg)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||