|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object scale.score.pred.Supertype scale.score.pred.TraceChords scale.score.analyses.PlaceIndirectOps scale.score.analyses.PlaceIndirectOpsSteen
public class PlaceIndirectOpsSteen
This class visits nodes and places information, at specific nodes, which is used to represent aliases and indirect operations in SSA form.
$Id: PlaceIndirectOpsSteen.java,v 1.23 2007-10-04 19:58:21 burrill Exp $
Copyright 2007 by the
Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.
We expect that alias analysis has been performed before we add information for indirection operations to the SSA form.
For now, we expect that Steensgaard's algorithm is used to create alias groups. An alias group is a collection of variables (and access paths) that contain the same alias relationships.
Field Summary |
---|
Fields inherited from class scale.score.analyses.PlaceIndirectOps |
---|
aliases, classTrace, trace |
Fields inherited from class scale.score.pred.TraceChords |
---|
rl, thisChord, wl |
Constructor Summary | |
---|---|
PlaceIndirectOpsSteen(Aliases aliases)
Construct an object to place special annotations in a Scribble graph so that we can correctly handle indirect operations and aliases. |
Method Summary | |
---|---|
void |
visitCallExpr(CallExpr e)
We add Chi and Mu operators to routine calls to mark the use and definition of variables accross calls. |
void |
visitDualExpr(DualExpr e)
Don't do anything here - but we don't want to default to visitExpr A Dual expression does not effect the placement of indirect operators. |
void |
visitExprChord(ExprChord c)
We add a Chi operator to store operations that assign to indirect variables. |
void |
visitFieldExpr(FieldExpr e)
Don't do anything here - but we don't want to default to visitExpr |
void |
visitLoadDeclValueExpr(LoadDeclValueExpr e)
Add annotations to handle simple variable references that are aliases. |
void |
visitLoadValueIndirectExpr(LoadValueIndirectExpr e)
We add a Mu operator to a use of an indirect variable. |
void |
visitSubscriptExpr(SubscriptExpr e)
We don't need to do anything at a subscript expression. |
Methods inherited from class scale.score.analyses.PlaceIndirectOps |
---|
addMayUse, addMayUse, addMayUse, addMayUse, createMayDefInfo, createMayDefInfo, getAliasVar, getAliasVar, getVirtualVar, setTrace |
Methods inherited from class scale.score.pred.TraceChords |
---|
getChord, setChord, visitChord |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public PlaceIndirectOpsSteen(Aliases aliases)
Method Detail |
---|
public void visitLoadDeclValueExpr(LoadDeclValueExpr e)
visitLoadDeclValueExpr
in interface Predicate
visitLoadDeclValueExpr
in class Supertype
public void visitLoadValueIndirectExpr(LoadValueIndirectExpr e)
A LoadValueIndirectExpr
represents a *expr operation.
visitLoadValueIndirectExpr
in interface Predicate
visitLoadValueIndirectExpr
in class Supertype
LoadValueIndirectExpr
public void visitCallExpr(CallExpr e)
visitCallExpr
in class Supertype
public void visitExprChord(ExprChord c)
visitExprChord
in interface Predicate
visitExprChord
in class Supertype
public void visitFieldExpr(FieldExpr e)
visitFieldExpr
in class Supertype
public void visitSubscriptExpr(SubscriptExpr e)
visitSubscriptExpr
in interface Predicate
visitSubscriptExpr
in class Supertype
public void visitDualExpr(DualExpr e)
visitDualExpr
in interface Predicate
visitDualExpr
in class Supertype
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |