aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2024-09-26 21:54:33 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2024-09-26 21:54:33 +0330
commitbf84010e01bb11874689ce53ea4df853b2e41c2b (patch)
tree0f912fe8010eed6102c4aae4bec22e9f9a37e70d
parent2ce72027e79a5aba03ecb4180039cd874b230c7a (diff)
some small performance improvements
-rw-r--r--src/compiler/code_generator/code_generator.c1
-rw-r--r--src/compiler/parser/parser.c10
-rw-r--r--src/compiler/tree_parser/tree_parser.c4
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) {