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;