dwww Home | Manual pages | Find package

Obj(3o)                          OCaml library                         Obj(3o)

NAME
       Obj - Operations on internal representations of values.

Module
       Module   Obj

Documentation
       Module Obj
        : sig end

       Operations on internal representations of values.

       Not for the casual user.

       type t

       type raw_data = nativeint

       val repr : 'a -> t

       val obj : t -> 'a

       val magic : 'a -> 'b

       val is_block : t -> bool

       val is_int : t -> bool

       val tag : t -> int

       val size : t -> int

       val reachable_words : t -> int

       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  --dis-
       able-naked-pointers .

       @Since 4.04

       val field : t -> int -> t

       val set_field : t -> int -> t -> unit

       When using flambda:

       set_field MUST NOT be called on immutable blocks.  (Blocks allocated in
       C stubs, or with new_block below, are always considered mutable.)

       The  same goes for set_double_field and set_tag .  However, for set_tag
       , in the case of immutable blocks where the middle-end optimizers never
       see code that discriminates on their tag (for example records), the op-
       eration should be safe.  Such uses are nonetheless discouraged.

       For experts only: set_field et al can be made safe  by  first  wrapping
       the  block  in  Sys.opaque_identity , so any information about its con-
       tents will not be propagated.

       val set_tag : t -> int -> unit

       val double_field : t -> int -> float

       val set_double_field : t -> int -> float -> unit

       val raw_field : t -> int -> raw_data

       val set_raw_field : t -> int -> raw_data -> unit

       val new_block : int -> int -> t

       val dup : t -> t

       val truncate : t -> int -> unit

       val add_offset : t -> Int32.t -> t

       val with_tag : int -> t -> t

       val first_non_constant_constructor_tag : int

       val last_non_constant_constructor_tag : int

       val lazy_tag : int

       val closure_tag : int

       val object_tag : int

       val infix_tag : int

       val forward_tag : int

       val no_scan_tag : int

       val abstract_tag : int

       val string_tag : int

       val double_tag : int

       val double_array_tag : int

       val custom_tag : int

       val final_tag : int

       val int_tag : int

       val out_of_heap_tag : int

       val unaligned_tag : int

       module Closure : sig end

       module Extension_constructor : sig end

       val extension_constructor : 'a -> extension_constructor

       val extension_name : extension_constructor -> string

       val extension_id : extension_constructor -> int

       The following two functions are deprecated.   Use  module  Marshal  in-
       stead.

       val marshal : t -> bytes

       val unmarshal : bytes -> int -> t * int

       module Ephemeron : sig end

OCamldoc                          2023-02-12                           Obj(3o)

Generated by dwww version 1.15 on Sun Jun 23 01:31:51 CEST 2024.