1 (* Copyright (C) 2009 Matthew Fluet.
2 * Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
3 * Jagannathan, and Stephen Weeks.
4 * Copyright (C) 1997-2000 NEC Research Institute.
6 * MLton is released under a BSD-style license.
7 * See the file MLton-LICENSE for details.
10 signature DIRECT_EXP_STRUCTS =
15 signature DIRECT_EXP =
17 include DIRECT_EXP_STRUCTS
25 args: (Var.t * Type.t) vector,
27 | Word of WordSize.t * (WordX.t * t) vector
29 val arith: {prim: Type.t Prim.t,
33 (* For now, call always uses Handler.None. This means it should only
34 * be used for functions that cannot raise.
36 val call: {func: Func.t, args: t vector, ty: Type.t} -> t
41 val conApp: {con: Con.t,
44 val const: Const.t -> t
45 val detuple: {body: Var.t vector -> t,
48 val detupleBind: {body: t,
49 components: Var.t vector,
52 val eq: t * t * Type.t -> t
56 catch: Var.t * Type.t,
58 val layout: t -> Layout.t
59 val lett: {decs: {var: Var.t, exp: t} list,
62 t * Return.Handler.t -> Label.t * Block.t list
64 t * Return.Handler.t * Label.t -> Label.t * Block.t list
65 val name: t * (Var.t -> t) -> t
66 val primApp: {args: t vector,
70 val profile: ProfileExp.t -> t
72 val select: {tuple: t,
76 val tuple: {exps: t vector, ty: Type.t} -> t
77 val var: Var.t * Type.t -> t
78 val word: WordX.t -> t