进行了优化,减少了上帝结构体的符号表占用

This commit is contained in:
2026-06-18 22:12:14 +08:00
parent d7b98cc9c5
commit 19f2787db0
32 changed files with 1245 additions and 1083 deletions

View File

@@ -19,9 +19,8 @@ class MatchHandle(BaseHandle):
SubjectPtr = None
if isinstance(Node.subject, ast.Name):
VarName = Node.subject.id
if VarName in self.Trans.SymbolTable:
TypeInfo = self.Trans.SymbolTable[VarName]
if TypeInfo.IsRenum:
TypeInfo = self.Trans.SymbolTable.lookup(VarName)
if TypeInfo and TypeInfo.IsRenum:
IsRenumMatch = True
RenumName = TypeInfo.Name
SubjectPtr = Gen._loadVar(VarName)
@@ -35,11 +34,11 @@ class MatchHandle(BaseHandle):
VariantName = cls_node.id
elif isinstance(cls_node, ast.Attribute):
VariantName = cls_node.attr
if VariantName and VariantName in self.Trans.SymbolTable:
if VariantName and self.Trans.SymbolTable.has(VariantName):
SymInfo = self.Trans.SymbolTable[VariantName]
if SymInfo.IsEnumMember and SymInfo.EnumName:
EnumName = SymInfo.EnumName
if EnumName in self.Trans.SymbolTable:
if self.Trans.SymbolTable.has(EnumName):
EnumInfo = self.Trans.SymbolTable[EnumName]
if EnumInfo.IsRenum:
IsRenumMatch = True
@@ -207,7 +206,7 @@ class MatchHandle(BaseHandle):
VariantName = cls_node.attr
if VariantName:
TagValue = None
if VariantName in self.Trans.SymbolTable:
if self.Trans.SymbolTable.has(VariantName):
SymInfo = self.Trans.SymbolTable[VariantName]
if SymInfo.IsEnumMember:
TagValue = SymInfo.value