Skip to content

Commit 22161f7

Browse files
committed
---
yaml --- r: 97167 b: refs/heads/dist-snap c: e4815b6 h: refs/heads/master i: 97165: 7348673 97163: 8a3a094 97159: ae484bc 97151: 8577238 v: v3
1 parent 3c75ef1 commit 22161f7

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: c274a6888410ce3e357e014568b43310ed787d36
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: ff23e1202f782adbd1b9f08dbcfbea5d257770ce
9+
refs/heads/dist-snap: e4815b6c3f6b22fc41d4d04c28be4f3484f8099f
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/librustc/middle/liveness.rs

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ pub struct Liveness {
591591
ir: @IrMaps,
592592
s: Specials,
593593
successors: @RefCell<~[LiveNode]>,
594-
users: @mut ~[Users],
594+
users: @RefCell<~[Users]>,
595595
// The list of node IDs for the nested loop scopes
596596
// we're in.
597597
loop_scope: @RefCell<~[NodeId]>,
@@ -609,9 +609,9 @@ fn Liveness(ir: @IrMaps, specials: Specials) -> Liveness {
609609
s: specials,
610610
successors: @RefCell::new(vec::from_elem(ir.num_live_nodes.get(),
611611
invalid_node())),
612-
users: @mut vec::from_elem(ir.num_live_nodes.get() *
613-
ir.num_vars.get(),
614-
invalid_users()),
612+
users: @RefCell::new(vec::from_elem(ir.num_live_nodes.get() *
613+
ir.num_vars.get(),
614+
invalid_users())),
615615
loop_scope: @RefCell::new(~[]),
616616
break_ln: @RefCell::new(HashMap::new()),
617617
cont_ln: @RefCell::new(HashMap::new()),
@@ -685,7 +685,8 @@ impl Liveness {
685685
pub fn live_on_entry(&self, ln: LiveNode, var: Variable)
686686
-> Option<LiveNodeKind> {
687687
assert!(ln.is_valid());
688-
let reader = self.users[self.idx(ln, var)].reader;
688+
let users = self.users.borrow();
689+
let reader = users.get()[self.idx(ln, var)].reader;
689690
if reader.is_valid() {Some(self.ir.lnk(reader))} else {None}
690691
}
691692

@@ -703,13 +704,15 @@ impl Liveness {
703704

704705
pub fn used_on_entry(&self, ln: LiveNode, var: Variable) -> bool {
705706
assert!(ln.is_valid());
706-
self.users[self.idx(ln, var)].used
707+
let users = self.users.borrow();
708+
users.get()[self.idx(ln, var)].used
707709
}
708710

709711
pub fn assigned_on_entry(&self, ln: LiveNode, var: Variable)
710712
-> Option<LiveNodeKind> {
711713
assert!(ln.is_valid());
712-
let writer = self.users[self.idx(ln, var)].writer;
714+
let users = self.users.borrow();
715+
let writer = users.get()[self.idx(ln, var)].writer;
713716
if writer.is_valid() {Some(self.ir.lnk(writer))} else {None}
714717
}
715718

@@ -788,9 +791,10 @@ impl Liveness {
788791
*ln,
789792
lnks.get()[*ln]);
790793
}
791-
self.write_vars(wr, ln, |idx| self.users[idx].reader);
794+
let users = self.users.borrow();
795+
self.write_vars(wr, ln, |idx| users.get()[idx].reader);
792796
write!(wr, " writes");
793-
self.write_vars(wr, ln, |idx| self.users[idx].writer);
797+
self.write_vars(wr, ln, |idx| users.get()[idx].writer);
794798
let successor = {
795799
let successors = self.successors.borrow();
796800
successors.get()[*ln]
@@ -823,7 +827,8 @@ impl Liveness {
823827
}
824828

825829
self.indices2(ln, succ_ln, |idx, succ_idx| {
826-
self.users[idx] = self.users[succ_idx]
830+
let mut users = self.users.borrow_mut();
831+
users.get()[idx] = users.get()[succ_idx]
827832
});
828833
debug!("init_from_succ(ln={}, succ={})",
829834
self.ln_str(ln), self.ln_str(succ_ln));
@@ -838,13 +843,13 @@ impl Liveness {
838843

839844
let mut changed = false;
840845
self.indices2(ln, succ_ln, |idx, succ_idx| {
841-
let users = &mut *self.users;
842-
changed |= copy_if_invalid(users[succ_idx].reader,
843-
&mut users[idx].reader);
844-
changed |= copy_if_invalid(users[succ_idx].writer,
845-
&mut users[idx].writer);
846-
if users[succ_idx].used && !users[idx].used {
847-
users[idx].used = true;
846+
let mut users = self.users.borrow_mut();
847+
changed |= copy_if_invalid(users.get()[succ_idx].reader,
848+
&mut users.get()[idx].reader);
849+
changed |= copy_if_invalid(users.get()[succ_idx].writer,
850+
&mut users.get()[idx].writer);
851+
if users.get()[succ_idx].used && !users.get()[idx].used {
852+
users.get()[idx].used = true;
848853
changed = true;
849854
}
850855
});
@@ -869,8 +874,9 @@ impl Liveness {
869874
// this) so we just clear out all the data.
870875
pub fn define(&self, writer: LiveNode, var: Variable) {
871876
let idx = self.idx(writer, var);
872-
self.users[idx].reader = invalid_node();
873-
self.users[idx].writer = invalid_node();
877+
let mut users = self.users.borrow_mut();
878+
users.get()[idx].reader = invalid_node();
879+
users.get()[idx].writer = invalid_node();
874880

875881
debug!("{} defines {} (idx={}): {}", writer.to_str(), var.to_str(),
876882
idx, self.ln_str(writer));
@@ -879,8 +885,8 @@ impl Liveness {
879885
// Either read, write, or both depending on the acc bitset
880886
pub fn acc(&self, ln: LiveNode, var: Variable, acc: uint) {
881887
let idx = self.idx(ln, var);
882-
let users = &mut *self.users;
883-
let user = &mut users[idx];
888+
let mut users = self.users.borrow_mut();
889+
let user = &mut users.get()[idx];
884890

885891
if (acc & ACC_WRITE) != 0 {
886892
user.reader = invalid_node();

0 commit comments

Comments
 (0)