aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/SkSLParser.cpp
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-04-20 19:31:52 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-20 23:57:21 +0000
commitcb67096b61f699b047fe8635984db1ac708a7b99 (patch)
tree3a8bda0962ad77d0d9ccb1d89c15f70578a7fe78 /src/sksl/SkSLParser.cpp
parente79b473714866682dea85b66c005c5bb2ff6a397 (diff)
Improved skslc optimizer, particularly around vectors.
BUG=skia: Change-Id: Idb364d9198f2ff84aad1eb68e236fb45ec1c86b7 Reviewed-on: https://skia-review.googlesource.com/8000 Commit-Queue: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Diffstat (limited to 'src/sksl/SkSLParser.cpp')
-rw-r--r--src/sksl/SkSLParser.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/sksl/SkSLParser.cpp b/src/sksl/SkSLParser.cpp
index 0f2b943a9d..ae9d990d86 100644
--- a/src/sksl/SkSLParser.cpp
+++ b/src/sksl/SkSLParser.cpp
@@ -309,7 +309,7 @@ std::unique_ptr<ASTDeclaration> Parser::declaration() {
if (!this->expect(Token::IDENTIFIER, "an identifier", &name)) {
return nullptr;
}
- if (!modifiers.fFlags && this->peek().fKind == Token::LPAREN) {
+ if (this->peek().fKind == Token::LPAREN) {
this->nextToken();
std::vector<std::unique_ptr<ASTParameter>> parameters;
while (this->peek().fKind != Token::RPAREN) {
@@ -334,7 +334,9 @@ std::unique_ptr<ASTDeclaration> Parser::declaration() {
return nullptr;
}
}
- return std::unique_ptr<ASTDeclaration>(new ASTFunction(name.fPosition, std::move(type),
+ return std::unique_ptr<ASTDeclaration>(new ASTFunction(name.fPosition,
+ modifiers,
+ std::move(type),
std::move(name.fText),
std::move(parameters),
std::move(body)));
@@ -721,6 +723,10 @@ Modifiers Parser::modifiers() {
this->nextToken();
flags |= Modifiers::kRestrict_Flag;
break;
+ case Token::HASSIDEEFFECTS:
+ this->nextToken();
+ flags |= Modifiers::kHasSideEffects_Flag;
+ break;
default:
return Modifiers(layout, flags);
}