зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
4326b92ea7
Коммит
42904cee2c
|
@ -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());
|
||||
|
|
Загрузка…
Ссылка в новой задаче