forked from OSchip/llvm-project
Added "Autorelease" ArgEffect to better simulate "autorelease" messages. Right
now this does the same thing as "MayEscape", but more functionality will go in here shortly. llvm-svn: 52904
This commit is contained in:
parent
9e08148f29
commit
a0e071c861
|
@ -100,7 +100,7 @@ namespace {
|
|||
/// ArgEffect is used to summarize a function/method call's effect on a
|
||||
/// particular argument.
|
||||
enum ArgEffect { IncRef, DecRef, DoNothing, StopTracking, MayEscape,
|
||||
SelfOwn };
|
||||
SelfOwn, Autorelease };
|
||||
|
||||
/// ArgEffects summarizes the effects of a function/method call on all of
|
||||
/// its arguments.
|
||||
|
@ -876,7 +876,7 @@ void RetainSummaryManager::InitializeMethodSummaries() {
|
|||
addNSObjectMethSummary(GetNullarySelector("drain", Ctx), Summ);
|
||||
|
||||
// Create the "autorelease" selector.
|
||||
Summ = getPersistentSummary(E, isGCEnabled() ? DoNothing : StopTracking);
|
||||
Summ = getPersistentSummary(E, isGCEnabled() ? DoNothing : Autorelease);
|
||||
addNSObjectMethSummary(GetNullarySelector("autorelease", Ctx), Summ);
|
||||
|
||||
// For NSWindow, allocated objects are (initially) self-owned.
|
||||
|
@ -1818,7 +1818,7 @@ CFRefCount::RefBindings CFRefCount::Update(RefBindings B, SymbolID sym,
|
|||
default:
|
||||
assert (false && "Unhandled CFRef transition.");
|
||||
|
||||
|
||||
case Autorelease:
|
||||
case MayEscape:
|
||||
if (V.getKind() == RefVal::Owned) {
|
||||
V = V ^ RefVal::NotOwned;
|
||||
|
@ -1835,7 +1835,7 @@ CFRefCount::RefBindings CFRefCount::Update(RefBindings B, SymbolID sym,
|
|||
}
|
||||
|
||||
return B;
|
||||
|
||||
|
||||
case StopTracking:
|
||||
return RefBFactory.Remove(B, sym);
|
||||
|
||||
|
|
Loading…
Reference in New Issue