summaryrefslogtreecommitdiffstats
path: root/bytecomp/lambda.mli
diff options
context:
space:
mode:
Diffstat (limited to 'bytecomp/lambda.mli')
-rw-r--r--bytecomp/lambda.mli19
1 files changed, 15 insertions, 4 deletions
diff --git a/bytecomp/lambda.mli b/bytecomp/lambda.mli
index 18cebad34..6d2086e74 100644
--- a/bytecomp/lambda.mli
+++ b/bytecomp/lambda.mli
@@ -134,8 +134,6 @@ type lambda =
| Lletrec of (Ident.t * lambda) list * lambda
| Lprim of primitive * lambda list
| Lswitch of lambda * lambda_switch
- | Lstaticfail
- | Lcatch of lambda * lambda
| Lstaticraise of int * lambda list
| Lstaticcatch of lambda * (int * Ident.t list) * lambda
| Ltrywith of lambda * Ident.t * lambda
@@ -153,8 +151,7 @@ and lambda_switch =
sw_consts: (int * lambda) list; (* Integer cases *)
sw_numblocks: int; (* Number of tag block cases *)
sw_blocks: (int * lambda) list; (* Tag block cases *)
- sw_checked: bool ; (* True if bound checks needed *)
- sw_nofail: bool} (* True if should not fail *)
+ sw_failaction : lambda option} (* Action to take if failure *)
and lambda_event =
{ lev_loc: int;
lev_kind: lambda_event_kind;
@@ -171,6 +168,7 @@ val lambda_unit: lambda
val name_lambda: lambda -> (Ident.t -> lambda) -> lambda
val name_lambda_list: lambda list -> (lambda list -> lambda) -> lambda
val is_guarded: lambda -> bool
+val patch_guarded : lambda -> lambda -> lambda
module IdentSet: Set.S with type elt = Ident.t
val free_variables: lambda -> IdentSet.t
@@ -184,4 +182,17 @@ val bind : let_kind -> Ident.t -> lambda -> lambda -> lambda
val commute_comparison : comparison -> comparison
val negate_comparison : comparison -> comparison
+(***********************)
+(* For static failures *)
+(***********************)
+
+(* Get a new static failure ident *)
val next_raise_count : unit -> int
+
+
+val staticfail : lambda (* Anticipated static failure *)
+
+(* Check anticipated failure, substitute its final value *)
+val is_guarded: lambda -> bool
+val patch_guarded : lambda -> lambda -> lambda
+