Skip to content

Commit 96bdc34

Browse files
committed
librustc: De-[mut] librustc (remove all mutable arrays). rs=demuting
1 parent 24893e8 commit 96bdc34

File tree

2 files changed

+22
-25
lines changed

2 files changed

+22
-25
lines changed

src/librustc/middle/liveness.rs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -667,8 +667,8 @@ struct Liveness {
667667
tcx: ty::ctxt,
668668
ir: @mut IrMaps,
669669
s: Specials,
670-
successors: ~[mut LiveNode],
671-
users: ~[mut Users],
670+
successors: @mut ~[LiveNode],
671+
users: @mut ~[Users],
672672
// The list of node IDs for the nested loop scopes
673673
// we're in.
674674
loop_scope: DVec<node_id>,
@@ -684,14 +684,9 @@ fn Liveness(ir: @mut IrMaps, specials: Specials) -> Liveness {
684684
ir: ir,
685685
tcx: ir.tcx,
686686
s: specials,
687-
successors:
688-
vec::cast_to_mut(
689-
vec::from_elem(ir.num_live_nodes,
690-
invalid_node())),
691-
users:
692-
vec::cast_to_mut(
693-
vec::from_elem(ir.num_live_nodes * ir.num_vars,
694-
invalid_users())),
687+
successors: @mut vec::from_elem(ir.num_live_nodes, invalid_node()),
688+
users: @mut vec::from_elem(ir.num_live_nodes * ir.num_vars,
689+
invalid_users()),
695690
loop_scope: DVec(),
696691
break_ln: HashMap(),
697692
cont_ln: HashMap()
@@ -916,12 +911,13 @@ impl Liveness {
916911

917912
let mut changed = false;
918913
do self.indices2(ln, succ_ln) |idx, succ_idx| {
919-
changed |= copy_if_invalid(copy self.users[succ_idx].reader,
920-
&mut self.users[idx].reader);
921-
changed |= copy_if_invalid(copy self.users[succ_idx].writer,
922-
&mut self.users[idx].writer);
923-
if self.users[succ_idx].used && !self.users[idx].used {
924-
self.users[idx].used = true;
914+
let users = &mut *self.users;
915+
changed |= copy_if_invalid(copy users[succ_idx].reader,
916+
&mut users[idx].reader);
917+
changed |= copy_if_invalid(copy users[succ_idx].writer,
918+
&mut users[idx].writer);
919+
if users[succ_idx].used && !users[idx].used {
920+
users[idx].used = true;
925921
changed = true;
926922
}
927923
}
@@ -956,7 +952,8 @@ impl Liveness {
956952
// Either read, write, or both depending on the acc bitset
957953
fn acc(&self, ln: LiveNode, var: Variable, acc: uint) {
958954
let idx = self.idx(ln, var);
959-
let user = &mut self.users[idx];
955+
let users = &mut *self.users;
956+
let user = &mut users[idx];
960957

961958
if (acc & ACC_WRITE) != 0 {
962959
user.reader = invalid_node();
@@ -970,7 +967,7 @@ impl Liveness {
970967
}
971968

972969
if (acc & ACC_USE) != 0 {
973-
self.users[idx].used = true;
970+
user.used = true;
974971
}
975972

976973
debug!("%s accesses[%x] %s: %s",

src/librustc/middle/trans/type_use.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ pub const use_tydesc: uint = 2u; /* Takes the tydesc, or compares */
5151

5252
pub struct Context {
5353
ccx: @CrateContext,
54-
uses: ~[mut type_uses]
54+
uses: @mut ~[type_uses]
5555
}
5656

5757
pub fn type_uses_for(ccx: @CrateContext, fn_id: def_id, n_tps: uint)
@@ -72,7 +72,7 @@ pub fn type_uses_for(ccx: @CrateContext, fn_id: def_id, n_tps: uint)
7272

7373
let cx = Context {
7474
ccx: ccx,
75-
uses: vec::cast_to_mut(vec::from_elem(n_tps, 0u))
75+
uses: @mut vec::from_elem(n_tps, 0u)
7676
};
7777
match ty::get(ty::lookup_item_type(cx.ccx.tcx, fn_id).ty).sty {
7878
ty::ty_bare_fn(ty::BareFnTy {sig: ref sig, _}) |
@@ -90,7 +90,7 @@ pub fn type_uses_for(ccx: @CrateContext, fn_id: def_id, n_tps: uint)
9090
}
9191

9292
if fn_id_loc.crate != local_crate {
93-
let uses = vec::cast_from_mut(copy cx.uses);
93+
let uses = copy *cx.uses;
9494
ccx.type_use_cache.insert(fn_id, copy uses);
9595
return uses;
9696
}
@@ -175,16 +175,16 @@ pub fn type_uses_for(ccx: @CrateContext, fn_id: def_id, n_tps: uint)
175175
ccx.tcx.sess.parse_sess.interner)));
176176
}
177177
}
178-
let uses = vec::cast_from_mut(copy cx.uses);
179-
// XXX: Bad copy, use @vec instead?
178+
// XXX: Bad copies, use @vec instead?
179+
let uses = copy *cx.uses;
180180
ccx.type_use_cache.insert(fn_id, copy uses);
181181
uses
182182
}
183183

184184
pub fn type_needs(cx: Context, use_: uint, ty: ty::t) {
185185
// Optimization -- don't descend type if all params already have this use
186-
for vec::each_mut(cx.uses) |u| {
187-
if *u & use_ != use_ {
186+
for uint::range(0, cx.uses.len()) |i| {
187+
if cx.uses[i] & use_ != use_ {
188188
type_needs_inner(cx, use_, ty, @Nil);
189189
return;
190190
}

0 commit comments

Comments
 (0)