Internals: Use AstUserAllocator in V3Order

This commit is contained in:
Geza Lore 2021-06-19 14:40:31 +01:00
parent 8d737271ca
commit eebda248c7
1 changed files with 5 additions and 11 deletions

View File

@ -80,6 +80,7 @@
#include "verilatedos.h"
#include "V3Ast.h"
#include "V3AstUserAllocator.h"
#include "V3Const.h"
#include "V3EmitCBase.h"
#include "V3EmitV.h"
@ -640,7 +641,7 @@ private:
// NODE STATE
// Forming graph:
// Entire Netlist:
// AstVarScope::user1p -> OrderUser* for usage var
// AstVarScope::user1u -> OrderUser* for usage var (via m_orderUser)
// {statement}Node::user1p-> AstModule* statement is under
// USER4 Cleared on each Logic stmt
// AstVarScope::user4() -> VarUsage(gen/con/both). Where already encountered signal
@ -654,6 +655,8 @@ private:
AstUser3InUse m_inuser3;
// AstUser4InUse m_inuser4; // Used only when building tree, so below
AstUser1Allocator<AstVarScope, OrderUser> m_orderUser;
// STATE
OrderGraph m_graph; // Scoreboard of var usages/dependencies
SenTreeFinder m_finder; // Find global sentree's and add them
@ -673,7 +676,6 @@ private:
bool m_inPost = false; // Underneath AstAssignPost
bool m_inPostponed = false; // Underneath AstAssignPostponed
OrderLogicVertex* m_activeSenVxp = nullptr; // Sensitivity vertex
std::deque<OrderUser*> m_orderUserps; // All created OrderUser's for later deletion.
// STATE... for inside process
AstCFunc* m_pomNewFuncp = nullptr; // Current function being created
int m_pomNewStmts = 0; // Statements in function being created
@ -717,14 +719,7 @@ private:
OrderVarVertex* newVarUserVertex(AstVarScope* varscp, WhichVertex type,
bool* createdp = nullptr) {
if (!varscp->user1p()) {
OrderUser* newup = new OrderUser();
m_orderUserps.push_back(newup);
varscp->user1p(newup);
}
OrderUser* up = reinterpret_cast<OrderUser*>(varscp->user1p());
OrderVarVertex* varVxp = up->newVarUserVertex(&m_graph, m_scopep, varscp, type, createdp);
return varVxp;
return m_orderUser(varscp).newVarUserVertex(&m_graph, m_scopep, varscp, type, createdp);
}
void process();
@ -1232,7 +1227,6 @@ public:
}
}
// Destruction
for (OrderUser* ip : m_orderUserps) delete ip;
m_graph.debug(V3Error::debugDefault());
}
void main(AstNode* nodep) { iterate(nodep); }