48 lines
2.1 KiB
OCaml
48 lines
2.1 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* OCaml *)
|
|
(* *)
|
|
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
(* Mark Shinwell, Jane Street Europe *)
|
|
(* *)
|
|
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
(* en Automatique. *)
|
|
(* Copyright 2019 Jane Street Group LLC *)
|
|
(* *)
|
|
(* All rights reserved. This file is distributed under the terms of *)
|
|
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
(* special exception on linking described in the file LICENSE. *)
|
|
(* *)
|
|
(**************************************************************************)
|
|
|
|
(** Mutable state used by [Cmmgen]. *)
|
|
|
|
[@@@ocaml.warning "+a-4-30-40-41-42"]
|
|
|
|
type is_global = Global | Local
|
|
|
|
type constant =
|
|
| Const_closure of is_global * Clambda.ufunction list * Clambda.uconstant list
|
|
| Const_table of is_global * Cmm.data_item list
|
|
|
|
val add_constant : Misc.Stdlib.String.t -> constant -> unit
|
|
|
|
val add_data_items : Cmm.data_item list -> unit
|
|
|
|
val add_function : Clambda.ufunction -> unit
|
|
|
|
val get_and_clear_constants : unit -> constant Misc.Stdlib.String.Map.t
|
|
|
|
val get_and_clear_data_items : unit -> Cmm.data_item list
|
|
|
|
val next_function : unit -> Clambda.ufunction option
|
|
|
|
val no_more_functions : unit -> bool
|
|
|
|
val set_structured_constants : Clambda.preallocated_constant list -> unit
|
|
|
|
val add_structured_constant : string -> Clambda.ustructured_constant -> unit
|
|
|
|
(* Also looks up using Compilenv.structured_constant_of_symbol *)
|
|
val structured_constant_of_sym : string -> Clambda.ustructured_constant option
|