diff options
Diffstat (limited to 'src/sksl/ir/SkSLVariableReference.h')
-rw-r--r-- | src/sksl/ir/SkSLVariableReference.h | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/src/sksl/ir/SkSLVariableReference.h b/src/sksl/ir/SkSLVariableReference.h index 75b7f3dcd4..fecb04e2e5 100644 --- a/src/sksl/ir/SkSLVariableReference.h +++ b/src/sksl/ir/SkSLVariableReference.h @@ -38,7 +38,7 @@ struct VariableReference : public Expression { } } - ~VariableReference() override { + virtual ~VariableReference() override { if (fRefKind != kWrite_RefKind) { fVariable.fReadCount--; } @@ -64,19 +64,13 @@ struct VariableReference : public Expression { fRefKind = refKind; } - bool hasSideEffects() const override { - return false; - } - SkString description() const override { return fVariable.fName; } - std::unique_ptr<Expression> constantPropagate(const IRGenerator& irGenerator, - const DefinitionMap& definitions) override { - if (fRefKind != kRead_RefKind) { - return nullptr; - } + virtual std::unique_ptr<Expression> constantPropagate( + const IRGenerator& irGenerator, + const DefinitionMap& definitions) override { auto exprIter = definitions.find(&fVariable); if (exprIter != definitions.end() && exprIter->second) { const Expression* expr = exprIter->second->get(); @@ -91,11 +85,6 @@ struct VariableReference : public Expression { irGenerator.fContext, Position(), ((FloatLiteral*) expr)->fValue)); - case Expression::kBoolLiteral_Kind: - return std::unique_ptr<Expression>(new BoolLiteral( - irGenerator.fContext, - Position(), - ((BoolLiteral*) expr)->fValue)); default: break; } @@ -104,9 +93,10 @@ struct VariableReference : public Expression { } const Variable& fVariable; - RefKind fRefKind; private: + RefKind fRefKind; + typedef Expression INHERITED; }; |