Class Pass3bVerifier.InstructionContextQueue

  • Enclosing class:
    Pass3bVerifier

    private static final class Pass3bVerifier.InstructionContextQueue
    extends java.lang.Object
    An InstructionContextQueue is a utility class that holds (InstructionContext, ArrayList) pairs in a Queue data structure. This is used to hold information about InstructionContext objects externally --- i.e. that information is not saved inside the InstructionContext object itself. This is useful to save the execution path of the symbolic execution of the Pass3bVerifier - this is not information that belongs into the InstructionContext object itself. Only at "execute()"ing time, an InstructionContext object will get the current information we have about its symbolic execution predecessors.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<java.util.ArrayList<InstructionContext>> ecs
      The second elements from pairs in the queue.
      private java.util.List<InstructionContext> ics
      The first elements from pairs in the queue.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(InstructionContext ic, java.util.ArrayList<InstructionContext> executionChain)
      Adds an (InstructionContext, ExecutionChain) pair to this queue.
      java.util.ArrayList<InstructionContext> getEC​(int i)
      Gets a specific ExecutionChain from the queue.
      InstructionContext getIC​(int i)
      Gets a specific InstructionContext from the queue.
      boolean isEmpty()
      Tests if InstructionContext queue is empty.
      void remove​(int i)
      Removes a specific (InstructionContext, ExecutionChain) pair from their respective queues.
      int size()
      Gets the size of the InstructionContext queue.
      • Methods inherited from class java.lang.Object

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

      • ics

        private final java.util.List<InstructionContext> ics
        The first elements from pairs in the queue.
      • ecs

        private final java.util.List<java.util.ArrayList<InstructionContext>> ecs
        The second elements from pairs in the queue.
    • Constructor Detail

      • InstructionContextQueue

        private InstructionContextQueue()
    • Method Detail

      • add

        public void add​(InstructionContext ic,
                        java.util.ArrayList<InstructionContext> executionChain)
        Adds an (InstructionContext, ExecutionChain) pair to this queue.
        Parameters:
        ic - the InstructionContext
        executionChain - the ExecutionChain
      • getEC

        public java.util.ArrayList<InstructionContext> getEC​(int i)
        Gets a specific ExecutionChain from the queue.
        Parameters:
        i - the index of the item to be fetched
        Returns:
        the indicated ExecutionChain
      • getIC

        public InstructionContext getIC​(int i)
        Gets a specific InstructionContext from the queue.
        Parameters:
        i - the index of the item to be fetched
        Returns:
        the indicated InstructionContext
      • isEmpty

        public boolean isEmpty()
        Tests if InstructionContext queue is empty.
        Returns:
        true if the InstructionContext queue is empty.
      • remove

        public void remove​(int i)
        Removes a specific (InstructionContext, ExecutionChain) pair from their respective queues.
        Parameters:
        i - the index of the items to be removed
      • size

        public int size()
        Gets the size of the InstructionContext queue.
        Returns:
        the size of the InstructionQueue