diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-09-26 21:54:33 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-09-26 21:54:33 +0330 |
commit | bf84010e01bb11874689ce53ea4df853b2e41c2b (patch) | |
tree | 0f912fe8010eed6102c4aae4bec22e9f9a37e70d | |
parent | 2ce72027e79a5aba03ecb4180039cd874b230c7a (diff) |
some small performance improvements
-rw-r--r-- | src/compiler/code_generator/code_generator.c | 1 | ||||
-rw-r--r-- | src/compiler/parser/parser.c | 10 | ||||
-rw-r--r-- | src/compiler/tree_parser/tree_parser.c | 4 |
3 files changed, 8 insertions, 7 deletions
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) { |