org.glassfish.pfl.dynamic.codegen.impl
Class EmitterFactory

java.lang.Object
  extended by org.glassfish.pfl.dynamic.codegen.impl.EmitterFactory

public final class EmitterFactory
extends Object

This class provides methods that allow the construction of an object that can later be used to emit a bytecode. This is useful when multiple visitors are needed for first preparing an AST, then generating the bytecode.


Nested Class Summary
static class EmitterFactory.CompoundEmitter
           
static interface EmitterFactory.Emitter
          Simple wrapper class around a UnaryVoidFunction.
static class EmitterFactory.NullEmitter
           
static class EmitterFactory.SimpleEmitter
           
 
Method Summary
static EmitterFactory.Emitter makeEmitter(ExpressionFactory.ArrayIndexExpression expr, boolean isStore)
          Create an emitter that generates the instruction needed to either store the TOS value into an array (aastore) (isStore==true) or push the array element's value onto the stack (aaload) (isStore==false).
static EmitterFactory.Emitter makeEmitter(ExpressionFactory.ArrayLengthExpression expr)
           
static EmitterFactory.Emitter makeEmitter(ExpressionFactory.NonStaticFieldAccessExpression expr, boolean isStore)
          Create an emitter that generates the instruction needed to either store the TOS value into the non-static field (isStore==true) or push the non-static fields's value onto the stack (isStore==false).
static EmitterFactory.Emitter makeEmitter(ExpressionFactory.StaticFieldAccessExpression expr, boolean isStore)
          Create an emitter that generates the instruction needed to either store the TOS value into the static field (isStore==true) or push the static fields's value onto the stack (isStore==false).
static EmitterFactory.Emitter makeEmitter(Variable var, boolean isStore)
          Create an emitter that generates the instruction needed to either store the TOS value into the variable (isStore==true) or push the variable's value onto the stack (isStore==false).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

makeEmitter

public static EmitterFactory.Emitter makeEmitter(Variable var,
                                                 boolean isStore)
Create an emitter that generates the instruction needed to either store the TOS value into the variable (isStore==true) or push the variable's value onto the stack (isStore==false). The stack index must be set on var in the stackFrameSlot attribute.


makeEmitter

public static EmitterFactory.Emitter makeEmitter(ExpressionFactory.NonStaticFieldAccessExpression expr,
                                                 boolean isStore)
Create an emitter that generates the instruction needed to either store the TOS value into the non-static field (isStore==true) or push the non-static fields's value onto the stack (isStore==false).


makeEmitter

public static EmitterFactory.Emitter makeEmitter(ExpressionFactory.StaticFieldAccessExpression expr,
                                                 boolean isStore)
Create an emitter that generates the instruction needed to either store the TOS value into the static field (isStore==true) or push the static fields's value onto the stack (isStore==false).


makeEmitter

public static EmitterFactory.Emitter makeEmitter(ExpressionFactory.ArrayIndexExpression expr,
                                                 boolean isStore)
Create an emitter that generates the instruction needed to either store the TOS value into an array (aastore) (isStore==true) or push the array element's value onto the stack (aaload) (isStore==false). This emitter assumes that arrayref and index are already on the stack, and value is on the stack either before (aastore) or after (aaload) the instruction executes.


makeEmitter

public static EmitterFactory.Emitter makeEmitter(ExpressionFactory.ArrayLengthExpression expr)


Copyright © 2013 Oracle. All Rights Reserved.