Internals: Use existing astgen type info for ASTGEN_MAX_NODE_SIZE (#7161)

This commit is contained in:
Geza Lore 2026-03-01 10:33:30 +00:00 committed by GitHub
parent e9dd6eaaf0
commit 26eac21432
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 15 deletions

View File

@ -23,10 +23,6 @@
#include <memory>
#include <sstream>
#ifdef VL_ALLOC_RANDOM_CHECKS
#include "V3Ast__gen_sizeof.h"
#endif
VL_DEFINE_DEBUG_FUNCTIONS;
//======================================================================
@ -998,6 +994,15 @@ void AstNode::operator delete(void* objp, size_t size) {
#ifdef VL_ALLOC_RANDOM_CHECKS
void* AstNode::operator new(size_t size) { // VL_MT_SAFE
// Compute the maximum node size once and cache it
static const size_t ASTGEN_MAX_NODE_SIZE = []() {
size_t maxSize = 0;
for (size_t t = 0; t < VNType::NUM_TYPES(); ++t) {
maxSize = std::max(maxSize, VNType::typeInfo(static_cast<VNType::en>(t)).m_sizeof);
}
return maxSize;
}();
// Make the following small to debug this routine, larger for performance and better random
constexpr size_t POOL_SIZE = 65536; // Ideally large enough to fit all nodes used in tests
// Randomly select from a large pool (POOL_SIZE) of max-node sized (MAX_NODE_SIZE) pointers

View File

@ -935,16 +935,6 @@ def write_ast_type_info(filename):
))
def write_ast_sizeof(filename):
with open_file(filename) as fh:
fh.write("static constexpr size_t ASTGEN_MAX_NODE_SIZE =\n")
paren = ""
for node in AstNodeList:
fh.write(" std::max(sizeof(Ast{n}),\n".format(n=node.name))
paren += ")"
fh.write(" static_cast<size_t>(0)" + paren + ";\n")
def write_ast_impl(filename):
with open_file(filename) as fh:
@ -1594,7 +1584,6 @@ if Args.classes:
write_ast_impl("V3Ast__gen_impl.h")
write_ast_macros("V3Ast__gen_macros.h")
write_ast_yystype("V3Ast__gen_yystype.h")
write_ast_sizeof("V3Ast__gen_sizeof.h")
# Write Dfg code
write_forward_class_decls("Dfg", DfgVertexList)
write_visitor_decls("Dfg", DfgVertexList)