Module St_memory

type oop = int
type body =
  1. | Pointers of oop array
  2. | Bytes of Stdlib.Bytes.t
  3. | Float of float
  4. | Method of oop array * Stdlib.Bytes.t
  5. | Free
type known = {
  1. mutable small_integer : oop;
  2. mutable string : oop;
  3. mutable symbol : oop;
  4. mutable array : oop;
  5. mutable float : oop;
  6. mutable character : oop;
  7. mutable compiled_method : oop;
  8. mutable method_context : oop;
  9. mutable block_context : oop;
  10. mutable message : oop;
  11. mutable association : oop;
  12. mutable point : oop;
  13. mutable large_positive : oop;
  14. mutable large_negative : oop;
  15. mutable metaclass : oop;
  16. mutable method_dictionary : oop;
  17. mutable true_ : oop;
  18. mutable false_ : oop;
  19. mutable smalltalk : oop;
  20. mutable characters : oop array;
  21. mutable special_selectors : oop array;
}
type t
val create : unit -> t
val known : t -> known
val nil : oop
val is_int : oop -> bool
val int_of : oop -> int
val of_int : int -> oop
val fits : int -> bool
val alloc : t -> cls:oop -> body -> oop
val class_of : t -> oop -> oop
val set_class : t -> oop -> oop -> unit
val body : t -> oop -> body
val set_body : t -> oop -> body -> unit
val fetch : t -> oop -> int -> oop
val store : t -> oop -> int -> oop -> unit
val size : t -> oop -> int
val fields : t -> oop -> oop array
val string_of : t -> oop -> string
val new_string : t -> string -> oop
val new_array : t -> oop array -> oop
val new_float : t -> float -> oop
val float_of : t -> oop -> float
val symbol : t -> string -> oop
val symbols : t -> (string * oop) list
val become : t -> oop -> oop -> unit
val instances : t -> oop -> oop list
val live : t -> int
val allocated : t -> int
val gc : t -> roots:oop list -> int
val entries : t -> (int * oop * body) list
val restore : known -> (int * oop * body) list -> t