CamlinternalOO(3)

NAME
CamlinternalOO - Run-time support for objects and classes.

Module
Module CamlinternalOO

Documentation

Module CamlinternalOO
 : sig end

Run-time support for objects and classes. All functions in this module are for system use only, not for the casual user.

=== Classes === type tag

type label

type table

type meth

type t

type obj

type closure

val public_method_label : string -> tag

val new_method : table -> label

val new_variable : table -> string -> int

val new_variables : table -> string array -> int

val get_variable : table -> string -> int

val get_variables : table -> string array -> int array

val get_method_label : table -> string -> label

val get_method_labels : table -> string array -> label array

val get_method : table -> label -> meth

val set_method : table -> label -> meth -> unit

val set_methods : table -> label array -> unit

val narrow : table -> string array -> string array -> string array -> unit

val widen : table -> unit

val add_initializer : table -> (obj -> unit) -> unit

val dummy_table : table

val create_table : string array -> table

val init_class : table -> unit

val inherits : table -> string array -> string array -> string array -> t * (table -> obj -> Obj.t) * t * obj -> bool -> Obj.t

val make_class : string array -> (table -> Obj.t -> t) -> t * (table -> Obj.t -> t) * (Obj.t -> t) * Obj.t

type init_table

val make_class_store : string array -> (table -> t) -> init_table -> unit

=== Objects === val copy : (< .. > as 'a) -> 'a

val create_object : table -> obj

val create_object_opt : obj -> table -> obj

val run_initializers : obj -> table -> unit

val run_initializers_opt : obj -> obj -> table -> obj

val create_object_and_run_initializers : obj -> table -> obj

val send : obj -> tag -> t

val sendcache : obj -> tag -> t -> int -> t

val sendself : obj -> label -> t

val get_public_method : obj -> tag -> closure

=== Table cache === type tables

val lookup_tables : tables -> closure array -> tables

=== Builtins to reduce code size === val get_const : t -> closure

val get_var : int -> closure

val get_env : int -> int -> closure

val get_meth : label -> closure

val set_var : int -> closure

val app_const : (t -> t) -> t -> closure

val app_var : (t -> t) -> int -> closure

val app_env : (t -> t) -> int -> int -> closure

val app_meth : (t -> t) -> label -> closure

val app_const_const : (t -> t -> t) -> t -> t -> closure

val app_const_var : (t -> t -> t) -> t -> int -> closure

val app_const_env : (t -> t -> t) -> t -> int -> int -> closure

val app_const_meth : (t -> t -> t) -> t -> label -> closure

val app_var_const : (t -> t -> t) -> int -> t -> closure

val app_env_const : (t -> t -> t) -> int -> int -> t -> closure

val app_meth_const : (t -> t -> t) -> label -> t -> closure

val meth_app_const : label -> t -> closure

val meth_app_var : label -> int -> closure

val meth_app_env : label -> int -> int -> closure

val meth_app_meth : label -> label -> closure

val send_const : tag -> obj -> int -> closure

val send_var : tag -> int -> int -> closure

val send_env : tag -> int -> int -> int -> closure

val send_meth : tag -> label -> int -> closure

type impl =
 | GetConst
 | GetVar
 | GetEnv
 | GetMeth
 | SetVar
 | AppConst
 | AppVar
 | AppEnv
 | AppMeth
 | AppConstConst
 | AppConstVar
 | AppConstEnv
 | AppConstMeth
 | AppVarConst
 | AppEnvConst
 | AppMethConst
 | MethAppConst
 | MethAppVar
 | MethAppEnv
 | MethAppMeth
 | SendConst
 | SendVar
 | SendEnv
 | SendMeth
 | Closure of closure

=== Parameters === type params = { mutable compact_table : bool ; mutable copy_parent : bool ; mutable clean_when_copying : bool ; mutable retry_count : int ; mutable bucket_small_size : int ;
 }

val params : params

=== Statistics === type stats = {
 classes : int ;
 methods : int ;
 inst_vars : int ;
 }

val stats : unit -> stats