soot.shimple.internal
Class SPatchingChain

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--soot.PatchingChain
              |
              +--soot.shimple.internal.SPatchingChain

public class SPatchingChain
extends PatchingChain

Internal Shimple extension of PatchingChain.

See Also:
PatchingChain, Serialized Form

Inner Class Summary
protected  class SPatchingChain.SPatchingIterator
           
 
Inner classes inherited from class soot.PatchingChain
PatchingChain.PatchingIterator
 
Field Summary
protected  java.util.Map boxToNeedsPatching
          Flag that indicates whether control flow falls through from the box to the Phi node.
protected  java.util.Map boxToPhiNode
          Map from UnitBox to the Phi node owning it.
 
Fields inherited from class soot.PatchingChain
innerChain
 
Constructor Summary
SPatchingChain(Body aBody, Chain aChain)
           
 
Method Summary
 boolean add(java.lang.Object o)
          Adds the given object to this Chain.
 void addFirst(java.lang.Object u)
          Adds the given object at the beginning of the Chain.
 void addLast(java.lang.Object u)
          Adds the given object at the end of the Chain.
protected  void computeNeedsPatching()
          NOTE: This will *miss* all the Phi nodes outside a chain.
protected  SUnitBox getSBox(java.lang.Object box)
           
 void insertAfter(java.util.List toInsert, java.lang.Object point)
          Inserts toInsert in the Chain after point.
 void insertAfter(java.lang.Object toInsert, java.lang.Object point)
          Inserts toInsert in the Chain after point.
 void insertBefore(java.util.List toInsert, java.lang.Object point)
          Inserts toInsert in the Chain before point.
 void insertBefore(java.lang.Object toInsert, java.lang.Object point)
          Inserts toInsert in the Chain before point.
 java.util.Iterator iterator()
          Returns an iterator over this Chain.
 java.util.Iterator iterator(java.lang.Object u)
          Returns an iterator over this Chain, starting at the given object.
 java.util.Iterator iterator(java.lang.Object head, java.lang.Object tail)
          Returns an iterator over this Chain, starting at head and reaching tail (inclusive).
protected  void processPhiNode(java.lang.Object o)
           
 boolean remove(java.lang.Object obj)
          Removes the given object from this Chain.
protected  void reprocessPhiNodes()
           
 
Methods inherited from class soot.PatchingChain
contains, follows, getFirst, getLast, getNonPatchingChain, getPredOf, getSuccOf, removeFirst, removeLast, size, snapshotIterator, swapWith
 
Methods inherited from class java.util.AbstractCollection
addAll, clear, containsAll, isEmpty, removeAll, retainAll, toArray, toArray, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

boxToPhiNode

protected java.util.Map boxToPhiNode
Map from UnitBox to the Phi node owning it.

boxToNeedsPatching

protected java.util.Map boxToNeedsPatching
Flag that indicates whether control flow falls through from the box to the Phi node. null indicates we probably need a call to computeInternal().
Constructor Detail

SPatchingChain

public SPatchingChain(Body aBody,
                      Chain aChain)
Method Detail

add

public boolean add(java.lang.Object o)
Description copied from class: PatchingChain
Adds the given object to this Chain.
Overrides:
add in class PatchingChain

insertAfter

public void insertAfter(java.lang.Object toInsert,
                        java.lang.Object point)
Description copied from class: PatchingChain
Inserts toInsert in the Chain after point.
Overrides:
insertAfter in class PatchingChain

insertAfter

public void insertAfter(java.util.List toInsert,
                        java.lang.Object point)
Description copied from class: PatchingChain
Inserts toInsert in the Chain after point.
Overrides:
insertAfter in class PatchingChain

insertBefore

public void insertBefore(java.util.List toInsert,
                         java.lang.Object point)
Description copied from class: PatchingChain
Inserts toInsert in the Chain before point.
Overrides:
insertBefore in class PatchingChain

insertBefore

public void insertBefore(java.lang.Object toInsert,
                         java.lang.Object point)
Description copied from class: PatchingChain
Inserts toInsert in the Chain before point.
Overrides:
insertBefore in class PatchingChain

addFirst

public void addFirst(java.lang.Object u)
Description copied from class: PatchingChain
Adds the given object at the beginning of the Chain.
Overrides:
addFirst in class PatchingChain

addLast

public void addLast(java.lang.Object u)
Description copied from class: PatchingChain
Adds the given object at the end of the Chain.
Overrides:
addLast in class PatchingChain

remove

public boolean remove(java.lang.Object obj)
Description copied from class: PatchingChain
Removes the given object from this Chain.
Overrides:
remove in class PatchingChain

processPhiNode

protected void processPhiNode(java.lang.Object o)

reprocessPhiNodes

protected void reprocessPhiNodes()

computeNeedsPatching

protected void computeNeedsPatching()
NOTE: This will *miss* all the Phi nodes outside a chain. So make sure you know what you are doing if you remove a Phi node from a chain and don't put it back or call clearUnitBoxes() on it.

getSBox

protected SUnitBox getSBox(java.lang.Object box)

iterator

public java.util.Iterator iterator()
Description copied from class: PatchingChain
Returns an iterator over this Chain.
Overrides:
iterator in class PatchingChain

iterator

public java.util.Iterator iterator(java.lang.Object u)
Description copied from class: PatchingChain
Returns an iterator over this Chain, starting at the given object.
Overrides:
iterator in class PatchingChain

iterator

public java.util.Iterator iterator(java.lang.Object head,
                                   java.lang.Object tail)
Description copied from class: PatchingChain
Returns an iterator over this Chain, starting at head and reaching tail (inclusive).
Overrides:
iterator in class PatchingChain