@@ -25,6 +25,7 @@ use middle::{ty, typeck, moves};
25
25
use middle;
26
26
use util:: ppaux:: ty_to_str;
27
27
28
+ use core:: iterator:: IteratorUtil ;
28
29
use core:: at_vec;
29
30
use core:: uint;
30
31
use extra:: ebml:: reader;
@@ -826,86 +827,113 @@ fn encode_side_tables_for_id(ecx: @e::EncodeContext,
826
827
827
828
debug ! ( "Encoding side tables for id %d" , id) ;
828
829
829
- for tcx. def_map. find( & id) . each |def| {
830
- do ebml_w. tag( c:: tag_table_def) |ebml_w| {
831
- ebml_w. id ( id) ;
832
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
833
- ( * def) . encode ( ebml_w)
830
+ {
831
+ let r = tcx. def_map . find ( & id) ;
832
+ for r. iter( ) . advance |def| {
833
+ do ebml_w. tag( c:: tag_table_def) |ebml_w| {
834
+ ebml_w. id( id) ;
835
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
836
+ ( * def) . encode( ebml_w)
837
+ }
834
838
}
835
839
}
836
840
}
837
841
838
- for tcx. node_types. find( & ( id as uint) ) . each |& ty| {
839
- do ebml_w. tag( c:: tag_table_node_type) |ebml_w| {
840
- ebml_w. id ( id) ;
841
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
842
- ebml_w. emit_ty ( ecx, * ty) ;
842
+ {
843
+ let r = tcx. node_types. find( & ( id as uint) ) ;
844
+ for r. iter( ) . advance |& ty| {
845
+ do ebml_w. tag( c:: tag_table_node_type) |ebml_w| {
846
+ ebml_w. id( id) ;
847
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
848
+ ebml_w. emit_ty( ecx, * ty) ;
849
+ }
843
850
}
844
851
}
845
852
}
846
853
847
- for tcx. node_type_substs. find( & id) . each |tys| {
848
- do ebml_w. tag ( c:: tag_table_node_type_subst) |ebml_w| {
849
- ebml_w. id ( id) ;
850
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
851
- ebml_w. emit_tys ( ecx, * * tys)
854
+ {
855
+ let r = tcx. node_type_substs. find( & id) ;
856
+ for r. iter( ) . advance |tys| {
857
+ do ebml_w. tag( c:: tag_table_node_type_subst) |ebml_w| {
858
+ ebml_w. id( id) ;
859
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
860
+ ebml_w. emit_tys( ecx, * * tys)
861
+ }
852
862
}
853
863
}
854
864
}
855
865
856
- for tcx. freevars. find( & id) . each |& fv| {
857
- do ebml_w. tag( c:: tag_table_freevars) |ebml_w| {
858
- ebml_w. id ( id) ;
859
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
860
- do ebml_w. emit_from_vec ( * * fv) |ebml_w, fv_entry| {
861
- encode_freevar_entry ( ebml_w, * fv_entry)
866
+ {
867
+ let r = tcx. freevars. find( & id) ;
868
+ for r. iter( ) . advance |& fv| {
869
+ do ebml_w. tag( c:: tag_table_freevars) |ebml_w| {
870
+ ebml_w. id( id) ;
871
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
872
+ do ebml_w. emit_from_vec( * * fv) |ebml_w, fv_entry| {
873
+ encode_freevar_entry( ebml_w, * fv_entry)
874
+ }
862
875
}
863
876
}
864
877
}
865
878
}
866
879
867
880
let lid = ast:: def_id { crate : ast:: local_crate, node : id } ;
868
- for tcx. tcache. find( & lid) . each |& tpbt| {
869
- do ebml_w. tag( c:: tag_table_tcache) |ebml_w| {
870
- ebml_w. id ( id) ;
871
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
872
- ebml_w. emit_tpbt ( ecx, * tpbt) ;
881
+ {
882
+ let r = tcx. tcache. find( & lid) ;
883
+ for r. iter( ) . advance |& tpbt| {
884
+ do ebml_w. tag( c:: tag_table_tcache) |ebml_w| {
885
+ ebml_w. id( id) ;
886
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
887
+ ebml_w. emit_tpbt( ecx, * tpbt) ;
888
+ }
873
889
}
874
890
}
875
891
}
876
892
877
- for tcx. ty_param_defs. find( & id) . each |& type_param_def| {
878
- do ebml_w. tag ( c:: tag_table_param_defs) |ebml_w| {
879
- ebml_w. id ( id) ;
880
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
881
- ebml_w. emit_type_param_def ( ecx, type_param_def)
893
+ {
894
+ let r = tcx. ty_param_defs. find( & id) ;
895
+ for r. iter( ) . advance |& type_param_def| {
896
+ do ebml_w. tag( c:: tag_table_param_defs) |ebml_w| {
897
+ ebml_w. id( id) ;
898
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
899
+ ebml_w. emit_type_param_def( ecx, type_param_def)
900
+ }
882
901
}
883
902
}
884
903
}
885
904
886
- for maps. method_map. find( & id) . each |& mme| {
887
- do ebml_w. tag( c:: tag_table_method_map) |ebml_w| {
888
- ebml_w. id ( id) ;
889
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
890
- encode_method_map_entry ( ecx, ebml_w, * mme)
905
+ {
906
+ let r = maps. method_map. find( & id) ;
907
+ for r. iter( ) . advance |& mme| {
908
+ do ebml_w. tag( c:: tag_table_method_map) |ebml_w| {
909
+ ebml_w. id( id) ;
910
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
911
+ encode_method_map_entry( ecx, ebml_w, * mme)
912
+ }
891
913
}
892
914
}
893
915
}
894
916
895
- for maps. vtable_map. find( & id) . each |& dr| {
896
- do ebml_w. tag ( c:: tag_table_vtable_map) |ebml_w| {
897
- ebml_w. id ( id) ;
898
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
899
- encode_vtable_res ( ecx, ebml_w, * dr) ;
917
+ {
918
+ let r = maps. vtable_map. find( & id) ;
919
+ for r. iter( ) . advance |& dr| {
920
+ do ebml_w. tag( c:: tag_table_vtable_map) |ebml_w| {
921
+ ebml_w. id( id) ;
922
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
923
+ encode_vtable_res( ecx, ebml_w, * dr) ;
924
+ }
900
925
}
901
926
}
902
927
}
903
928
904
- for tcx. adjustments. find( & id) . each |adj| {
905
- do ebml_w. tag( c:: tag_table_adjustments) |ebml_w| {
906
- ebml_w. id ( id) ;
907
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
908
- ( * * adj) . encode ( ebml_w)
929
+ {
930
+ let r = tcx. adjustments. find( & id) ;
931
+ for r. iter( ) . advance |adj| {
932
+ do ebml_w. tag( c:: tag_table_adjustments) |ebml_w| {
933
+ ebml_w. id( id) ;
934
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
935
+ ( * * adj) . encode( ebml_w)
936
+ }
909
937
}
910
938
}
911
939
}
@@ -916,12 +944,15 @@ fn encode_side_tables_for_id(ecx: @e::EncodeContext,
916
944
}
917
945
}
918
946
919
- for maps. capture_map. find( & id) . each |& cap_vars| {
920
- do ebml_w. tag( c:: tag_table_capture_map) |ebml_w| {
921
- ebml_w. id ( id) ;
922
- do ebml_w. tag ( c:: tag_table_val) |ebml_w| {
923
- do ebml_w. emit_from_vec ( * cap_vars) |ebml_w, cap_var| {
924
- cap_var. encode ( ebml_w) ;
947
+ {
948
+ let r = maps. capture_map. find( & id) ;
949
+ for r. iter( ) . advance |& cap_vars| {
950
+ do ebml_w. tag( c:: tag_table_capture_map) |ebml_w| {
951
+ ebml_w. id( id) ;
952
+ do ebml_w. tag( c:: tag_table_val) |ebml_w| {
953
+ do ebml_w. emit_from_vec( * cap_vars) |ebml_w, cap_var| {
954
+ cap_var. encode( ebml_w) ;
955
+ }
925
956
}
926
957
}
927
958
}
0 commit comments