JSSpecCompiler: Add if branch merging pass

It merges standalone IfBranch/ElseIfBranch nodes into IfElseIfChain
nodes. This will ease CFG generation later.
This commit is contained in:
Dan Klishch 2023-08-18 21:16:53 -04:00 committed by Andrew Kaster
parent 092ed1cc8a
commit 4c4e1e1aed
Notes: sideshowbarker 2024-07-17 06:51:10 +09:00
8 changed files with 184 additions and 0 deletions

View file

@ -71,6 +71,18 @@ Vector<NodeSubtreePointer> ElseIfBranch::subtrees()
return { { &m_branch } };
}
Vector<NodeSubtreePointer> IfElseIfChain::subtrees()
{
Vector<NodeSubtreePointer> result;
for (size_t i = 0; i < branches_count(); ++i) {
result.append({ &m_conditions[i] });
result.append({ &m_branches[i] });
}
if (m_else_branch)
result.append({ &m_else_branch });
return result;
}
Vector<NodeSubtreePointer> TreeList::subtrees()
{
Vector<NodeSubtreePointer> result;