about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-08-17 15:54:18 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-08-17 15:54:18 -0700
commit9ea6b3a32e808c4cf1e2d45cc26363e700944ef9 (patch)
tree36e0e50e332585b0314a342d9071ff677643cbed /src
parent69daeffddb534c4415967f18f795bc5b6dc262d2 (diff)
rustc: Remove a few allocations from metadata. Shaves a few milliseconds off compilation of hello world.
Diffstat (limited to 'src')
-rw-r--r--src/libcore/io.rs2
-rw-r--r--src/libcore/uint-template.rs2
-rw-r--r--src/rustc/metadata/decoder.rs4
-rw-r--r--src/rustc/metadata/tydecode.rs5
4 files changed, 7 insertions, 6 deletions
diff --git a/src/libcore/io.rs b/src/libcore/io.rs
index 8ef9556a958..1c7bb562030 100644
--- a/src/libcore/io.rs
+++ b/src/libcore/io.rs
@@ -521,7 +521,7 @@ fn u64_to_be_bytes<T>(n: u64, size: uint, f: fn(v: &[u8]) -> T) -> T {
     }
 }
 
-fn u64_from_be_bytes(data: ~[u8], start: uint, size: uint) -> u64 {
+fn u64_from_be_bytes(data: &[const u8], start: uint, size: uint) -> u64 {
     let mut sz = size;
     assert (sz <= 8u);
     let mut val = 0_u64;
diff --git a/src/libcore/uint-template.rs b/src/libcore/uint-template.rs
index 4f27e8cea8f..8e2cdf65c4a 100644
--- a/src/libcore/uint-template.rs
+++ b/src/libcore/uint-template.rs
@@ -121,7 +121,7 @@ impl T: iter::TimesIx {
  *
  * `buf` must not be empty
  */
-fn parse_buf(buf: ~[u8], radix: uint) -> option<T> {
+fn parse_buf(buf: &[const u8], radix: uint) -> option<T> {
     if vec::len(buf) == 0u { return none; }
     let mut i = vec::len(buf) - 1u;
     let mut power = 1u as T;
diff --git a/src/rustc/metadata/decoder.rs b/src/rustc/metadata/decoder.rs
index 9f7b95f2bfa..ea5405cc510 100644
--- a/src/rustc/metadata/decoder.rs
+++ b/src/rustc/metadata/decoder.rs
@@ -72,7 +72,7 @@ fn lookup_hash(d: ebml::doc, eq_fn: fn(x:&[u8]) -> bool, hash: uint) ->
     let belt = tag_index_buckets_bucket_elt;
     for ebml::tagged_docs(bucket, belt) |elt| {
         let pos = io::u64_from_be_bytes(*elt.data, elt.start, 4u) as uint;
-        if eq_fn(vec::slice(*elt.data, elt.start + 4u, elt.end)) {
+        if eq_fn(vec::view(*elt.data, elt.start + 4u, elt.end)) {
             return some(ebml::doc_at(d.data, pos).doc);
         }
     };
@@ -81,7 +81,7 @@ fn lookup_hash(d: ebml::doc, eq_fn: fn(x:&[u8]) -> bool, hash: uint) ->
 
 fn maybe_find_item(item_id: int, items: ebml::doc) -> option<ebml::doc> {
     fn eq_item(bytes: &[u8], item_id: int) -> bool {
-        return io::u64_from_be_bytes(vec::slice(bytes, 0u, 4u), 0u, 4u) as int
+        return io::u64_from_be_bytes(vec::view(bytes, 0u, 4u), 0u, 4u) as int
             == item_id;
     }
     lookup_hash(items,
diff --git a/src/rustc/metadata/tydecode.rs b/src/rustc/metadata/tydecode.rs
index 90be808b229..cb9a6b0ad13 100644
--- a/src/rustc/metadata/tydecode.rs
+++ b/src/rustc/metadata/tydecode.rs
@@ -391,8 +391,9 @@ fn parse_def_id(buf: &[u8]) -> ast::def_id {
         error!{"didn't find ':' when parsing def id"};
         fail;
     }
-    let crate_part = vec::slice(buf, 0u, colon_idx);
-    let def_part = vec::slice(buf, colon_idx + 1u, len);
+
+    let crate_part = vec::view(buf, 0u, colon_idx);
+    let def_part = vec::view(buf, colon_idx + 1u, len);
 
     let crate_num = match uint::parse_buf(crate_part, 10u) {
        some(cn) => cn as int,