summaryrefslogtreecommitdiff
path: root/asmcomp/linear.mli
diff options
context:
space:
mode:
authorGreta Yorsh <gyorsh@janestreet.com>2019-08-13 12:11:13 +0100
committerGreta Yorsh <gyorsh@janestreet.com>2019-09-04 11:55:11 +0100
commit0b6b544fcb3cb47f5f7b531d8d062c3d89538d0c (patch)
treefb80f7a56dd7b03dfa83bf98904ea06c2611d78d /asmcomp/linear.mli
parent5526a31364fb8fb909977e14ceb9fa1ea9c29e94 (diff)
downloadocaml-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.mli58
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;
+ }