From: Bill Wendling Date: Tue, 7 Feb 2012 01:48:12 +0000 (+0000) Subject: Cache the sizes of vectors instead of calculating them all over the place. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=c5de7fea7b71b2b78f761512dc489c804ec6c18c Cache the sizes of vectors instead of calculating them all over the place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149954 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp index 14a5aae70f8..5cdddb36ee3 100644 --- a/lib/VMCore/Type.cpp +++ b/lib/VMCore/Type.cpp @@ -391,10 +391,11 @@ FunctionType::FunctionType(Type *Result, ArrayRef Params, FunctionType *FunctionType::get(Type *ReturnType, ArrayRef Params, bool isVarArg) { // TODO: This is brutally slow. + unsigned ParamsSize = Params.size(); std::vector Key; - Key.reserve(Params.size()+2); + Key.reserve(ParamsSize + 2); Key.push_back(const_cast(ReturnType)); - for (unsigned i = 0, e = Params.size(); i != e; ++i) + for (unsigned i = 0, e = ParamsSize; i != e; ++i) Key.push_back(const_cast(Params[i])); if (isVarArg) Key.push_back(0); @@ -404,7 +405,7 @@ FunctionType *FunctionType::get(Type *ReturnType, if (FT == 0) { FT = (FunctionType*) pImpl->TypeAllocator. - Allocate(sizeof(FunctionType) + sizeof(Type*)*(Params.size()+1), + Allocate(sizeof(FunctionType) + sizeof(Type*) * (ParamsSize + 1), AlignOf::Alignment); new (FT) FunctionType(ReturnType, Params, isVarArg); } @@ -466,13 +467,13 @@ void StructType::setBody(ArrayRef Elements, bool isPacked) { setSubclassData(getSubclassData() | SCDB_HasBody); if (isPacked) setSubclassData(getSubclassData() | SCDB_Packed); - - Type **Elts = getContext().pImpl-> - TypeAllocator.Allocate(Elements.size()); - memcpy(Elts, Elements.data(), sizeof(Elements[0])*Elements.size()); + + unsigned NumElements = Elements.size(); + Type **Elts = getContext().pImpl->TypeAllocator.Allocate(NumElements); + memcpy(Elts, Elements.data(), sizeof(Elements[0]) * NumElements); ContainedTys = Elts; - NumContainedTys = Elements.size(); + NumContainedTys = NumElements; } void StructType::setName(StringRef Name) { @@ -497,9 +498,10 @@ void StructType::setName(StringRef Name) { SmallString<64> TempStr(Name); TempStr.push_back('.'); raw_svector_ostream TmpStream(TempStr); + unsigned NameSize = Name.size(); do { - TempStr.resize(Name.size()+1); + TempStr.resize(NameSize + 1); TmpStream.resync(); TmpStream << getContext().pImpl->NamedStructTypesUniqueID++;