Change references to 'const ProgramState *' to typedef 'ProgramStateRef'.
At this point this is largely cosmetic, but it opens the door to replace ProgramStateRef with a smart pointer that more eagerly acts in the role of reclaiming unused ProgramState objects. llvm-svn: 149081
This commit is contained in:
@@ -56,8 +56,8 @@ ProgramStateManager::~ProgramStateManager() {
|
||||
I->second.second(I->second.first);
|
||||
}
|
||||
|
||||
const ProgramState*
|
||||
ProgramStateManager::removeDeadBindings(const ProgramState *state,
|
||||
ProgramStateRef
|
||||
ProgramStateManager::removeDeadBindings(ProgramStateRef state,
|
||||
const StackFrameContext *LCtx,
|
||||
SymbolReaper& SymReaper) {
|
||||
|
||||
@@ -80,7 +80,7 @@ ProgramStateManager::removeDeadBindings(const ProgramState *state,
|
||||
return getPersistentState(NewState);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramStateManager::MarshalState(const ProgramState *state,
|
||||
ProgramStateRef ProgramStateManager::MarshalState(ProgramStateRef state,
|
||||
const StackFrameContext *InitLoc) {
|
||||
// make up an empty state for now.
|
||||
ProgramState State(this,
|
||||
@@ -91,7 +91,7 @@ const ProgramState *ProgramStateManager::MarshalState(const ProgramState *state,
|
||||
return getPersistentState(State);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::bindCompoundLiteral(const CompoundLiteralExpr *CL,
|
||||
ProgramStateRef ProgramState::bindCompoundLiteral(const CompoundLiteralExpr *CL,
|
||||
const LocationContext *LC,
|
||||
SVal V) const {
|
||||
const StoreRef &newStore =
|
||||
@@ -99,21 +99,21 @@ const ProgramState *ProgramState::bindCompoundLiteral(const CompoundLiteralExpr
|
||||
return makeWithStore(newStore);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::bindDecl(const VarRegion* VR, SVal IVal) const {
|
||||
ProgramStateRef ProgramState::bindDecl(const VarRegion* VR, SVal IVal) const {
|
||||
const StoreRef &newStore =
|
||||
getStateManager().StoreMgr->BindDecl(getStore(), VR, IVal);
|
||||
return makeWithStore(newStore);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::bindDeclWithNoInit(const VarRegion* VR) const {
|
||||
ProgramStateRef ProgramState::bindDeclWithNoInit(const VarRegion* VR) const {
|
||||
const StoreRef &newStore =
|
||||
getStateManager().StoreMgr->BindDeclWithNoInit(getStore(), VR);
|
||||
return makeWithStore(newStore);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::bindLoc(Loc LV, SVal V) const {
|
||||
ProgramStateRef ProgramState::bindLoc(Loc LV, SVal V) const {
|
||||
ProgramStateManager &Mgr = getStateManager();
|
||||
const ProgramState *newState = makeWithStore(Mgr.StoreMgr->Bind(getStore(),
|
||||
ProgramStateRef newState = makeWithStore(Mgr.StoreMgr->Bind(getStore(),
|
||||
LV, V));
|
||||
const MemRegion *MR = LV.getAsRegion();
|
||||
if (MR && Mgr.getOwningEngine())
|
||||
@@ -122,17 +122,17 @@ const ProgramState *ProgramState::bindLoc(Loc LV, SVal V) const {
|
||||
return newState;
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::bindDefault(SVal loc, SVal V) const {
|
||||
ProgramStateRef ProgramState::bindDefault(SVal loc, SVal V) const {
|
||||
ProgramStateManager &Mgr = getStateManager();
|
||||
const MemRegion *R = cast<loc::MemRegionVal>(loc).getRegion();
|
||||
const StoreRef &newStore = Mgr.StoreMgr->BindDefault(getStore(), R, V);
|
||||
const ProgramState *new_state = makeWithStore(newStore);
|
||||
ProgramStateRef new_state = makeWithStore(newStore);
|
||||
return Mgr.getOwningEngine() ?
|
||||
Mgr.getOwningEngine()->processRegionChange(new_state, R) :
|
||||
new_state;
|
||||
}
|
||||
|
||||
const ProgramState *
|
||||
ProgramStateRef
|
||||
ProgramState::invalidateRegions(ArrayRef<const MemRegion *> Regions,
|
||||
const Expr *E, unsigned Count,
|
||||
StoreManager::InvalidatedSymbols *IS,
|
||||
@@ -145,7 +145,7 @@ ProgramState::invalidateRegions(ArrayRef<const MemRegion *> Regions,
|
||||
return invalidateRegionsImpl(Regions, E, Count, *IS, Call);
|
||||
}
|
||||
|
||||
const ProgramState *
|
||||
ProgramStateRef
|
||||
ProgramState::invalidateRegionsImpl(ArrayRef<const MemRegion *> Regions,
|
||||
const Expr *E, unsigned Count,
|
||||
StoreManager::InvalidatedSymbols &IS,
|
||||
@@ -158,7 +158,7 @@ ProgramState::invalidateRegionsImpl(ArrayRef<const MemRegion *> Regions,
|
||||
const StoreRef &newStore
|
||||
= Mgr.StoreMgr->invalidateRegions(getStore(), Regions, E, Count, IS,
|
||||
Call, &Invalidated);
|
||||
const ProgramState *newState = makeWithStore(newStore);
|
||||
ProgramStateRef newState = makeWithStore(newStore);
|
||||
return Eng->processRegionChanges(newState, &IS, Regions, Invalidated);
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ ProgramState::invalidateRegionsImpl(ArrayRef<const MemRegion *> Regions,
|
||||
return makeWithStore(newStore);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::unbindLoc(Loc LV) const {
|
||||
ProgramStateRef ProgramState::unbindLoc(Loc LV) const {
|
||||
assert(!isa<loc::MemRegionVal>(LV) && "Use invalidateRegion instead.");
|
||||
|
||||
Store OldStore = getStore();
|
||||
@@ -180,7 +180,7 @@ const ProgramState *ProgramState::unbindLoc(Loc LV) const {
|
||||
return makeWithStore(newStore);
|
||||
}
|
||||
|
||||
const ProgramState *
|
||||
ProgramStateRef
|
||||
ProgramState::enterStackFrame(const LocationContext *callerCtx,
|
||||
const StackFrameContext *calleeCtx) const {
|
||||
const StoreRef &new_store =
|
||||
@@ -241,7 +241,7 @@ SVal ProgramState::getSVal(Loc location, QualType T) const {
|
||||
return V;
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::BindExpr(const Stmt *S,
|
||||
ProgramStateRef ProgramState::BindExpr(const Stmt *S,
|
||||
const LocationContext *LCtx,
|
||||
SVal V, bool Invalidate) const{
|
||||
Environment NewEnv =
|
||||
@@ -255,7 +255,7 @@ const ProgramState *ProgramState::BindExpr(const Stmt *S,
|
||||
return getStateManager().getPersistentState(NewSt);
|
||||
}
|
||||
|
||||
const ProgramState *
|
||||
ProgramStateRef
|
||||
ProgramState::bindExprAndLocation(const Stmt *S, const LocationContext *LCtx,
|
||||
SVal location,
|
||||
SVal V) const {
|
||||
@@ -272,7 +272,7 @@ ProgramState::bindExprAndLocation(const Stmt *S, const LocationContext *LCtx,
|
||||
return getStateManager().getPersistentState(NewSt);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::assumeInBound(DefinedOrUnknownSVal Idx,
|
||||
ProgramStateRef ProgramState::assumeInBound(DefinedOrUnknownSVal Idx,
|
||||
DefinedOrUnknownSVal UpperBound,
|
||||
bool Assumption) const {
|
||||
if (Idx.isUnknown() || UpperBound.isUnknown())
|
||||
@@ -317,7 +317,7 @@ const ProgramState *ProgramState::assumeInBound(DefinedOrUnknownSVal Idx,
|
||||
return CM.assume(this, cast<DefinedSVal>(inBound), Assumption);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramStateManager::getInitialState(const LocationContext *InitLoc) {
|
||||
ProgramStateRef ProgramStateManager::getInitialState(const LocationContext *InitLoc) {
|
||||
ProgramState State(this,
|
||||
EnvMgr.getInitialEnvironment(),
|
||||
StoreMgr->getInitialStore(InitLoc),
|
||||
@@ -339,15 +339,15 @@ void ProgramStateManager::recycleUnusedStates() {
|
||||
recentlyAllocatedStates.clear();
|
||||
}
|
||||
|
||||
const ProgramState *ProgramStateManager::getPersistentStateWithGDM(
|
||||
const ProgramState *FromState,
|
||||
const ProgramState *GDMState) {
|
||||
ProgramStateRef ProgramStateManager::getPersistentStateWithGDM(
|
||||
ProgramStateRef FromState,
|
||||
ProgramStateRef GDMState) {
|
||||
ProgramState NewState = *FromState;
|
||||
NewState.GDM = GDMState->GDM;
|
||||
return getPersistentState(NewState);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramStateManager::getPersistentState(ProgramState &State) {
|
||||
ProgramStateRef ProgramStateManager::getPersistentState(ProgramState &State) {
|
||||
|
||||
llvm::FoldingSetNodeID ID;
|
||||
State.Profile(ID);
|
||||
@@ -370,7 +370,7 @@ const ProgramState *ProgramStateManager::getPersistentState(ProgramState &State)
|
||||
return newState;
|
||||
}
|
||||
|
||||
const ProgramState *ProgramState::makeWithStore(const StoreRef &store) const {
|
||||
ProgramStateRef ProgramState::makeWithStore(const StoreRef &store) const {
|
||||
ProgramState NewSt = *this;
|
||||
NewSt.setStore(store);
|
||||
return getStateManager().getPersistentState(NewSt);
|
||||
@@ -451,7 +451,7 @@ ProgramStateManager::FindGDMContext(void *K,
|
||||
return p.first;
|
||||
}
|
||||
|
||||
const ProgramState *ProgramStateManager::addGDM(const ProgramState *St, void *Key, void *Data){
|
||||
ProgramStateRef ProgramStateManager::addGDM(ProgramStateRef St, void *Key, void *Data){
|
||||
ProgramState::GenericDataMap M1 = St->getGDM();
|
||||
ProgramState::GenericDataMap M2 = GDMFactory.add(M1, Key, Data);
|
||||
|
||||
@@ -463,7 +463,7 @@ const ProgramState *ProgramStateManager::addGDM(const ProgramState *St, void *Ke
|
||||
return getPersistentState(NewSt);
|
||||
}
|
||||
|
||||
const ProgramState *ProgramStateManager::removeGDM(const ProgramState *state, void *Key) {
|
||||
ProgramStateRef ProgramStateManager::removeGDM(ProgramStateRef state, void *Key) {
|
||||
ProgramState::GenericDataMap OldM = state->getGDM();
|
||||
ProgramState::GenericDataMap NewM = GDMFactory.remove(OldM, Key);
|
||||
|
||||
@@ -592,7 +592,7 @@ bool ProgramState::scanReachableSymbols(const MemRegion * const *I,
|
||||
return true;
|
||||
}
|
||||
|
||||
const ProgramState* ProgramState::addTaint(const Stmt *S,
|
||||
ProgramStateRef ProgramState::addTaint(const Stmt *S,
|
||||
const LocationContext *LCtx,
|
||||
TaintTagType Kind) const {
|
||||
if (const Expr *E = dyn_cast_or_null<Expr>(S))
|
||||
@@ -609,21 +609,21 @@ const ProgramState* ProgramState::addTaint(const Stmt *S,
|
||||
return this;
|
||||
}
|
||||
|
||||
const ProgramState* ProgramState::addTaint(const MemRegion *R,
|
||||
ProgramStateRef ProgramState::addTaint(const MemRegion *R,
|
||||
TaintTagType Kind) const {
|
||||
if (const SymbolicRegion *SR = dyn_cast_or_null<SymbolicRegion>(R))
|
||||
return addTaint(SR->getSymbol(), Kind);
|
||||
return this;
|
||||
}
|
||||
|
||||
const ProgramState* ProgramState::addTaint(SymbolRef Sym,
|
||||
ProgramStateRef ProgramState::addTaint(SymbolRef Sym,
|
||||
TaintTagType Kind) const {
|
||||
// If this is a symbol cast, remove the cast before adding the taint. Taint
|
||||
// is cast agnostic.
|
||||
while (const SymbolCast *SC = dyn_cast<SymbolCast>(Sym))
|
||||
Sym = SC->getOperand();
|
||||
|
||||
const ProgramState *NewState = set<TaintMap>(Sym, Kind);
|
||||
ProgramStateRef NewState = set<TaintMap>(Sym, Kind);
|
||||
assert(NewState);
|
||||
return NewState;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user