Merge pull request #8870 from gretay-js/linear

Split Linearize into two modules
master
Gabriel Scherer 2019-09-09 11:26:20 +02:00 committed by GitHub
commit 3be535c273
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 233 additions and 187 deletions

67
.depend
View File

@ -2114,26 +2114,26 @@ asmcomp/asmpackager.cmi : \
asmcomp/branch_relaxation.cmo : \
utils/misc.cmi \
asmcomp/mach.cmi \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
asmcomp/cmm.cmi \
asmcomp/branch_relaxation_intf.cmo \
asmcomp/branch_relaxation.cmi
asmcomp/branch_relaxation.cmx : \
utils/misc.cmx \
asmcomp/mach.cmx \
asmcomp/linearize.cmx \
asmcomp/linear.cmx \
asmcomp/cmm.cmx \
asmcomp/branch_relaxation_intf.cmx \
asmcomp/branch_relaxation.cmi
asmcomp/branch_relaxation.cmi : \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
asmcomp/branch_relaxation_intf.cmo
asmcomp/branch_relaxation_intf.cmo : \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
asmcomp/cmm.cmi \
asmcomp/arch.cmo
asmcomp/branch_relaxation_intf.cmx : \
asmcomp/linearize.cmx \
asmcomp/linear.cmx \
asmcomp/cmm.cmx \
asmcomp/arch.cmx
asmcomp/cmm.cmo : \
@ -2277,7 +2277,7 @@ asmcomp/emit.cmo : \
asmcomp/proc.cmi \
utils/misc.cmi \
asmcomp/mach.cmi \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
lambda/lambda.cmi \
asmcomp/emitaux.cmi \
utils/domainstate.cmi \
@ -2299,7 +2299,7 @@ asmcomp/emit.cmx : \
asmcomp/proc.cmx \
utils/misc.cmx \
asmcomp/mach.cmx \
asmcomp/linearize.cmx \
asmcomp/linear.cmx \
lambda/lambda.cmx \
asmcomp/emitaux.cmx \
utils/domainstate.cmx \
@ -2312,7 +2312,7 @@ asmcomp/emit.cmx : \
asmcomp/arch.cmx \
asmcomp/emit.cmi
asmcomp/emit.cmi : \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
asmcomp/cmm.cmi
asmcomp/emitaux.cmo : \
lambda/debuginfo.cmi \
@ -2357,12 +2357,32 @@ asmcomp/interval.cmx : \
asmcomp/interval.cmi : \
asmcomp/reg.cmi \
asmcomp/mach.cmi
asmcomp/linear.cmo : \
asmcomp/reg.cmi \
asmcomp/mach.cmi \
lambda/lambda.cmi \
lambda/debuginfo.cmi \
asmcomp/cmm.cmi \
asmcomp/linear.cmi
asmcomp/linear.cmx : \
asmcomp/reg.cmx \
asmcomp/mach.cmx \
lambda/lambda.cmx \
lambda/debuginfo.cmx \
asmcomp/cmm.cmx \
asmcomp/linear.cmi
asmcomp/linear.cmi : \
asmcomp/reg.cmi \
asmcomp/mach.cmi \
lambda/lambda.cmi \
lambda/debuginfo.cmi \
asmcomp/cmm.cmi
asmcomp/linearize.cmo : \
asmcomp/reg.cmi \
asmcomp/proc.cmi \
utils/misc.cmi \
asmcomp/mach.cmi \
lambda/lambda.cmi \
asmcomp/linear.cmi \
lambda/debuginfo.cmi \
utils/config.cmi \
asmcomp/cmm.cmi \
@ -2372,17 +2392,14 @@ asmcomp/linearize.cmx : \
asmcomp/proc.cmx \
utils/misc.cmx \
asmcomp/mach.cmx \
lambda/lambda.cmx \
asmcomp/linear.cmx \
lambda/debuginfo.cmx \
utils/config.cmx \
asmcomp/cmm.cmx \
asmcomp/linearize.cmi
asmcomp/linearize.cmi : \
asmcomp/reg.cmi \
asmcomp/mach.cmi \
lambda/lambda.cmi \
lambda/debuginfo.cmi \
asmcomp/cmm.cmi
asmcomp/linear.cmi
asmcomp/linscan.cmo : \
asmcomp/reg.cmi \
asmcomp/proc.cmi \
@ -2464,19 +2481,19 @@ asmcomp/printcmm.cmi : \
asmcomp/printlinear.cmo : \
asmcomp/printmach.cmi \
asmcomp/mach.cmi \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
lambda/lambda.cmi \
lambda/debuginfo.cmi \
asmcomp/printlinear.cmi
asmcomp/printlinear.cmx : \
asmcomp/printmach.cmx \
asmcomp/mach.cmx \
asmcomp/linearize.cmx \
asmcomp/linear.cmx \
lambda/lambda.cmx \
lambda/debuginfo.cmx \
asmcomp/printlinear.cmi
asmcomp/printlinear.cmi : \
asmcomp/linearize.cmi
asmcomp/linear.cmi
asmcomp/printmach.cmo : \
asmcomp/debug/reg_availability_set.cmi \
asmcomp/reg.cmi \
@ -2577,7 +2594,7 @@ asmcomp/schedgen.cmo : \
asmcomp/reg.cmi \
asmcomp/proc.cmi \
asmcomp/mach.cmi \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
asmcomp/cmm.cmi \
utils/clflags.cmi \
asmcomp/arch.cmo \
@ -2586,14 +2603,14 @@ asmcomp/schedgen.cmx : \
asmcomp/reg.cmx \
asmcomp/proc.cmx \
asmcomp/mach.cmx \
asmcomp/linearize.cmx \
asmcomp/linear.cmx \
asmcomp/cmm.cmx \
utils/clflags.cmx \
asmcomp/arch.cmx \
asmcomp/schedgen.cmi
asmcomp/schedgen.cmi : \
asmcomp/mach.cmi \
asmcomp/linearize.cmi
asmcomp/linear.cmi
asmcomp/scheduling.cmo : \
asmcomp/schedgen.cmi \
asmcomp/scheduling.cmi
@ -2601,7 +2618,7 @@ asmcomp/scheduling.cmx : \
asmcomp/schedgen.cmx \
asmcomp/scheduling.cmi
asmcomp/scheduling.cmi : \
asmcomp/linearize.cmi
asmcomp/linear.cmi
asmcomp/selectgen.cmo : \
lambda/simplif.cmi \
asmcomp/reg.cmi \
@ -5460,7 +5477,7 @@ asmcomp/debug/compute_ranges.cmo : \
asmcomp/printlinear.cmi \
utils/numbers.cmi \
utils/misc.cmi \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
utils/int_replace_polymorphic_compare.cmi \
asmcomp/debug/compute_ranges_intf.cmo \
asmcomp/cmm.cmi \
@ -5469,7 +5486,7 @@ asmcomp/debug/compute_ranges.cmx : \
asmcomp/printlinear.cmx \
utils/numbers.cmx \
utils/misc.cmx \
asmcomp/linearize.cmx \
asmcomp/linear.cmx \
utils/int_replace_polymorphic_compare.cmx \
asmcomp/debug/compute_ranges_intf.cmx \
asmcomp/cmm.cmx \
@ -5478,11 +5495,11 @@ asmcomp/debug/compute_ranges.cmi : \
asmcomp/debug/compute_ranges_intf.cmo
asmcomp/debug/compute_ranges_intf.cmo : \
utils/numbers.cmi \
asmcomp/linearize.cmi \
asmcomp/linear.cmi \
utils/identifiable.cmi
asmcomp/debug/compute_ranges_intf.cmx : \
utils/numbers.cmx \
asmcomp/linearize.cmx \
asmcomp/linear.cmx \
utils/identifiable.cmx
asmcomp/debug/reg_availability_set.cmo : \
asmcomp/debug/reg_with_debug_info.cmi \

