diff options
author | Greta Yorsh <gyorsh@janestreet.com> | 2019-08-13 12:11:13 +0100 |
---|---|---|
committer | Greta Yorsh <gyorsh@janestreet.com> | 2019-09-04 11:55:11 +0100 |
commit | 0b6b544fcb3cb47f5f7b531d8d062c3d89538d0c (patch) | |
tree | fb80f7a56dd7b03dfa83bf98904ea06c2611d78d /asmcomp/linear.mli | |
parent | 5526a31364fb8fb909977e14ceb9fa1ea9c29e94 (diff) | |
download | ocaml-0b6b544fcb3cb47f5f7b531d8d062c3d89538d0c.tar.gz |
Split Linearize into two modules
Separate the description of the IR from the transformations
performed on it by moving type declarations from linearize.ml
into their own file, called linear.ml.
Diffstat (limited to 'asmcomp/linear.mli')
-rw-r--r-- | asmcomp/linear.mli | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/asmcomp/linear.mli b/asmcomp/linear.mli new file mode 100644 index 0000000000..4f5d46df6b --- /dev/null +++ b/asmcomp/linear.mli @@ -0,0 +1,58 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* 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. *) +(* *) +(**************************************************************************) + +(* Transformation of Mach code into a list of pseudo-instructions. *) + +type label = Cmm.label + +type instruction = + { mutable desc: instruction_desc; + mutable next: instruction; + arg: Reg.t array; + res: Reg.t array; + dbg: Debuginfo.t; + live: Reg.Set.t } + +and instruction_desc = + | Lprologue + | Lend + | Lop of Mach.operation + | Lreloadretaddr + | Lreturn + | Llabel of label + | Lbranch of label + | Lcondbranch of Mach.test * label + | Lcondbranch3 of label option * label option * label option + | Lswitch of label array + | Lentertrap + | Ladjust_trap_depth of { delta_traps : int; } + | Lpushtrap of { lbl_handler : label; } + | Lpoptrap + | Lraise of Lambda.raise_kind + +val has_fallthrough : instruction_desc -> bool +val end_instr: instruction +val instr_cons: + instruction_desc -> Reg.t array -> Reg.t array -> instruction -> instruction +val invert_test: Mach.test -> Mach.test + +type fundecl = + { fun_name: string; + fun_body: instruction; + fun_fast: bool; + fun_dbg : Debuginfo.t; + fun_spacetime_shape : Mach.spacetime_shape option; + fun_tailrec_entry_point_label : label; + } |