GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Obj(3) OCamldoc Obj(3)

Obj - Operations on internal representations of values.

Module Obj

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 operation 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 contents 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 instead. ===

val marshal : t -> bytes

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

module Ephemeron : sig end

source: 2022-04-09

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.