View File

@ -176,7 +176,7 @@ ASMCOMP=\
asmcomp/linscan.cmo \
asmcomp/reloadgen.cmo asmcomp/reload.cmo \
asmcomp/deadcode.cmo \
asmcomp/printlinear.cmo asmcomp/linearize.cmo \
asmcomp/linear.cmo asmcomp/printlinear.cmo asmcomp/linearize.cmo \
asmcomp/debug/available_regs.cmo \
asmcomp/debug/compute_ranges_intf.cmo \
asmcomp/debug/compute_ranges.cmo \

View File

@ -21,7 +21,7 @@ open Arch
open Proc
open Reg
open Mach
open Linearize
open Linear
open Emitaux
open X86_ast
@ -909,7 +909,7 @@ let rec emit_all fallthrough i =
| Lend -> ()
| _ ->
emit_instr fallthrough i;
emit_all (Linearize.has_fallthrough i.desc) i.next
emit_all (Linear.has_fallthrough i.desc) i.next
let all_functions = ref []

View File

@ -23,7 +23,7 @@ open Arch
open Proc
open Reg
open Mach
open Linearize
open Linear
open Emitaux
(* Tradeoff between code size and code speed *)

View File

@ -24,7 +24,7 @@ open Arch
open Proc
open Reg
open Mach
open Linearize
open Linear
open Emitaux
(* Tradeoff between code size and code speed *)

