org.extendj.ast
node type MonitorExit

General Info

Production
MonitorExit : Block;
Type Hierarchy:
java.lang.Object
  extended by beaver.Symbol
      extended by org.extendj.ast.ASTNode<ASTNode>
          extended by org.extendj.ast.Stmt
              extended by org.extendj.ast.Block
                  extended by org.extendj.ast.MonitorExit
All Implemented Interfaces:
java.lang.Cloneable, java.lang.Iterable<ASTNode>, org.jastadd.util.PrettyPrintable

Description

Used in code generation to represent the implicit monitor exit call at the end of a synchronized block.
Source
Declared in /home/jesper/git/extendj/java4/grammar/Java.ast at line 219

Member Filters

API level:

Aspect:

Constructors

 
Source
Declared in /home/jesper/git/extendj/java4/frontend/MonitorExit.jrag at line 36
Aspect
MonitorExit
public MonitorExit()
 
Source
Declared in /home/jesper/git/extendj/ASTNode at line 1
public MonitorExit(List<Stmt> p0)
 
Source
Declared in /home/jesper/git/extendj/ASTNode at line 14

Attributes

Source
Declared in /home/jesper/git/extendj/java4/backend/MonitorExit.jrag at line 32
Aspect
MonitorExit
Source
Declared in /home/jesper/git/extendj/java4/backend/MonitorExit.jrag at line 34
Aspect
MonitorExit
Source
Declared in /home/jesper/git/extendj/java4/backend/MonitorExit.jrag at line 36
Aspect
MonitorExit

Methods

public void createBCode(org.extendj.ast.CodeGeneration gen)
Generate bytecode for the monitor exit call.
Overrides:createBCode in class Block
Source
Declared in /home/jesper/git/extendj/java4/backend/CreateBCode.jrag at line 1904
Aspect
CreateBCode
public void emitMonitorExitHandler(org.extendj.ast.CodeGeneration gen)
Generate exception handler for monitor closing.
Parameters:
gen -
Source
Declared in /home/jesper/git/extendj/java4/backend/CreateBCode.jrag at line 1913
Aspect
CreateBCode
public void init$Children()
Initializes the child array to the correct size. Initializes List and Opt nta children.
Overrides:init$Children in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 10
protected int numChildren()
Overrides:numChildren in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 20
public boolean mayHaveRewrite()
Overrides:mayHaveRewrite in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 26
public void flushAttrCache()
Overrides:flushAttrCache in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 32
public void flushCollectionCache()
Overrides:flushCollectionCache in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 41
public void flushRewriteCache()
Overrides:flushRewriteCache in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 47
public MonitorExit clone()
                  throws java.lang.CloneNotSupportedException
Overrides:clone in class Block
Throws:
java.lang.CloneNotSupportedException
Source
Declared in /home/jesper/git/extendj/ASTNode at line 53
public MonitorExit copy()
Overrides:copy in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 60
@Deprecated
public MonitorExit fullCopy()
Deprecated. Please use treeCopy or treeCopyNoTransform instead

Create a deep copy of the AST subtree at this node. The copy is dangling, i.e. has no parent.

Overrides:fullCopy in class Block
Returns:
dangling copy of the subtree at this node
Source
Declared in /home/jesper/git/extendj/ASTNode at line 79
public MonitorExit treeCopyNoTransform()
Create a deep copy of the AST subtree at this node. The copy is dangling, i.e. has no parent.
Overrides:treeCopyNoTransform in class Block
Returns:
dangling copy of the subtree at this node
Source
Declared in /home/jesper/git/extendj/ASTNode at line 89
public MonitorExit treeCopy()
Create a deep copy of the AST subtree at this node. The subtree of this node is traversed to trigger rewrites before copy. The copy is dangling, i.e. has no parent.
Overrides:treeCopy in class Block
Returns:
dangling copy of the subtree at this node
Source
Declared in /home/jesper/git/extendj/ASTNode at line 109
protected boolean is$Equal(ASTNode node)
Overrides:is$Equal in class Block
Source
Declared in /home/jesper/git/extendj/ASTNode at line 116
public void setStmtList(List<Stmt> list)
Replaces the Stmt list.
Overrides:setStmtList in class Block
Parameters:
list - The new list node to be used as the Stmt list.
public int getNumStmt()
Retrieves the number of children in the Stmt list.
Overrides:getNumStmt in class Block
Returns:
Number of children in the Stmt list.
Retrieves the number of children in the Stmt list. Calling this method will not trigger rewrites.
Overrides:getNumStmtNoTransform in class Block
Returns:
Number of children in the Stmt list.
public Stmt getStmt(int i)
Retrieves the element at index i in the Stmt list.
Overrides:getStmt in class Block
Parameters:
i - Index of the element to return.
Returns:
The element at position i in the Stmt list.
public boolean hasStmt()
Check whether the Stmt list has any children.
Overrides:hasStmt in class Block
Returns:
true if it has at least one child, false otherwise.
public void addStmt(Stmt node)
Append an element to the Stmt list.
Overrides:addStmt in class Block
Parameters:
node - The element to append to the Stmt list.
public void addStmtNoTransform(Stmt node)
Overrides:addStmtNoTransform in class Block
public void setStmt(Stmt node,
                    int i)
Replaces the Stmt list element at index i with the new node node.
Overrides:setStmt in class Block
Parameters:
node - The new node to replace the old list element.
i - The list index of the node to be replaced.
Retrieves the Stmt list.
Overrides:getStmtList in class Block
Returns:
The node representing the Stmt list.
Retrieves the Stmt list.

This method does not invoke AST transformations.

Overrides:getStmtListNoTransform in class Block
Returns:
The node representing the Stmt list.
public List<Stmt> getStmts()
Retrieves the Stmt list.
Overrides:getStmts in class Block
Returns:
The node representing the Stmt list.
Retrieves the Stmt list.

This method does not invoke AST transformations.

Overrides:getStmtsNoTransform in class Block
Returns:
The node representing the Stmt list.
Overrides:rewriteTo in class Block
public org.extendj.ast.SimpleSet lookupVariable(java.lang.String name)

Fields

Source
Declared in /home/jesper/git/extendj/java4/frontend/MonitorExit.jrag at line 34
Aspect
MonitorExit
protected boolean handler_label_computed
protected int handler_label_value
protected boolean handler_end_label_computed
protected boolean end_label_computed
protected int end_label_value

Inherited Members

Attributes inherited from org.extendj.ast.Block

Attributes inherited from org.extendj.ast.Stmt

Attributes inherited from org.extendj.ast.ASTNode

Methods inherited from class org.extendj.ast.Block

Methods inherited from class org.extendj.ast.Stmt

Methods inherited from class org.extendj.ast.ASTNode

Methods inherited from class beaver.Symbol

getColumn
getEnd
getId
getLine
getStart
makePosition

Methods inherited from class java.lang.Object

equals
finalize
getClass
hashCode
notify
notifyAll
wait
wait
wait

Fields inherited from org.extendj.ast.Block

Fields inherited from org.extendj.ast.Stmt

Fields inherited from org.extendj.ast.ASTNode

Fields inherited from beaver.Symbol

end
id
start
value