mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-30 19:22:31 +00:00 
			
		
		
		
	Merge branch 'YosysHQ:main' into main
This commit is contained in:
		
						commit
						985de62d3c
					
				
					 3 changed files with 10 additions and 0 deletions
				
			
		|  | @ -41,6 +41,8 @@ namespace AST { | |||
| 	std::string current_filename; | ||||
| 	void (*set_line_num)(int) = NULL; | ||||
| 	int (*get_line_num)() = NULL; | ||||
| 	unsigned long long astnodes = 0; | ||||
| 	unsigned long long astnode_count() { return astnodes; } | ||||
| } | ||||
| 
 | ||||
| // instantiate global variables (private API)
 | ||||
|  | @ -204,6 +206,7 @@ AstNode::AstNode(AstNodeType type, AstNode *child1, AstNode *child2, AstNode *ch | |||
| 	static unsigned int hashidx_count = 123456789; | ||||
| 	hashidx_count = mkhash_xorshift(hashidx_count); | ||||
| 	hashidx_ = hashidx_count; | ||||
| 	astnodes++; | ||||
| 
 | ||||
| 	this->type = type; | ||||
| 	filename = current_filename; | ||||
|  | @ -292,6 +295,7 @@ void AstNode::delete_children() | |||
| // AstNode destructor
 | ||||
| AstNode::~AstNode() | ||||
| { | ||||
| 	astnodes--; | ||||
| 	delete_children(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -410,6 +410,9 @@ namespace AST | |||
| 	extern void (*set_line_num)(int); | ||||
| 	extern int (*get_line_num)(); | ||||
| 
 | ||||
| 	// for stats
 | ||||
| 	unsigned long long astnode_count(); | ||||
| 
 | ||||
| 	// set set_line_num and get_line_num to internal dummy functions (done by simplify() and AstModule::derive
 | ||||
| 	// to control the filename and linenum properties of new nodes not generated by a frontend parser)
 | ||||
| 	void use_internal_line_num(); | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ | |||
| #include "kernel/celltypes.h" | ||||
| #include "passes/techmap/libparse.h" | ||||
| #include "kernel/cost.h" | ||||
| #include "frontends/ast/ast.h" | ||||
| #include "libs/json11/json11.hpp" | ||||
| 
 | ||||
| #if defined(__APPLE__) && defined(__MACH__) | ||||
|  | @ -105,6 +106,8 @@ struct InternalStatsPass : public Pass { | |||
| 			if (auto mem = current_mem_bytes()) { | ||||
| 				log("   \"memory_now\": %s,\n", std::to_string(*mem).c_str()); | ||||
| 			} | ||||
| 			auto ast_bytes = AST::astnode_count() * (unsigned long long) sizeof(AST::AstNode); | ||||
| 			log("   \"memory_ast\": %s,\n", std::to_string(ast_bytes).c_str()); | ||||
| 		} | ||||
| 
 | ||||
| 		// stats go here
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue