Skip to content

Commit f750150

Browse files
committed
---
yaml --- r: 48462 b: refs/heads/snap-stage3 c: d6e583a h: refs/heads/master v: v3
1 parent 8927a5e commit f750150

File tree

4 files changed

+32
-126
lines changed

4 files changed

+32
-126
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 3bbcac322669cff3abde5be937cc4ec3860f3985
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: ce23c8c0cfc6aee3eae7d0287651ef7bcd9c6b9f
4+
refs/heads/snap-stage3: d6e583ab1038ffe2706e5ecdc96a3da207f87c16
55
refs/heads/try: 2a8fb58d79e685d5ca07b039badcf2ae3ef077ea
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libcore/io.rs

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,6 @@ pub trait ReaderUtil {
144144
/// Read a big-endian i16 (2 bytes).
145145
fn read_be_i16(&self) -> i16;
146146

147-
/// Read a big-endian IEEE754 double-precision floating-point (8 bytes).
148-
fn read_be_f64(&self) -> f64;
149-
150-
/// Read a big-endian IEEE754 single-precision floating-point (4 bytes).
151-
fn read_be_f32(&self) -> f32;
152-
153147
/// Read a little-endian u64 (8 bytes).
154148
fn read_le_u64(&self) -> u64;
155149

@@ -168,14 +162,6 @@ pub trait ReaderUtil {
168162
/// Read a litle-endian i16 (2 bytes).
169163
fn read_le_i16(&self) -> i16;
170164

171-
/// Read a litten-endian IEEE754 double-precision floating-point
172-
/// (8 bytes).
173-
fn read_le_f64(&self) -> f64;
174-
175-
/// Read a litten-endian IEEE754 single-precision floating-point
176-
/// (4 bytes).
177-
fn read_le_f32(&self) -> f32;
178-
179165
/// Read a u8 (1 byte).
180166
fn read_u8(&self) -> u8;
181167

@@ -382,18 +368,6 @@ impl<T:Reader> ReaderUtil for T {
382368
self.read_be_int_n(2) as i16
383369
}
384370

385-
fn read_be_f64(&self) -> f64 {
386-
unsafe {
387-
cast::transmute::<u64, f64>(self.read_be_u64())
388-
}
389-
}
390-
391-
fn read_be_f32(&self) -> f32 {
392-
unsafe {
393-
cast::transmute::<u32, f32>(self.read_be_u32())
394-
}
395-
}
396-
397371
fn read_le_u64(&self) -> u64 {
398372
self.read_le_uint_n(8) as u64
399373
}
@@ -418,18 +392,6 @@ impl<T:Reader> ReaderUtil for T {
418392
self.read_le_int_n(2) as i16
419393
}
420394

421-
fn read_le_f64(&self) -> f64 {
422-
unsafe {
423-
cast::transmute::<u64, f64>(self.read_le_u64())
424-
}
425-
}
426-
427-
fn read_le_f32(&self) -> f32 {
428-
unsafe {
429-
cast::transmute::<u32, f32>(self.read_le_u32())
430-
}
431-
}
432-
433395
fn read_u8(&self) -> u8 {
434396
self.read_byte() as u8
435397
}
@@ -912,12 +874,6 @@ pub trait WriterUtil {
912874
/// Write a big-endian i16 (2 bytes).
913875
fn write_be_i16(&self, n: i16);
914876

915-
/// Write a big-endian IEEE754 double-precision floating-point (8 bytes).
916-
fn write_be_f64(&self, f: f64);
917-
918-
/// Write a big-endian IEEE754 single-precision floating-point (4 bytes).
919-
fn write_be_f32(&self, f: f32);
920-
921877
/// Write a little-endian u64 (8 bytes).
922878
fn write_le_u64(&self, n: u64);
923879

@@ -936,14 +892,6 @@ pub trait WriterUtil {
936892
/// Write a little-endian i16 (2 bytes).
937893
fn write_le_i16(&self, n: i16);
938894

939-
/// Write a little-endian IEEE754 double-precision floating-point
940-
/// (8 bytes).
941-
fn write_le_f64(&self, f: f64);
942-
943-
/// Write a litten-endian IEEE754 single-precision floating-point
944-
/// (4 bytes).
945-
fn write_le_f32(&self, f: f32);
946-
947895
/// Write a u8 (1 byte).
948896
fn write_u8(&self, n: u8);
949897

@@ -1000,16 +948,6 @@ impl<T:Writer> WriterUtil for T {
1000948
fn write_be_i16(&self, n: i16) {
1001949
u64_to_be_bytes(n as u64, 2u, |v| self.write(v))
1002950
}
1003-
fn write_be_f64(&self, f:f64) {
1004-
unsafe {
1005-
self.write_be_u64(cast::transmute(f))
1006-
}
1007-
}
1008-
fn write_be_f32(&self, f:f32) {
1009-
unsafe {
1010-
self.write_be_u32(cast::transmute(f))
1011-
}
1012-
}
1013951
fn write_le_u64(&self, n: u64) {
1014952
u64_to_le_bytes(n, 8u, |v| self.write(v))
1015953
}
@@ -1028,20 +966,9 @@ impl<T:Writer> WriterUtil for T {
1028966
fn write_le_i16(&self, n: i16) {
1029967
u64_to_le_bytes(n as u64, 2u, |v| self.write(v))
1030968
}
1031-
fn write_le_f64(&self, f:f64) {
1032-
unsafe {
1033-
self.write_le_u64(cast::transmute(f))
1034-
}
1035-
}
1036-
fn write_le_f32(&self, f:f32) {
1037-
unsafe {
1038-
self.write_le_u32(cast::transmute(f))
1039-
}
1040-
}
1041969

1042970
fn write_u8(&self, n: u8) { self.write([n]) }
1043971
fn write_i8(&self, n: i8) { self.write([n as u8]) }
1044-
1045972
}
1046973

1047974
#[allow(non_implicitly_copyable_typarams)]
@@ -1494,41 +1421,6 @@ mod tests {
14941421
}
14951422
}
14961423

1497-
#[test]
1498-
fn test_read_f32() {
1499-
let path = Path("tmp/lib-io-test-read-f32.tmp");
1500-
//big-endian floating-point 8.1250
1501-
let buf = ~[0x41, 0x02, 0x00, 0x00];
1502-
1503-
{
1504-
let file = io::file_writer(&path, [io::Create]).get();
1505-
file.write(buf);
1506-
}
1507-
1508-
{
1509-
let file = io::file_reader(&path).get();
1510-
let f = file.read_be_f32();
1511-
assert f == 8.1250;
1512-
}
1513-
}
1514-
1515-
#[test]
1516-
fn test_read_write_f32() {
1517-
let path = Path("tmp/lib-io-test-read-write-f32.tmp");
1518-
let f:f32 = 8.1250;
1519-
1520-
{
1521-
let file = io::file_writer(&path, [io::Create]).get();
1522-
file.write_be_f32(f);
1523-
file.write_le_f32(f);
1524-
}
1525-
1526-
{
1527-
let file = io::file_reader(&path).get();
1528-
assert file.read_be_f32() == 8.1250;
1529-
assert file.read_le_f32() == 8.1250;
1530-
}
1531-
}
15321424
}
15331425

15341426
//

branches/snap-stage3/src/libcore/trie.rs

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use prelude::*;
1414

1515
// FIXME: #3469: need to manually update TrieNode when SHIFT changes
16+
// FIXME: #5244: need to manually update the TrieNode constructor
1617
const SHIFT: uint = 4;
1718
const SIZE: uint = 1 << SHIFT;
1819
const MASK: uint = SIZE - 1;
@@ -56,7 +57,7 @@ impl<T> Container for TrieMap<T> {
5657
pure fn is_empty(&self) -> bool { self.len() == 0 }
5758
}
5859

59-
impl<T: Copy> Mutable for TrieMap<T> {
60+
impl<T> Mutable for TrieMap<T> {
6061
/// Clear the map, removing all values.
6162
#[inline(always)]
6263
fn clear(&mut self) {
@@ -65,7 +66,7 @@ impl<T: Copy> Mutable for TrieMap<T> {
6566
}
6667
}
6768

68-
impl<T: Copy> Map<uint, T> for TrieMap<T> {
69+
impl<T> Map<uint, T> for TrieMap<T> {
6970
/// Return true if the map contains a value for the specified key
7071
#[inline(always)]
7172
pure fn contains_key(&self, key: &uint) -> bool {
@@ -127,7 +128,7 @@ impl<T: Copy> Map<uint, T> for TrieMap<T> {
127128
}
128129
}
129130

130-
impl<T: Copy> TrieMap<T> {
131+
impl<T> TrieMap<T> {
131132
#[inline(always)]
132133
static pure fn new() -> TrieMap<T> {
133134
TrieMap{root: TrieNode::new(), length: 0}
@@ -209,10 +210,15 @@ struct TrieNode<T> {
209210
children: [Child<T> * 16] // FIXME: #3469: can't use the SIZE constant yet
210211
}
211212

212-
impl<T: Copy> TrieNode<T> {
213+
impl<T> TrieNode<T> {
213214
#[inline(always)]
214215
static pure fn new() -> TrieNode<T> {
215-
TrieNode{count: 0, children: [Nothing, ..SIZE]}
216+
// FIXME: #5244: [Nothing, ..SIZE] should be possible without Copy
217+
TrieNode{count: 0,
218+
children: [Nothing, Nothing, Nothing, Nothing,
219+
Nothing, Nothing, Nothing, Nothing,
220+
Nothing, Nothing, Nothing, Nothing,
221+
Nothing, Nothing, Nothing, Nothing]}
216222
}
217223
}
218224

@@ -260,12 +266,16 @@ pure fn chunk(n: uint, idx: uint) -> uint {
260266
(n >> (SHIFT * real_idx)) & MASK
261267
}
262268

263-
fn insert<T: Copy>(count: &mut uint, child: &mut Child<T>, key: uint,
269+
fn insert<T>(count: &mut uint, child: &mut Child<T>, key: uint,
264270
value: T, idx: uint) -> bool {
265-
match *child {
271+
let mut tmp = Nothing;
272+
tmp <-> *child;
273+
let mut added = false;
274+
275+
*child = match tmp {
266276
External(stored_key, stored_value) => {
267277
if stored_key == key {
268-
false // already in the trie
278+
External(stored_key, value)
269279
} else {
270280
// conflict - split the node
271281
let mut new = ~TrieNode::new();
@@ -274,20 +284,24 @@ fn insert<T: Copy>(count: &mut uint, child: &mut Child<T>, key: uint,
274284
stored_key, stored_value, idx + 1);
275285
insert(&mut new.count, &mut new.children[chunk(key, idx)], key,
276286
value, idx + 1);
277-
*child = Internal(new);
278-
true
287+
added = true;
288+
Internal(new)
279289
}
280290
}
281-
Internal(ref mut x) => {
282-
insert(&mut x.count, &mut x.children[chunk(key, idx)], key, value,
283-
idx + 1)
291+
Internal(x) => {
292+
let mut x = x;
293+
added = insert(&mut x.count, &mut x.children[chunk(key, idx)], key,
294+
value, idx + 1);
295+
Internal(x)
296+
284297
}
285298
Nothing => {
286299
*count += 1;
287-
*child = External(key, value);
288-
true
300+
added = true;
301+
External(key, value)
289302
}
290-
}
303+
};
304+
added
291305
}
292306

293307
fn remove<T>(count: &mut uint, child: &mut Child<T>, key: uint,

branches/snap-stage3/src/libstd/workcache.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ pub impl Database {
174174
let k = json_encode(&(fn_name, declared_inputs));
175175
match self.db_cache.find(&k) {
176176
None => None,
177-
Some(&v) => Some(json_decode(copy v))
177+
Some(v) => Some(json_decode(*v))
178178
}
179179
}
180180

0 commit comments

Comments
 (0)