Title: [245745] trunk/Source/WebCore
Revision
245745
Author
[email protected]
Date
2019-05-24 01:19:07 -0700 (Fri, 24 May 2019)

Log Message

[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):

Modified Paths

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)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to