B:BD[
4.2363] → [
4.2363:2810]
B:BD[
4.2810] → [
6.2360:2454]
∅:D[
6.2454] → [
5.8605:8647]
B:BD[
4.2971] → [
5.8605:8647]
B:BD[
5.8647] → [
6.2455:3475]
if v.is_alive() {
// We need to reconnect, and we can do it now
// since we won't have a chance to visit that
// edge (because non-PARENT edge we are
// inserting now starts from a vertex that is
// on the path, which means we've already
// pushed all its children onto the stack.).
debug!(
"put_pseudo, alive 2, {:?} {:?}",
v.last_alive,
stack[len - 1].vertex
);
debug!("{:?}", stack);
let edge = Edge {
dest: stack[len - 1].vertex.start_pos(),
flag: EdgeFlags::empty(),
introduced_by: ChangeId::ROOT,
};
match txn.get_graph(channel, &v.last_alive, Some(&edge.into()))? {
Some(e) if e.dest() == edge.dest && e.flag() == EdgeFlags::BLOCK => {}
_ => {
put_graph_with_rev(
txn,
channel,
EdgeFlags::PSEUDO,
v.last_alive,
stack[len - 1].vertex,
ChangeId::ROOT,
)?;
}
if v.is_alive() || v.shares_alive_change() {
if saw_dead_on_path {
// We need to reconnect, and we can do it now
// since we won't have a chance to visit that
// edge (because non-PARENT edge we are
// inserting now starts from a vertex that is
// on the path, which means we've already
// pushed all its children onto the stack.).
debug!(
"put_pseudo, alive 2, {:?} {:?}",
v.last_alive,
stack[len - 1].vertex
);
debug!("{:?}", stack);
put_graph_with_rev(
txn,
channel,
EdgeFlags::PSEUDO,
v.last_alive,
stack[len - 1].vertex,
ChangeId::ROOT,
)?;