Title: [247341] trunk/Source/WebCore
Revision
247341
Author
rmoris...@apple.com
Date
2019-07-10 19:09:52 -0700 (Wed, 10 Jul 2019)

Log Message

[WHLSL] Optional<UniqueRef<T>> -> std::unique_ptr in Return/IfStatement/ForLoop
https://bugs.webkit.org/show_bug.cgi?id=199695

Reviewed by Dean Jackson.

Trivial patch that saves 8 bytes per Return/If, and 16 bytes per For loop.

No new tests as there is no intended functional change.

* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop):
(WebCore::WHLSL::AST::ForLoop::condition):
(WebCore::WHLSL::AST::ForLoop::increment):
* Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
(WebCore::WHLSL::AST::IfStatement::IfStatement):
(WebCore::WHLSL::AST::IfStatement::elseBody):
* Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
(WebCore::WHLSL::AST::Return::Return):
(WebCore::WHLSL::AST::Return::value):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseStatement):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (247340 => 247341)


--- trunk/Source/WebCore/ChangeLog	2019-07-11 01:27:04 UTC (rev 247340)
+++ trunk/Source/WebCore/ChangeLog	2019-07-11 02:09:52 UTC (rev 247341)
@@ -1,5 +1,31 @@
 2019-07-10  Robin Morisset  <rmoris...@apple.com>
 
+        [WHLSL] Optional<UniqueRef<T>> -> std::unique_ptr in Return/IfStatement/ForLoop
+        https://bugs.webkit.org/show_bug.cgi?id=199695
+
+        Reviewed by Dean Jackson.
+
+        Trivial patch that saves 8 bytes per Return/If, and 16 bytes per For loop.
+
+        No new tests as there is no intended functional change.
+
+        * Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
+        (WebCore::WHLSL::AST::ForLoop::ForLoop):
+        (WebCore::WHLSL::AST::ForLoop::condition):
+        (WebCore::WHLSL::AST::ForLoop::increment):
+        * Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
+        (WebCore::WHLSL::AST::IfStatement::IfStatement):
+        (WebCore::WHLSL::AST::IfStatement::elseBody):
+        * Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
+        (WebCore::WHLSL::AST::Return::Return):
+        (WebCore::WHLSL::AST::Return::value):
+        * Modules/webgpu/WHLSL/WHLSLParser.cpp:
+        (WebCore::WHLSL::Parser::parseIfStatement):
+        (WebCore::WHLSL::Parser::parseForLoop):
+        (WebCore::WHLSL::Parser::parseStatement):
+
+2019-07-10  Robin Morisset  <rmoris...@apple.com>
+
         [WHLSL] The recursion checker should not have quadratic complexity
         https://bugs.webkit.org/show_bug.cgi?id=199688
 

Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLForLoop.h (247340 => 247341)


--- trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLForLoop.h	2019-07-11 01:27:04 UTC (rev 247340)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLForLoop.h	2019-07-11 02:09:52 UTC (rev 247341)
@@ -44,7 +44,7 @@
 
 class ForLoop : public Statement {
 public:
-    ForLoop(CodeLocation location, Variant<UniqueRef<Statement>, UniqueRef<_expression_>>&& initialization, Optional<UniqueRef<_expression_>>&& condition, Optional<UniqueRef<_expression_>>&& increment, UniqueRef<Statement>&& body)
+    ForLoop(CodeLocation location, Variant<UniqueRef<Statement>, UniqueRef<_expression_>>&& initialization, std::unique_ptr<_expression_>&& condition, std::unique_ptr<_expression_>&& increment, UniqueRef<Statement>&& body)
         : Statement(location)
         , m_initialization(WTFMove(initialization))
         , m_condition(WTFMove(condition))
@@ -63,14 +63,14 @@
     bool isForLoop() const override { return true; }
 
     Variant<UniqueRef<Statement>, UniqueRef<_expression_>>& initialization() { return m_initialization; }
-    _expression_* condition() { return m_condition ? &*m_condition : nullptr; }
-    _expression_* increment() { return m_increment ? &*m_increment : nullptr; }
+    _expression_* condition() { return m_condition.get(); }
+    _expression_* increment() { return m_increment.get(); }
     Statement& body() { return m_body; }
 
 private:
     Variant<UniqueRef<Statement>, UniqueRef<_expression_>> m_initialization;
-    Optional<UniqueRef<_expression_>> m_condition;
-    Optional<UniqueRef<_expression_>> m_increment;
+    std::unique_ptr<_expression_> m_condition;
+    std::unique_ptr<_expression_> m_increment;
     UniqueRef<Statement> m_body;
 };
 

Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h (247340 => 247341)


--- trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h	2019-07-11 01:27:04 UTC (rev 247340)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h	2019-07-11 02:09:52 UTC (rev 247341)
@@ -41,7 +41,7 @@
 
 class IfStatement : public Statement {
 public:
-    IfStatement(CodeLocation location, UniqueRef<_expression_>&& conditional, UniqueRef<Statement>&& body, Optional<UniqueRef<Statement>>&& elseBody)
+    IfStatement(CodeLocation location, UniqueRef<_expression_>&& conditional, UniqueRef<Statement>&& body, std::unique_ptr<Statement>&& elseBody)
         : Statement(location)
         , m_conditional(WTFMove(conditional))
         , m_body(WTFMove(body))
@@ -58,12 +58,12 @@
 
     _expression_& conditional() { return m_conditional; }
     Statement& body() { return m_body; }
-    Statement* elseBody() { return m_elseBody ? &*m_elseBody : nullptr; }
+    Statement* elseBody() { return m_elseBody.get(); }
 
 private:
     UniqueRef<_expression_> m_conditional;
     UniqueRef<Statement> m_body;
-    Optional<UniqueRef<Statement>> m_elseBody;
+    std::unique_ptr<Statement> m_elseBody;
 };
 
 } // namespace AST

Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReturn.h (247340 => 247341)


--- trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReturn.h	2019-07-11 01:27:04 UTC (rev 247340)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLReturn.h	2019-07-11 02:09:52 UTC (rev 247341)
@@ -41,7 +41,7 @@
 
 class Return : public Statement {
 public:
-    Return(CodeLocation location, Optional<UniqueRef<_expression_>>&& value)
+    Return(CodeLocation location, std::unique_ptr<_expression_>&& value)
         : Statement(location)
         , m_value(WTFMove(value))
     {
@@ -54,13 +54,13 @@
 
     bool isReturn() const override { return true; }
 
-    _expression_* value() { return m_value ? &*m_value : nullptr; }
+    _expression_* value() { return m_value.get(); }
 
     FunctionDefinition* function() { return m_function; }
     void setFunction(FunctionDefinition* functionDefinition) { m_function = functionDefinition; }
 
 private:
-    Optional<UniqueRef<_expression_>> m_value;
+    std::unique_ptr<_expression_> m_value;
     FunctionDefinition* m_function { nullptr };
 };
 

Modified: trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLParser.cpp (247340 => 247341)


--- trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLParser.cpp	2019-07-11 01:27:04 UTC (rev 247340)
+++ trunk/Source/WebCore/Modules/webgpu/WHLSL/WHLSLParser.cpp	2019-07-11 02:09:52 UTC (rev 247341)
@@ -1080,10 +1080,10 @@
     CONSUME_TYPE(rightParenthesis, RightParenthesis);
     PARSE(body, Statement);
 
-    Optional<UniqueRef<AST::Statement>> elseBody;
+    std::unique_ptr<AST::Statement> elseBody(nullptr);
     if (tryType(Token::Type::Else)) {
         PARSE(parsedElseBody, Statement);
-        elseBody = WTFMove(*parsedElseBody);
+        elseBody = (*parsedElseBody).moveToUniquePtr();
     }
 
     auto endOffset = m_lexer.peek().startOffset();
@@ -1150,19 +1150,19 @@
     auto parseRemainder = [&](Variant<UniqueRef<AST::Statement>, UniqueRef<AST::_expression_>>&& initialization) -> Expected<AST::ForLoop, Error> {
         CONSUME_TYPE(semicolon, Semicolon);
 
-        Optional<UniqueRef<AST::_expression_>> condition = WTF::nullopt;
+        std::unique_ptr<AST::_expression_> condition(nullptr);
         if (!tryType(Token::Type::Semicolon)) {
             if (auto _expression_ = parseExpression())
-                condition = { WTFMove(*_expression_) };
+                condition = (*_expression_).moveToUniquePtr();
             else
                 return Unexpected<Error>(_expression_.error());
             CONSUME_TYPE(secondSemicolon, Semicolon);
         }
 
-        Optional<UniqueRef<AST::_expression_>> increment = WTF::nullopt;
+        std::unique_ptr<AST::_expression_> increment(nullptr);
         if (!tryType(Token::Type::RightParenthesis)) {
             if (auto _expression_ = parseExpression())
-                increment = { WTFMove(*_expression_) };
+                increment = (*_expression_).moveToUniquePtr();
             else
                 return Unexpected<Error>(_expression_.error());
             CONSUME_TYPE(rightParenthesis, RightParenthesis);
@@ -1309,12 +1309,12 @@
     case Token::Type::Return: {
         auto returnToken = m_lexer.consumeToken();
         if (auto semicolon = tryType(Token::Type::Semicolon)) {
-            auto returnObject = AST::Return(WTFMove(returnToken), WTF::nullopt);
+            auto returnObject = AST::Return(WTFMove(returnToken), nullptr);
             return { makeUniqueRef<AST::Return>(WTFMove(returnObject)) };
         }
         PARSE(_expression_, _expression_);
         CONSUME_TYPE(finalSemicolon, Semicolon);
-        auto returnObject = AST::Return(WTFMove(returnToken), { WTFMove(*_expression_) });
+        auto returnObject = AST::Return(WTFMove(returnToken), (*_expression_).moveToUniquePtr());
         return { makeUniqueRef<AST::Return>(WTFMove(returnObject)) };
     }
     case Token::Type::Constant:
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to