Use perfect forwarding in createT of SkSmallAllocator.

This allows createT statements to be written in a clearer style.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2482683002

Review-Url: https://codereview.chromium.org/2482683002
This commit is contained in:
herb 2016-11-06 21:07:02 -08:00 committed by Commit bot
parent f98b730af0
commit ad512797c9
4 changed files with 9 additions and 12 deletions

View File

@ -12,6 +12,7 @@
#include "SkTypes.h" #include "SkTypes.h"
#include <new> #include <new>
#include <utility>
/* /*
* Template class for allocating small objects without additional heap memory * Template class for allocating small objects without additional heap memory
@ -56,12 +57,12 @@ public:
* will be returned. * will be returned.
*/ */
template<typename T, typename... Args> template<typename T, typename... Args>
T* createT(const Args&... args) { T* createT(Args&&... args) {
void* buf = this->reserveT<T>(); void* buf = this->reserveT<T>();
if (nullptr == buf) { if (nullptr == buf) {
return nullptr; return nullptr;
} }
return new (buf) T(args...); return new (buf) T(std::forward<Args>(args)...);
} }
/* /*
@ -130,8 +131,7 @@ private:
} }
alignas(16) char fStorage[kTotalBytes]; alignas(16) char fStorage[kTotalBytes];
// Number of bytes used so far. size_t fStorageUsed; // Number of bytes used so far.
size_t fStorageUsed;
uint32_t fNumObjects; uint32_t fNumObjects;
Rec fRecs[kMaxObjects]; Rec fRecs[kMaxObjects];
}; };

View File

@ -2073,8 +2073,7 @@ SkBlitter* CreateASTCBlitter(int width, int height, void* outputBuffer,
} }
return allocator->createT< return allocator->createT<
SkTCompressedAlphaBlitter<12, 16, CompressorASTC>, int, int, void* > SkTCompressedAlphaBlitter<12, 16, CompressorASTC>>(width, height, outputBuffer);
(width, height, outputBuffer);
} }
void DecompressASTC(uint8_t* dst, int dstRowBytes, const uint8_t* src, void DecompressASTC(uint8_t* dst, int dstRowBytes, const uint8_t* src,

View File

@ -498,8 +498,7 @@ SkBlitter* CreateLATCBlitter(int width, int height, void* outputBuffer,
sk_bzero(outputBuffer, width * height / 2); sk_bzero(outputBuffer, width * height / 2);
return allocator->createT< return allocator->createT<
SkTCompressedAlphaBlitter<4, 8, CompressorLATC>, int, int, void* > SkTCompressedAlphaBlitter<4, 8, CompressorLATC>>(width, height, outputBuffer);
(width, height, outputBuffer);
#elif COMPRESS_LATC_SLOW #elif COMPRESS_LATC_SLOW
// TODO (krajcevski) // TODO (krajcevski)
return nullptr; return nullptr;

View File

@ -653,8 +653,7 @@ SkBlitter* CreateR11EACBlitter(int width, int height, void* outputBuffer,
} }
return allocator->createT< return allocator->createT<
SkTCompressedAlphaBlitter<4, 8, CompressorR11EAC>, int, int, void*> SkTCompressedAlphaBlitter<4, 8, CompressorR11EAC>>(width, height, outputBuffer);
(width, height, outputBuffer);
} }
void DecompressR11EAC(uint8_t* dst, int dstRowBytes, const uint8_t* src, int width, int height) { void DecompressR11EAC(uint8_t* dst, int dstRowBytes, const uint8_t* src, int width, int height) {