diff --git a/src/bin/jbc2mpl b/src/bin/jbc2mpl index 06cd0d6138d0b4ce698d49fa45d1e3fd197da9c4..987e803daa6887157a3cb72c75a45b40439d0d4f 100755 Binary files a/src/bin/jbc2mpl and b/src/bin/jbc2mpl differ diff --git a/src/bin/maple b/src/bin/maple index c2f1eb2811a3d68fe187aa0adb9e0fe34288ecc4..368895a8fdb51d5a134967b87917e07a11b3c753 100755 Binary files a/src/bin/maple and b/src/bin/maple differ diff --git a/src/deplibs/libmempool.a b/src/deplibs/libmempool.a index ac6365db3b02fcaa96220d5730df45726b1fd53f..29f0ae940ee9106b52e72e9c7db0436de9b29540 100644 Binary files a/src/deplibs/libmempool.a and b/src/deplibs/libmempool.a differ diff --git a/src/deplibs/libmplutil.a b/src/deplibs/libmplutil.a index aa25a671ba6a7204a0258d076428a06fa265c7a4..9fd0079a236a7ae934f7cf345654c9251d325bcd 100644 Binary files a/src/deplibs/libmplutil.a and b/src/deplibs/libmplutil.a differ diff --git a/src/maple_be/src/cg/aarch64/aarch64_peep.cpp b/src/maple_be/src/cg/aarch64/aarch64_peep.cpp index d61873753a194079b7014e67867591351f1dd0da..b7496cf2b3472a4c16db64748b9de5f2afb80909 100644 --- a/src/maple_be/src/cg/aarch64/aarch64_peep.cpp +++ b/src/maple_be/src/cg/aarch64/aarch64_peep.cpp @@ -2180,7 +2180,7 @@ void ComplexMemOperandLabelAArch64::Run(BB &bb, Insn &insn) { * mov R2, vreg3 -> fieldValueDefInsn */ bool WriteFieldCallAArch64::WriteFieldCallOptPatternMatch(const Insn &writeFieldCallInsn, WriteRefFieldParam ¶m, - std::vector ¶mDefInsns) { + std::vector ¶mDefInsns) { Insn *fieldValueDefInsn = writeFieldCallInsn.GetPreviousMachineInsn(); if (fieldValueDefInsn == nullptr || fieldValueDefInsn->GetMachineOpcode() != MOP_xmovrr) { return false; diff --git a/src/maple_ipa/include/callgraph.h b/src/maple_ipa/include/callgraph.h index 15f09f4a42e19dbe6c1afa4160b0b0b1b959efd0..7db64edcfe2ba30005798eabb88f4cf436077a86 100644 --- a/src/maple_ipa/include/callgraph.h +++ b/src/maple_ipa/include/callgraph.h @@ -347,7 +347,7 @@ class SCCNode { }; class CallGraph : public AnalysisResult { public: - CallGraph(MIRModule *m, MemPool *memPool, KlassHierarchy *kh, const char *fn); + CallGraph(MIRModule &m, MemPool &memPool, KlassHierarchy &kh, const std::string &fn); ~CallGraph() {} CGNode *CallExternal() const { @@ -356,7 +356,7 @@ class CallGraph : public AnalysisResult { void BuildCallGraph(); CGNode *GetEntryNode() const { - return entry_node; + return entryNode; } const MapleVector &GetRootNodes() const { @@ -423,11 +423,11 @@ class CallGraph : public AnalysisResult { private: MIRModule *mirModule; - MapleAllocator cgalloc; + MapleAllocator cgAlloc; MIRBuilder *mirBuilder; - CGNode *entry_node; // For main function, nullptr if there is multiple entries + CGNode *entryNode; // For main function, nullptr if there is multiple entries MapleVector rootNodes; - const char *fileName; /* used for output dot file */ + std::string fileName; /* used for output dot file */ KlassHierarchy *klassh; MapleMap nodesMap; MapleVector sccTopologicalVec; @@ -436,16 +436,16 @@ class CallGraph : public AnalysisResult { uint32 numOfSccs; std::unordered_set callsiteHash; void GenCallGraph(); - CGNode *GetOrGenCGNode(PUIdx puidx, bool isVcall = false, bool isIcall = false); + CGNode *GetOrGenCGNode(PUIdx puIdx, bool isVcall = false, bool isIcall = false); CallType GetCallType(Opcode op) const; - CallInfo *GenCallInfo(CallType type, MIRFunction *call, StmtNode *s, uint32 loopDepth, uint32 callsiteid) { - return cgalloc.GetMemPool()->New(type, call, s, loopDepth, callsiteid); + CallInfo *GenCallInfo(CallType type, MIRFunction *call, StmtNode *s, uint32 loopDepth, uint32 callsiteID) { + return cgAlloc.GetMemPool()->New(type, call, s, loopDepth, callsiteID); } void FindRootNodes(); void SCCTopologicalSort(const std::vector &sccNodes); void SetCompilationFunclist() const; - void IncrNodesCount(CGNode *cgnode, BaseNode *bn); + void IncrNodesCount(CGNode *cgNode, BaseNode *bn); }; class DoCallGraph : public ModulePhase { diff --git a/src/maple_ipa/include/clone.h b/src/maple_ipa/include/clone.h index 9bba62e4d09ce0f86552d775eac0f2f5d9dd66e4..9a3d53828bdf38529246a2fb374d96691119fa64 100644 --- a/src/maple_ipa/include/clone.h +++ b/src/maple_ipa/include/clone.h @@ -70,8 +70,8 @@ class Clone : public AnalysisResult { MIRType *returnType = nullptr) const; MIRFunction *CloneFunctionNoReturn(MIRFunction &originalFunction); void DoClone(); - void CopyFuncInfo(const MIRFunction &originalFunction, MIRFunction *newFunc) const; - void UpdateFuncInfo(MIRFunction *newFunc); + void CopyFuncInfo(const MIRFunction &originalFunction, MIRFunction &newFunc) const; + void UpdateFuncInfo(MIRFunction &newFunc); void CloneArgument(MIRFunction &riginalFunction, ArgVector &argument) const; ReplaceRetIgnored *GetReplaceRetIgnored() { return replaceRetIgnored; diff --git a/src/maple_ipa/src/callgraph.cpp b/src/maple_ipa/src/callgraph.cpp index 85b5b880ec9a8f9d0a216fb62c9d2e40318056c1..9bfbe5d8c1ec67fa5c5b1d68c5d059bde7c1025c 100644 --- a/src/maple_ipa/src/callgraph.cpp +++ b/src/maple_ipa/src/callgraph.cpp @@ -230,21 +230,20 @@ void CallGraph::DelNode(CGNode &node) { } } -CallGraph::CallGraph(MIRModule *m, MemPool *memPool, KlassHierarchy *kh, const char *fn) - : AnalysisResult(memPool), - mirModule(m), - cgalloc(memPool), - mirBuilder(cgalloc.GetMemPool()->New(m)), - entry_node(nullptr), - rootNodes(cgalloc.Adapter()), +CallGraph::CallGraph(MIRModule &m, MemPool &memPool, KlassHierarchy &kh, const std::string &fn) + : AnalysisResult(&memPool), + mirModule(&m), + cgAlloc(&memPool), + mirBuilder(cgAlloc.GetMemPool()->New(&m)), + entryNode(nullptr), + rootNodes(cgAlloc.Adapter()), fileName(fn), - klassh(kh), - nodesMap(cgalloc.Adapter()), - sccTopologicalVec(cgalloc.Adapter()), + klassh(&kh), + nodesMap(cgAlloc.Adapter()), + sccTopologicalVec(cgAlloc.Adapter()), numOfNodes(0), numOfSccs(0) { - CHECK_FATAL(fn != nullptr, ""); - callExternal = cgalloc.GetMemPool()->New(static_cast(nullptr), &cgalloc, numOfNodes++); + callExternal = cgAlloc.GetMemPool()->New(static_cast(nullptr), &cgAlloc, numOfNodes++); debug_flag = false; debug_scc = false; } @@ -310,8 +309,8 @@ CGNode *CallGraph::GetCGNode(PUIdx puIdx) const { } SCCNode *CallGraph::GetSCCNode(MIRFunction *func) const { - CGNode *cgnode = GetCGNode(func); - return cgnode != nullptr ? cgnode->GetSCCNode() : nullptr; + CGNode *cgNode = GetCGNode(func); + return cgNode != nullptr ? cgNode->GetSCCNode() : nullptr; } bool CallGraph::IsRootNode(MIRFunction *func) const { @@ -326,7 +325,7 @@ CGNode *CallGraph::GetOrGenCGNode(PUIdx puIdx, bool isVcall, bool isIcall) { CGNode *node = GetCGNode(puIdx); if (node == nullptr) { MIRFunction *mirFunc = GlobalTables::GetFunctionTable().GetFunctionFromPuidx(puIdx); - node = cgalloc.GetMemPool()->New(mirFunc, &cgalloc, numOfNodes++); + node = cgAlloc.GetMemPool()->New(mirFunc, &cgAlloc, numOfNodes++); nodesMap.insert(std::make_pair(mirFunc, node)); } if (isVcall && !node->IsVcallCandidatesValid()) { @@ -590,7 +589,7 @@ void CallGraph::AddCallGraphNode(MIRFunction &func) { /* set root if current function is static main */ if (func.GetName() == mirModule->GetEntryFuncName()) { mirModule->SetEntryFunction(&func); - entry_node = node; + entryNode = node; } } @@ -618,16 +617,16 @@ static void ResetInferredType(std::vector &inferredSymbols, MIRSymbo } } -static void SetInferredType(std::vector &inferredSymbols, MIRSymbol *s, TyIdx idx) { - s->SetInferredTyIdx(idx); +static void SetInferredType(std::vector &inferredSymbols, MIRSymbol &s, TyIdx idx) { + s.SetInferredTyIdx(idx); unsigned int i = 0; for (; i < inferredSymbols.size(); i++) { - if (inferredSymbols[i] == s) { + if (inferredSymbols[i] == &s) { break; } } if (i == inferredSymbols.size()) { - inferredSymbols.push_back(s); + inferredSymbols.push_back(&s); } } @@ -688,7 +687,7 @@ void IPODevirtulize::SearchDefInClinit(const Klass &klass) { } else if (dassignNode->GetRHS()->GetOpCode() == OP_gcmalloc) { GCMallocNode *gcmallocNode = static_cast(dassignNode->GetRHS()); TyIdx inferredTypeIdx = gcmallocNode->GetTyIdx(); - SetInferredType(gcmallocSymbols, leftSymbol, inferredTypeIdx); + SetInferredType(gcmallocSymbols, *leftSymbol, inferredTypeIdx); } else { ResetInferredType(gcmallocSymbols, leftSymbol); } @@ -775,14 +774,14 @@ void IPODevirtulize::SearchDefInMemberMethods(const Klass &klass) { MIRSymbol *leftSymbol = func->GetLocalOrGlobalSymbol(dassignNode->GetStIdx()); if (dassignNode->GetRHS()->GetOpCode() == OP_gcmalloc) { GCMallocNode *gcmallocNode = static_cast(dassignNode->GetRHS()); - SetInferredType(gcmallocSymbols, leftSymbol, gcmallocNode->GetTyIdx()); + SetInferredType(gcmallocSymbols, *leftSymbol, gcmallocNode->GetTyIdx()); } else if (dassignNode->GetRHS()->GetOpCode() == OP_retype) { RetypeNode *retyStmt = static_cast(dassignNode->GetRHS()); BaseNode *fromNode = retyStmt->Opnd(0); if (fromNode->GetOpCode() == OP_dread) { DreadNode *dreadNode = static_cast(fromNode); MIRSymbol *fromSymbol = func->GetLocalOrGlobalSymbol(dreadNode->GetStIdx()); - SetInferredType(gcmallocSymbols, leftSymbol, fromSymbol->GetInferredTyIdx()); + SetInferredType(gcmallocSymbols, *leftSymbol, fromSymbol->GetInferredTyIdx()); } else { ResetInferredType(gcmallocSymbols, leftSymbol); } @@ -888,7 +887,7 @@ void DoDevirtual(const Klass &klass, const KlassHierarchy &klassh) { if (dassignNode->GetRHS()->GetOpCode() == OP_dread) { DreadNode *dreadNode = static_cast(dassignNode->GetRHS()); if (func->GetLocalOrGlobalSymbol(dreadNode->GetStIdx())->GetInferredTyIdx() != kInitTyIdx) { - SetInferredType(inferredSymbols, leftSymbol, + SetInferredType(inferredSymbols, *leftSymbol, func->GetLocalOrGlobalSymbol(dreadNode->GetStIdx())->GetInferredTyIdx()); } } else if (dassignNode->GetRHS()->GetOpCode() == OP_iread) { @@ -901,7 +900,7 @@ void DoDevirtual(const Klass &klass, const KlassHierarchy &klassh) { FieldID tmpID = fieldID; TyIdx tmpTyIdx = classType->GetElemInferredTyIdx(tmpID); if (tmpTyIdx != kInitTyIdx && tmpTyIdx != kNoneTyIdx) { - SetInferredType(inferredSymbols, leftSymbol, classType->GetElemInferredTyIdx(fieldID)); + SetInferredType(inferredSymbols, *leftSymbol, classType->GetElemInferredTyIdx(fieldID)); } } } else { @@ -1548,7 +1547,7 @@ void CallGraph::BuildSCCDFS(CGNode &caller, uint32 &visitIndex, std::vectorNew(numOfSccs++, &cgalloc); + SCCNode *sccNode = cgAlloc.GetMemPool()->New(numOfSccs++, &cgAlloc); uint32 stackTopId; do { stackTopId = visitStack.back(); @@ -1675,7 +1674,7 @@ AnalysisResult *DoCallGraph::Run(MIRModule *module, ModuleResultMgr *m) { MemPool *memPool = memPoolCtrler.NewMemPool("callgraph mempool"); KlassHierarchy *klassh = static_cast(m->GetAnalysisResult(MoPhase_CHA, module)); CHECK_FATAL(klassh != nullptr, "CHA can't be null"); - CallGraph *cg = memPool->New(module, memPool, klassh, module->GetFileName().c_str()); + CallGraph *cg = memPool->New(*module, *memPool, *klassh, module->GetFileName()); cg->debug_flag = TRACE_PHASE; cg->BuildCallGraph(); m->AddResult(GetPhaseID(), *module, *cg); diff --git a/src/maple_ipa/src/clone.cpp b/src/maple_ipa/src/clone.cpp index 17c1f4f3797bd266612c299f7f7ce49697dd454e..361be9893750d0575bd583c3f94e4b0271db386e 100644 --- a/src/maple_ipa/src/clone.cpp +++ b/src/maple_ipa/src/clone.cpp @@ -122,7 +122,7 @@ MIRFunction *Clone::CloneFunction(MIRFunction &originalFunction, const std::stri newFunc->SetFuncAttrs(originalFunction.GetFuncAttrs()); newFunc->SetBaseClassFuncNames(GlobalTables::GetStrTable().GetOrCreateStrIdxFromName(fullName)); if (originalFunction.GetBody() != nullptr) { - CopyFuncInfo(originalFunction, newFunc); + CopyFuncInfo(originalFunction, *newFunc); MIRFunction *originalCurrFunction = dexBuilder.GetCurrentFunctionNotNull(); dexBuilder.SetCurrentFunction(*newFunc); newFunc->SetBody( @@ -140,10 +140,10 @@ void Clone::CloneArgument(MIRFunction &originalFunction, ArgVector &argument) co } } -void Clone::CopyFuncInfo(const MIRFunction &originalFunction, MIRFunction *newFunc) const { - auto funcNameIdx = newFunc->GetBaseFuncNameStrIdx(); - auto fullNameIdx = newFunc->GetNameStrIdx(); - auto classNameIdx = newFunc->GetBaseClassNameStrIdx(); +void Clone::CopyFuncInfo(const MIRFunction &originalFunction, MIRFunction &newFunc) const { + auto funcNameIdx = newFunc.GetBaseFuncNameStrIdx(); + auto fullNameIdx = newFunc.GetNameStrIdx(); + auto classNameIdx = newFunc.GetBaseClassNameStrIdx(); auto metaFullNameIdx = dexBuilder.GetOrCreateStringIndex(kFullNameStr); auto metaClassNameIdx = dexBuilder.GetOrCreateStringIndex(kClassNameStr); auto metaFuncNameIdx = dexBuilder.GetOrCreateStringIndex(kFuncNameStr); @@ -152,25 +152,25 @@ void Clone::CopyFuncInfo(const MIRFunction &originalFunction, MIRFunction *newFu size_t size = fnInfo.size(); for (size_t i = 0; i < size; ++i) { if (fnInfo[i].first == metaFullNameIdx) { - newFunc->PushbackMIRInfo(std::pair(fnInfo[i].first, fullNameIdx)); + newFunc.PushbackMIRInfo(std::pair(fnInfo[i].first, fullNameIdx)); } else if (fnInfo[i].first == metaFuncNameIdx) { - newFunc->PushbackMIRInfo(std::pair(fnInfo[i].first, funcNameIdx)); + newFunc.PushbackMIRInfo(std::pair(fnInfo[i].first, funcNameIdx)); } else if (fnInfo[i].first == metaClassNameIdx) { - newFunc->PushbackMIRInfo(std::pair(fnInfo[i].first, classNameIdx)); + newFunc.PushbackMIRInfo(std::pair(fnInfo[i].first, classNameIdx)); } else { - newFunc->PushbackMIRInfo(std::pair(fnInfo[i].first, fnInfo[i].second)); + newFunc.PushbackMIRInfo(std::pair(fnInfo[i].first, fnInfo[i].second)); } - newFunc->PushbackIsString(infoIsString[i]); + newFunc.PushbackIsString(infoIsString[i]); } } -void Clone::UpdateFuncInfo(MIRFunction *newFunc) { - auto fullNameIdx = newFunc->GetNameStrIdx(); +void Clone::UpdateFuncInfo(MIRFunction &newFunc) { + auto fullNameIdx = newFunc.GetNameStrIdx(); auto metaFullNameIdx = dexBuilder.GetOrCreateStringIndex(kFullNameStr); - size_t size = newFunc->GetInfoVector().size(); + size_t size = newFunc.GetInfoVector().size(); for (size_t i = 0; i < size; ++i) { - if (newFunc->GetInfoVector()[i].first == metaFullNameIdx) { - newFunc->SetMIRInfoNum(i, fullNameIdx); + if (newFunc.GetInfoVector()[i].first == metaFullNameIdx) { + newFunc.SetMIRInfoNum(i, fullNameIdx); break; } } @@ -206,7 +206,7 @@ MIRFunction *Clone::CloneFunctionNoReturn(MIRFunction &originalFunction) { GlobalTables::GetGsymTable().RemoveFromStringSymbolMap(*funcSt); funcSt->SetNameStrIdx(fullNameStrIdx); GlobalTables::GetGsymTable().AddToStringSymbolMap(*funcSt); - UpdateFuncInfo(newFunction); + UpdateFuncInfo(*newFunction); dexBuilder.GetMirModule().SetCurFunction(originalCurrFunction); return newFunction; } diff --git a/src/maple_me/include/prop.h b/src/maple_me/include/prop.h index 50d07d79950b27bf3cc888139c00411d60d772ea..739ad5f494825abe22f96bbfb189d4944568e6be 100644 --- a/src/maple_me/include/prop.h +++ b/src/maple_me/include/prop.h @@ -67,8 +67,8 @@ class Prop { MeExpr &PropMeExpr(MeExpr &meExpr, bool &isproped, bool atParm); MeExpr *SimplifyMeExpr(OpMeExpr &opMeExpr) const; MeExpr *SimplifyCvtMeExpr(const OpMeExpr &opMeExpr) const; - MeExpr *SimplifyCompareConstWithAddress(OpMeExpr &opMeExpr) const; - MeExpr *SimplifyCompareWithZero(OpMeExpr &opMeExpr) const; + MeExpr *SimplifyCompareConstWithAddress(const OpMeExpr &opMeExpr) const; + MeExpr *SimplifyCompareWithZero(const OpMeExpr &opMeExpr) const; MeExpr *SimplifyCompareMeExpr(OpMeExpr &opMeExpr) const; MeExpr *SimplifyCompareSelectConstMeExpr(const OpMeExpr &opMeExpr, const MeExpr &opMeOpnd0, MeExpr &opnd1, MeExpr &opnd01, MeExpr &opnd02) const; diff --git a/src/maple_me/src/prop.cpp b/src/maple_me/src/prop.cpp index 628262fc274394b119dfc9810206c7f985d4b2a9..7a93528197760a47813bd63a9a43c48960092d3d 100644 --- a/src/maple_me/src/prop.cpp +++ b/src/maple_me/src/prop.cpp @@ -129,7 +129,7 @@ MeExpr *Prop::SimplifyCompareSelectConstMeExpr(const OpMeExpr &opMeExpr, const M return irMap.HashMeExpr(newopMeExpr); } -MeExpr *Prop::SimplifyCompareConstWithAddress(OpMeExpr &opMeExpr) const { +MeExpr *Prop::SimplifyCompareConstWithAddress(const OpMeExpr &opMeExpr) const { MeExpr *opnd0 = opMeExpr.GetOpnd(0); MeExpr *opnd1 = opMeExpr.GetOpnd(1); Opcode opcode = opMeExpr.GetOp(); @@ -152,7 +152,7 @@ MeExpr *Prop::SimplifyCompareConstWithAddress(OpMeExpr &opMeExpr) const { return nullptr; } -MeExpr *Prop::SimplifyCompareWithZero(OpMeExpr &opMeExpr) const { +MeExpr *Prop::SimplifyCompareWithZero(const OpMeExpr &opMeExpr) const { Opcode opcode = opMeExpr.GetOp(); MeExpr *opnd0 = opMeExpr.GetOpnd(0); MeExpr *opnd1 = opMeExpr.GetOpnd(1); diff --git a/src/maple_util/src/profile.cpp b/src/maple_util/src/profile.cpp index 297fe31391833ce98d7d305d571f51c704ccf8c6..6f024ce5d7c695aefed439cc5f5d1146f106146d 100644 --- a/src/maple_util/src/profile.cpp +++ b/src/maple_util/src/profile.cpp @@ -87,7 +87,7 @@ void Profile::ParseLiteral(const char *data, const char *end) { if(data > end) { LogInfo::MapleLogger() << "parse Literal error" << '\n'; } - const std::string str(data,end-data); + const std::string str(data, end - data); std::stringstream ss; ss.str(str); std::string item; diff --git a/src/mpl2mpl/include/constantfold.h b/src/mpl2mpl/include/constantfold.h index 476dd73d7afccfe164cbeba74f609452462be38e..5976ff0f86e8a07eba5ffab5f3711a1384c82494 100644 --- a/src/mpl2mpl/include/constantfold.h +++ b/src/mpl2mpl/include/constantfold.h @@ -45,7 +45,7 @@ class ConstantFold : public FuncOptimizeImpl { void ProcessFunc(MIRFunction *func); virtual ~ConstantFold() = default; - template T CalIntValueFromFloatValue(T value, MIRType &resultType) const; + template T CalIntValueFromFloatValue(T value, const MIRType &resultType) const; MIRConst *FoldFloorMIRConst(const MIRConst&, PrimType, PrimType) const; MIRConst *FoldRoundMIRConst(const MIRConst&, PrimType, PrimType) const; MIRConst *FoldTypeCvtMIRConst(const MIRConst&, PrimType, PrimType) const; diff --git a/src/mpl2mpl/src/constantfold.cpp b/src/mpl2mpl/src/constantfold.cpp index 3d8a4f2b9b05d287630798da2f553b5bca06ec58..bb1b75086f01302040f4802a46b01b7bd9411101 100644 --- a/src/mpl2mpl/src/constantfold.cpp +++ b/src/mpl2mpl/src/constantfold.cpp @@ -1036,7 +1036,7 @@ ConstvalNode *ConstantFold::FoldCeil(const ConstvalNode &cst, PrimType fromType, } template -T ConstantFold::CalIntValueFromFloatValue(T value, MIRType &resultType) const { +T ConstantFold::CalIntValueFromFloatValue(T value, const MIRType &resultType) const { ASSERT(kByteSizeOfBit64 >= resultType.GetSize(), "unsurpported type"); size_t shiftNum = (kByteSizeOfBit64 - resultType.GetSize()) * kBitSizePerByte; int64 max = 0;