moonpool/dev/ocaml/Stdlib/Obj/index.html
2023-08-28 17:11:38 +00:00

2 lines
No EOL
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Obj (ocaml.Stdlib.Obj)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../index.html">ocaml</a> &#x00BB; <a href="../index.html">Stdlib</a> &#x00BB; Obj</nav><header class="odoc-preamble"><h1>Module <code><span>Stdlib.Obj</span></code></h1><p>Operations on internal representations of values.</p><p>Not for the casual user.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-raw_data"><a href="#type-raw_data" class="anchor"></a><code><span><span class="keyword">type</span> raw_data</span><span> = nativeint</span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-repr"><a href="#val-repr" class="anchor"></a><code><span><span class="keyword">val</span> repr : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-obj"><a href="#val-obj" class="anchor"></a><code><span><span class="keyword">val</span> obj : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-magic"><a href="#val-magic" class="anchor"></a><code><span><span class="keyword">val</span> magic : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_block"><a href="#val-is_block" class="anchor"></a><code><span><span class="keyword">val</span> is_block : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-is_int"><a href="#val-is_int" class="anchor"></a><code><span><span class="keyword">val</span> is_int : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-tag"><a href="#val-tag" class="anchor"></a><code><span><span class="keyword">val</span> tag : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-size"><a href="#val-size" class="anchor"></a><code><span><span class="keyword">val</span> size : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-reachable_words"><a href="#val-reachable_words" class="anchor"></a><code><span><span class="keyword">val</span> reachable_words : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><p>Computes the total size (in words, including the headers) of all heap blocks accessible from the argument. Statically allocated blocks are excluded, unless the runtime system was configured with <code>--disable-naked-pointers</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.04</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-field"><a href="#val-field" class="anchor"></a><code><span><span class="keyword">val</span> field : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-set_field"><a href="#val-set_field" class="anchor"></a><code><span><span class="keyword">val</span> set_field : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>When using flambda:</p><p><code>set_field</code> MUST NOT be called on immutable blocks. (Blocks allocated in C stubs, or with <code>new_block</code> below, are always considered mutable.)</p><p>The same goes for <code>set_double_field</code> and <code>set_tag</code>. However, for <code>set_tag</code>, in the case of immutable blocks where the middle-end optimizers never see code that discriminates on their tag (for example records), the operation should be safe. Such uses are nonetheless discouraged.</p><p>For experts only: <code>set_field</code> et al can be made safe by first wrapping the block in <a href="../Sys/index.html#val-opaque_identity"><code>Sys.opaque_identity</code></a>, so any information about its contents will not be propagated.</p></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-set_tag"><a href="#val-set_tag" class="anchor"></a><code><span><span class="keyword">val</span> set_tag : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> Use with_tag instead.</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-double_field"><a href="#val-double_field" class="anchor"></a><code><span><span class="keyword">val</span> double_field : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> float</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_double_field"><a href="#val-set_double_field" class="anchor"></a><code><span><span class="keyword">val</span> set_double_field : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span>float <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-raw_field"><a href="#val-raw_field" class="anchor"></a><code><span><span class="keyword">val</span> raw_field : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <a href="#type-raw_data">raw_data</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-set_raw_field"><a href="#val-set_raw_field" class="anchor"></a><code><span><span class="keyword">val</span> set_raw_field : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-raw_data">raw_data</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-new_block"><a href="#val-new_block" class="anchor"></a><code><span><span class="keyword">val</span> new_block : <span>int <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-dup"><a href="#val-dup" class="anchor"></a><code><span><span class="keyword">val</span> dup : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-truncate"><a href="#val-truncate" class="anchor"></a><code><span><span class="keyword">val</span> truncate : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span>int <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> </li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-add_offset"><a href="#val-add_offset" class="anchor"></a><code><span><span class="keyword">val</span> add_offset : <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Int32/index.html#type-t">Int32.t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-with_tag"><a href="#val-with_tag" class="anchor"></a><code><span><span class="keyword">val</span> with_tag : <span>int <span class="arrow">&#45;&gt;</span></span> <span><a href="#type-t">t</a> <span class="arrow">&#45;&gt;</span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-first_non_constant_constructor_tag"><a href="#val-first_non_constant_constructor_tag" class="anchor"></a><code><span><span class="keyword">val</span> first_non_constant_constructor_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-last_non_constant_constructor_tag"><a href="#val-last_non_constant_constructor_tag" class="anchor"></a><code><span><span class="keyword">val</span> last_non_constant_constructor_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lazy_tag"><a href="#val-lazy_tag" class="anchor"></a><code><span><span class="keyword">val</span> lazy_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-closure_tag"><a href="#val-closure_tag" class="anchor"></a><code><span><span class="keyword">val</span> closure_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-object_tag"><a href="#val-object_tag" class="anchor"></a><code><span><span class="keyword">val</span> object_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-infix_tag"><a href="#val-infix_tag" class="anchor"></a><code><span><span class="keyword">val</span> infix_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-forward_tag"><a href="#val-forward_tag" class="anchor"></a><code><span><span class="keyword">val</span> forward_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-no_scan_tag"><a href="#val-no_scan_tag" class="anchor"></a><code><span><span class="keyword">val</span> no_scan_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-abstract_tag"><a href="#val-abstract_tag" class="anchor"></a><code><span><span class="keyword">val</span> abstract_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-string_tag"><a href="#val-string_tag" class="anchor"></a><code><span><span class="keyword">val</span> string_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-double_tag"><a href="#val-double_tag" class="anchor"></a><code><span><span class="keyword">val</span> double_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-double_array_tag"><a href="#val-double_array_tag" class="anchor"></a><code><span><span class="keyword">val</span> double_array_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-custom_tag"><a href="#val-custom_tag" class="anchor"></a><code><span><span class="keyword">val</span> custom_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-final_tag"><a href="#val-final_tag" class="anchor"></a><code><span><span class="keyword">val</span> final_tag : int</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> Replaced by custom_tag.</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int_tag"><a href="#val-int_tag" class="anchor"></a><code><span><span class="keyword">val</span> int_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-out_of_heap_tag"><a href="#val-out_of_heap_tag" class="anchor"></a><code><span><span class="keyword">val</span> out_of_heap_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unaligned_tag"><a href="#val-unaligned_tag" class="anchor"></a><code><span><span class="keyword">val</span> unaligned_tag : int</span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Closure"><a href="#module-Closure" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Closure/index.html">Closure</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Extension_constructor"><a href="#module-Extension_constructor" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Extension_constructor/index.html">Extension_constructor</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension_constructor"><a href="#val-extension_constructor" class="anchor"></a><code><span><span class="keyword">val</span> extension_constructor : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> extension_constructor</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> use Obj.Extension_constructor.of_val</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension_name"><a href="#val-extension_name" class="anchor"></a><code><span><span class="keyword">val</span> extension_name : <span>extension_constructor <span class="arrow">&#45;&gt;</span></span> string</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> use Obj.Extension_constructor.name</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension_id"><a href="#val-extension_id" class="anchor"></a><code><span><span class="keyword">val</span> extension_id : <span>extension_constructor <span class="arrow">&#45;&gt;</span></span> int</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> use Obj.Extension_constructor.id</li></ul></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Ephemeron"><a href="#module-Ephemeron" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Ephemeron/index.html">Ephemeron</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Ephemeron with arbitrary arity and untyped</p></div></div></div></body></html>