Commit 1a3bbaa8 by Olli Etuaho Committed by Commit Bot

Use ImmutableString instead of TString in QualifierTypes

This avoids unnecessary pool allocations when generating errors. Most of the returned strings are static. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ia9b26898d499985d61e629fddde7aded4714eddf Reviewed-on: https://chromium-review.googlesource.com/885818Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
parent e033999e
...@@ -2294,7 +2294,7 @@ void TParseContext::checkLocalVariableConstStorageQualifier(const TQualifierWrap ...@@ -2294,7 +2294,7 @@ void TParseContext::checkLocalVariableConstStorageQualifier(const TQualifierWrap
{ {
error(storageQualifier.getLine(), error(storageQualifier.getLine(),
"Local variables can only use the const storage qualifier.", "Local variables can only use the const storage qualifier.",
storageQualifier.getQualifierString().c_str()); storageQualifier.getQualifierString());
} }
} }
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "common/angleutils.h" #include "common/angleutils.h"
#include "compiler/translator/BaseTypes.h" #include "compiler/translator/BaseTypes.h"
#include "compiler/translator/ImmutableString.h"
#include "compiler/translator/Types.h" #include "compiler/translator/Types.h"
namespace sh namespace sh
...@@ -37,7 +38,7 @@ class TQualifierWrapperBase : angle::NonCopyable ...@@ -37,7 +38,7 @@ class TQualifierWrapperBase : angle::NonCopyable
TQualifierWrapperBase(const TSourceLoc &line) : mLine(line) {} TQualifierWrapperBase(const TSourceLoc &line) : mLine(line) {}
virtual ~TQualifierWrapperBase(){}; virtual ~TQualifierWrapperBase(){};
virtual TQualifierType getType() const = 0; virtual TQualifierType getType() const = 0;
virtual TString getQualifierString() const = 0; virtual ImmutableString getQualifierString() const = 0;
virtual unsigned int getRank() const = 0; virtual unsigned int getRank() const = 0;
const TSourceLoc &getLine() const { return mLine; } const TSourceLoc &getLine() const { return mLine; }
private: private:
...@@ -50,9 +51,9 @@ class TInvariantQualifierWrapper final : public TQualifierWrapperBase ...@@ -50,9 +51,9 @@ class TInvariantQualifierWrapper final : public TQualifierWrapperBase
TInvariantQualifierWrapper(const TSourceLoc &line) : TQualifierWrapperBase(line) {} TInvariantQualifierWrapper(const TSourceLoc &line) : TQualifierWrapperBase(line) {}
~TInvariantQualifierWrapper() {} ~TInvariantQualifierWrapper() {}
TQualifierType getType() const { return QtInvariant; } TQualifierType getType() const override { return QtInvariant; }
TString getQualifierString() const { return "invariant"; } ImmutableString getQualifierString() const override { return ImmutableString("invariant"); }
unsigned int getRank() const; unsigned int getRank() const override;
}; };
class TInterpolationQualifierWrapper final : public TQualifierWrapperBase class TInterpolationQualifierWrapper final : public TQualifierWrapperBase
...@@ -64,10 +65,13 @@ class TInterpolationQualifierWrapper final : public TQualifierWrapperBase ...@@ -64,10 +65,13 @@ class TInterpolationQualifierWrapper final : public TQualifierWrapperBase
} }
~TInterpolationQualifierWrapper() {} ~TInterpolationQualifierWrapper() {}
TQualifierType getType() const { return QtInterpolation; } TQualifierType getType() const override { return QtInterpolation; }
TString getQualifierString() const { return sh::getQualifierString(mInterpolationQualifier); } ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getQualifierString(mInterpolationQualifier));
}
TQualifier getQualifier() const { return mInterpolationQualifier; } TQualifier getQualifier() const { return mInterpolationQualifier; }
unsigned int getRank() const; unsigned int getRank() const override;
private: private:
TQualifier mInterpolationQualifier; TQualifier mInterpolationQualifier;
...@@ -82,10 +86,10 @@ class TLayoutQualifierWrapper final : public TQualifierWrapperBase ...@@ -82,10 +86,10 @@ class TLayoutQualifierWrapper final : public TQualifierWrapperBase
} }
~TLayoutQualifierWrapper() {} ~TLayoutQualifierWrapper() {}
TQualifierType getType() const { return QtLayout; } TQualifierType getType() const override { return QtLayout; }
TString getQualifierString() const { return "layout"; } ImmutableString getQualifierString() const override { return ImmutableString("layout"); }
const TLayoutQualifier &getQualifier() const { return mLayoutQualifier; } const TLayoutQualifier &getQualifier() const { return mLayoutQualifier; }
unsigned int getRank() const; unsigned int getRank() const override;
private: private:
TLayoutQualifier mLayoutQualifier; TLayoutQualifier mLayoutQualifier;
...@@ -100,10 +104,13 @@ class TStorageQualifierWrapper final : public TQualifierWrapperBase ...@@ -100,10 +104,13 @@ class TStorageQualifierWrapper final : public TQualifierWrapperBase
} }
~TStorageQualifierWrapper() {} ~TStorageQualifierWrapper() {}
TQualifierType getType() const { return QtStorage; } TQualifierType getType() const override { return QtStorage; }
TString getQualifierString() const { return sh::getQualifierString(mStorageQualifier); } ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getQualifierString(mStorageQualifier));
}
TQualifier getQualifier() const { return mStorageQualifier; } TQualifier getQualifier() const { return mStorageQualifier; }
unsigned int getRank() const; unsigned int getRank() const override;
private: private:
TQualifier mStorageQualifier; TQualifier mStorageQualifier;
...@@ -118,10 +125,13 @@ class TPrecisionQualifierWrapper final : public TQualifierWrapperBase ...@@ -118,10 +125,13 @@ class TPrecisionQualifierWrapper final : public TQualifierWrapperBase
} }
~TPrecisionQualifierWrapper() {} ~TPrecisionQualifierWrapper() {}
TQualifierType getType() const { return QtPrecision; } TQualifierType getType() const override { return QtPrecision; }
TString getQualifierString() const { return sh::getPrecisionString(mPrecisionQualifier); } ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getPrecisionString(mPrecisionQualifier));
}
TPrecision getQualifier() const { return mPrecisionQualifier; } TPrecision getQualifier() const { return mPrecisionQualifier; }
unsigned int getRank() const; unsigned int getRank() const override;
private: private:
TPrecision mPrecisionQualifier; TPrecision mPrecisionQualifier;
...@@ -136,10 +146,13 @@ class TMemoryQualifierWrapper final : public TQualifierWrapperBase ...@@ -136,10 +146,13 @@ class TMemoryQualifierWrapper final : public TQualifierWrapperBase
} }
~TMemoryQualifierWrapper() {} ~TMemoryQualifierWrapper() {}
TQualifierType getType() const { return QtMemory; } TQualifierType getType() const override { return QtMemory; }
TString getQualifierString() const { return sh::getQualifierString(mMemoryQualifier); } ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getQualifierString(mMemoryQualifier));
}
TQualifier getQualifier() const { return mMemoryQualifier; } TQualifier getQualifier() const { return mMemoryQualifier; }
unsigned int getRank() const; unsigned int getRank() const override;
private: private:
TQualifier mMemoryQualifier; TQualifier mMemoryQualifier;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment