Changeset 99513 in webkit for trunk/Source/JavaScriptCore/parser/Parser.cpp
- Timestamp:
- Nov 7, 2011, 6:25:20 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/Parser.cpp
r99436 r99513 130 130 template <Parser::SourceElementsMode mode, class TreeBuilder> TreeSourceElements Parser::parseSourceElements(TreeBuilder& context) 131 131 { 132 const unsigned lengthOfUseStrictLiteral = 12; // "use strict".length 132 133 TreeSourceElements sourceElements = context.createSourceElements(); 133 134 bool seenNonDirective = false; 134 135 const Identifier* directive = 0; 136 unsigned directiveLiteralLength = 0; 135 137 unsigned startOffset = m_token.m_info.startOffset; 136 138 unsigned oldLastLineNumber = m_lexer->lastLineNumber(); 137 139 unsigned oldLineNumber = m_lexer->lineNumber(); 138 140 bool hasSetStrict = false; 139 while (TreeStatement statement = parseStatement(context, directive )) {141 while (TreeStatement statement = parseStatement(context, directive, &directiveLiteralLength)) { 140 142 if (mode == CheckForStrictMode && !seenNonDirective) { 141 143 if (directive) { 142 if (!hasSetStrict && m_globalData->propertyNames->useStrictIdentifier == *directive) { 144 // "use strict" must be the exact literal without escape sequences or line continuation. 145 if (!hasSetStrict && directiveLiteralLength == lengthOfUseStrictLiteral && m_globalData->propertyNames->useStrictIdentifier == *directive) { 143 146 setStrictMode(); 144 147 hasSetStrict = true; … … 649 652 } 650 653 651 template <class TreeBuilder> TreeStatement Parser::parseStatement(TreeBuilder& context, const Identifier*& directive )654 template <class TreeBuilder> TreeStatement Parser::parseStatement(TreeBuilder& context, const Identifier*& directive, unsigned* directiveLiteralLength) 652 655 { 653 656 DepthManager statementDepth(&m_statementDepth); … … 703 706 case STRING: 704 707 directive = m_token.m_data.ident; 708 if (directiveLiteralLength) 709 *directiveLiteralLength = m_token.m_info.endOffset - m_token.m_info.startOffset; 705 710 nonTrivialExpressionCount = m_nonTrivialExpressionCount; 706 711 default:
Note:
See TracChangeset
for help on using the changeset viewer.