|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectpolyglot.types.Context_c
jif.types.JifContext_c
public class JifContext_c
An implementation of the JifContext interface.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class polyglot.types.Context_c |
|---|
polyglot.types.Context_c.Kind |
| Field Summary | |
|---|---|
protected java.util.Map<polyglot.types.LocalInstance,Label> |
checkedEndorsements
Map of local variables that have been endorsed using a checked endorse statement |
protected boolean |
checkingInits
|
protected Label |
constructorReturnLabel
|
protected java.util.Map |
gotos
Map from JifContext_c.Key (pairs of Branch.Kind and String) to Labels. |
protected boolean |
inConstructorCall
|
| Fields inherited from class polyglot.types.Context_c |
|---|
BLOCK, CLASS, code, CODE, inCode, it, kind, outer, OUTER, scope, SOURCE, staticContext, ts, type, types, vars |
| Constructor Summary | |
|---|---|
protected |
JifContext_c(JifTypeSystem ts,
polyglot.types.TypeSystem jlts)
|
| Method Summary | |
|---|---|
void |
addActsFor(Principal p1,
Principal p2)
Add an actsfor relation to the principal hierarchy. |
void |
addAssertionLE(Label L1,
Label L2)
Add a less than or equal assertion to the label environment. |
void |
addCheckedEndorse(polyglot.types.LocalInstance li,
Label downgradeTo)
Add a checked endorse for the local instance li. |
void |
addDefinitionalAssertionEquiv(AccessPath p,
AccessPath q)
Adds the assertion that the access path p is equivalent to the access path q to this context, and all outer contexts up to the method/constructor/initializer level |
void |
addDefinitionalAssertionEquiv(Label L1,
Label L2)
Adds the assertion to this context, and all outer contexts up to the method/constructor/initializer level |
void |
addDefinitionalAssertionEquiv(Label L1,
Label L2,
boolean addToClass)
Adds the assertion to this context, and all outer contexts up to the method/constructor/initializer level |
void |
addDefinitionalEquiv(Principal p1,
Principal p2)
Adds the assertion to this context, and all outer contexts up to the method/constructor/initializer level |
void |
addEquiv(AccessPath p,
AccessPath q)
Adds the assertion that the access path p is equivalent to the access path q to this context |
void |
addEquiv(Label L1,
Label L2)
Add an equivalence to the label environment. |
void |
addEquiv(Principal p1,
Principal p2)
Add an actsfor relation both ways to the principal hierarchy. |
Label |
authLabel()
Get the authority of the current code, represented as a confidentiality label. |
Label |
authLabelInteg()
Get the authority of the current code, represented as an integrity label. |
java.util.Set |
authority()
The authority of a class or a procedure is the set of principals who have authorized that code. |
boolean |
checkingInits()
Indicates if we are currently checking the initializers within a constructor. |
void |
clearPH()
Clears the principal hierarchy of all actsfor relations. |
Label |
constructorReturnLabel()
If the current code is a constructor, returns the return label of that constructor. |
java.lang.Object |
copy()
|
Label |
currentCodePCBound()
The currentCodePCBound is an upper bound on the PC of the caller of the current code, and a lower bound on the observable effects of the current code. |
protected void |
envModification()
|
polyglot.types.VarInstance |
findVariableSilent(java.lang.String name)
|
Label |
gotoLabel(polyglot.ast.Branch.Kind kind,
java.lang.String label)
Retrieve the Label associated with branching to the
location label, with the branch kind kind. |
void |
gotoLabel(polyglot.ast.Branch.Kind kind,
java.lang.String label,
Label L)
Record the Label associated with branching to the
location label, with the branch kind kind. |
boolean |
inConstructorCall()
Is the Context in a constructor call, e.g. |
LabelEnv |
labelEnv()
|
PathMap |
pathMapForLocal(polyglot.types.LocalInstance li,
LabelChecker lc)
Return the path map for evaluating a local variable |
Label |
pc()
|
PrincipalHierarchy |
ph()
|
polyglot.types.Context |
pushClass(polyglot.types.ParsedClassType classScope,
polyglot.types.ClassType type)
|
polyglot.types.Context |
pushCode(polyglot.types.CodeInstance ci)
|
polyglot.types.Context |
pushConstructorCall()
Push a Context onto the stack for a constructor call, e.g. |
void |
setAuthority(java.util.Set auth)
|
void |
setCheckingInits(boolean checkingInits)
Set whether we are currently checking the initializers within a constructor. |
void |
setConstructorReturnLabel(Label Lr)
|
void |
setCurrentCodePCBound(Label currentCodePCBound)
|
void |
setPc(Label pc,
LabelChecker lc)
|
boolean |
updateAllowed(polyglot.ast.Expr e)
Can this expression be updated, e.g. |
| Methods inherited from class polyglot.types.Context_c |
|---|
addMethod, addNamed, addNamedToThisScope, addVariable, addVariableToThisScope, currentClass, currentClassScope, currentCode, definingCodeDef, find, findField, findFieldScope, findInThisScope, findLocal, findMethod, findMethodContainerInThisScope, findMethodScope, findVariable, findVariableInThisScope, importTable, inCode, inStaticContext, isBlock, isClass, isCode, isLocal, isOuter, isSource, mapsToString, outerResolver, package_, pop, push, pushBlock, pushSource, pushStatic, toString, typeSystem |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface polyglot.types.Context |
|---|
addMethod, addNamed, addVariable, currentClass, currentClassScope, currentCode, definingCodeDef, findField, findFieldScope, findLocal, findMethod, findMethodScope, findVariable, importTable, inCode, inStaticContext, isLocal, outerResolver, package_, pop, pushBlock, pushSource, pushStatic, typeSystem |
| Methods inherited from interface polyglot.types.Resolver |
|---|
find |
| Field Detail |
|---|
protected java.util.Map<polyglot.types.LocalInstance,Label> checkedEndorsements
protected java.util.Map gotos
protected boolean checkingInits
protected boolean inConstructorCall
protected Label constructorReturnLabel
| Constructor Detail |
|---|
protected JifContext_c(JifTypeSystem ts,
polyglot.types.TypeSystem jlts)
| Method Detail |
|---|
public java.lang.Object copy()
copy in interface polyglot.util.Copycopy in class polyglot.types.Context_cpublic polyglot.types.VarInstance findVariableSilent(java.lang.String name)
findVariableSilent in interface polyglot.types.ContextfindVariableSilent in class polyglot.types.Context_cpublic LabelEnv labelEnv()
labelEnv in interface JifContextprotected void envModification()
public void addAssertionLE(Label L1,
Label L2)
JifContext
addAssertionLE in interface JifContext
public void addDefinitionalAssertionEquiv(Label L1,
Label L2)
JifContext
addDefinitionalAssertionEquiv in interface JifContext
public void addDefinitionalAssertionEquiv(Label L1,
Label L2,
boolean addToClass)
addDefinitionalAssertionEquiv in interface JifContextL1 - L2 -
public void addDefinitionalAssertionEquiv(AccessPath p,
AccessPath q)
JifContext
addDefinitionalAssertionEquiv in interface JifContext
public void addEquiv(Label L1,
Label L2)
JifContext
addEquiv in interface JifContext
public void addEquiv(Principal p1,
Principal p2)
JifContext
addEquiv in interface JifContext
public void addActsFor(Principal p1,
Principal p2)
JifContext
addActsFor in interface JifContext
public void addEquiv(AccessPath p,
AccessPath q)
JifContext
addEquiv in interface JifContext
public void addDefinitionalEquiv(Principal p1,
Principal p2)
addDefinitionalEquiv in interface JifContextpublic void clearPH()
JifContext
clearPH in interface JifContext
public Label gotoLabel(polyglot.ast.Branch.Kind kind,
java.lang.String label)
JifContextLabel associated with branching to the
location label, with the branch kind kind.
gotoLabel in interface JifContext
public void gotoLabel(polyglot.ast.Branch.Kind kind,
java.lang.String label,
Label L)
JifContextLabel associated with branching to the
location label, with the branch kind kind.
gotoLabel in interface JifContextpublic Label currentCodePCBound()
JifContext
currentCodePCBound in interface JifContextpublic void setCurrentCodePCBound(Label currentCodePCBound)
setCurrentCodePCBound in interface JifContextpublic Label pc()
pc in interface JifContext
public void setPc(Label pc,
LabelChecker lc)
setPc in interface JifContextpublic java.util.Set authority()
JifContext
authority in interface JifContextpublic void setAuthority(java.util.Set auth)
setAuthority in interface JifContextpublic PrincipalHierarchy ph()
ph in interface JifContextpublic Label authLabel()
JifContext
authLabel in interface JifContextpublic Label authLabelInteg()
JifContext
authLabelInteg in interface JifContextpublic boolean checkingInits()
JifContext
checkingInits in interface JifContextpublic void setCheckingInits(boolean checkingInits)
JifContext
setCheckingInits in interface JifContextpublic Label constructorReturnLabel()
JifContextcheckingInits
is true, and is used for more permissive label checking for field
assignments.
constructorReturnLabel in interface JifContextpublic void setConstructorReturnLabel(Label Lr)
setConstructorReturnLabel in interface JifContextpublic polyglot.types.Context pushConstructorCall()
JifContext
pushConstructorCall in interface JifContext
public polyglot.types.Context pushClass(polyglot.types.ParsedClassType classScope,
polyglot.types.ClassType type)
pushClass in interface polyglot.types.ContextpushClass in class polyglot.types.Context_cpublic polyglot.types.Context pushCode(polyglot.types.CodeInstance ci)
pushCode in interface polyglot.types.ContextpushCode in class polyglot.types.Context_cpublic boolean inConstructorCall()
JifContext
inConstructorCall in interface JifContext
public PathMap pathMapForLocal(polyglot.types.LocalInstance li,
LabelChecker lc)
JifContext
pathMapForLocal in interface JifContextpublic boolean updateAllowed(polyglot.ast.Expr e)
JifContext
updateAllowed in interface JifContext
public void addCheckedEndorse(polyglot.types.LocalInstance li,
Label downgradeTo)
JifContext
addCheckedEndorse in interface JifContext
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||