Diff
Modified: trunk/Source/WebCore/ChangeLog (245744 => 245745)
--- trunk/Source/WebCore/ChangeLog 2019-05-24 07:54:16 UTC (rev 245744)
+++ trunk/Source/WebCore/ChangeLog 2019-05-24 08:19:07 UTC (rev 245745)
@@ -1,3 +1,26 @@
+2019-05-24 Saam barati <[email protected]>
+
+ [WHLSL] ReadModifyWriteExpression always has a result and new value _expression_
+ https://bugs.webkit.org/show_bug.cgi?id=198079
+
+ Reviewed by Myles Maxfield.
+
+ Let's not pretend it might not.
+
+ * Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
+ (WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression):
+ (WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression):
+ (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression):
+ (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression):
+ * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
+ (WebCore::WHLSL::ASTDumper::visit):
+ * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
+ (WebCore::WHLSL::Checker::visit):
+ * Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
+ (WebCore::WHLSL::PropertyResolver::visit):
+ * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
+ (WebCore::WHLSL::Visitor::visit):
+
2019-05-23 Simon Fraser <[email protected]>
With async overflow scrolling, programmatic scroll to a negative offset fails to clamp the scroll offset
Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h (245744 => 245745)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h 2019-05-24 07:54:16 UTC (rev 245744)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h 2019-05-24 08:19:07 UTC (rev 245745)
@@ -86,13 +86,31 @@
_expression_& leftValue() { return m_leftValue; }
VariableDeclaration& oldValue() { return m_oldValue; }
VariableDeclaration& newValue() { return m_newValue; }
- _expression_* newValueExpression() { return m_newValueExpression ? &*m_newValueExpression : nullptr; }
- _expression_* resultExpression() { return m_resultExpression ? &*m_resultExpression : nullptr; }
+ _expression_& newValueExpression()
+ {
+ ASSERT(m_newValueExpression);
+ return *m_newValueExpression;
+ }
+ _expression_& resultExpression()
+ {
+ ASSERT(m_resultExpression);
+ return *m_resultExpression;
+ }
UniqueRef<_expression_> takeLeftValue() { return WTFMove(m_leftValue); }
UniqueRef<VariableDeclaration> takeOldValue() { return WTFMove(m_oldValue); }
UniqueRef<VariableDeclaration> takeNewValue() { return WTFMove(m_newValue); }
- Optional<UniqueRef<_expression_>> takeNewValueExpression() { return WTFMove(m_newValueExpression); }
- Optional<UniqueRef<_expression_>> takeResultExpression() { return WTFMove(m_resultExpression); }
+ UniqueRef<_expression_> takeNewValueExpression()
+ {
+ auto result = WTFMove(m_newValueExpression.value());
+ m_newValueExpression.reset();
+ return result;
+ }
+ UniqueRef<_expression_> takeResultExpression()
+ {
+ auto result = WTFMove(m_resultExpression.value());
+ m_resultExpression.reset();
+ return result;
+ }
private:
template<class U, class... Args> friend UniqueRef<U> WTF::makeUniqueRef(Args&&...);
Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLASTDumper.cpp (245744 => 245745)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLASTDumper.cpp 2019-05-24 07:54:16 UTC (rev 245744)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLASTDumper.cpp 2019-05-24 08:19:07 UTC (rev 245745)
@@ -625,7 +625,7 @@
visit(newVariable.get());
m_out.print(" = ");
- visit(*readModifyWriteExpression.newValueExpression());
+ visit(readModifyWriteExpression.newValueExpression());
m_out.print(", ");
visit(readModifyWriteExpression.leftValue());
@@ -633,7 +633,7 @@
visit(newVariable.get());
m_out.print(", ");
- visit(*readModifyWriteExpression.resultExpression());
+ visit(readModifyWriteExpression.resultExpression());
m_out.print(")");
}
Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLChecker.cpp (245744 => 245745)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLChecker.cpp 2019-05-24 07:54:16 UTC (rev 245744)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLChecker.cpp 2019-05-24 08:19:07 UTC (rev 245745)
@@ -847,7 +847,7 @@
// FIXME: https://bugs.webkit.org/show_bug.cgi?id=198166 Figure out what to do with the ReadModifyWriteExpression's AnonymousVariables.
- auto newValueInfo = recurseAndGetInfo(*readModifyWriteExpression.newValueExpression());
+ auto newValueInfo = recurseAndGetInfo(readModifyWriteExpression.newValueExpression());
if (!newValueInfo)
return;
@@ -856,7 +856,7 @@
return;
}
- auto resultInfo = recurseAndGetInfo(*readModifyWriteExpression.resultExpression());
+ auto resultInfo = recurseAndGetInfo(readModifyWriteExpression.resultExpression());
if (!resultInfo)
return;
Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp (245744 => 245745)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp 2019-05-24 07:54:16 UTC (rev 245744)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp 2019-05-24 08:19:07 UTC (rev 245745)
@@ -474,8 +474,7 @@
variableReference->setTypeAnnotation(AST::LeftValue { AST::AddressSpace::Thread }); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198169 Is this right?
auto newValueExpression = readModifyWriteExpression.takeNewValueExpression();
- ASSERT(newValueExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Relax this constraint.
- auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.origin()), WTFMove(variableReference), WTFMove(*newValueExpression));
+ auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.origin()), WTFMove(variableReference), WTFMove(newValueExpression));
assignmentExpression->setType(baseType->clone());
assignmentExpression->setTypeAnnotation(AST::RightValue());
@@ -503,9 +502,8 @@
}
auto resultExpression = readModifyWriteExpression.takeResultExpression();
- ASSERT(resultExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Be resilient to this being null.
- auto type = (*resultExpression)->resolvedType().clone();
- expressions.append(WTFMove(*resultExpression));
+ auto type = resultExpression->resolvedType().clone();
+ expressions.append(WTFMove(resultExpression));
UniqueRef<AST::VariableDeclaration> oldVariableDeclaration = readModifyWriteExpression.takeOldValue();
UniqueRef<AST::VariableDeclaration> newVariableDeclaration = readModifyWriteExpression.takeNewValue();
@@ -549,8 +547,7 @@
variableReference->setTypeAnnotation(AST::LeftValue { AST::AddressSpace::Thread }); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198169 Is this right?
auto newValueExpression = readModifyWriteExpression.takeNewValueExpression();
- ASSERT(newValueExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Relax this constraint
- auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.leftValue().origin()), WTFMove(variableReference), WTFMove(*newValueExpression));
+ auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.leftValue().origin()), WTFMove(variableReference), WTFMove(newValueExpression));
assignmentExpression->setType(readModifyWriteExpression.leftValue().resolvedType().clone());
assignmentExpression->setTypeAnnotation(AST::RightValue());
@@ -567,9 +564,8 @@
simplifyLeftValue(modifyResult->innerLeftValue);
auto resultExpression = readModifyWriteExpression.takeResultExpression();
- ASSERT(resultExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Be resilient to this being null.
- auto type = (*resultExpression)->resolvedType().clone();
- modifyResult->expressions.append(WTFMove(*resultExpression));
+ auto type = resultExpression->resolvedType().clone();
+ modifyResult->expressions.append(WTFMove(resultExpression));
UniqueRef<AST::VariableDeclaration> oldVariableDeclaration = readModifyWriteExpression.takeOldValue();
UniqueRef<AST::VariableDeclaration> newVariableDeclaration = readModifyWriteExpression.takeNewValue();
Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp (245744 => 245745)
--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp 2019-05-24 07:54:16 UTC (rev 245744)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp 2019-05-24 08:19:07 UTC (rev 245745)
@@ -536,10 +536,8 @@
checkErrorAndVisit(readModifyWriteExpression.leftValue());
checkErrorAndVisit(readModifyWriteExpression.oldValue());
checkErrorAndVisit(readModifyWriteExpression.newValue());
- if (readModifyWriteExpression.newValueExpression())
- checkErrorAndVisit(*readModifyWriteExpression.newValueExpression());
- if (readModifyWriteExpression.resultExpression())
- checkErrorAndVisit(*readModifyWriteExpression.resultExpression());
+ checkErrorAndVisit(readModifyWriteExpression.newValueExpression());
+ checkErrorAndVisit(readModifyWriteExpression.resultExpression());
}
void Visitor::visit(AST::TernaryExpression& ternaryExpression)