DeHydra
Jump to navigation
Jump to search
DeHydra is a tool inspired by UNO.
DeHydra integrates a low level C++ core and a JavaScript engine for user scripts. More info.
C++ core deals with parsing, name resolution, scoping, control flow graphs.
A user can utilize the JS engine to:
- Write scripts using that core to accomplish custom analyses without recompilation.
- Work on these scripts to make them progressively as sound and as complete as possible.
Future Direction
Strong reference domination
< roc> e.g. if I'm holding an nsCOMPtr reference to A, and A holds an nsCOMPtr reference to B, and I call A->GetB() and put the result in another nsCOMPtr H, and you can prove that there's no change to these references before H goes away, the refcount held by H is not needed
Example:
if (IsChromeURI(aLoadData->mURI)) {
1549 nsCOMPtr<nsIXULPrototypeCache> cache(do_GetService("@mozilla.org/xul/xul-prototype-cache;1"));
1550 if (cache) {
1551 PRBool enabled;
1552 cache->GetEnabled(&enabled);
1553 if (enabled) {
1554 nsCOMPtr<nsICSSStyleSheet> sheet;
1555 cache->GetStyleSheet(aLoadData->mURI, getter_AddRefs(sheet));
1556 if (!sheet) {
1557 LOG((" Putting sheet in XUL prototype cache"));
1558 cache->PutStyleSheet(aLoadData->mSheet);
1559 }
1560 }
1561 }
1562 }
in [1]
Ownership Analysis
Show that ref count on some objects is always 1.
Also David Heine's thesis