[ES6] Minimize ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX ifdefs
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 8 Nov 2015 08:03:40 +0000 (08:03 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 8 Nov 2015 08:03:40 +0000 (08:03 +0000)
https://bugs.webkit.org/show_bug.cgi?id=150998

Reviewed by Geoffrey Garen.

This patch minimizes ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX ifdefs.
It only keeps 2 ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX in Parser.cpp, one for
template literals and one for tagged templates.
This change makes difference minimal between the enabled and disabled configurations;
reducing accidental build breaks of the disabled configuration.

* bytecompiler/BytecodeGenerator.cpp:
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
* parser/ASTBuilder.h:
* parser/Lexer.cpp:
(JSC::Lexer<T>::Lexer): Deleted.
(JSC::Lexer<T>::lex): Deleted.
* parser/Lexer.h:
* parser/NodeConstructors.h:
* parser/Nodes.h:
* parser/Parser.cpp:
* parser/Parser.h:
* parser/SyntaxChecker.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@192141 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h
Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
Source/JavaScriptCore/parser/ASTBuilder.h
Source/JavaScriptCore/parser/Lexer.cpp
Source/JavaScriptCore/parser/Lexer.h
Source/JavaScriptCore/parser/NodeConstructors.h
Source/JavaScriptCore/parser/Nodes.h
Source/JavaScriptCore/parser/Parser.cpp
Source/JavaScriptCore/parser/Parser.h
Source/JavaScriptCore/parser/SyntaxChecker.h

index fb92ad7..082b0a6 100644 (file)
@@ -1,3 +1,30 @@
+2015-11-08  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [ES6] Minimize ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX ifdefs
+        https://bugs.webkit.org/show_bug.cgi?id=150998
+
+        Reviewed by Geoffrey Garen.
+
+        This patch minimizes ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX ifdefs.
+        It only keeps 2 ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX in Parser.cpp, one for
+        template literals and one for tagged templates.
+        This change makes difference minimal between the enabled and disabled configurations;
+        reducing accidental build breaks of the disabled configuration.
+
+        * bytecompiler/BytecodeGenerator.cpp:
+        * bytecompiler/BytecodeGenerator.h:
+        * bytecompiler/NodesCodegen.cpp:
+        * parser/ASTBuilder.h:
+        * parser/Lexer.cpp:
+        (JSC::Lexer<T>::Lexer): Deleted.
+        (JSC::Lexer<T>::lex): Deleted.
+        * parser/Lexer.h:
+        * parser/NodeConstructors.h:
+        * parser/Nodes.h:
+        * parser/Parser.cpp:
+        * parser/Parser.h:
+        * parser/SyntaxChecker.h:
+
 2015-11-06  Filip Pizlo  <fpizlo@apple.com>
 
         B3->Air lowering should do pattern matching the old fashioned way
index 76165b2..2be720a 100644 (file)
@@ -3607,7 +3607,6 @@ void BytecodeGenerator::emitEnumeration(ThrowableExpressionData* node, Expressio
     emitLabel(loopDone.get());
 }
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
 RegisterID* BytecodeGenerator::emitGetTemplateObject(RegisterID* dst, TaggedTemplateNode* taggedTemplate)
 {
     TemplateRegistryKey::StringVector rawStrings;
@@ -3634,7 +3633,6 @@ RegisterID* BytecodeGenerator::emitGetTemplateObject(RegisterID* dst, TaggedTemp
     emitLoad(arguments.thisRegister(), JSValue(addTemplateRegistryKeyConstant(TemplateRegistryKey(rawStrings, cookedStrings))));
     return emitCall(dst, getTemplateObject.get(), NoExpectedFunction, arguments, taggedTemplate->divot(), taggedTemplate->divotStart(), taggedTemplate->divotEnd());
 }
-#endif
 
 RegisterID* BytecodeGenerator::emitGetEnumerableLength(RegisterID* dst, RegisterID* base)
 {
index dc31f7a..a6d2277 100644 (file)
@@ -558,9 +558,7 @@ namespace JSC {
 
         void emitEnumeration(ThrowableExpressionData* enumerationNode, ExpressionNode* subjectNode, const std::function<void(BytecodeGenerator&, RegisterID*)>& callBack, VariableEnvironmentNode* = nullptr, RegisterID* forLoopSymbolTable = nullptr);
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
         RegisterID* emitGetTemplateObject(RegisterID* dst, TaggedTemplateNode*);
-#endif
 
         RegisterID* emitReturn(RegisterID* src);
         RegisterID* emitEnd(RegisterID* src) { return emitUnaryNoDstOp(op_end, src); }
index 290ba43..ea4ffdd 100644 (file)
@@ -218,7 +218,6 @@ RegisterID* ResolveNode::emitBytecode(BytecodeGenerator& generator, RegisterID*
     return result;
 }
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
 // ------------------------------ TemplateStringNode -----------------------------------
 
 RegisterID* TemplateStringNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
@@ -324,7 +323,6 @@ RegisterID* TaggedTemplateNode::emitBytecode(BytecodeGenerator& generator, Regis
 
     return generator.emitCall(generator.finalDestination(dst, tag.get()), tag.get(), expectedFunction, callArguments, divot(), divotStart(), divotEnd());
 }
-#endif
 
 // ------------------------------ ArrayNode ------------------------------------
 
index 39e3539..cf7140b 100644 (file)
@@ -101,12 +101,10 @@ public:
     typedef PropertyListNode* PropertyList;
     typedef ElementNode* ElementList;
     typedef ArgumentListNode* ArgumentsList;
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     typedef TemplateExpressionListNode* TemplateExpressionList;
     typedef TemplateStringNode* TemplateString;
     typedef TemplateStringListNode* TemplateStringList;
     typedef TemplateLiteralNode* TemplateLiteral;
-#endif
     typedef FunctionParameters* FormalParameterList;
     typedef FunctionMetadataNode* FunctionBody;
 #if ENABLE(ES6_CLASS_SYNTAX)
@@ -258,7 +256,6 @@ public:
         return node;
     }
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     TemplateStringNode* createTemplateString(const JSTokenLocation& location, const Identifier& cooked, const Identifier& raw)
     {
         return new (m_parserArena) TemplateStringNode(location, cooked, raw);
@@ -300,7 +297,6 @@ public:
         setExceptionLocation(node, start, divot, end);
         return node;
     }
-#endif
 
     ExpressionNode* createRegExp(const JSTokenLocation& location, const Identifier& pattern, const Identifier& flags, const JSTextPosition& start)
     {
index cb086e2..763bdf1 100644 (file)
@@ -190,11 +190,7 @@ static const unsigned short typesOfLatin1Characters[256] = {
 /*  93 - ]                  */ CharacterCloseBracket,
 /*  94 - ^                  */ CharacterXor,
 /*  95 - _                  */ CharacterIdentifierStart,
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
 /*  96 - `                  */ CharacterBackQuote,
-#else
-/*  96 - `                  */ CharacterInvalid,
-#endif
 /*  97 - a                  */ CharacterIdentifierStart,
 /*  98 - b                  */ CharacterIdentifierStart,
 /*  99 - c                  */ CharacterIdentifierStart,
@@ -1326,7 +1322,6 @@ template <bool shouldBuildStrings> auto Lexer<T>::parseStringSlowCase(JSTokenDat
     return StringParsedSuccessfully;
 }
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
 // While the lexer accepts <LF><CR> (not <CR><LF>) sequence
 // as one line terminator and increments one line number,
 // TemplateLiteral considers it as two line terminators <LF> and <CR>.
@@ -1504,7 +1499,6 @@ template <bool shouldBuildStrings> typename Lexer<T>::StringParseResult Lexer<T>
 
     return StringParsedSuccessfully;
 }
-#endif
 
 template <typename T>
 ALWAYS_INLINE void Lexer<T>::parseHex(double& returnValue)
@@ -2208,7 +2202,6 @@ inNumberAfterDecimalPoint:
         token = STRING;
         break;
         }
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     case CharacterBackQuote: {
         // Skip backquote.
         shift();
@@ -2225,7 +2218,6 @@ inNumberAfterDecimalPoint:
         token = TEMPLATE;
         break;
         }
-#endif
     case CharacterIdentifierStart:
         ASSERT(isIdentStart(m_current));
         FALLTHROUGH;
@@ -2427,7 +2419,6 @@ bool Lexer<T>::skipRegExp()
     return true;
 }
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
 template <typename T>
 JSTokenType Lexer<T>::scanTrailingTemplateString(JSToken* tokenRecord, RawStringsBuildMode rawStringsBuildMode)
 {
@@ -2459,7 +2450,6 @@ JSTokenType Lexer<T>::scanTrailingTemplateString(JSToken* tokenRecord, RawString
     tokenRecord->m_endPosition = currentPosition();
     return token;
 }
-#endif
 
 template <typename T>
 void Lexer<T>::clear()
index fda2def..1862d77 100644 (file)
@@ -79,10 +79,8 @@ public:
     int lastLineNumber() const { return m_lastLineNumber; }
     bool prevTerminator() const { return m_terminator; }
     bool scanRegExp(const Identifier*& pattern, const Identifier*& flags, UChar patternPrefix = 0);
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     enum class RawStringsBuildMode { BuildRawStrings, DontBuildRawStrings };
     JSTokenType scanTrailingTemplateString(JSToken*, RawStringsBuildMode);
-#endif
     bool skipRegExp();
 
     // Functions for use after parsing.
@@ -169,9 +167,7 @@ private:
 
     enum class EscapeParseMode { Template, String };
     template <bool shouldBuildStrings> ALWAYS_INLINE StringParseResult parseComplexEscape(EscapeParseMode, bool strictMode, T stringQuoteCharacter);
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     template <bool shouldBuildStrings> ALWAYS_INLINE StringParseResult parseTemplateLiteral(JSTokenData*, RawStringsBuildMode);
-#endif
     ALWAYS_INLINE void parseHex(double& returnValue);
     ALWAYS_INLINE bool parseBinary(double& returnValue);
     ALWAYS_INLINE bool parseOctal(double& returnValue);
index ea3142a..551d321 100644 (file)
@@ -100,7 +100,6 @@ namespace JSC {
     {
     }
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     inline TemplateExpressionListNode::TemplateExpressionListNode(ExpressionNode* node)
         : m_node(node)
     {
@@ -150,7 +149,6 @@ namespace JSC {
         , m_templateLiteral(templateLiteral)
     {
     }
-#endif
 
     inline RegExpNode::RegExpNode(const JSTokenLocation& location, const Identifier& pattern, const Identifier& flags)
         : ExpressionNode(location)
index 874878b..0bd1f6d 100644 (file)
@@ -448,7 +448,6 @@ namespace JSC {
         uint16_t m_subexpressionLineStartOffset;
     };
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     class TemplateExpressionListNode : public ParserArenaFreeable {
     public:
         TemplateExpressionListNode(ExpressionNode*);
@@ -516,7 +515,6 @@ namespace JSC {
         ExpressionNode* m_tag;
         TemplateLiteralNode* m_templateLiteral;
     };
-#endif
 
     class RegExpNode : public ExpressionNode, public ThrowableExpressionData {
     public:
index 2ede61f..3564e33 100644 (file)
@@ -3250,7 +3250,6 @@ template <class TreeBuilder> TreeExpression Parser<LexerType>::parseFunctionExpr
     return context.createFunctionExpr(location, functionInfo);
 }
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
 template <typename LexerType>
 template <class TreeBuilder> typename TreeBuilder::TemplateString Parser<LexerType>::parseTemplateString(TreeBuilder& context, bool isTemplateHead, typename LexerType::RawStringsBuildMode rawStringsBuildMode, bool& elementIsTail)
 {
@@ -3308,7 +3307,6 @@ template <class TreeBuilder> typename TreeBuilder::TemplateLiteral Parser<LexerT
 
     return context.createTemplateLiteral(location, templateStringList, templateExpressionList);
 }
-#endif
 
 template <typename LexerType>
 template <class TreeBuilder> TreeExpression Parser<LexerType>::parsePrimaryExpression(TreeBuilder& context)
index aba35a2..a514bdc 100644 (file)
@@ -1192,10 +1192,8 @@ private:
     template <class TreeBuilder> NEVER_INLINE TreeClassExpression parseClass(TreeBuilder&, FunctionRequirements, ParserClassInfo<TreeBuilder>&);
 #endif
 
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     template <class TreeBuilder> NEVER_INLINE typename TreeBuilder::TemplateString parseTemplateString(TreeBuilder& context, bool isTemplateHead, typename LexerType::RawStringsBuildMode, bool& elementIsTail);
     template <class TreeBuilder> NEVER_INLINE typename TreeBuilder::TemplateLiteral parseTemplateLiteral(TreeBuilder&, typename LexerType::RawStringsBuildMode);
-#endif
 
     template <class TreeBuilder> ALWAYS_INLINE bool shouldCheckPropertyForUnderscoreProtoDuplicate(TreeBuilder&, const TreeProperty&);
 
index 41b9417..7397477 100644 (file)
@@ -116,12 +116,10 @@ public:
     typedef int PropertyList;
     typedef int ElementList;
     typedef int ArgumentsList;
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     typedef int TemplateExpressionList;
     typedef int TemplateString;
     typedef int TemplateStringList;
     typedef int TemplateLiteral;
-#endif
     typedef int FormalParameterList;
     typedef int FunctionBody;
 #if ENABLE(ES6_CLASS_SYNTAX)
@@ -194,7 +192,6 @@ public:
     int createArguments() { return ArgumentsResult; }
     int createArguments(int) { return ArgumentsResult; }
     ExpressionType createSpreadExpression(const JSTokenLocation&, ExpressionType, int, int, int) { return SpreadExpr; }
-#if ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX)
     TemplateString createTemplateString(const JSTokenLocation&, const Identifier&, const Identifier&) { return TemplateStringResult; }
     TemplateStringList createTemplateStringList(TemplateString) { return TemplateStringListResult; }
     TemplateStringList createTemplateStringList(TemplateStringList, TemplateString) { return TemplateStringListResult; }
@@ -203,7 +200,6 @@ public:
     TemplateLiteral createTemplateLiteral(const JSTokenLocation&, TemplateStringList) { return TemplateExpr; }
     TemplateLiteral createTemplateLiteral(const JSTokenLocation&, TemplateStringList, TemplateExpressionList) { return TemplateExpr; }
     ExpressionType createTaggedTemplate(const JSTokenLocation&, ExpressionType, TemplateLiteral, int, int, int) { return TaggedTemplateExpr; }
-#endif
 
     int createArgumentsList(const JSTokenLocation&, int) { return ArgumentsListResult; }
     int createArgumentsList(const JSTokenLocation&, int, int) { return ArgumentsListResult; }