Class TryCatchDetails


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

      Fields 
      Modifier and Type Field Description
      private CFG cfg
      back link to the control flow graph
      private org.objectweb.asm.Label end
      the label identifying the end of the try catch block
      private org.objectweb.asm.Label handler
      the label identifying the start of the try catch block handler
      private boolean isTriggerHandler
      true if this is a trigger handler otherwise false
      private java.util.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
      private java.util.List<TryCatchDetails> shadowRegions
      A list of details for all the try catch regions which shadow this region i.e.
      private org.objectweb.asm.Label start
      the label identifying the start of the try catch block
      private java.lang.String type
      the name of the exception type handled by the handler or null if it is a catch all handler
    • Constructor Summary

      Constructors 
      Constructor Description
      TryCatchDetails​(CFG cfg, org.objectweb.asm.Label start, org.objectweb.asm.Label end, org.objectweb.asm.Label handler, java.lang.String type, boolean isTriggerHandler)
      construct a try catch details instance
    • Field Detail

      • 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 java.util.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 java.lang.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 java.util.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 Detail

      • TryCatchDetails

        public TryCatchDetails​(CFG cfg,
                               org.objectweb.asm.Label start,
                               org.objectweb.asm.Label end,
                               org.objectweb.asm.Label handler,
                               java.lang.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 Detail

      • getStart

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

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

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

        public java.lang.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​(java.util.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 java.util.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 java.util.List<TryCatchDetails> getShadowRegions()
      • hasShadowRegion

        public boolean hasShadowRegion​(TryCatchDetails tryCatchDetails)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object