harpoon.IR.Quads
Class MONITORENTER

java.lang.Object
  extended by harpoon.IR.Quads.Quad
      extended by harpoon.IR.Quads.MONITORENTER
All Implemented Interfaces:
HCodeElement, CFGraphable<Quad,Edge>, UseDefable, Graph.Node<Quad,Edge>, Serializable, Cloneable, Comparable<Quad>

public class MONITORENTER
extends Quad

MONITORENTER acquires the monitor lock of a particular object. Note that these java "monitors" are really a flavor of recursive lock; see the Java hall of shame for more details. The MONITORENTER quad works the same way as the java monitorenter bytecode. See the JVM spec for details.

Version:
$Id: MONITORENTER.java,v 1.5 2002/04/11 04:00:34 cananian Exp $
Author:
C. Scott Ananian <cananian@alumni.princeton.edu>
See Also:
Serialized Form

Field Summary
protected  Temp lock
          The object containing the monitor to be locked.
 
Fields inherited from class harpoon.IR.Quads.Quad
arrayFactory
 
Constructor Summary
MONITORENTER(QuadFactory qf, HCodeElement source, Temp lock)
          Creates a MONITORENTER.
 
Method Summary
<T> T
accept(QuadValueVisitor<T> v)
           
 void accept(QuadVisitor v)
          Accept a visitor.
 int kind()
          Return an integer enumeration of the kind of this Quad.
 Temp lock()
          Returns the Temp specifying the object to be locked.
 Quad rename(QuadFactory qqf, TempMap defMap, TempMap useMap)
          Create a new Quad identical to the receiver, but with all Temps renamed according to a mapping.
 String toString()
          Returns a human-readable representation of this quad.
 Temp[] use()
          Returns the Temp used by this Quad.
 
Methods inherited from class harpoon.IR.Quads.Quad
addEdge, addEdges, addHandlers, clone, clone, clone, compareTo, def, defC, edgeC, edges, getFactory, getID, getLineNumber, getSourceFile, handlers, hashCode, isPred, isSucc, map, map, map, next, next, nextEdge, nextEdge, nextLength, pred, predC, prev, prev, prevEdge, prevEdge, prevLength, remove, removeHandlers, rename, replace, succ, succC, toLongString, transferHandlers, useC
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

lock

protected Temp lock
The object containing the monitor to be locked.

Constructor Detail

MONITORENTER

public MONITORENTER(QuadFactory qf,
                    HCodeElement source,
                    Temp lock)
Creates a MONITORENTER. Code after this point and before a MONITOREXIT with the same lock reference is protected by a monitor.

Parameters:
lock - the Temp referencing the object monitor to lock.
Method Detail

lock

public Temp lock()
Returns the Temp specifying the object to be locked.


use

public Temp[] use()
Returns the Temp used by this Quad.

Specified by:
use in interface UseDefable
Overrides:
use in class Quad
Returns:
the lock field.

kind

public int kind()
Description copied from class: Quad
Return an integer enumeration of the kind of this Quad. The enumerated values are defined in QuadKind.

Specified by:
kind in class Quad

rename

public Quad rename(QuadFactory qqf,
                   TempMap defMap,
                   TempMap useMap)
Description copied from class: Quad
Create a new Quad identical to the receiver, but with all Temps renamed according to a mapping. The new Quad will have no edges.

The new Quad will come from the specified QuadFactory.

Specified by:
rename in class Quad

accept

public void accept(QuadVisitor v)
Description copied from class: Quad
Accept a visitor.

Specified by:
accept in class Quad

accept

public <T> T accept(QuadValueVisitor<T> v)
Specified by:
accept in class Quad

toString

public String toString()
Returns a human-readable representation of this quad.

Specified by:
toString in class Quad