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.

5 lines
15 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>State (infer.InferModules.State)</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> &mdash; <span class="package">package <a href="../../index.html">infer</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferModules.State</span></h1></header><p>State of symbolic execution</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></code><code></code></div><div class="doc"><p>Internal state</p></div></div><div class="spec val" id="val-add_diverging_states"><a href="#val-add_diverging_states" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_diverging_states : <a href="../Paths/PathSet/index.html#type-t">Paths.PathSet.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Add diverging states</p></div></div><div class="spec val" id="val-get_diverging_states_node"><a href="#val-get_diverging_states_node" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_diverging_states_node : unit <span class="keyword">&#8209;&gt;</span> <a href="../Paths/PathSet/index.html#type-t">Paths.PathSet.t</a></code></div><div class="doc"><p>Get the diverging states for the node</p></div></div><div class="spec val" id="val-get_diverging_states_proc"><a href="#val-get_diverging_states_proc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_diverging_states_proc : unit <span class="keyword">&#8209;&gt;</span> <a href="../Paths/PathSet/index.html#type-t">Paths.PathSet.t</a></code></div><div class="doc"><p>Get the diverging states for the procedure</p></div></div><div class="spec val" id="val-get_inst_update"><a href="#val-get_inst_update" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_inst_update : <a href="../../../InferIR/InferIR/PredSymb/index.html#type-path_pos">InferIR.PredSymb.path_pos</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Sil/index.html#type-inst">InferIR.Sil.inst</a></code></div><div class="doc"><p>Get update instrumentation for the current loc</p></div></div><div class="spec val" id="val-get_instr"><a href="#val-get_instr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_instr : unit <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Sil/index.html#type-instr">InferIR.Sil.instr</a> option</code></div><div class="doc"><p>Get last instruction seen in symbolic execution</p></div></div><div class="spec val" id="val-get_loc"><a href="#val-get_loc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_loc : unit <span class="keyword">&#8209;&gt;</span> <a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a></code></div><div class="doc"><p>Get last location seen in symbolic execution</p></div></div><div class="spec val" id="val-get_loc_trace"><a href="#val-get_loc_trace" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_loc_trace : unit <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Errlog/index.html#type-loc_trace">InferIR.Errlog.loc_trace</a></code></div><div class="doc"><p>Get the location trace of the last path seen in symbolic execution</p></div></div><div class="spec val" id="val-get_node"><a href="#val-get_node" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_node : unit <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a></code></div><div class="doc"><p>Get last node seen in symbolic execution</p></div></div><div class="spec val" id="val-get_node_id_key"><a href="#val-get_node_id_key" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_node_id_key : unit <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-id">InferIR.Procdesc.Node.id</a><span class="keyword"> * </span><a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.Caml.Digest.t</code></div><div class="doc"><p>Get id and key of last node seen in symbolic execution</p></div></div><div class="spec val" id="val-get_normalized_pre"><a href="#val-get_normalized_pre" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_normalized_pre : (<a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../Prop/index.html#type-normal">Prop.normal</a> <a href="../Prop/index.html#type-t">Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../Prop/index.html#type-normal">Prop.normal</a> <a href="../Prop/index.html#type-t">Prop.t</a>) <span class="keyword">&#8209;&gt;</span> <a href="../Prop/index.html#type-normal">Prop.normal</a> <a href="../Prop/index.html#type-t">Prop.t</a> option</code></div><div class="doc"><p>return the normalized precondition extracted form the last prop seen, if any
the abstraction function is a parameter to get around module dependencies</p></div></div><div class="spec val" id="val-get_path"><a href="#val-get_path" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_path : unit <span class="keyword">&#8209;&gt;</span> <a href="../Paths/Path/index.html#type-t">Paths.Path.t</a><span class="keyword"> * </span><a href="../../../InferIR/InferIR/PredSymb/index.html#type-path_pos">InferIR.PredSymb.path_pos</a> option</code></div><div class="doc"><p>Get last path seen in symbolic execution</p></div></div><div class="spec val" id="val-get_path_pos"><a href="#val-get_path_pos" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_path_pos : unit <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/PredSymb/index.html#type-path_pos">InferIR.PredSymb.path_pos</a></code></div><div class="doc"><p>Get the last path position seen in symbolic execution</p></div></div><div class="spec val" id="val-get_prop_tenv_pdesc"><a href="#val-get_prop_tenv_pdesc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_prop_tenv_pdesc : unit <span class="keyword">&#8209;&gt;</span> (<a href="../Prop/index.html#type-normal">Prop.normal</a> <a href="../Prop/index.html#type-t">Prop.t</a><span class="keyword"> * </span><a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a><span class="keyword"> * </span><a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a>) option</code></div><div class="doc"><p>Get last last prop,tenv,pdesc seen in symbolic execution</p></div></div><div class="spec val" id="val-get_session"><a href="#val-get_session" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_session : unit <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Get last session seen in symbolic execution</p></div></div><div class="spec val" id="val-mark_execution_end"><a href="#val-mark_execution_end" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mark_execution_end : <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Mark the end of symbolic execution of a node</p></div></div><div class="spec val" id="val-mark_execution_start"><a href="#val-mark_execution_start" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mark_execution_start : <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Mark the start of symbolic execution of a node</p></div></div><div class="spec val" id="val-mark_instr_fail"><a href="#val-mark_instr_fail" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mark_instr_fail : exn <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Mark that the execution of the current instruction failed</p></div></div><div class="spec val" id="val-mark_instr_ok"><a href="#val-mark_instr_ok" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mark_instr_ok : unit <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Mark that the execution of the current instruction was OK</p></div></div><div class="spec val" id="val-mk_find_duplicate_nodes"><a href="#val-mk_find_duplicate_nodes" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mk_find_duplicate_nodes : <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR__Procdesc/index.html#module-NodeSet">InferIR.Procdesc.NodeSet</a>.t</code></div><div class="doc"><p>Create a function to find duplicate nodes.
A node is a duplicate of another one if they have the same kind and location
and normalized (w.r.t. renaming of let - bound ids) list of instructions.</p></div></div><div class="spec type" id="type-log_issue"><a href="#type-log_issue" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>log_issue</code><code><span class="keyword"> = </span>?&#8288;store_summary:bool <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;loc:<a href="../../../InferBase/InferBase/Location/index.html#type-t">InferBase.Location.t</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;node_id:(int<span class="keyword"> * </span><a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.Caml.Digest.t) <span class="keyword">&#8209;&gt;</span> ?&#8288;session:int <span class="keyword">&#8209;&gt;</span> ?&#8288;ltr:<a href="../../../InferIR/InferIR/Errlog/index.html#type-loc_trace">InferIR.Errlog.loc_trace</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;linters_def_file:string <span class="keyword">&#8209;&gt;</span> ?&#8288;doc_url:string <span class="keyword">&#8209;&gt;</span> ?&#8288;access:string <span class="keyword">&#8209;&gt;</span> exn <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-process_execution_failures"><a href="#val-process_execution_failures" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>process_execution_failures : <a href="index.html#type-log_issue">log_issue</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Process the failures during symbolic execution of a procedure</p></div></div><div class="spec val" id="val-reset"><a href="#val-reset" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>reset : unit <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Reset all the global data.</p></div></div><div class="spec val" id="val-reset_diverging_states_node"><a href="#val-reset_diverging_states_node" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>reset_diverging_states_node : unit <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Reset the diverging states information for the node</p></div></div><div class="spec val" id="val-restore_state"><a href="#val-restore_state" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>restore_state : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Restore the old state.</p></div></div><div class="spec val" id="val-save_state"><a href="#val-save_state" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>save_state : unit <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Return the old state, and revert the current state to the initial one.</p></div></div><div class="spec val" id="val-set_instr"><a href="#val-set_instr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_instr : <a href="../../../InferIR/InferIR/Sil/index.html#type-instr">InferIR.Sil.instr</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Set last instruction seen in symbolic execution</p></div></div><div class="spec val" id="val-set_node"><a href="#val-set_node" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_node : <a href="../../../InferIR/InferIR/Procdesc/Node/index.html#type-t">InferIR.Procdesc.Node.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Set last node seen in symbolic execution</p></div></div><div class="spec val" id="val-set_path"><a href="#val-set_path" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_path : <a href="../Paths/Path/index.html#type-t">Paths.Path.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/PredSymb/index.html#type-path_pos">InferIR.PredSymb.path_pos</a> option <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Get last path seen in symbolic execution</p></div></div><div class="spec val" id="val-set_prop_tenv_pdesc"><a href="#val-set_prop_tenv_pdesc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_prop_tenv_pdesc : <a href="../Prop/index.html#type-normal">Prop.normal</a> <a href="../Prop/index.html#type-t">Prop.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span class="keyword">&#8209;&gt;</span> <a href="../../../InferIR/InferIR/Procdesc/index.html#type-t">InferIR.Procdesc.t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Set last prop,tenv,pdesc seen in symbolic execution</p></div></div><div class="spec val" id="val-set_session"><a href="#val-set_session" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_session : int <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Set last session seen in symbolic execution</p></div></div></body></html>