Skip to content

Commit 87f8642

Browse files
committed
std: Remove uses of DVec
1 parent 7ccb0e6 commit 87f8642

File tree

5 files changed

+78
-59
lines changed

5 files changed

+78
-59
lines changed

src/libstd/flatpipes.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -452,12 +452,13 @@ pub mod flatteners {
452452
453453
pub fn serialize_value<D: Encoder + FromWriter,
454454
T: Encodable<D>>(val: &T) -> ~[u8] {
455-
let bytes_writer = @BytesWriter();
456-
let writer = bytes_writer as @Writer;
455+
let mut bytes_writer = BytesWriter();
456+
let writer = @bytes_writer as @Writer;
457457
let ser = FromWriter::from_writer(writer);
458458
val.encode(&ser);
459-
let bytes = bytes_writer.bytes.check_out(|bytes| bytes);
460-
return bytes;
459+
let mut ret = ~[];
460+
ret <-> bytes_writer.bytes;
461+
return ret;
461462
}
462463
463464
pub trait FromReader {

src/libstd/json.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ use core::prelude::*;
2727
use core::hashmap::linear::LinearMap;
2828
use core::str;
2929
use core::to_str;
30-
use core::vec;
3130

3231
/// Represents a json value
3332
pub enum Json {

src/libstd/sort.rs

Lines changed: 46 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
//! Sorting methods
1212
1313
use core::cmp::{Eq, Ord};
14-
use core::dvec::DVec;
1514
use core::prelude::*;
1615
use core::util;
1716
use core::vec::{len, push};
@@ -189,7 +188,7 @@ pub fn tim_sort<T:Copy + Ord>(array: &mut [T]) {
189188
return;
190189
}
191190

192-
let ms = &MergeState();
191+
let mut ms = MergeState();
193192
let min_run = min_run_length(size);
194193

195194
let mut idx = 0;
@@ -392,66 +391,63 @@ struct RunState {
392391
}
393392

394393
struct MergeState<T> {
395-
mut min_gallop: uint,
396-
runs: DVec<RunState>,
394+
min_gallop: uint,
395+
runs: ~[RunState],
397396
}
398397

399398
// Fixme (#3853) Move into MergeState
400399
fn MergeState<T>() -> MergeState<T> {
401400
MergeState {
402401
min_gallop: MIN_GALLOP,
403-
runs: DVec(),
402+
runs: ~[],
404403
}
405404
}
406405

407-
pub impl<T:Copy + Ord> MergeState<T> {
408-
fn push_run(&self, run_base: uint, run_len: uint) {
406+
impl<T:Copy + Ord> MergeState<T> {
407+
fn push_run(&mut self, run_base: uint, run_len: uint) {
409408
let tmp = RunState{base: run_base, len: run_len};
410409
self.runs.push(tmp);
411410
}
412411

413-
fn merge_at(&self, n: uint, array: &mut [T]) {
412+
fn merge_at(&mut self, n: uint, array: &mut [T]) {
414413
let mut size = self.runs.len();
415414
fail_unless!(size >= 2);
416415
fail_unless!(n == size-2 || n == size-3);
417416

418-
do self.runs.borrow_mut |arr| {
417+
let mut b1 = self.runs[n].base;
418+
let mut l1 = self.runs[n].len;
419+
let b2 = self.runs[n+1].base;
420+
let l2 = self.runs[n+1].len;
419421

420-
let mut b1 = arr[n].base;
421-
let mut l1 = arr[n].len;
422-
let b2 = arr[n+1].base;
423-
let l2 = arr[n+1].len;
422+
fail_unless!(l1 > 0 && l2 > 0);
423+
fail_unless!(b1 + l1 == b2);
424424

425-
fail_unless!(l1 > 0 && l2 > 0);
426-
fail_unless!(b1 + l1 == b2);
427-
428-
arr[n].len = l1 + l2;
429-
if n == size-3 {
430-
arr[n+1].base = arr[n+2].base;
431-
arr[n+1].len = arr[n+2].len;
432-
}
425+
self.runs[n].len = l1 + l2;
426+
if n == size-3 {
427+
self.runs[n+1].base = self.runs[n+2].base;
428+
self.runs[n+1].len = self.runs[n+2].len;
429+
}
433430

434-
let slice = vec::mut_slice(array, b1, b1+l1);
435-
let k = gallop_right(&const array[b2], slice, 0);
436-
b1 += k;
437-
l1 -= k;
438-
if l1 != 0 {
439-
let slice = vec::mut_slice(array, b2, b2+l2);
440-
let l2 = gallop_left(
441-
&const array[b1+l1-1],slice,l2-1);
442-
if l2 > 0 {
443-
if l1 <= l2 {
444-
self.merge_lo(array, b1, l1, b2, l2);
445-
} else {
446-
self.merge_hi(array, b1, l1, b2, l2);
447-
}
431+
let slice = vec::mut_slice(array, b1, b1+l1);
432+
let k = gallop_right(&const array[b2], slice, 0);
433+
b1 += k;
434+
l1 -= k;
435+
if l1 != 0 {
436+
let slice = vec::mut_slice(array, b2, b2+l2);
437+
let l2 = gallop_left(
438+
&const array[b1+l1-1],slice,l2-1);
439+
if l2 > 0 {
440+
if l1 <= l2 {
441+
self.merge_lo(array, b1, l1, b2, l2);
442+
} else {
443+
self.merge_hi(array, b1, l1, b2, l2);
448444
}
449445
}
450446
}
451447
self.runs.pop();
452448
}
453449

454-
fn merge_lo(&self, array: &mut [T], base1: uint, len1: uint,
450+
fn merge_lo(&mut self, array: &mut [T], base1: uint, len1: uint,
455451
base2: uint, len2: uint) {
456452
fail_unless!(len1 != 0 && len2 != 0 && base1+len1 == base2);
457453

@@ -554,7 +550,7 @@ pub impl<T:Copy + Ord> MergeState<T> {
554550
}
555551
}
556552
557-
fn merge_hi(&self, array: &mut [T], base1: uint, len1: uint,
553+
fn merge_hi(&mut self, array: &mut [T], base1: uint, len1: uint,
558554
base2: uint, len2: uint) {
559555
fail_unless!(len1 != 1 && len2 != 0 && base1 + len1 == base2);
560556
@@ -672,32 +668,28 @@ pub impl<T:Copy + Ord> MergeState<T> {
672668
}
673669
}
674670
675-
fn merge_collapse(&self, array: &mut [T]) {
671+
fn merge_collapse(&mut self, array: &mut [T]) {
676672
while self.runs.len() > 1 {
677673
let mut n = self.runs.len()-2;
678-
let chk = do self.runs.borrow |arr| {
679-
if n > 0 && arr[n-1].len <= arr[n].len + arr[n+1].len {
680-
if arr[n-1].len < arr[n+1].len { n -= 1; }
681-
true
682-
} else if arr[n].len <= arr[n+1].len {
683-
true
684-
} else {
685-
false
686-
}
687-
};
688-
if !chk { break; }
674+
if n > 0 &&
675+
self.runs[n-1].len <= self.runs[n].len + self.runs[n+1].len
676+
{
677+
if self.runs[n-1].len < self.runs[n+1].len { n -= 1; }
678+
} else if self.runs[n].len <= self.runs[n+1].len {
679+
/* keep going */
680+
} else {
681+
break;
682+
}
689683
self.merge_at(n, array);
690684
}
691685
}
692686
693-
fn merge_force_collapse(&self, array: &mut [T]) {
687+
fn merge_force_collapse(&mut self, array: &mut [T]) {
694688
while self.runs.len() > 1 {
695689
let mut n = self.runs.len()-2;
696690
if n > 0 {
697-
do self.runs.borrow |arr| {
698-
if arr[n-1].len < arr[n+1].len {
699-
n -= 1;
700-
}
691+
if self.runs[n-1].len < self.runs[n+1].len {
692+
n -= 1;
701693
}
702694
}
703695
self.merge_at(n, array);

src/test/run-pass/issue-5275

15.8 KB
Binary file not shown.

src/test/run-pass/issue-5275.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
fn foo(self: &A) -> int {
12+
if true {
13+
fail!()
14+
} else {
15+
*bar(self.bar)
16+
}
17+
}
18+
19+
pub fn main() {}
20+
21+
fn bar(_: &r/mut int) -> &r/int {
22+
fail!()
23+
}
24+
25+
struct A {
26+
bar: @mut int,
27+
}

0 commit comments

Comments
 (0)