private static class PureFunctionIdentifier.FunctionInformation
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private int |
bitmask |
private java.util.Set<Var> |
blacklisted |
private java.util.List<Node> |
callsInFunctionBody |
private static int |
EXTERN_MASK |
private static int |
FUNCTION_THROWS_MASK |
private static int |
PURE_FUNCTION_MASK |
private java.util.Set<Var> |
taintedLocals |
private static int |
TAINTS_ARGUMENTS_MASK |
private static int |
TAINTS_GLOBAL_STATE_MASK |
private static int |
TAINTS_RETURN_MASK |
private static int |
TAINTS_THIS_MASK |
private static int |
TAINTS_UNKNOWN_MASK |
Constructor and Description |
---|
FunctionInformation(boolean extern) |
Modifier and Type | Method and Description |
---|---|
(package private) void |
addTaintedLocalObject(Var var) |
(package private) void |
appendCall(Node callNode)
Add a CALL or NEW node to the list of calls this function makes.
|
java.util.Set<Var> |
blacklisted() |
void |
blacklistLocal(Var var) |
private void |
checkInvariant()
Verify internal consistency.
|
private boolean |
extern() |
(package private) boolean |
functionThrows()
Returns true if function has an explicit "throw".
|
(package private) java.util.List<Node> |
getCallsInFunctionBody()
Gets the list of CALL and NEW nodes.
|
private boolean |
getMask(int mask) |
(package private) boolean |
mayBePure() |
(package private) boolean |
mayHaveSideEffects() |
(package private) boolean |
mutatesArguments()
Returns true if function mutates its arguments.
|
(package private) boolean |
mutatesGlobalState()
Returns true if function mutates global state.
|
(package private) boolean |
mutatesThis()
Returns true if function mutates "this".
|
private boolean |
pureFunction() |
(package private) void |
resetLocalVars() |
(package private) void |
setFunctionThrows()
Marks the function as having "throw" side effects.
|
(package private) void |
setIsPure()
Mark the function as being pure.
|
private void |
setMask(int mask,
boolean value) |
(package private) void |
setTaintsArguments()
Marks the function as having "modifies arguments" side effects.
|
(package private) void |
setTaintsGlobalState()
Marks the function as having "modifies globals" side effects.
|
(package private) void |
setTaintsReturn()
Marks the function as having non-local return result.
|
(package private) void |
setTaintsThis()
Marks the function as having "modifies this" side effects.
|
(package private) void |
setTaintsUnknown()
Marks the function as having "complex" side effects that are
not otherwise explicitly tracked.
|
java.util.Set<Var> |
taintedLocals() |
private boolean |
taintsGlobalState() |
private boolean |
taintsReturn() |
private boolean |
taintsThis() |
private boolean |
taintsUnknown() |
java.lang.String |
toString() |
private java.util.List<Node> callsInFunctionBody
private java.util.Set<Var> blacklisted
private java.util.Set<Var> taintedLocals
private int bitmask
private static final int EXTERN_MASK
private static final int PURE_FUNCTION_MASK
private static final int FUNCTION_THROWS_MASK
private static final int TAINTS_GLOBAL_STATE_MASK
private static final int TAINTS_THIS_MASK
private static final int TAINTS_ARGUMENTS_MASK
private static final int TAINTS_UNKNOWN_MASK
private static final int TAINTS_RETURN_MASK
private void setMask(int mask, boolean value)
private boolean getMask(int mask)
private boolean extern()
private boolean pureFunction()
private boolean taintsGlobalState()
private boolean taintsThis()
private boolean taintsUnknown()
private boolean taintsReturn()
boolean functionThrows()
public java.util.Set<Var> taintedLocals()
void addTaintedLocalObject(Var var)
var
- void resetLocalVars()
public java.util.Set<Var> blacklisted()
public void blacklistLocal(Var var)
var
- boolean mayBePure()
boolean mayHaveSideEffects()
void setIsPure()
void setTaintsGlobalState()
void setTaintsThis()
void setTaintsArguments()
void setFunctionThrows()
void setTaintsUnknown()
void setTaintsReturn()
boolean mutatesGlobalState()
boolean mutatesArguments()
boolean mutatesThis()
private void checkInvariant()
void appendCall(Node callNode)
java.util.List<Node> getCallsInFunctionBody()
public java.lang.String toString()
toString
in class java.lang.Object