进行了优化,减少了上帝结构体的符号表占用
This commit is contained in:
@@ -328,7 +328,7 @@ class ExprHandle(BaseHandle):
|
||||
# 如果 _define_constants 中没有,尝试从符号表查找
|
||||
if VarName not in getattr(Gen, '_define_constants', {}):
|
||||
try:
|
||||
sym_info = self.translator.SymbolTable.get(VarName)
|
||||
sym_info = self.translator.SymbolTable.lookup(VarName)
|
||||
if sym_info and sym_info.IsDefine and sym_info.DefineValue is not None:
|
||||
val = sym_info.DefineValue
|
||||
if isinstance(val, int):
|
||||
@@ -398,7 +398,7 @@ class ExprHandle(BaseHandle):
|
||||
return ir.Constant(ir.IntType(8).as_pointer(), None)
|
||||
if VarName == 'True' or VarName == 'False':
|
||||
return ir.Constant(ir.IntType(32), 1 if VarName == 'True' else 0)
|
||||
if VarName in self.Trans.SymbolTable:
|
||||
if self.Trans.SymbolTable.has(VarName):
|
||||
SymInfo = self.Trans.SymbolTable[VarName]
|
||||
if SymInfo.IsEnumMember and isinstance(SymInfo.value, int):
|
||||
return ir.Constant(ir.IntType(32), SymInfo.value)
|
||||
|
||||
Reference in New Issue
Block a user