Class MarkLabel

  • All Implemented Interfaces:
    CodeGenerator

    public class MarkLabel
    extends java.lang.Object
    implements CodeGenerator
    A CodeGenerator that just marks a label that can be used for jumps.
    Author:
    Matthew Pocock
    • Constructor Summary

      Constructors 
      Constructor Description
      MarkLabel​(Label label)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int stackDelta()
      Return the change in the stack dept this generator will cause.
      int stackDepth()
      Return the total depth of the stack required by this CodeGenerator.
      void writeCode​(CodeContext ctx)
      Write the byte or bytes for this CodeGenerator to a CodeContext.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • MarkLabel

        public MarkLabel​(Label label)
    • Method Detail

      • writeCode

        public void writeCode​(CodeContext ctx)
                       throws CodeException
        Description copied from interface: CodeGenerator
        Write the byte or bytes for this CodeGenerator to a CodeContext.
        Specified by:
        writeCode in interface CodeGenerator
        Parameters:
        ctx - a CodeContext to write to
        Throws:
        CodeException - if there was some failure in writing to the context
      • stackDepth

        public int stackDepth()
        Description copied from interface: CodeGenerator
        Return the total depth of the stack required by this CodeGenerator.

        For single byte-code instructions, this will be the same as stackDelta() if stackDelta() is positive, zero otherwise. For a compound instruction, this will be the maximum stack depth required to execute all sub-instructions.

        Specified by:
        stackDepth in interface CodeGenerator
        Returns:
        the stack depth needed
      • stackDelta

        public int stackDelta()
        Description copied from interface: CodeGenerator
        Return the change in the stack dept this generator will cause.

        In the case of an instruction that adds items to the stack, stackDelta will be positive. For instructions that removes items from the stack, this will be negative.

        Specified by:
        stackDelta in interface CodeGenerator
        Returns:
        the change between stack depth before and after execution of this code