进行了优化,减少了上帝结构体的符号表占用
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user