aboutsummaryrefslogtreecommitdiff
path: root/src/boot/me/semant.ml
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-07-26 15:44:18 -0700
committerGraydon Hoare <[email protected]>2010-07-26 15:44:29 -0700
commit3d69407b5135f5ffaa35c460c4ce5966e7c2d25b (patch)
treeddf07b26f563abbda3786b6d38dcdda137d94f39 /src/boot/me/semant.ml
parentMove the test suite to the "as" form for casts. XFAIL a few tests for LLVM. (diff)
downloadrust-3d69407b5135f5ffaa35c460c4ce5966e7c2d25b.tar.xz
rust-3d69407b5135f5ffaa35c460c4ce5966e7c2d25b.zip
Fix numerous non-linearities and O(sizeof(crate)) issues in typestate system's dataflow algorithm. No longer substantial in profile.
Diffstat (limited to 'src/boot/me/semant.ml')
-rw-r--r--src/boot/me/semant.ml24
1 files changed, 6 insertions, 18 deletions
diff --git a/src/boot/me/semant.ml b/src/boot/me/semant.ml
index 5a3bb5d1..ff10a300 100644
--- a/src/boot/me/semant.ml
+++ b/src/boot/me/semant.ml
@@ -100,6 +100,7 @@ type ctxt =
ctxt_all_stmts: (node_id,Ast.stmt) Hashtbl.t;
ctxt_item_files: (node_id,filename) Hashtbl.t;
ctxt_all_lvals: (node_id,Ast.lval) Hashtbl.t;
+ ctxt_call_lval_params: (node_id,Ast.ty array) Hashtbl.t;
(* definition id --> definition *)
ctxt_all_defns: (node_id,defn) Hashtbl.t;
@@ -110,6 +111,10 @@ type ctxt =
ctxt_required_items: (node_id, (required_lib * nabi_conv)) Hashtbl.t;
ctxt_required_syms: (node_id, string) Hashtbl.t;
+ (* Typestate-y stuff. *)
+ ctxt_stmt_is_init: (node_id,unit) Hashtbl.t;
+ ctxt_post_stmt_slot_drops: (node_id,node_id list) Hashtbl.t;
+
(* Layout-y stuff. *)
ctxt_slot_aliased: (node_id,unit) Hashtbl.t;
ctxt_slot_is_obj_state: (node_id,unit) Hashtbl.t;
@@ -121,17 +126,6 @@ type ctxt =
ctxt_stmt_loop_depths: (node_id,int) Hashtbl.t;
ctxt_slot_loop_depths: (node_id,int) Hashtbl.t;
- (* Typestate-y stuff. *)
- ctxt_constrs: (constr_id,constr_key) Hashtbl.t;
- ctxt_constr_ids: (constr_key,constr_id) Hashtbl.t;
- ctxt_preconditions: (node_id,Bits.t) Hashtbl.t;
- ctxt_postconditions: (node_id,Bits.t) Hashtbl.t;
- ctxt_prestates: (node_id,Bits.t) Hashtbl.t;
- ctxt_poststates: (node_id,Bits.t) Hashtbl.t;
- ctxt_call_lval_params: (node_id,Ast.ty array) Hashtbl.t;
- ctxt_stmt_is_init: (node_id,unit) Hashtbl.t;
- ctxt_post_stmt_slot_drops: (node_id,node_id list) Hashtbl.t;
-
(* Translation-y stuff. *)
ctxt_fn_fixups: (node_id,fixup) Hashtbl.t;
ctxt_block_fixups: (node_id,fixup) Hashtbl.t;
@@ -192,19 +186,13 @@ let new_ctxt sess abi crate =
ctxt_item_files = crate.Ast.crate_files;
ctxt_all_lvals = Hashtbl.create 0;
ctxt_all_defns = Hashtbl.create 0;
+ ctxt_call_lval_params = Hashtbl.create 0;
ctxt_lval_to_referent = Hashtbl.create 0;
ctxt_required_items = crate.Ast.crate_required;
ctxt_required_syms = crate.Ast.crate_required_syms;
- ctxt_constrs = Hashtbl.create 0;
- ctxt_constr_ids = Hashtbl.create 0;
- ctxt_preconditions = Hashtbl.create 0;
- ctxt_postconditions = Hashtbl.create 0;
- ctxt_prestates = Hashtbl.create 0;
- ctxt_poststates = Hashtbl.create 0;
ctxt_stmt_is_init = Hashtbl.create 0;
ctxt_post_stmt_slot_drops = Hashtbl.create 0;
- ctxt_call_lval_params = Hashtbl.create 0;
ctxt_slot_aliased = Hashtbl.create 0;
ctxt_slot_is_obj_state = Hashtbl.create 0;