|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferModules__RacerDDomain (infer.InferModules__RacerDDomain)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> – <a href="../index.html">infer</a> » InferModules__RacerDDomain</nav><h1>Module <code>InferModules__RacerDDomain</code></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><div class="spec module" id="module-Access"><a href="#module-Access" class="anchor"></a><code><span class="keyword">module</span> <a href="Access/index.html">Access</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-TraceElem"><a href="#module-TraceElem" class="anchor"></a><code><span class="keyword">module</span> <a href="TraceElem/index.html">TraceElem</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec module" id="module-LocksDomain"><a href="#module-LocksDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="LocksDomain/index.html">LocksDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Overapproximation of number of locks that are currently held</p></dd></dl><dl><dt class="spec module" id="module-ThreadsDomain"><a href="#module-ThreadsDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="ThreadsDomain/index.html">ThreadsDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Abstraction of threads that may run in parallel with the current thread. NoThread < AnyThreadExceptSelf < AnyThread</p></dd></dl><dl><dt class="spec module" id="module-AccessSnapshot"><a href="#module-AccessSnapshot" class="anchor"></a><code><span class="keyword">module</span> <a href="AccessSnapshot/index.html">AccessSnapshot</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>snapshot of the relevant state at the time of a heap access: concurrent thread(s), lock(s) held, ownership precondition</p></dd></dl><dl><dt class="spec module" id="module-AccessDomain"><a href="#module-AccessDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="AccessDomain/index.html">AccessDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>map of access metadata |-> set of accesses. the map should hold all accesses to a possibly-unowned access path</p></dd></dl><div class="spec module" id="module-OwnershipAbstractValue"><a href="#module-OwnershipAbstractValue" class="anchor"></a><code><span class="keyword">module</span> <a href="OwnershipAbstractValue/index.html">OwnershipAbstractValue</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-OwnershipDomain"><a href="#module-OwnershipDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="OwnershipDomain/index.html">OwnershipDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec module" id="module-Choice"><a href="#module-Choice" class="anchor"></a><code><span class="keyword">module</span> <a href="Choice/index.html">Choice</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>attribute attached to a boolean variable specifying what it means when the boolean is true</p></dd></dl><div class="spec module" id="module-Attribute"><a href="#module-Attribute" class="anchor"></a><code><span class="keyword">module</span> <a href="Attribute/index.html">Attribute</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-AttributeSetDomain"><a href="#module-AttributeSetDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="AttributeSetDomain/index.html">AttributeSetDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-AttributeMapDomain"><a href="#module-AttributeMapDomain" class="anchor"></a><code><span class="keyword">module</span> <a href="AttributeMapDomain/index.html">AttributeMapDomain</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = </code><code>{</code><table class="record"><tr id="type-t.threads" class="anchored"><td class="def field"><a href="#type-t.threads" class="anchor"></a><code>threads : <a href="ThreadsDomain/index.html#type-t">ThreadsDomain.t</a>;</code></td><td class="doc"><p>current thread: main, background, or unknown</p></td></tr><tr id="type-t.locks" class="anchored"><td class="def field"><a href="#type-t.locks" class="anchor"></a><code>locks : <a href="LocksDomain/index.html#type-t">LocksDomain.t</a>;</code></td><td class="doc"><p>boolean that is true if a lock must currently be held</p></td></tr><tr id="type-t.accesses" class="anchored"><td class="def field"><a href="#type-t.accesses" class="anchor"></a><code>accesses : <a href="index.html#module-AccessDomain">AccessDomain</a>.t;</code></td><td class="doc"><p>read and writes accesses performed without ownership permissions</p></td></tr><tr id="type-t.ownership" class="anchored"><td class="def field"><a href="#type-t.ownership" class="anchor"></a><code>ownership : <a href="OwnershipDomain/index.html#type-t">OwnershipDomain.t</a>;</code></td><td class="doc"><p>map of access paths to ownership predicates</p></td></tr><tr id="type-t.attribute_map" class="anchored"><td class="def field"><a href="#type-t.attribute_map" class="anchor"></a><code>attribute_map : <a href="AttributeMapDomain/index.html#type-t">AttributeMapDomain.t</a>;</code></td><td class="doc"><p>map of access paths to attributes such as owned, functional, ...</p></td></tr></table><code>}</code></dt><dt class="spec type" id="type-summary"><a href="#type-summary" class="anchor"></a><code><span class="keyword">type</span> summary</code><code> = </code><code>{</code><table class="record"><tr id="type-summary.threads" class="anchored"><td class="def field"><a href="#type-summary.threads" class="anchor"></a><code>threads : <a href="ThreadsDomain/index.html#type-t">ThreadsDomain.t</a>;</code></td></tr><tr id="type-summary.locks" class="anchored"><td class="def field"><a href="#type-summary.locks" class="anchor"></a><code>locks : <a href="LocksDomain/index.html#type-t">LocksDomain.t</a>;</code></td></tr><tr id="type-summary.accesses" class="anchored"><td class="def field"><a href="#type-summary.accesses" class="anchor"></a><code>accesses : <a href="index.html#module-AccessDomain">AccessDomain</a>.t;</code></td></tr><tr id="type-summary.return_ownership" class="anchored"><td class="def field"><a href="#type-summary.return_ownership" class="anchor"></a><code>return_ownership : <a href="OwnershipAbstractValue/index.html#type-t">OwnershipAbstractValue.t</a>;</code></td></tr><tr id="type-summary.return_attributes" class="anchored"><td class="def field"><a href="#type-summary.return_attributes" class="anchor"></a><code>return_attributes : <a href="AttributeSetDomain/index.html#type-t">AttributeSetDomain.t</a>;</code></td></tr></table><code>}</code></dt><dd><p>same as astate, but without <code>attribute_map</code> (since these involve locals) and with the addition of the ownership/attributes associated with the return value as well as the set of formals which may escape</p></dd></dl><dl><dt class="spec value" id="val-empty_summary"><a href="#val-empty_summary" class="anchor"></a><code><span class="keyword">val</span> empty_summary : <a href="index.html#type-summary">summary</a></code></dt></dl><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../InferModules/AbstractDomain/index.html#module-type-WithBottom">InferModules.AbstractDomain.WithBottom</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../InferModules/AbstractDomain/module-type-WithBottom/index.html#type-t">t</a> := <a href="index.html#type-t">t</a></code></span></summary><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../InferModules/AbstractDomain/index.html#module-type-S">InferModules.AbstractDomain.S</a></code></span></summary><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../InferModules/AbstractDomain/index.html#module-type-NoJoin">InferModules.AbstractDomain.NoJoin</a></code></span></summary><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-type-PrintableType">InferStdlib.PrettyPrintable.PrintableType</a></code></span></summary><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <a href="../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-F">InferStdlib.PrettyPrintable.F</a>.formatter <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt></dl></details></div></div></div><dl><dt class="spec value" id="val-(<=)"><a href="#val-(<=)" class="anchor"></a><code><span class="keyword">val</span> (<=) : <span>lhs:<a href="index.html#type-t">t</a></span> <span>-></span> <span>rhs:<a href="index.html#type-t">t</a></span> <span>-></span> bool</code></dt><dd><p>the implication relation: <code>lhs <= rhs</code> means <code>lhs |- rhs</code></p></dd></dl></details></div></div></div><dl><dt class="spec value" id="val-join"><a href="#val-join" class="anchor"></a><code><span class="keyword">val</span> join : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-widen"><a href="#val-widen" class="anchor"></a><code><span class="keyword">val</span> widen : <span>prev:<a href="index.html#type-t">t</a></span> <span>-></span> <span>next:<a href="index.html#type-t">t</a></span> <span>-></span> <span>num_iters:int</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></details></div></div></div><dl><dt class="spec value" id="val-bottom"><a href="#val-bottom" class="anchor"></a><code><span class="keyword">val</span> bottom : <a href="index.html#type-t">t</a></code></dt><dd><p>The bottom value of the domain.</p></dd></dl><dl><dt class="spec value" id="val-is_bottom"><a href="#val-is_bottom" class="anchor"></a><code><span class="keyword">val</span> is_bottom : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Return true if this is the bottom value</p></dd></dl></details></div></div></div><dl><dt class="spec value" id="val-pp_summary"><a href="#val-pp_summary" class="anchor"></a><code><span class="keyword">val</span> pp_summary : <a href="index.html#module-F">F</a>.formatter <span>-></span> <a href="index.html#type-summary">summary</a> <span>-></span> unit</code></dt><dt class="spec value" id="val-add_unannotated_call_access"><a href="#val-add_unannotated_call_access" class="anchor"></a><code><span class="keyword">val</span> add_unannotated_call_access : <a href="../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span>-></span> <a href="../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span>-></span> <a href="../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html> |