⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 245745 in webkit


Ignore:
Timestamp:
May 24, 2019, 1:19:07 AM (7 years ago)
Author:
sbarati@apple.com
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):

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r245742 r245745  
     12019-05-24  Saam barati  <sbarati@apple.com>
     2
     3        [WHLSL] ReadModifyWriteExpression always has a result and new value expression
     4        https://bugs.webkit.org/show_bug.cgi?id=198079
     5
     6        Reviewed by Myles Maxfield.
     7
     8        Let's not pretend it might not.
     9
     10        * Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
     11        (WebCore::WHLSL::AST::ReadModifyWriteExpression::newValueExpression):
     12        (WebCore::WHLSL::AST::ReadModifyWriteExpression::resultExpression):
     13        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeNewValueExpression):
     14        (WebCore::WHLSL::AST::ReadModifyWriteExpression::takeResultExpression):
     15        * Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
     16        (WebCore::WHLSL::ASTDumper::visit):
     17        * Modules/webgpu/WHLSL/WHLSLChecker.cpp:
     18        (WebCore::WHLSL::Checker::visit):
     19        * Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
     20        (WebCore::WHLSL::PropertyResolver::visit):
     21        * Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
     22        (WebCore::WHLSL::Visitor::visit):
     23
    1242019-05-23  Simon Fraser  <simon.fraser@apple.com>
    225
  • trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h

    r245680 r245745  
    8787    VariableDeclaration& oldValue() { return m_oldValue; }
    8888    VariableDeclaration& newValue() { return m_newValue; }
    89     Expression* newValueExpression() { return m_newValueExpression ? &*m_newValueExpression : nullptr; }
    90     Expression* resultExpression() { return m_resultExpression ? &*m_resultExpression : nullptr; }
     89    Expression& newValueExpression()
     90    {
     91        ASSERT(m_newValueExpression);
     92        return *m_newValueExpression;
     93    }
     94    Expression& resultExpression()
     95    {
     96        ASSERT(m_resultExpression);
     97        return *m_resultExpression;
     98    }
    9199    UniqueRef<Expression> takeLeftValue() { return WTFMove(m_leftValue); }
    92100    UniqueRef<VariableDeclaration> takeOldValue() { return WTFMove(m_oldValue); }
    93101    UniqueRef<VariableDeclaration> takeNewValue() { return WTFMove(m_newValue); }
    94     Optional<UniqueRef<Expression>> takeNewValueExpression() { return WTFMove(m_newValueExpression); }
    95     Optional<UniqueRef<Expression>> takeResultExpression() { return WTFMove(m_resultExpression); }
     102    UniqueRef<Expression> takeNewValueExpression()
     103    {
     104        auto result = WTFMove(m_newValueExpression.value());
     105        m_newValueExpression.reset();
     106        return result;
     107    }
     108    UniqueRef<Expression> takeResultExpression()
     109    {
     110        auto result = WTFMove(m_resultExpression.value());
     111        m_resultExpression.reset();
     112        return result;
     113    }
    96114
    97115private:
  • trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLASTDumper.cpp

    r245727 r245745  
    626626    visit(newVariable.get());
    627627    m_out.print(" = ");
    628     visit(*readModifyWriteExpression.newValueExpression());
     628    visit(readModifyWriteExpression.newValueExpression());
    629629    m_out.print(", ");
    630630
     
    634634    m_out.print(", ");
    635635
    636     visit(*readModifyWriteExpression.resultExpression());
     636    visit(readModifyWriteExpression.resultExpression());
    637637    m_out.print(")");
    638638}
  • trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLChecker.cpp

    r245680 r245745  
    848848    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198166 Figure out what to do with the ReadModifyWriteExpression's AnonymousVariables.
    849849
    850     auto newValueInfo = recurseAndGetInfo(*readModifyWriteExpression.newValueExpression());
     850    auto newValueInfo = recurseAndGetInfo(readModifyWriteExpression.newValueExpression());
    851851    if (!newValueInfo)
    852852        return;
     
    857857    }
    858858
    859     auto resultInfo = recurseAndGetInfo(*readModifyWriteExpression.resultExpression());
     859    auto resultInfo = recurseAndGetInfo(readModifyWriteExpression.resultExpression());
    860860    if (!resultInfo)
    861861        return;
  • trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp

    r245721 r245745  
    475475
    476476            auto newValueExpression = readModifyWriteExpression.takeNewValueExpression();
    477             ASSERT(newValueExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Relax this constraint.
    478             auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.origin()), WTFMove(variableReference), WTFMove(*newValueExpression));
     477            auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.origin()), WTFMove(variableReference), WTFMove(newValueExpression));
    479478            assignmentExpression->setType(baseType->clone());
    480479            assignmentExpression->setTypeAnnotation(AST::RightValue());
     
    504503
    505504        auto resultExpression = readModifyWriteExpression.takeResultExpression();
    506         ASSERT(resultExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Be resilient to this being null.
    507         auto type = (*resultExpression)->resolvedType().clone();
    508         expressions.append(WTFMove(*resultExpression));
     505        auto type = resultExpression->resolvedType().clone();
     506        expressions.append(WTFMove(resultExpression));
    509507
    510508        UniqueRef<AST::VariableDeclaration> oldVariableDeclaration = readModifyWriteExpression.takeOldValue();
     
    550548
    551549            auto newValueExpression = readModifyWriteExpression.takeNewValueExpression();
    552             ASSERT(newValueExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Relax this constraint
    553             auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.leftValue().origin()), WTFMove(variableReference), WTFMove(*newValueExpression));
     550            auto assignmentExpression = makeUniqueRef<AST::AssignmentExpression>(Lexer::Token(readModifyWriteExpression.leftValue().origin()), WTFMove(variableReference), WTFMove(newValueExpression));
    554551            assignmentExpression->setType(readModifyWriteExpression.leftValue().resolvedType().clone());
    555552            assignmentExpression->setTypeAnnotation(AST::RightValue());
     
    568565
    569566    auto resultExpression = readModifyWriteExpression.takeResultExpression();
    570     ASSERT(resultExpression); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=198170 Be resilient to this being null.
    571     auto type = (*resultExpression)->resolvedType().clone();
    572     modifyResult->expressions.append(WTFMove(*resultExpression));
     567    auto type = resultExpression->resolvedType().clone();
     568    modifyResult->expressions.append(WTFMove(resultExpression));
    573569
    574570    UniqueRef<AST::VariableDeclaration> oldVariableDeclaration = readModifyWriteExpression.takeOldValue();
  • trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp

    r245680 r245745  
    537537    checkErrorAndVisit(readModifyWriteExpression.oldValue());
    538538    checkErrorAndVisit(readModifyWriteExpression.newValue());
    539     if (readModifyWriteExpression.newValueExpression())
    540         checkErrorAndVisit(*readModifyWriteExpression.newValueExpression());
    541     if (readModifyWriteExpression.resultExpression())
    542         checkErrorAndVisit(*readModifyWriteExpression.resultExpression());
     539    checkErrorAndVisit(readModifyWriteExpression.newValueExpression());
     540    checkErrorAndVisit(readModifyWriteExpression.resultExpression());
    543541}
    544542
Note: See TracChangeset for help on using the changeset viewer.