|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectscale.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 PredicatevisitLoadDeclValueExpr in class Supertypepublic void visitLoadValueIndirectExpr(LoadValueIndirectExpr e)
A LoadValueIndirectExpr
represents a *expr operation.
visitLoadValueIndirectExpr in interface PredicatevisitLoadValueIndirectExpr in class SupertypeLoadValueIndirectExprpublic void visitCallExpr(CallExpr e)
visitCallExpr in class Supertypepublic void visitExprChord(ExprChord c)
visitExprChord in interface PredicatevisitExprChord in class Supertypepublic void visitFieldExpr(FieldExpr e)
visitFieldExpr in class Supertypepublic void visitSubscriptExpr(SubscriptExpr e)
visitSubscriptExpr in interface PredicatevisitSubscriptExpr in class Supertypepublic void visitDualExpr(DualExpr e)
visitDualExpr in interface PredicatevisitDualExpr in class Supertype
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||