Changeset 162393 in webkit


Ignore:
Timestamp:
Jan 20, 2014 5:10:29 PM (10 years ago)
Author:
akling@apple.com
Message:

JSC Parser: Shrink BindingNode.
<https://webkit.org/b/127253>

The "divot" and "end" source locations are always identical for
BindingNodes, so store only "start" and "end" instead.

1.19 MB progression on Membuster3.

Reviewed by Geoff Garen.

  • bytecompiler/NodesCodegen.cpp:

(JSC::BindingNode::bindValue):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createBindingLocation):

  • parser/NodeConstructors.h:

(JSC::BindingNode::create):
(JSC::BindingNode::BindingNode):

  • parser/Nodes.h:

(JSC::BindingNode::divotStart):
(JSC::BindingNode::divotEnd):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::createBindingPattern):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::operatorStackPop):

Location:
trunk/Source/JavaScriptCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r162390 r162393  
     12014-01-19  Andreas Kling  <akling@apple.com>
     2
     3        JSC Parser: Shrink BindingNode.
     4        <https://webkit.org/b/127253>
     5
     6        The "divot" and "end" source locations are always identical for
     7        BindingNodes, so store only "start" and "end" instead.
     8
     9        1.19 MB progression on Membuster3.
     10
     11        Reviewed by Geoff Garen.
     12
     13        * bytecompiler/NodesCodegen.cpp:
     14        (JSC::BindingNode::bindValue):
     15        * parser/ASTBuilder.h:
     16        (JSC::ASTBuilder::createBindingLocation):
     17        * parser/NodeConstructors.h:
     18        (JSC::BindingNode::create):
     19        (JSC::BindingNode::BindingNode):
     20        * parser/Nodes.h:
     21        (JSC::BindingNode::divotStart):
     22        (JSC::BindingNode::divotEnd):
     23        * parser/Parser.cpp:
     24        (JSC::Parser<LexerType>::createBindingPattern):
     25        * parser/SyntaxChecker.h:
     26        (JSC::SyntaxChecker::operatorStackPop):
     27
    1282014-01-20  Filip Pizlo  <fpizlo@apple.com>
    229
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r160587 r162393  
    24762476    }
    24772477    if (generator.isStrictMode())
    2478         generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
     2478        generator.emitExpressionInfo(divotEnd(), divotStart(), divotEnd());
    24792479    RegisterID* scope = generator.emitResolveScope(generator.newTemporary(), m_boundProperty);
    2480     generator.emitExpressionInfo(divot(), divotStart(), divotEnd());
     2480    generator.emitExpressionInfo(divotEnd(), divotStart(), divotEnd());
    24812481    generator.emitPutToScope(scope, m_boundProperty, value, generator.isStrictMode() ? ThrowIfNotFound : DoNotThrowIfNotFound);
    24822482    return;
  • trunk/Source/JavaScriptCore/parser/ASTBuilder.h

    r161309 r162393  
    675675    }
    676676   
    677     BindingPattern createBindingLocation(const JSTokenLocation&, const Identifier& boundProperty, const JSTextPosition& divot, const JSTextPosition& start, const JSTextPosition& end)
    678     {
    679         return BindingNode::create(m_vm, boundProperty, divot, start, end);
     677    BindingPattern createBindingLocation(const JSTokenLocation&, const Identifier& boundProperty, const JSTextPosition& start, const JSTextPosition& end)
     678    {
     679        return BindingNode::create(m_vm, boundProperty, start, end);
    680680    }
    681681   
  • trunk/Source/JavaScriptCore/parser/NodeConstructors.h

    r157830 r162393  
    889889    }
    890890
    891     inline PassRefPtr<BindingNode> BindingNode::create(VM* vm, const Identifier& boundProperty, const JSTextPosition& divot, const JSTextPosition& start, const JSTextPosition& end)
    892     {
    893         return adoptRef(new BindingNode(vm, boundProperty, divot, start, end));
    894     }
    895    
    896     inline BindingNode::BindingNode(VM* vm, const Identifier& boundProperty, const JSTextPosition& divot, const JSTextPosition& start, const JSTextPosition& end)
     891    inline PassRefPtr<BindingNode> BindingNode::create(VM* vm, const Identifier& boundProperty, const JSTextPosition& start, const JSTextPosition& end)
     892    {
     893        return adoptRef(new BindingNode(vm, boundProperty, start, end));
     894    }
     895   
     896    inline BindingNode::BindingNode(VM* vm, const Identifier& boundProperty, const JSTextPosition& start, const JSTextPosition& end)
    897897        : DeconstructionPatternNode(vm)
    898         , ThrowableExpressionData(divot, start, end)
     898        , m_divotStart(start)
     899        , m_divotEnd(end)
    899900        , m_boundProperty(boundProperty)
    900901    {
  • trunk/Source/JavaScriptCore/parser/Nodes.h

    r162139 r162393  
    16421642    };
    16431643
    1644     class BindingNode : public DeconstructionPatternNode, ThrowableExpressionData {
    1645     public:
    1646         static PassRefPtr<BindingNode> create(VM*, const Identifier& boundProperty, const JSTextPosition& divot, const JSTextPosition& start, const JSTextPosition& end);
     1644    class BindingNode : public DeconstructionPatternNode {
     1645    public:
     1646        static PassRefPtr<BindingNode> create(VM*, const Identifier& boundProperty, const JSTextPosition& start, const JSTextPosition& end);
    16471647        const Identifier& boundProperty() const { return m_boundProperty; }
     1648
     1649        const JSTextPosition& divotStart() const { return m_divotStart; }
     1650        const JSTextPosition& divotEnd() const { return m_divotEnd; }
    16481651       
    16491652    private:
    1650         BindingNode(VM*, const Identifier& boundProperty, const JSTextPosition& divot, const JSTextPosition& start, const JSTextPosition& end);
     1653        BindingNode(VM*, const Identifier& boundProperty, const JSTextPosition& start, const JSTextPosition& end);
    16511654
    16521655        virtual void collectBoundIdentifiers(Vector<Identifier>&) const override;
     
    16551658       
    16561659        virtual bool isBindingNode() const override { return true; }
    1657        
     1660
     1661        JSTextPosition m_divotStart;
     1662        JSTextPosition m_divotEnd;
    16581663        Identifier m_boundProperty;
    16591664    };
  • trunk/Source/JavaScriptCore/parser/Parser.cpp

    r162006 r162393  
    519519        }
    520520    }
    521     return context.createBindingLocation(m_token.m_location, name, m_token.m_endPosition, m_token.m_startPosition, m_token.m_endPosition);
     521    return context.createBindingLocation(m_token.m_location, name, m_token.m_startPosition, m_token.m_endPosition);
    522522}
    523523
  • trunk/Source/JavaScriptCore/parser/SyntaxChecker.h

    r160383 r162393  
    281281    {
    282282    }
    283     DeconstructionPattern createBindingLocation(const JSTokenLocation&, const Identifier&, const JSTextPosition&, const JSTextPosition&, const JSTextPosition&)
     283    DeconstructionPattern createBindingLocation(const JSTokenLocation&, const Identifier&, const JSTextPosition&, const JSTextPosition&)
    284284    {
    285285        return 1;
Note: See TracChangeset for help on using the changeset viewer.