You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3 lines
5.8 KiB
3 lines
5.8 KiB
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferIR__Cfg (InferIR.InferIR__Cfg)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../index.html">InferIR</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferIR__Cfg</span></h1></header><p>Control Flow Graph for Interprocedural Analysis</p><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code><span class="keyword"> = </span><a href="../InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <a href="../InferIR__Typ/Procname/index.html#module-Hash">InferIR.Typ.Procname.Hash</a>.t</code><code></code></div><div class="doc"><p>A control-flow graph is a collection of all the CFGs for the procedure names in a file</p></div></div><div class="spec val" id="val-load"><a href="#val-load" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>load : <a href="../../InferBase/InferBase/SourceFile/index.html#type-t">InferBase.SourceFile.t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a> option</code></div><div class="doc"><p>Load the cfgs of the procedures of a source file</p></div></div><div class="spec val" id="val-get_all_proc_names"><a href="#val-get_all_proc_names" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_all_proc_names : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> list</code></div><div class="doc"><p>get all the keys from the hashtable</p></div></div><h3>Functions for manipulating an interprocedural CFG</h3><div class="spec val" id="val-create"><a href="#val-create" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create : unit <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>create a new empty cfg</p></div></div><div class="spec val" id="val-create_proc_desc"><a href="#val-create_proc_desc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create_proc_desc : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="../InferIR/ProcAttributes/index.html#type-t">InferIR.ProcAttributes.t</a> <span class="keyword">‑></span> <a href="../InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a></code></div><div class="doc"><p>Create a new procdesc and add it to the cfg</p></div></div><div class="spec val" id="val-iter_all_nodes"><a href="#val-iter_all_nodes" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter_all_nodes : ?⁠sorted:bool <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> f:(<a href="../InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">‑></span> <a href="../InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Iterate over all the nodes in the cfg</p></div></div><div class="spec val" id="val-save_attributes"><a href="#val-save_attributes" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>save_attributes : <a href="../../InferBase/InferBase/SourceFile/index.html#type-t">InferBase.SourceFile.t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Save the .attr files for the procedures in the cfg.</p></div></div><div class="spec val" id="val-inline_java_synthetic_methods"><a href="#val-inline_java_synthetic_methods" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>inline_java_synthetic_methods : <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Inline the java synthetic methods in the cfg (in-place)</p></div></div><div class="spec val" id="val-merge"><a href="#val-merge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>merge : src:<a href="index.html#type-t">t</a> <span class="keyword">‑></span> dst:<a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Best-effort merge of <code class="code">src</code> into <code class="code">dst</code>. If a procedure is both in <code class="code">dst</code> and <code class="code">src</code>, the one in
|
|
<code class="code">src</code> will get overwritten.</p></div></div><div class="spec val" id="val-pp_proc_signatures"><a href="#val-pp_proc_signatures" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_proc_signatures : Format.formatter <span class="keyword">‑></span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec module" id="module-SQLite"><a href="#module-SQLite" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="SQLite/index.html">SQLite</a> : <a href="../../InferBase/InferBase/SqliteUtils/index.html#module-type-Data">InferBase.SqliteUtils.Data</a><span class="keyword"> with </span><span class="keyword">type </span><a href="../../InferBase/InferBase/SqliteUtils/module-type-Data/index.html#type-t">t</a><span class="keyword"> = </span><a href="index.html#type-t">t</a></code></div><div class="doc"></div></div></body></html> |