mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 03:38:29 +00:00
liveness: Remove redundant fields for a number of live nodes and variables
This commit is contained in:
parent
9b5835ec79
commit
2fb1564457
@ -249,8 +249,6 @@ enum VarKind {
|
|||||||
struct IrMaps<'tcx> {
|
struct IrMaps<'tcx> {
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
body_owner: LocalDefId,
|
body_owner: LocalDefId,
|
||||||
num_live_nodes: usize,
|
|
||||||
num_vars: usize,
|
|
||||||
live_node_map: HirIdMap<LiveNode>,
|
live_node_map: HirIdMap<LiveNode>,
|
||||||
variable_map: HirIdMap<Variable>,
|
variable_map: HirIdMap<Variable>,
|
||||||
capture_info_map: HirIdMap<Rc<Vec<CaptureInfo>>>,
|
capture_info_map: HirIdMap<Rc<Vec<CaptureInfo>>>,
|
||||||
@ -263,8 +261,6 @@ impl IrMaps<'tcx> {
|
|||||||
IrMaps {
|
IrMaps {
|
||||||
tcx,
|
tcx,
|
||||||
body_owner,
|
body_owner,
|
||||||
num_live_nodes: 0,
|
|
||||||
num_vars: 0,
|
|
||||||
live_node_map: HirIdMap::default(),
|
live_node_map: HirIdMap::default(),
|
||||||
variable_map: HirIdMap::default(),
|
variable_map: HirIdMap::default(),
|
||||||
capture_info_map: Default::default(),
|
capture_info_map: Default::default(),
|
||||||
@ -274,9 +270,8 @@ impl IrMaps<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn add_live_node(&mut self, lnk: LiveNodeKind) -> LiveNode {
|
fn add_live_node(&mut self, lnk: LiveNodeKind) -> LiveNode {
|
||||||
let ln = LiveNode(self.num_live_nodes as u32);
|
let ln = LiveNode(self.lnks.len() as u32);
|
||||||
self.lnks.push(lnk);
|
self.lnks.push(lnk);
|
||||||
self.num_live_nodes += 1;
|
|
||||||
|
|
||||||
debug!("{:?} is of kind {}", ln, live_node_kind_to_string(lnk, self.tcx));
|
debug!("{:?} is of kind {}", ln, live_node_kind_to_string(lnk, self.tcx));
|
||||||
|
|
||||||
@ -291,9 +286,8 @@ impl IrMaps<'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn add_variable(&mut self, vk: VarKind) -> Variable {
|
fn add_variable(&mut self, vk: VarKind) -> Variable {
|
||||||
let v = Variable(self.num_vars as u32);
|
let v = Variable(self.var_kinds.len() as u32);
|
||||||
self.var_kinds.push(vk);
|
self.var_kinds.push(vk);
|
||||||
self.num_vars += 1;
|
|
||||||
|
|
||||||
match vk {
|
match vk {
|
||||||
Local(LocalInfo { id: node_id, .. }) | Param(node_id, _) | Upvar(node_id, _) => {
|
Local(LocalInfo { id: node_id, .. }) | Param(node_id, _) | Upvar(node_id, _) => {
|
||||||
@ -672,8 +666,8 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
|||||||
let typeck_results = ir.tcx.typeck(def_id);
|
let typeck_results = ir.tcx.typeck(def_id);
|
||||||
let param_env = ir.tcx.param_env(def_id);
|
let param_env = ir.tcx.param_env(def_id);
|
||||||
|
|
||||||
let num_live_nodes = ir.num_live_nodes;
|
let num_live_nodes = ir.lnks.len();
|
||||||
let num_vars = ir.num_vars;
|
let num_vars = ir.var_kinds.len();
|
||||||
|
|
||||||
Liveness {
|
Liveness {
|
||||||
ir,
|
ir,
|
||||||
@ -719,7 +713,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn idx(&self, ln: LiveNode, var: Variable) -> usize {
|
fn idx(&self, ln: LiveNode, var: Variable) -> usize {
|
||||||
ln.get() * self.ir.num_vars + var.get()
|
ln.get() * self.ir.var_kinds.len() + var.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn live_on_entry(&self, ln: LiveNode, var: Variable) -> Option<LiveNodeKind> {
|
fn live_on_entry(&self, ln: LiveNode, var: Variable) -> Option<LiveNodeKind> {
|
||||||
@ -756,7 +750,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
|||||||
{
|
{
|
||||||
let node_base_idx = self.idx(ln, Variable(0));
|
let node_base_idx = self.idx(ln, Variable(0));
|
||||||
let succ_base_idx = self.idx(succ_ln, Variable(0));
|
let succ_base_idx = self.idx(succ_ln, Variable(0));
|
||||||
for var_idx in 0..self.ir.num_vars {
|
for var_idx in 0..self.ir.var_kinds.len() {
|
||||||
op(self, node_base_idx + var_idx, succ_base_idx + var_idx);
|
op(self, node_base_idx + var_idx, succ_base_idx + var_idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -766,7 +760,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
|||||||
F: FnMut(usize) -> bool,
|
F: FnMut(usize) -> bool,
|
||||||
{
|
{
|
||||||
let node_base_idx = self.idx(ln, Variable(0));
|
let node_base_idx = self.idx(ln, Variable(0));
|
||||||
for var_idx in 0..self.ir.num_vars {
|
for var_idx in 0..self.ir.var_kinds.len() {
|
||||||
let idx = node_base_idx + var_idx;
|
let idx = node_base_idx + var_idx;
|
||||||
if test(idx) {
|
if test(idx) {
|
||||||
write!(wr, " {:?}", Variable(var_idx as u32))?;
|
write!(wr, " {:?}", Variable(var_idx as u32))?;
|
||||||
@ -797,7 +791,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
|||||||
debug!(
|
debug!(
|
||||||
"^^ liveness computation results for body {} (entry={:?})",
|
"^^ liveness computation results for body {} (entry={:?})",
|
||||||
{
|
{
|
||||||
for ln_idx in 0..self.ir.num_live_nodes {
|
for ln_idx in 0..self.ir.lnks.len() {
|
||||||
debug!("{:?}", self.ln_str(LiveNode(ln_idx as u32)));
|
debug!("{:?}", self.ln_str(LiveNode(ln_idx as u32)));
|
||||||
}
|
}
|
||||||
hir_id
|
hir_id
|
||||||
|
Loading…
Reference in New Issue
Block a user