Changeset 162393 in webkit
- Timestamp:
- Jan 20, 2014 5:10:29 PM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r162390 r162393 1 2014-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 1 28 2014-01-20 Filip Pizlo <fpizlo@apple.com> 2 29 -
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r160587 r162393 2476 2476 } 2477 2477 if (generator.isStrictMode()) 2478 generator.emitExpressionInfo(divot (), divotStart(), divotEnd());2478 generator.emitExpressionInfo(divotEnd(), divotStart(), divotEnd()); 2479 2479 RegisterID* scope = generator.emitResolveScope(generator.newTemporary(), m_boundProperty); 2480 generator.emitExpressionInfo(divot (), divotStart(), divotEnd());2480 generator.emitExpressionInfo(divotEnd(), divotStart(), divotEnd()); 2481 2481 generator.emitPutToScope(scope, m_boundProperty, value, generator.isStrictMode() ? ThrowIfNotFound : DoNotThrowIfNotFound); 2482 2482 return; -
trunk/Source/JavaScriptCore/parser/ASTBuilder.h
r161309 r162393 675 675 } 676 676 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); 680 680 } 681 681 -
trunk/Source/JavaScriptCore/parser/NodeConstructors.h
r157830 r162393 889 889 } 890 890 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) 897 897 : DeconstructionPatternNode(vm) 898 , ThrowableExpressionData(divot, start, end) 898 , m_divotStart(start) 899 , m_divotEnd(end) 899 900 , m_boundProperty(boundProperty) 900 901 { -
trunk/Source/JavaScriptCore/parser/Nodes.h
r162139 r162393 1642 1642 }; 1643 1643 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); 1647 1647 const Identifier& boundProperty() const { return m_boundProperty; } 1648 1649 const JSTextPosition& divotStart() const { return m_divotStart; } 1650 const JSTextPosition& divotEnd() const { return m_divotEnd; } 1648 1651 1649 1652 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); 1651 1654 1652 1655 virtual void collectBoundIdentifiers(Vector<Identifier>&) const override; … … 1655 1658 1656 1659 virtual bool isBindingNode() const override { return true; } 1657 1660 1661 JSTextPosition m_divotStart; 1662 JSTextPosition m_divotEnd; 1658 1663 Identifier m_boundProperty; 1659 1664 }; -
trunk/Source/JavaScriptCore/parser/Parser.cpp
r162006 r162393 519 519 } 520 520 } 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); 522 522 } 523 523 -
trunk/Source/JavaScriptCore/parser/SyntaxChecker.h
r160383 r162393 281 281 { 282 282 } 283 DeconstructionPattern createBindingLocation(const JSTokenLocation&, const Identifier&, const JSTextPosition&, const JSTextPosition& , const JSTextPosition&)283 DeconstructionPattern createBindingLocation(const JSTokenLocation&, const Identifier&, const JSTextPosition&, const JSTextPosition&) 284 284 { 285 285 return 1;
Note: See TracChangeset
for help on using the changeset viewer.