View File

@ -15,7 +15,7 @@
(**************************************************************************)
open Mach
open Linearize
open Linear
module Make (T : Branch_relaxation_intf.S) = struct
let label_map code =
@ -45,7 +45,7 @@ module Make (T : Branch_relaxation_intf.S) = struct
| Some branch ->
let max_branch_offset =
(* Remember to cut some slack for multi-word instructions (in the
[Linearize] sense of the word) where the branch can be anywhere in
[Linear] sense of the word) where the branch can be anywhere in
the middle. 12 words of slack is plenty. *)
T.Cond_branch.max_displacement branch - 12
in

View File

@ -18,7 +18,7 @@
module Make (T : Branch_relaxation_intf.S) : sig
val relax
: Linearize.instruction
: Linear.instruction
(* [max_offset_of_out_of_line_code] specifies the furthest distance,
measured from the first address immediately after the last instruction
of the function, that may be branched to from within the function in

View File

@ -46,7 +46,7 @@ module type S = sig
- Lcondbranch3 (_, _, _)
[classify_instr] is expected to return [None] when called on any
instruction not in this list. *)
val classify_instr : Linearize.instruction_desc -> t option
val classify_instr : Linear.instruction_desc -> t option
end
(* The value to be added to the program counter (in [distance] units)
@ -55,7 +55,7 @@ module type S = sig
val offset_pc_at_branch : distance
(* The maximum size of a given instruction. *)
val instr_size : Linearize.instruction_desc -> distance
val instr_size : Linear.instruction_desc -> distance
(* Insertion of target-specific code to relax operations that cannot be
relaxed generically. It is assumed that these rewrites do not change
@ -63,13 +63,13 @@ module type S = sig
val relax_allocation
: num_bytes:int
-> label_after_call_gc:Cmm.label option
-> Linearize.instruction_desc
-> Linear.instruction_desc
val relax_intop_checkbound
: label_after_error:Cmm.label option
-> Linearize.instruction_desc
-> Linear.instruction_desc
val relax_intop_imm_checkbound
: bound:int
-> label_after_error:Cmm.label option
-> Linearize.instruction_desc
val relax_specific_op : Arch.specific_operation -> Linearize.instruction_desc
-> Linear.instruction_desc
val relax_specific_op : Arch.specific_operation -> Linear.instruction_desc
end

View File

@ -16,7 +16,7 @@
open! Int_replace_polymorphic_compare
module L = Linearize
module L = Linear
module Make (S : Compute_ranges_intf.S_functor) = struct
module Subrange_state = S.Subrange_state
@ -39,7 +39,7 @@ module Make (S : Compute_ranges_intf.S_functor) = struct
subrange_info : Subrange_info.t;
}
let create ~(start_insn : Linearize.instruction)
let create ~(start_insn : L.instruction)
~start_pos ~start_pos_offset
~end_pos ~end_pos_offset
~subrange_info =

View File

@ -28,7 +28,7 @@
the documentation on module type [S], below.
*)
module L = Linearize
module L = Linear
(** The type of caller-defined contextual state associated with subranges.
This may be used to track information throughout the range-computing
@ -81,7 +81,7 @@ module type S_functor = sig
module Index : Identifiable.S
(** The module [Key] corresponds to the identifiers that define the ranges in
[Linearize] instructions. Each instruction should have two sets of keys,
[Linear] instructions. Each instruction should have two sets of keys,
[available_before] and [available_across], with accessor functions of
these names being provided to retrieve them. The notion of "availability"
is not prescribed. The availability sets are used to compute subranges
@ -158,7 +158,7 @@ end
(** This module type is the result type of the [Compute_ranges.Make] functor.
The _ranges_ being computed are composed of contiguous _subranges_ delimited
by two labels (of type [Linearize.label]). These labels will be added by
by two labels (of type [Linear.label]). These labels will be added by
this pass to the code being inspected, which is why the [create] function in
the result of the functor returns not only the ranges but also the updated
function with the labels added. The [start_pos_offset] and [end_pos_offset]
@ -199,7 +199,7 @@ module type S = sig
val info : t -> Subrange_info.t
(** The label at the start of the range. *)
val start_pos : t -> Linearize.label
val start_pos : t -> Linear.label
(** How many bytes from the label at [start_pos] the range actually
commences. If this value is zero, then the first byte of the range
@ -207,7 +207,7 @@ module type S = sig
val start_pos_offset : t -> int
(** The label at the end of the range. *)
val end_pos : t -> Linearize.label
val end_pos : t -> Linear.label
(** Like [start_pos_offset], but analogously for the end of the range. (The
sense is not inverted; a positive [end_pos_offset] means the range ends
@ -232,7 +232,7 @@ module type S = sig
cross an extremity of any other range. (This should be satisfied in
typical uses because the offsets are typically zero or one.) If there
are no ranges supplied then [None] is returned. *)
val estimate_lowest_address : t -> (Linearize.label * int) option
val estimate_lowest_address : t -> (Linear.label * int) option
(** Fold over all subranges within the given range. *)
val fold
@ -251,7 +251,7 @@ module type S = sig
(** Compute ranges for the code in the given linearized function
declaration, returning the ranges as a value of type [t] and the
rewritten code that must go forward for emission. *)
val create : Linearize.fundecl -> t * Linearize.fundecl
val create : Linear.fundecl -> t * Linear.fundecl
(** Iterate through ranges. Each range is associated with an index. *)
val iter : t -> f:(Index.t -> Range.t -> unit) -> unit

View File

@ -15,7 +15,7 @@
(* Generation of assembly code *)
val fundecl: Linearize.fundecl -> unit
val fundecl: Linear.fundecl -> unit
val data: Cmm.data_item list -> unit
val begin_assembly: unit -> unit
val end_assembly: unit -> unit

View File

@ -22,7 +22,7 @@ open Arch
open Proc
open Reg
open Mach
open Linearize
open Linear
open Emitaux
module String = Misc.Stdlib.String
@ -912,7 +912,7 @@ let rec emit_all fallthrough i =
| _ ->
emit_instr fallthrough i;
emit_all
(system = S_win32 || Linearize.has_fallthrough i.desc)
(system = S_win32 || Linear.has_fallthrough i.desc)
i.next
(* Emission of a function declaration *)

88
asmcomp/linear.ml Normal file
View File

@ -0,0 +1,88 @@
(**************************************************************************)
(* *)
(* 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. *)
(* *)
(**************************************************************************)
open Mach
(* 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
let has_fallthrough = function
| Lreturn | Lbranch _ | Lswitch _ | Lraise _
| Lop Itailcall_ind _ | Lop (Itailcall_imm _) -> false
| _ -> true
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;
}
(* Invert a test *)
let invert_integer_test = function
Isigned cmp -> Isigned(Cmm.negate_integer_comparison cmp)
| Iunsigned cmp -> Iunsigned(Cmm.negate_integer_comparison cmp)
let invert_test = function
Itruetest -> Ifalsetest
| Ifalsetest -> Itruetest
| Iinttest(cmp) -> Iinttest(invert_integer_test cmp)
| Iinttest_imm(cmp, n) -> Iinttest_imm(invert_integer_test cmp, n)
| Ifloattest(cmp) -> Ifloattest(Cmm.negate_float_comparison cmp)
| Ieventest -> Ioddtest
| Ioddtest -> Ieventest
(* The "end" instruction *)
let rec end_instr =
{ desc = Lend;
next = end_instr;
arg = [||];
res = [||];
dbg = Debuginfo.none;
live = Reg.Set.empty }
(* Cons an instruction (live, debug empty) *)
let instr_cons d a r n =
{ desc = d; next = n; arg = a; res = r;
dbg = Debuginfo.none; live = Reg.Set.empty }

58
asmcomp/linear.mli Normal file
View File

@ -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;
}

View File

@ -14,81 +14,7 @@
(**************************************************************************)
(* Transformation of Mach code into a list of pseudo-instructions. *)
open Reg
open Mach
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 operation
| Lreloadretaddr
| Lreturn
| Llabel of label
| Lbranch of label
| Lcondbranch of 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
let has_fallthrough = function
| Lreturn | Lbranch _ | Lswitch _ | Lraise _
| Lop Itailcall_ind _ | Lop (Itailcall_imm _) -> false
| _ -> true
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;
}
(* Invert a test *)
let invert_integer_test = function
Isigned cmp -> Isigned(Cmm.negate_integer_comparison cmp)
| Iunsigned cmp -> Iunsigned(Cmm.negate_integer_comparison cmp)
let invert_test = function
Itruetest -> Ifalsetest
| Ifalsetest -> Itruetest
| Iinttest(cmp) -> Iinttest(invert_integer_test cmp)
| Iinttest_imm(cmp, n) -> Iinttest_imm(invert_integer_test cmp, n)
| Ifloattest(cmp) -> Ifloattest(Cmm.negate_float_comparison cmp)
| Ieventest -> Ioddtest
| Ioddtest -> Ieventest
(* The "end" instruction *)
let rec end_instr =
{ desc = Lend;
next = end_instr;
arg = [||];
res = [||];
dbg = Debuginfo.none;
live = Reg.Set.empty }
(* Cons an instruction (live, debug empty) *)
let instr_cons d a r n =
{ desc = d; next = n; arg = a; res = r;
dbg = Debuginfo.none; live = Reg.Set.empty }
open Linear
(* Cons a simple instruction (arg, res, live empty) *)
@ -308,7 +234,7 @@ let rec linear i n =
n3
| Iexit nfail ->
let lbl, t = find_exit_label_try_depth nfail in
assert (i.Mach.next.desc = Iend);
assert (i.Mach.next.desc = Mach.Iend);
let delta_traps = !try_depth - t in
let n1 = adjust_trap_depth delta_traps n in
let rec loop i tt =

View File

@ -14,47 +14,4 @@
(**************************************************************************)
(* 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;
}
val fundecl: Mach.fundecl -> fundecl
val fundecl: Mach.fundecl -> Linear.fundecl

View File

@ -21,7 +21,7 @@ open Arch
open Proc
open Reg
open Mach
open Linearize
open Linear
open Emitaux
(* Reserved space at bottom of stack *)

View File

@ -18,7 +18,7 @@
open Format
open Mach
open Printmach
open Linearize
open Linear
let label ppf l =
Format.fprintf ppf "L%i" l

View File

@ -16,7 +16,7 @@
(* Pretty-printing of linearized machine code *)
open Format
open Linearize
open Linear
val instr: formatter -> instruction -> unit
val fundecl: formatter -> fundecl -> unit

View File

@ -22,7 +22,7 @@ open Arch
open Proc
open Reg
open Mach
open Linearize
open Linear
open Emitaux
(* Layout of the stack. The stack is kept 8-aligned. *)

View File

@ -17,7 +17,7 @@
open Reg
open Mach
open Linearize
open Linear
(* Representation of the code DAG. *)

View File

@ -16,7 +16,7 @@
(* Instruction scheduling *)
type code_dag_node =
{ instr: Linearize.instruction;
{ instr: Linear.instruction;
delay: int;
mutable sons: (code_dag_node * int) list;
mutable date: int;
@ -43,7 +43,7 @@ class virtual scheduler_generic : object
method is_checkbound : Mach.operation -> bool
(* Says whether the given operation is a checkbound *)
(* Entry point *)
method schedule_fundecl : Linearize.fundecl -> Linearize.fundecl
method schedule_fundecl : Linear.fundecl -> Linear.fundecl
end
val reset : unit -> unit

View File

@ -15,4 +15,4 @@
(* Instruction scheduling *)
val fundecl: Linearize.fundecl -> Linearize.fundecl
val fundecl: Linear.fundecl -> Linear.fundecl

View File

@ -7,7 +7,7 @@ alloc_b.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_b.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \
@ -363,7 +363,7 @@ alloc_bd.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_bd.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \
@ -724,7 +724,7 @@ alloc_bi.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_bi.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \
@ -1080,7 +1080,7 @@ alloc_bpic.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_bpic.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \
@ -1436,7 +1436,7 @@ alloc_n.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_n.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \
@ -1789,7 +1789,7 @@ alloc_nd.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_nd.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \
@ -2147,7 +2147,7 @@ alloc_ni.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_ni.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \
@ -2500,7 +2500,7 @@ alloc_npic.$(O): alloc.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/custom.h \
caml/major_gc.h caml/freelist.h caml/memory.h caml/gc.h caml/major_gc.h \
caml/minor_gc.h caml/address_class.h caml/domain.h caml/mlvalues.h \
caml/stacks.h caml/memory.h
caml/stacks.h caml/memory.h caml/signals.h
array_npic.$(O): array.c caml/alloc.h caml/misc.h caml/config.h caml/m.h caml/s.h \
caml/mlvalues.h caml/domain_state.h caml/domain_state.tbl caml/fail.h \
caml/memory.h caml/gc.h caml/major_gc.h caml/freelist.h caml/minor_gc.h \