Class EmitterFactory


  • public final class EmitterFactory
    extends java.lang.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.
    • Field Detail

      • opcodeNames

        private static java.lang.String[] opcodeNames
      • visitInsnSet

        private static java.util.BitSet visitInsnSet
      • visitIntInsnSet

        private static java.util.BitSet visitIntInsnSet
      • visitVarInsnSet

        private static java.util.BitSet visitVarInsnSet
      • visitFieldInsnSet

        private static java.util.BitSet visitFieldInsnSet
      • visitMethodInsnSet

        private static java.util.BitSet visitMethodInsnSet
      • visitTypeInsnSet

        private static java.util.BitSet visitTypeInsnSet
      • visitJumpInsnSet

        private static java.util.BitSet visitJumpInsnSet
      • specialOpcodeSet

        private static java.util.BitSet specialOpcodeSet
      • validOpcodeSet

        private static java.util.BitSet validOpcodeSet
    • Constructor Detail

      • EmitterFactory

        private EmitterFactory()
    • Method Detail

      • makeBitSet

        private static java.util.BitSet makeBitSet​(int... args)
      • check

        private static void check​(java.util.BitSet validOps,
                                  int op)
      • getVarInsnOpcode

        private static int getVarInsnOpcode​(Type type,
                                            boolean isStore)
      • makeFieldInsnEmitter

        private static EmitterFactory.Emitter makeFieldInsnEmitter​(boolean isStore,
                                                                   boolean isStatic,
                                                                   Type targetType,
                                                                   java.lang.String name,
                                                                   Type varType)
      • 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.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.