org.jboss.byteman.agent.adapter.cfg
Class TryCatchDetails

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

public class TryCatchDetails
extends java.lang.Object

auxiliary used by CFG to store details of a specific try catch block


Field Summary
private  CFG cfg
          back link to the control flow graph
private  Label end
          the label identifying the end of the try catch block
private  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  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
TryCatchDetails(CFG cfg, Label start, Label end, Label handler, java.lang.String type, boolean isTriggerHandler)
          construct a try catch details instance
 
Method Summary
 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
 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
 void addShadowRegion(TryCatchDetails tryCatchDetails)
          add a shadowing region to the list of regions which shadow this one
 boolean containsOpenEnter(CodeLocation openEnter)
          check if a monitor enter location belongs to the list of open locations associated with this handler
 Label getEnd()
           
 Label getHandler()
           
 java.util.Iterator<CodeLocation> getOpenEnters()
           
 java.util.List<TryCatchDetails> getShadowRegions()
           
 Label getStart()
           
 java.lang.String getType()
           
 boolean isTriggerHandler()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cfg

private CFG cfg
back link to the control flow graph


start

private Label start
the label identifying the start of the try catch block


end

private Label end
the label identifying the end of the try catch block


handler

private 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,
                       Label start,
                       Label end,
                       Label handler,
                       java.lang.String type,
                       boolean isTriggerHandler)
construct a try catch details instance

Parameters:
cfg -
start -
end -
handler -
type -
isTriggerHandler -
Method Detail

getStart

public Label getStart()

getEnd

public Label getEnd()

getHandler

public 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 -

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 -

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 -

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 -

getShadowRegions

public java.util.List<TryCatchDetails> getShadowRegions()