From bf84010e01bb11874689ce53ea4df853b2e41c2b Mon Sep 17 00:00:00 2001 From: A404M Date: Thu, 26 Sep 2024 21:54:33 +0330 Subject: some small performance improvements --- src/compiler/code_generator/code_generator.c | 1 + src/compiler/parser/parser.c | 10 +++++----- src/compiler/tree_parser/tree_parser.c | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/compiler/code_generator/code_generator.c b/src/compiler/code_generator/code_generator.c index 03901cd..75b89c6 100644 --- a/src/compiler/code_generator/code_generator.c +++ b/src/compiler/code_generator/code_generator.c @@ -199,6 +199,7 @@ bool nodeToInstruction(ParsedTree *tree, Instruction **instructions, case TREE_TOKEN_STRUCT: case TREE_TOKEN_FUNCTION: case TREE_TOKEN_NONE: + case TREE_TOKEN_ROOT: } printError("Unhandled token %s\n", code, tree->strBegin, tree->strEnd, TREE_TOKEN_STRINGS[tree->token]); diff --git a/src/compiler/parser/parser.c b/src/compiler/parser/parser.c index fcee276..ee9e69b 100644 --- a/src/compiler/parser/parser.c +++ b/src/compiler/parser/parser.c @@ -341,13 +341,12 @@ ParserScopeMetadata *parserScope( } } - ParsedNode **operands = a404m_malloc(nodes_inserted * sizeof(ParsedNode *)); size_t nodes_size = nodes_inserted; nodes_inserted = 0; ParsedNode *last = NULL; - for(size_t i = nodes_size-1;i != (typeof(i))-1;++i){ + for (size_t i = nodes_size - 1; i != (typeof(i))-1; ++i) { ParsedNode *currentNode = nodes[i]; if (currentNode->parent == parent) { last = currentNode; @@ -364,15 +363,16 @@ ParserScopeMetadata *parserScope( PARSED_TOKEN_STRINGS[currentNode->token]); goto RETURN_ERROR; } - operands[nodes_inserted] = currentNode; + if (nodes_inserted != i) { + nodes[nodes_inserted] = currentNode; + } ++nodes_inserted; } } - free(nodes); ParserScopeMetadata *metadata = a404m_malloc(sizeof(*metadata)); metadata->operands = - a404m_realloc(operands, nodes_inserted * sizeof(ParsedNode *)); + a404m_realloc(nodes, nodes_inserted * sizeof(ParsedNode *)); metadata->operands_size = nodes_inserted; return metadata; diff --git a/src/compiler/tree_parser/tree_parser.c b/src/compiler/tree_parser/tree_parser.c index 474b6ca..f657f97 100644 --- a/src/compiler/tree_parser/tree_parser.c +++ b/src/compiler/tree_parser/tree_parser.c @@ -496,7 +496,7 @@ ParsedTree *treeParseVariableDefinition(const ParsedNode *node, } ParsedTree *treeParseStruct(const ParsedNode *node, SourceCode *code, - TreeScopeMetadata *scopes[], size_t scopes_size) { + TreeScopeMetadata *[], size_t) { const ParserStructMetadata *node_metadata = node->metadata; ParsedTree *const tree = a404m_malloc(sizeof(*tree)); @@ -596,7 +596,7 @@ RETURN_ERROR: } ParsedTree *treeParseImport(const ParsedNode *node, SourceCode *code, - TreeScopeMetadata *scopes[], size_t scopes_size) { + TreeScopeMetadata *[], size_t) { const ParserImportMetadata *node_metadata = node->metadata; SizedString *path = nodeToString(node_metadata, code); if (path == NULL) { -- cgit v1.2.3