Module CamlinternalOO

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;
let public_method_label: string => tag;
let new_method: table => label;
let new_variable: (table, string) => int;
let new_methods_variables:
  (table, array(string), array(string)) => array(label);
let get_variable: (table, string) => int;
let get_variables: (table, array(string)) => array(int);
let get_method_label: (table, string) => label;
let get_method_labels: (table, array(string)) => array(label);
let get_method: (table, label) => meth;
let set_method: (table, label, meth) => unit;
let set_methods: (table, array(label)) => unit;
let narrow: (table, array(string), array(string), array(string)) => unit;
let widen: table => unit;
let add_initializer: (table, obj => unit) => unit;
let dummy_table: table;
let create_table: array(string) => table;
let init_class: table => unit;
let inherits:
  (
    table,
    array(string),
    array(string),
    array(string),
    (t, (table, obj) => Obj.t, t, obj),
    bool
  ) =>
  array(Obj.t);
let make_class:
  (array(string), (table, Obj.t) => t) =>
  (t, (table, Obj.t) => t, Obj.t => t, Obj.t);
type init_table;
let make_class_store: (array(string), table => t, init_table) => unit;
let dummy_class:
  ((string, int, int)) => (t, (table, Obj.t) => t, Obj.t => t, Obj.t);

Objects

let copy: ({..} as 'a) => 'a;
let create_object: table => obj;
let create_object_opt: (obj, table) => obj;
let run_initializers: (obj, table) => unit;
let run_initializers_opt: (obj, obj, table) => obj;
let create_object_and_run_initializers: (obj, table) => obj;
let send: (obj, tag) => t;
let sendcache: (obj, tag, t, int) => t;
let sendself: (obj, label) => t;
let get_public_method: (obj, tag) => closure;

Table cache

type tables;
let lookup_tables: (tables, array(closure)) => tables;

Builtins to reduce code size

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;
}
let params: params;

Statistics

type stats = {
   classes : int;
   methods : int;
   inst_vars : int;
}
let stats: unit => stats;