about summary refs log tree commit diff
path: root/src/comp/metadata
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-08-05 13:58:33 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-08-05 13:59:27 -0700
commitb079e1adbbfdd98b41d3c45e6f83941a7a3c106f (patch)
tree1e8fd8f5b2ff012649c7a3d5ecc6ac648ba90829 /src/comp/metadata
parentc6bb04aba60649b7e126fd35474fab50359eb130 (diff)
downloadrust-b079e1adbbfdd98b41d3c45e6f83941a7a3c106f.tar.gz
rust-b079e1adbbfdd98b41d3c45e6f83941a7a3c106f.zip
rustc: Parse "inline". Also write it into metadata.
Diffstat (limited to 'src/comp/metadata')
-rw-r--r--src/comp/metadata/common.rs2
-rw-r--r--src/comp/metadata/encoder.rs11
2 files changed, 13 insertions, 0 deletions
diff --git a/src/comp/metadata/common.rs b/src/comp/metadata/common.rs
index 065f4dc66bc..128ebea3f28 100644
--- a/src/comp/metadata/common.rs
+++ b/src/comp/metadata/common.rs
@@ -62,6 +62,8 @@ const tag_crate_deps: uint = 0x25u;
 // A single crate dependency
 const tag_crate_dep: uint = 0x26u;
 
+const tag_items_data_item_inlineness: uint = 0x27u;
+
 // djb's cdb hashes.
 fn hash_node_id(node_id: &int) -> uint { ret 177573u ^ (node_id as uint); }
 
diff --git a/src/comp/metadata/encoder.rs b/src/comp/metadata/encoder.rs
index b9a1fa3886a..6649cca29a3 100644
--- a/src/comp/metadata/encoder.rs
+++ b/src/comp/metadata/encoder.rs
@@ -166,6 +166,12 @@ fn encode_family(ebml_w: &ebmlivec::writer, c: u8) {
     ebmlivec::end_tag(ebml_w);
 }
 
+fn encode_inlineness(ebml_w: &ebmlivec::writer, c: u8) {
+    ebmlivec::start_tag(ebml_w, tag_items_data_item_inlineness);
+    ebml_w.writer.write(~[c]);
+    ebmlivec::end_tag(ebml_w);
+}
+
 fn def_to_str(did: &def_id) -> str { ret #fmt("%d:%d", did.crate, did.node); }
 
 fn encode_type_param_kinds(ebml_w: &ebmlivec::writer, tps: &ty_param[]) {
@@ -256,6 +262,11 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: &ebmlivec::writer,
         encode_family(ebml_w,
                     alt fd.decl.purity { pure_fn. { 'p' } impure_fn. { 'f' } }
                         as u8);
+        encode_inlineness(ebml_w,
+                          alt fd.decl.il {
+                            il_normal. { 'n' }
+                            il_inline. { 'i' }
+                          } as u8);
         encode_type_param_kinds(ebml_w, tps);
         encode_type(ecx, ebml_w, node_id_to_monotype(ecx.ccx.tcx, item.id));
         encode_symbol(ecx, ebml_w, item.id);