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
{
error(storageQualifier.getLine(),
"Local variables can only use the const storage qualifier.",
storageQualifier.getQualifierString().c_str());
storageQualifier.getQualifierString());
}
}
}
......
......@@ -9,6 +9,7 @@
#include "common/angleutils.h"
#include "compiler/translator/BaseTypes.h"
#include "compiler/translator/ImmutableString.h"
#include "compiler/translator/Types.h"
namespace sh
......@@ -37,7 +38,7 @@ class TQualifierWrapperBase : angle::NonCopyable
TQualifierWrapperBase(const TSourceLoc &line) : mLine(line) {}
virtual ~TQualifierWrapperBase(){};
virtual TQualifierType getType() const = 0;
virtual TString getQualifierString() const = 0;
virtual ImmutableString getQualifierString() const = 0;
virtual unsigned int getRank() const = 0;
const TSourceLoc &getLine() const { return mLine; }
private:
......@@ -50,9 +51,9 @@ class TInvariantQualifierWrapper final : public TQualifierWrapperBase
TInvariantQualifierWrapper(const TSourceLoc &line) : TQualifierWrapperBase(line) {}
~TInvariantQualifierWrapper() {}
TQualifierType getType() const { return QtInvariant; }
TString getQualifierString() const { return "invariant"; }
unsigned int getRank() const;
TQualifierType getType() const override { return QtInvariant; }
ImmutableString getQualifierString() const override { return ImmutableString("invariant"); }
unsigned int getRank() const override;
};
class TInterpolationQualifierWrapper final : public TQualifierWrapperBase
......@@ -64,10 +65,13 @@ class TInterpolationQualifierWrapper final : public TQualifierWrapperBase
}
~TInterpolationQualifierWrapper() {}
TQualifierType getType() const { return QtInterpolation; }
TString getQualifierString() const { return sh::getQualifierString(mInterpolationQualifier); }
TQualifierType getType() const override { return QtInterpolation; }
ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getQualifierString(mInterpolationQualifier));
}
TQualifier getQualifier() const { return mInterpolationQualifier; }
unsigned int getRank() const;
unsigned int getRank() const override;
private:
TQualifier mInterpolationQualifier;
......@@ -82,10 +86,10 @@ class TLayoutQualifierWrapper final : public TQualifierWrapperBase
}
~TLayoutQualifierWrapper() {}
TQualifierType getType() const { return QtLayout; }
TString getQualifierString() const { return "layout"; }
TQualifierType getType() const override { return QtLayout; }
ImmutableString getQualifierString() const override { return ImmutableString("layout"); }
const TLayoutQualifier &getQualifier() const { return mLayoutQualifier; }
unsigned int getRank() const;
unsigned int getRank() const override;
private:
TLayoutQualifier mLayoutQualifier;
......@@ -100,10 +104,13 @@ class TStorageQualifierWrapper final : public TQualifierWrapperBase
}
~TStorageQualifierWrapper() {}
TQualifierType getType() const { return QtStorage; }
TString getQualifierString() const { return sh::getQualifierString(mStorageQualifier); }
TQualifierType getType() const override { return QtStorage; }
ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getQualifierString(mStorageQualifier));
}
TQualifier getQualifier() const { return mStorageQualifier; }
unsigned int getRank() const;
unsigned int getRank() const override;
private:
TQualifier mStorageQualifier;
......@@ -118,10 +125,13 @@ class TPrecisionQualifierWrapper final : public TQualifierWrapperBase
}
~TPrecisionQualifierWrapper() {}
TQualifierType getType() const { return QtPrecision; }
TString getQualifierString() const { return sh::getPrecisionString(mPrecisionQualifier); }
TQualifierType getType() const override { return QtPrecision; }
ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getPrecisionString(mPrecisionQualifier));
}
TPrecision getQualifier() const { return mPrecisionQualifier; }
unsigned int getRank() const;
unsigned int getRank() const override;
private:
TPrecision mPrecisionQualifier;
......@@ -136,10 +146,13 @@ class TMemoryQualifierWrapper final : public TQualifierWrapperBase
}
~TMemoryQualifierWrapper() {}
TQualifierType getType() const { return QtMemory; }
TString getQualifierString() const { return sh::getQualifierString(mMemoryQualifier); }
TQualifierType getType() const override { return QtMemory; }
ImmutableString getQualifierString() const override
{
return ImmutableString(sh::getQualifierString(mMemoryQualifier));
}
TQualifier getQualifier() const { return mMemoryQualifier; }
unsigned int getRank() const;
unsigned int getRank() const override;
private:
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