Class TryCatchDetails

java.lang.Object
org.jboss.byteman.agent.adapter.cfg.TryCatchDetails

public class TryCatchDetails extends Object
auxiliary used by CFG to store details of a specific try catch block
  • Field Details

    • cfg

      private CFG cfg
      back link to the control flow graph
    • start

      private org.objectweb.asm.Label start
      the label identifying the start of the try catch block
    • end

      private org.objectweb.asm.Label end
      the label identifying the end of the try catch block
    • handler

      private org.objectweb.asm.Label handler
      the label identifying the start of the try catch block handler
    • openEnters

      private List<CodeLocation> openEnters
      a list of monitor enter instructions which are opened within the scope of this try catch block and hence which may require closing in the associated handler
    • type

      private String type
      the name of the exception type handled by the handler or null if it is a catch all handler
    • isTriggerHandler

      private boolean isTriggerHandler
      true if this is a trigger handler otherwise false
    • shadowRegions

      private List<TryCatchDetails> shadowRegions
      A list of details for all the try catch regions which shadow this region i.e. which prevent exception control flow to it from an embedded region because they either catch everything or they catch the same type or a supertype of this exception.
  • Constructor Details

    • TryCatchDetails

      public TryCatchDetails(CFG cfg, org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, String type, boolean isTriggerHandler)
      construct a try catch details instance
      Parameters:
      cfg - the control flow graph
      start - the try block start
      end - the try block end
      handler - the handler block start
      type - the handled exception type
      isTriggerHandler - true if this handler handles Byteman errors
  • Method Details

    • getStart

      public org.objectweb.asm.Label getStart()
    • getEnd

      public org.objectweb.asm.Label getEnd()
    • getHandler

      public org.objectweb.asm.Label getHandler()
    • getType

      public String getType()
    • isTriggerHandler

      public boolean isTriggerHandler()
    • addOpenEnter

      public void addOpenEnter(CodeLocation openEnter)
      add a new monitor enter location to the list of open locations associated with this handler maintaining the reverse position ordering
      Parameters:
      openEnter - the location of the monitor enter
    • containsOpenEnter

      public boolean containsOpenEnter(CodeLocation openEnter)
      check if a monitor enter location belongs to the list of open locations associated with this handler
      Parameters:
      openEnter - the location of the monitor enter
      Returns:
      true if it belongs ot the list
    • addOpenLocations

      public void addOpenLocations(List<CodeLocation> openMonitorEnters)
      add all the open locations associated with this handler to the supplied list of open locations maintaining the reverse position ordering
      Parameters:
      openMonitorEnters - list of locations of the monitor enters
    • getOpenEnters

      public Iterator<CodeLocation> getOpenEnters()
    • addShadowRegion

      public void addShadowRegion(TryCatchDetails tryCatchDetails)
      add a shadowing region to the list of regions which shadow this one
      Parameters:
      tryCatchDetails - detaisl of a try catch block
    • getShadowRegions

      public List<TryCatchDetails> getShadowRegions()
    • hasShadowRegion

      public boolean hasShadowRegion(TryCatchDetails tryCatchDetails)
    • toString

      public String toString()
      Overrides:
      toString in class Object