@@ -60,10 +60,7 @@ type glue_fns = rec(ValueRef activate_glue,
60
60
ValueRef bzero_glue ,
61
61
ValueRef vec_grow_glue ) ;
62
62
63
- type tag_info = rec (
64
- type_handle th,
65
- mutable @hashmap[ ast. def_id, ValueRef ] lldiscrims
66
- ) ;
63
+ type tag_info = rec ( type_handle th) ;
67
64
68
65
state type crate_ctxt = rec ( session. session sess,
69
66
ModuleRef llmod,
@@ -78,6 +75,7 @@ state type crate_ctxt = rec(session.session sess,
78
75
hashmap[ ast. def_id ,
79
76
@ast. native_item ] native_items,
80
77
hashmap[ @ty. t , @tag_info] tags,
78
+ hashmap[ ast. def_id , ValueRef ] discrims,
81
79
hashmap[ ast. def_id , ValueRef ] fn_pairs,
82
80
hashmap[ ast. def_id , ValueRef ] consts,
83
81
hashmap[ ast. def_id , ( ) ] obj_methods,
@@ -2962,9 +2960,7 @@ fn trans_path(@block_ctxt cx, &ast.path p, &option.t[ast.def] dopt,
2962
2960
} else {
2963
2961
// Nullary variant.
2964
2962
auto tag_ty = node_ann_type( cx. fcx. ccx, ann) ;
2965
- auto info = cx. fcx. ccx. tags. get( tag_ty) ;
2966
- check ( info. lldiscrims. contains_key( vid) ) ;
2967
- auto lldiscrim_gv = info. lldiscrims. get( vid) ;
2963
+ auto lldiscrim_gv = cx. fcx. ccx. discrims. get( vid) ;
2968
2964
auto lldiscrim = cx. build. Load ( lldiscrim_gv) ;
2969
2965
2970
2966
auto alloc_result = alloc_ty( cx, tag_ty) ;
@@ -4866,10 +4862,7 @@ fn collect_item(&@crate_ctxt cx, @ast.item i) -> @crate_ctxt {
4866
4862
auto vi = new_def_hash[ uint] ( ) ;
4867
4863
auto navi = new_def_hash[ uint] ( ) ;
4868
4864
4869
- auto info = @rec (
4870
- th=mk_type_handle ( ) ,
4871
- mutable lldiscrims=@new_def_hash[ ValueRef ] ( )
4872
- ) ;
4865
+ auto info = @rec ( th=mk_type_handle ( ) ) ;
4873
4866
4874
4867
cx. tags . insert ( mk_plain_tag ( tag_id) , info) ;
4875
4868
cx. items . insert ( tag_id, i) ;
@@ -4980,8 +4973,6 @@ fn resolve_tag_types(@crate_ctxt cx, @ast.crate crate) {
4980
4973
fn trans_constant ( & @crate_ctxt cx , @ast. item it ) -> @crate_ctxt {
4981
4974
alt ( it. node ) {
4982
4975
case ( ast. item_tag ( _, ?variants, _, ?tag_id) ) {
4983
- auto info = cx. tags . get ( mk_plain_tag ( tag_id) ) ;
4984
-
4985
4976
auto i = 0 u;
4986
4977
auto n_variants = _vec. len [ ast. variant ] ( variants) ;
4987
4978
while ( i < n_variants) {
@@ -5000,7 +4991,7 @@ fn trans_constant(&@crate_ctxt cx, @ast.item it) -> @crate_ctxt {
5000
4991
llvm. LLVMSetLinkage ( discrim_gvar, lib. llvm . LLVMPrivateLinkage
5001
4992
as llvm . Linkage ) ;
5002
4993
5003
- info . lldiscrims . insert ( variant. id , discrim_gvar) ;
4994
+ cx . discrims . insert ( variant. id , discrim_gvar) ;
5004
4995
5005
4996
i += 1 u;
5006
4997
}
@@ -5445,6 +5436,7 @@ fn trans_crate(session.session sess, @ast.crate crate, str output,
5445
5436
items = new_def_hash[ @ast. item ] ( ) ,
5446
5437
native_items = new_def_hash[ @ast. native_item ] ( ) ,
5447
5438
tags = tags,
5439
+ discrims = new_def_hash[ ValueRef ] ( ) ,
5448
5440
fn_pairs = new_def_hash[ ValueRef ] ( ) ,
5449
5441
consts = new_def_hash[ ValueRef ] ( ) ,
5450
5442
obj_methods = new_def_hash[ ( ) ] ( ) ,
0 commit comments