<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Looks great, this makes my C++ constructor inlining significantly less hacky. I'll have to integrate and see how it works with my branch, but I'm hoping to be able clean it up enough to contribute new/delete handling very soon, including MallocChecker support.<div><br></div><div>Tom</div><div><br><div><div>On 27/06/2012, at 10:41 AM, Jordan Rose wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<div>
<div style="word-wrap:break-word">
<div>
<div>
<div style="word-wrap:break-word">(copying to list with compressed patches, because the series of patches resulted in a 400kb message)</div>
<div style="word-wrap:break-word"><br>
</div>
<div style="word-wrap:break-word">All right, I think this ready to be merged into trunk!
<div><br>
</div>
<div>Since there's really way too much here, I'll try to condense the important things:</div>
<div>- CallEvent is a wrapper around some part of the source that triggers a call to something (function, constructor, method, etc.)</div>
<div>- CallEvent is path-sensitive; it captures the state and location context where the call happens.</div>
<div>- CallEvent and its subclasses replace CallOrObjCMessage everywhere possible.</div>
<div>- CallEvent subclass ObjCMethodCall and <i>its</i> subclasses replace ObjCMessage everywhere possible.</div>
<div>- Inlining for C++ constructors is now totally feasible, but still disabled because we don't track destructors yet.</div>
<div>- New checker callbacks check::preCall and check::postCall should be called any time ExprEngine processes something that could call outside code.</div>
<div>- Calls.h attached for your convenience; everything else is in the ten patch files. (Sorry! If you'd prefer per-patch review or something, we can do that too.)</div>
<div>
<div><br>
</div>
<div>% git log1</div>
<div>
<div>5ed29a5 [analyzer] Convert existing checkers to use check::preCall and check::postCall.</div>
<div>a1940c6 [analyzer] Add generic preCall and postCall checks.</div>
<div>ef97dfa [analyzer] Convert CXXConstructExpr over to use CallEvent for evaluation.</div>
<div>ebf2c52 [analyzer] Use CallEvent for inlining and call default-evaluation.</div>
<div>94dde7d [analyzer] Finish replacing ObjCMessage with ObjCMethodDecl and friends.</div>
<div>7afaef7 [analyzer] Begin replacing ObjCMessage with ObjCMethodCall and friends.</div>
<div>ba3cb76 [analyzer] Move the last bits of CallOrObjCMessage over to CallEvent.</div>
<div>321bb87 [analyzer] Convert CallAndMessageChecker and ObjCSelfInitChecker to CallEvent.</div>
<div>30502d6 [analyzer] Convert RetainCountChecker to use CallEvent as much as possible.</div>
<div>bc61f9d [analyzer] Add a new abstraction over all types of calls: CallEvent</div>
</div>
<div><br>
</div>
<div></div>
</div>
</div>
</div>
</div>
</div>
<div style="word-wrap:break-word">
<div>
<div>
<div style="word-wrap:break-word">
<div>
<div></div>
<div></div>
</div>
</div>
</div>
</div>
</div>
<div style="word-wrap:break-word"></div>
</div>
<span><Calls.h></span><span><Patches.zip></span></blockquote></div><br></div></body></html>