@@ -413,9 +413,8 @@ fn decode_ast(par_doc: rbml::Doc) -> ast::InlinedItem {
413
413
// ______________________________________________________________________
414
414
// Encoding and decoding of ast::def
415
415
416
- fn decode_def ( dcx : & DecodeContext , doc : rbml:: Doc ) -> def:: Def {
417
- let mut dsr = reader:: Decoder :: new ( doc) ;
418
- let def: def:: Def = Decodable :: decode ( & mut dsr) . unwrap ( ) ;
416
+ fn decode_def ( dcx : & DecodeContext , dsr : & mut reader:: Decoder ) -> def:: Def {
417
+ let def: def:: Def = Decodable :: decode ( dsr) . unwrap ( ) ;
419
418
def. tr ( dcx)
420
419
}
421
420
@@ -1114,7 +1113,7 @@ impl<'a> write_tag_and_id for Encoder<'a> {
1114
1113
}
1115
1114
1116
1115
fn id ( & mut self , id : ast:: NodeId ) {
1117
- self . wr_tagged_u64 ( c :: tag_table_id as uint , id as u64 ) ;
1116
+ id . encode ( self ) . unwrap ( ) ;
1118
1117
}
1119
1118
}
1120
1119
@@ -1151,51 +1150,44 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
1151
1150
if let Some ( def) = tcx. def_map . borrow ( ) . get ( & id) . map ( |d| d. full_def ( ) ) {
1152
1151
rbml_w. tag ( c:: tag_table_def, |rbml_w| {
1153
1152
rbml_w. id ( id) ;
1154
- rbml_w . tag ( c :: tag_table_val , |rbml_w| def. encode ( rbml_w) . unwrap ( ) ) ;
1153
+ def. encode ( rbml_w) . unwrap ( ) ;
1155
1154
} )
1156
1155
}
1157
1156
1158
1157
if let Some ( ty) = tcx. node_types . borrow ( ) . get ( & id) {
1159
1158
rbml_w. tag ( c:: tag_table_node_type, |rbml_w| {
1160
1159
rbml_w. id ( id) ;
1161
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1162
- rbml_w. emit_ty ( ecx, * ty) ;
1163
- } )
1160
+ rbml_w. emit_ty ( ecx, * ty) ;
1164
1161
} )
1165
1162
}
1166
1163
1167
1164
if let Some ( item_substs) = tcx. item_substs . borrow ( ) . get ( & id) {
1168
1165
rbml_w. tag ( c:: tag_table_item_subst, |rbml_w| {
1169
1166
rbml_w. id ( id) ;
1170
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1171
- rbml_w. emit_substs ( ecx, & item_substs. substs ) ;
1172
- } )
1167
+ rbml_w. emit_substs ( ecx, & item_substs. substs ) ;
1173
1168
} )
1174
1169
}
1175
1170
1176
1171
if let Some ( fv) = tcx. freevars . borrow ( ) . get ( & id) {
1177
1172
rbml_w. tag ( c:: tag_table_freevars, |rbml_w| {
1178
1173
rbml_w. id ( id) ;
1179
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1180
- rbml_w. emit_from_vec ( fv, |rbml_w, fv_entry| {
1181
- Ok ( encode_freevar_entry ( rbml_w, fv_entry) )
1182
- } ) ;
1183
- } )
1174
+ rbml_w. emit_from_vec ( fv, |rbml_w, fv_entry| {
1175
+ Ok ( encode_freevar_entry ( rbml_w, fv_entry) )
1176
+ } ) ;
1184
1177
} ) ;
1185
1178
1186
1179
for freevar in fv {
1187
1180
rbml_w. tag ( c:: tag_table_upvar_capture_map, |rbml_w| {
1188
1181
rbml_w. id ( id) ;
1189
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1190
- let var_id = freevar. def . def_id ( ) . node ;
1191
- let upvar_id = ty:: UpvarId {
1192
- var_id : var_id,
1193
- closure_expr_id : id
1194
- } ;
1195
- let upvar_capture = tcx. upvar_capture_map . borrow ( ) [ upvar_id] . clone ( ) ;
1196
- var_id. encode ( rbml_w) ;
1197
- upvar_capture. encode ( rbml_w) ;
1198
- } )
1182
+
1183
+ let var_id = freevar. def . def_id ( ) . node ;
1184
+ let upvar_id = ty:: UpvarId {
1185
+ var_id : var_id,
1186
+ closure_expr_id : id
1187
+ } ;
1188
+ let upvar_capture = tcx. upvar_capture_map . borrow ( ) [ upvar_id] . clone ( ) ;
1189
+ var_id. encode ( rbml_w) ;
1190
+ upvar_capture. encode ( rbml_w) ;
1199
1191
} )
1200
1192
}
1201
1193
}
@@ -1204,37 +1196,29 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
1204
1196
if let Some ( type_scheme) = tcx. tcache . borrow ( ) . get ( & lid) {
1205
1197
rbml_w. tag ( c:: tag_table_tcache, |rbml_w| {
1206
1198
rbml_w. id ( id) ;
1207
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1208
- rbml_w. emit_type_scheme ( ecx, type_scheme. clone ( ) ) ;
1209
- } )
1199
+ rbml_w. emit_type_scheme ( ecx, type_scheme. clone ( ) ) ;
1210
1200
} )
1211
1201
}
1212
1202
1213
1203
if let Some ( type_param_def) = tcx. ty_param_defs . borrow ( ) . get ( & id) {
1214
1204
rbml_w. tag ( c:: tag_table_param_defs, |rbml_w| {
1215
1205
rbml_w. id ( id) ;
1216
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1217
- rbml_w. emit_type_param_def ( ecx, type_param_def)
1218
- } )
1206
+ rbml_w. emit_type_param_def ( ecx, type_param_def)
1219
1207
} )
1220
1208
}
1221
1209
1222
1210
let method_call = MethodCall :: expr ( id) ;
1223
1211
if let Some ( method) = tcx. method_map . borrow ( ) . get ( & method_call) {
1224
1212
rbml_w. tag ( c:: tag_table_method_map, |rbml_w| {
1225
1213
rbml_w. id ( id) ;
1226
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1227
- encode_method_callee ( ecx, rbml_w, method_call. adjustment , method)
1228
- } )
1214
+ encode_method_callee ( ecx, rbml_w, method_call. adjustment , method)
1229
1215
} )
1230
1216
}
1231
1217
1232
1218
if let Some ( trait_ref) = tcx. object_cast_map . borrow ( ) . get ( & id) {
1233
1219
rbml_w. tag ( c:: tag_table_object_cast_map, |rbml_w| {
1234
1220
rbml_w. id ( id) ;
1235
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1236
- rbml_w. emit_trait_ref ( ecx, & * trait_ref. 0 ) ;
1237
- } )
1221
+ rbml_w. emit_trait_ref ( ecx, & * trait_ref. 0 ) ;
1238
1222
} )
1239
1223
}
1240
1224
@@ -1245,9 +1229,7 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
1245
1229
if let Some ( method) = tcx. method_map . borrow ( ) . get ( & method_call) {
1246
1230
rbml_w. tag ( c:: tag_table_method_map, |rbml_w| {
1247
1231
rbml_w. id ( id) ;
1248
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1249
- encode_method_callee ( ecx, rbml_w, method_call. adjustment , method)
1250
- } )
1232
+ encode_method_callee ( ecx, rbml_w, method_call. adjustment , method)
1251
1233
} )
1252
1234
}
1253
1235
}
@@ -1258,10 +1240,8 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
1258
1240
if let Some ( method) = tcx. method_map . borrow ( ) . get ( & method_call) {
1259
1241
rbml_w. tag ( c:: tag_table_method_map, |rbml_w| {
1260
1242
rbml_w. id ( id) ;
1261
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1262
- encode_method_callee ( ecx, rbml_w,
1263
- method_call. adjustment , method)
1264
- } )
1243
+ encode_method_callee ( ecx, rbml_w,
1244
+ method_call. adjustment , method)
1265
1245
} )
1266
1246
}
1267
1247
}
@@ -1273,36 +1253,28 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
1273
1253
1274
1254
rbml_w. tag ( c:: tag_table_adjustments, |rbml_w| {
1275
1255
rbml_w. id ( id) ;
1276
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1277
- rbml_w. emit_auto_adjustment ( ecx, adjustment) ;
1278
- } )
1256
+ rbml_w. emit_auto_adjustment ( ecx, adjustment) ;
1279
1257
} )
1280
1258
}
1281
1259
1282
1260
if let Some ( closure_type) = tcx. closure_tys . borrow ( ) . get ( & ast_util:: local_def ( id) ) {
1283
1261
rbml_w. tag ( c:: tag_table_closure_tys, |rbml_w| {
1284
1262
rbml_w. id ( id) ;
1285
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1286
- rbml_w. emit_closure_type ( ecx, closure_type) ;
1287
- } )
1263
+ rbml_w. emit_closure_type ( ecx, closure_type) ;
1288
1264
} )
1289
1265
}
1290
1266
1291
1267
if let Some ( closure_kind) = tcx. closure_kinds . borrow ( ) . get ( & ast_util:: local_def ( id) ) {
1292
1268
rbml_w. tag ( c:: tag_table_closure_kinds, |rbml_w| {
1293
1269
rbml_w. id ( id) ;
1294
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1295
- encode_closure_kind ( rbml_w, * closure_kind)
1296
- } )
1270
+ encode_closure_kind ( rbml_w, * closure_kind)
1297
1271
} )
1298
1272
}
1299
1273
1300
1274
for & qualif in tcx. const_qualif_map . borrow ( ) . get ( & id) . iter ( ) {
1301
1275
rbml_w. tag ( c:: tag_table_const_qualif, |rbml_w| {
1302
1276
rbml_w. id ( id) ;
1303
- rbml_w. tag ( c:: tag_table_val, |rbml_w| {
1304
- qualif. encode ( rbml_w) . unwrap ( )
1305
- } )
1277
+ qualif. encode ( rbml_w) . unwrap ( )
1306
1278
} )
1307
1279
}
1308
1280
}
@@ -1830,8 +1802,9 @@ fn decode_side_tables(dcx: &DecodeContext,
1830
1802
ast_doc : rbml:: Doc ) {
1831
1803
let tbl_doc = ast_doc. get ( c:: tag_table as uint ) ;
1832
1804
reader:: docs ( tbl_doc, |tag, entry_doc| {
1833
- let id0 = entry_doc. get ( c:: tag_table_id as uint ) . as_int ( ) ;
1834
- let id = dcx. tr_id ( id0 as ast:: NodeId ) ;
1805
+ let mut entry_dsr = reader:: Decoder :: new ( entry_doc) ;
1806
+ let id0: ast:: NodeId = Decodable :: decode ( & mut entry_dsr) . unwrap ( ) ;
1807
+ let id = dcx. tr_id ( id0) ;
1835
1808
1836
1809
debug ! ( ">> Side table document with tag 0x{:x} \
1837
1810
found for id {} (orig {})",
@@ -1844,13 +1817,11 @@ fn decode_side_tables(dcx: &DecodeContext,
1844
1817
tag) ) ;
1845
1818
}
1846
1819
Some ( value) => {
1847
- let val_doc = entry_doc. get ( c:: tag_table_val as uint ) ;
1848
- let mut val_dsr = reader:: Decoder :: new ( val_doc) ;
1849
- let val_dsr = & mut val_dsr;
1820
+ let val_dsr = & mut entry_dsr;
1850
1821
1851
1822
match value {
1852
1823
c:: tag_table_def => {
1853
- let def = decode_def ( dcx, val_doc ) ;
1824
+ let def = decode_def ( dcx, val_dsr ) ;
1854
1825
dcx. tcx . def_map . borrow_mut ( ) . insert ( id, def:: PathResolution {
1855
1826
base_def : def,
1856
1827
// This doesn't matter cross-crate.
0 commit comments