CamlinternalOO (3)
NAME
CamlinternalOO - Run-time support for objects and classes.Module
Module CamlinternalOODocumentation
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_methods_variables
:
table ->
string array -> string array -> label array
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 array
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
val dummy_class
:
string * int * int ->
t * (table -> Obj.t -> t) *
(Obj.t -> t) * Obj.t
===
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
===
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