Skip to content

Commit 55a642c

Browse files
committed
correct freevar encoding, add more debugging output
1 parent 8cffc6f commit 55a642c

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

src/comp/metadata/astencode.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,21 @@ iface tr {
5656

5757
fn encode_inlined_item(ecx: @e::encode_ctxt,
5858
ebml_w: ebml::writer,
59+
path: ast_map::path,
5960
item: @ast::item) {
61+
#debug["> Encoding inlined item: %s::%s (%u)",
62+
ast_map::path_to_str(path),
63+
item.ident,
64+
ebml_w.writer.tell()];
6065
let id_range = compute_id_range(item);
6166
ebml_w.wr_tag(c::tag_ast as uint) {||
6267
encode_id_range(ebml_w, id_range);
6368
encode_ast(ebml_w, item);
6469
encode_side_tables_for_item(ecx, ebml_w, item);
6570
}
71+
#debug["< Encoded inlined item: %s (%u)",
72+
ast_map::path_to_str(path),
73+
ebml_w.writer.tell()];
6674
}
6775

6876
fn decode_inlined_item(cdata: cstore::crate_metadata,
@@ -74,15 +82,18 @@ fn decode_inlined_item(cdata: cstore::crate_metadata,
7482
alt par_doc.opt_child(c::tag_ast) {
7583
none { none }
7684
some(ast_doc) {
85+
#debug["> Decoding inlined item: %s", ast_map::path_to_str(path)];
7786
let from_id_range = decode_id_range(ast_doc);
7887
let to_id_range = reserve_id_range(dcx.tcx.sess, from_id_range);
7988
let xcx = @{dcx: dcx,
8089
from_id_range: from_id_range,
8190
to_id_range: to_id_range};
8291
let raw_item = decode_ast(ast_doc);
8392
let item = renumber_ast(xcx, raw_item);
93+
#debug[">> Item named: %s", item.ident];
8494
ast_map::map_decoded_item(dcx.tcx.items, path, item);
8595
decode_side_tables(xcx, ast_doc);
96+
#debug["< Decoded inlined item: %s", ast_map::path_to_str(path)];
8697
some(item)
8798
}
8899
}
@@ -629,7 +640,7 @@ fn encode_side_tables_for_id(ecx: @e::encode_ctxt,
629640
ebml_w.id(id);
630641
ebml_w.tag(c::tag_table_val) {||
631642
ebml_w.emit_from_vec(*fv) {|fv_entry|
632-
encode_def(ebml_w, fv_entry.def);
643+
encode_freevar_entry(ebml_w, *fv_entry)
633644
}
634645
}
635646
}
@@ -759,7 +770,7 @@ fn decode_side_tables(xcx: extended_decode_ctxt,
759770
let id0 = entry_doc[c::tag_table_id].as_int();
760771
let id = xcx.tr_id(id0);
761772

762-
#debug["side table document with tag 0x%x found for id %d (orig %d)",
773+
#debug[">> Side table document with tag 0x%x found for id %d (orig %d)",
763774
tag, id, id0];
764775

765776
if tag == (c::tag_table_mutbl as uint) {
@@ -803,6 +814,8 @@ fn decode_side_tables(xcx: extended_decode_ctxt,
803814
#fmt["Unknown tag found in side tables: %x", tag]);
804815
}
805816
}
817+
818+
#debug[">< Side table doc loaded"];
806819
}
807820
}
808821

src/comp/metadata/encoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item,
352352
encode_symbol(ecx, ebml_w, item.id);
353353
encode_path(ebml_w, path, ast_map::path_name(item.ident));
354354
if should_inline(path, item) {
355-
astencode::encode_inlined_item(ecx, ebml_w, item);
355+
astencode::encode_inlined_item(ecx, ebml_w, path, item);
356356
}
357357
ebml_w.end_tag();
358358
}

0 commit comments

Comments
 (0)