Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Obj(3)				   OCamldoc				Obj(3)

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

       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.

       @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 new_block : int -> int -> t

       val dup : t -> t

       val truncate : t	-> int -> unit

       val add_offset :	t -> Int32.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

       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

2020-08-11			    source:				Obj(3)

NAME | Module | Documentation

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Obj&sektion=3o&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help