[FIR] Drop delayedNode from ControlFlowGraph.orderNodes
This commit is contained in:
+1
-3
@@ -155,19 +155,17 @@ enum class EdgeKind(
|
|||||||
|
|
||||||
@OptIn(ExperimentalStdlibApi::class)
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
private fun ControlFlowGraph.orderNodes(): LinkedHashSet<CFGNode<*>> {
|
private fun ControlFlowGraph.orderNodes(): LinkedHashSet<CFGNode<*>> {
|
||||||
val visitedNodes = LinkedHashSet<CFGNode<*>>()
|
val visitedNodes = linkedSetOf<CFGNode<*>>()
|
||||||
/*
|
/*
|
||||||
* [delayedNodes] is needed to accomplish next order contract:
|
* [delayedNodes] is needed to accomplish next order contract:
|
||||||
* for each node all previous node lays before it
|
* for each node all previous node lays before it
|
||||||
*/
|
*/
|
||||||
val delayedNodes = LinkedHashSet<CFGNode<*>>()
|
|
||||||
val stack = ArrayDeque<CFGNode<*>>()
|
val stack = ArrayDeque<CFGNode<*>>()
|
||||||
stack.addFirst(enterNode)
|
stack.addFirst(enterNode)
|
||||||
while (stack.isNotEmpty()) {
|
while (stack.isNotEmpty()) {
|
||||||
val node = stack.removeFirst()
|
val node = stack.removeFirst()
|
||||||
val previousNodes = node.previousNodes
|
val previousNodes = node.previousNodes
|
||||||
if (previousNodes.any { it !in visitedNodes && it.owner == this && !node.incomingEdges.getValue(it).kind.isBack }) {
|
if (previousNodes.any { it !in visitedNodes && it.owner == this && !node.incomingEdges.getValue(it).kind.isBack }) {
|
||||||
delayedNodes.add(node)
|
|
||||||
stack.addLast(node)
|
stack.addLast(node)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user