aboutsummaryrefslogtreecommitdiff
path: root/src/parser.hpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-11-14 15:12:37 +0000
committergingerBill <bill@gingerbill.org>2021-11-14 15:12:37 +0000
commit3f038428a7f282468011415db76da4bf08ddb67c (patch)
tree70712155e0f94b43754fd8a28bf40939b8228d0f /src/parser.hpp
parentb9701340b8faff107fe6a515d5de429141508f48 (diff)
Begin minimizing `Ast` size
Diffstat (limited to 'src/parser.hpp')
-rw-r--r--src/parser.hpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/parser.hpp b/src/parser.hpp
index 418d035c4..76ae33b21 100644
--- a/src/parser.hpp
+++ b/src/parser.hpp
@@ -255,14 +255,14 @@ ProcCallingConvention default_calling_convention(void) {
return ProcCC_Odin;
}
-enum StateFlag : u16 {
+enum StateFlag : u8 {
StateFlag_bounds_check = 1<<0,
StateFlag_no_bounds_check = 1<<1,
- StateFlag_BeenHandled = 1<<15,
+ StateFlag_BeenHandled = 1<<7,
};
-enum ViralStateFlag : u16 {
+enum ViralStateFlag : u8 {
ViralStateFlag_ContainsDeferredProcedure = 1<<0,
};
@@ -666,7 +666,7 @@ AST_KIND(_TypeBegin, "", bool) \
}) \
AST_KIND(_TypeEnd, "", bool)
-enum AstKind {
+enum AstKind : u16 {
Ast_Invalid,
#define AST_KIND(_kind_name_, ...) GB_JOIN2(Ast_, _kind_name_),
AST_KINDS
@@ -696,18 +696,18 @@ isize const ast_variant_sizes[] = {
struct AstCommonStuff {
AstKind kind;
- u16 state_flags;
- u16 viral_state_flags;
- AstFile * file;
+ u8 state_flags;
+ u8 viral_state_flags;
+ i32 file_id;
Scope * scope;
TypeAndValue tav; // TODO(bill): Make this a pointer to minimize pointer size
};
struct Ast {
AstKind kind;
- u16 state_flags;
- u16 viral_state_flags;
- AstFile * file;
+ u8 state_flags;
+ u8 viral_state_flags;
+ i32 file_id;
Scope * scope;
TypeAndValue tav; // TODO(bill): Make this a pointer to minimize pointer size
@@ -717,6 +717,13 @@ struct Ast {
AST_KINDS
#undef AST_KIND
};
+
+
+ // NOTE(bill): I know I dislike methods but this is hopefully a temporary thing
+ // for refactoring purposes
+ AstFile *file() const {
+ return get_ast_file_from_id(this->file_id);
+ }
};