Bug 1784812 - Make all JSONWriteFunc-derived classes and their overriden methods final - r=canaltinova

All JSONWriteFuncs are effectively final, this patch enforces that, hopefully
helping the compiler to de-virtualize some calls.

Differential Revision: https://phabricator.services.mozilla.com/D154619
This commit is contained in:
Gerald Squelart 2022-08-17 07:07:54 +00:00
Родитель 4326b92ea7
Коммит 42904cee2c
8 изменённых файлов: 15 добавлений и 15 удалений

Просмотреть файл

@ -152,7 +152,7 @@ class TempFileWriter final : public mozilla::JSONWriteFunc {
explicit operator bool() const { return !mFailed; }
void Write(const mozilla::Span<const char>& aStr) override {
void Write(const mozilla::Span<const char>& aStr) final {
if (mFailed) {
return;
}

Просмотреть файл

@ -32,7 +32,7 @@ using namespace mozilla::dmd;
DMDFuncs::Singleton DMDFuncs::sSingleton;
class FpWriteFunc : public mozilla::JSONWriteFunc {
class FpWriteFunc final : public mozilla::JSONWriteFunc {
public:
explicit FpWriteFunc(const char* aFilename) {
mFp = fopen(aFilename, "w");
@ -45,7 +45,7 @@ class FpWriteFunc : public mozilla::JSONWriteFunc {
~FpWriteFunc() { fclose(mFp); }
void Write(const mozilla::Span<const char>& aStr) override {
void Write(const mozilla::Span<const char>& aStr) final {
for (const char c : aStr) {
fputc(c, mFp);
}

Просмотреть файл

@ -18,10 +18,10 @@ using mozilla::MakeUnique;
using mozilla::Span;
// This writes all the output into a big buffer.
struct StringWriteFunc : public JSONWriteFunc {
struct StringWriteFunc final : public JSONWriteFunc {
std::string mString;
void Write(const mozilla::Span<const char>& aStr) override {
void Write(const mozilla::Span<const char>& aStr) final {
mString.append(aStr.data(), aStr.size());
}
};

Просмотреть файл

@ -52,7 +52,7 @@ class ChunkedJSONWriteFunc final : public JSONWriteFunc {
return totalLen;
}
void Write(const Span<const char>& aStr) override {
void Write(const Span<const char>& aStr) final {
MOZ_ASSERT(mChunkPtr >= mChunkList.back().get() && mChunkPtr <= mChunkEnd);
MOZ_ASSERT(mChunkEnd >= mChunkList.back().get() + mChunkLengths.back());
MOZ_ASSERT(*mChunkPtr == '\0');
@ -151,7 +151,7 @@ class ChunkedJSONWriteFunc final : public JSONWriteFunc {
struct OStreamJSONWriteFunc final : public JSONWriteFunc {
explicit OStreamJSONWriteFunc(std::ostream& aStream) : mStream(aStream) {}
void Write(const Span<const char>& aStr) override {
void Write(const Span<const char>& aStr) final {
std::string_view sv(aStr.data(), aStr.size());
mStream << sv;
}

Просмотреть файл

@ -1146,10 +1146,10 @@ void TestLEB128() {
printf("TestLEB128 done\n");
}
struct StringWriteFunc : public JSONWriteFunc {
struct StringWriteFunc final : public JSONWriteFunc {
std::string mString;
void Write(const mozilla::Span<const char>& aStr) override {
void Write(const mozilla::Span<const char>& aStr) final {
mString.append(aStr.data(), aStr.size());
}
};

Просмотреть файл

@ -3094,11 +3094,11 @@ static nsresult SelectProfile(nsToolkitProfileService* aProfileSvc,
}
#ifdef MOZ_BLOCK_PROFILE_DOWNGRADE
struct FileWriteFunc : public JSONWriteFunc {
struct FileWriteFunc final : public JSONWriteFunc {
FILE* mFile;
explicit FileWriteFunc(FILE* aFile) : mFile(aFile) {}
void Write(const Span<const char>& aStr) override {
void Write(const Span<const char>& aStr) final {
fprintf(mFile, "%.*s", int(aStr.size()), aStr.data());
}
};

Просмотреть файл

@ -24,7 +24,7 @@ class JSONStringWriteFunc final : public JSONWriteFunc {
public:
JSONStringWriteFunc() = default;
void Write(const Span<const char>& aStr) override { mString.Append(aStr); }
void Write(const Span<const char>& aStr) final { mString.Append(aStr); }
const StringType& StringCRef() const { return mString; }
@ -39,7 +39,7 @@ class JSONStringRefWriteFunc final : public JSONWriteFunc {
public:
MOZ_IMPLICIT JSONStringRefWriteFunc(nsACString& aString) : mString(aString) {}
void Write(const Span<const char>& aStr) override { mString.Append(aStr); }
void Write(const Span<const char>& aStr) final { mString.Append(aStr); }
const nsACString& StringCRef() const { return mString; }

Просмотреть файл

@ -385,11 +385,11 @@ static void MakeFilename(const char* aPrefix, const nsAString& aIdentifier,
// the following two problems:
// - It provides a JSONWriterFunc::Write() that calls nsGZFileWriter::Write().
// - It can be stored as a UniquePtr, whereas nsGZFileWriter is refcounted.
class GZWriterWrapper : public JSONWriteFunc {
class GZWriterWrapper final : public JSONWriteFunc {
public:
explicit GZWriterWrapper(nsGZFileWriter* aGZWriter) : mGZWriter(aGZWriter) {}
void Write(const Span<const char>& aStr) override {
void Write(const Span<const char>& aStr) final {
// Ignore any failure because JSONWriteFunc doesn't have a mechanism for
// handling errors.
Unused << mGZWriter->Write(aStr.data(), aStr.size());