diff --git a/src/mapleall/maple_ir/src/mir_parser.cpp b/src/mapleall/maple_ir/src/mir_parser.cpp index 30a7cd60f4a4f6f64acec3b70d82411e93d4e5ca..0ad20b3a420490f440124ae3c8ee1a19d58b602d 100644 --- a/src/mapleall/maple_ir/src/mir_parser.cpp +++ b/src/mapleall/maple_ir/src/mir_parser.cpp @@ -2664,7 +2664,7 @@ bool MIRParser::ParseConstAddrLeafExpr(MIRConstPtr &cexpr) { } lexer.NextToken(); } - cexpr = mod.CurFuncCodeMemPool()->New(anode->GetStIdx(), anode->GetFieldID(), *exprTy, ofst); + cexpr = mod.GetMemPool()->New(anode->GetStIdx(), anode->GetFieldID(), *exprTy, ofst); } else if (expr->GetOpCode() == OP_addroffunc) { auto *aof = static_cast(expr); MIRFunction *f = GlobalTables::GetFunctionTable().GetFunctionFromPuidx(aof->GetPUIdx()); @@ -2673,11 +2673,11 @@ bool MIRParser::ParseConstAddrLeafExpr(MIRConstPtr &cexpr) { MIRPtrType ptrType(ptyIdx); ptyIdx = GlobalTables::GetTypeTable().GetOrCreateMIRType(&ptrType); MIRType *exprTy = GlobalTables::GetTypeTable().GetTypeFromTyIdx(ptyIdx); - cexpr = mod.CurFuncCodeMemPool()->New(aof->GetPUIdx(), *exprTy); + cexpr = mod.GetMemPool()->New(aof->GetPUIdx(), *exprTy); } else if (expr->op == OP_addroflabel) { AddroflabelNode *aol = static_cast(expr); MIRType *mirtype = GlobalTables::GetTypeTable().GetTypeFromTyIdx(TyIdx(PTY_ptr)); - cexpr = mod.CurFuncCodeMemPool()->New(aol->GetOffset(), mod.CurFunction()->GetPuidx(), *mirtype); + cexpr = mod.GetMemPool()->New(aol->GetOffset(), mod.CurFunction()->GetPuidx(), *mirtype); } else if (expr->GetOpCode() == OP_conststr) { auto *cs = static_cast(expr); UStrIdx stridx = cs->GetStrIdx(); @@ -2685,7 +2685,7 @@ bool MIRParser::ParseConstAddrLeafExpr(MIRConstPtr &cexpr) { MIRPtrType ptrtype(ptyIdx); ptyIdx = GlobalTables::GetTypeTable().GetOrCreateMIRType(&ptrtype); MIRType *exprty = GlobalTables::GetTypeTable().GetTypeFromTyIdx(ptyIdx); - cexpr = mod.CurFuncCodeMemPool()->New(stridx, *exprty); + cexpr = mod.GetMemPool()->New(stridx, *exprty); } else { auto *cs = static_cast(expr); U16StrIdx stridx = cs->GetStrIdx(); @@ -2693,7 +2693,7 @@ bool MIRParser::ParseConstAddrLeafExpr(MIRConstPtr &cexpr) { MIRPtrType ptrType(ptyIdx); ptyIdx = GlobalTables::GetTypeTable().GetOrCreateMIRType(&ptrType); MIRType *exprTy = GlobalTables::GetTypeTable().GetTypeFromTyIdx(ptyIdx); - cexpr = mod.CurFuncCodeMemPool()->New(stridx, *exprTy); + cexpr = mod.GetMemPool()->New(stridx, *exprTy); } return true; } diff --git a/src/mapleall/maple_ir/src/mir_type.cpp b/src/mapleall/maple_ir/src/mir_type.cpp index c3163794d9a29a61830901b1c99fa80d19de3486..95eff62234d7e2c1255665daa09a99249b821f50 100644 --- a/src/mapleall/maple_ir/src/mir_type.cpp +++ b/src/mapleall/maple_ir/src/mir_type.cpp @@ -192,6 +192,8 @@ uint32 GetPrimTypeSize(PrimType primType) { case PTY_f64: case PTY_i64: case PTY_u64: + case PTY_ptr: + case PTY_ref: return 8; case PTY_c128: case PTY_f128: @@ -236,6 +238,8 @@ uint32 GetPrimTypeP2Size(PrimType primType) { case PTY_f64: case PTY_i64: case PTY_u64: + case PTY_ptr: + case PTY_ref: return 3; case PTY_c128: case PTY_f128: