Lexer: Specialize character predicates for LChar, UChar
authorwingo@igalia.com <wingo@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Mar 2012 18:56:29 +0000 (18:56 +0000)
committerwingo@igalia.com <wingo@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Mar 2012 18:56:29 +0000 (18:56 +0000)
commitc8533d1534e29abfd8d1bc668e1f0d55a6e00def
tree257f987b8debf97bcc5cd3ff5640726a5b8805ec
parent0606b6f2989876695395dbe28c190d0b0841ee61
Lexer: Specialize character predicates for LChar, UChar
https://bugs.webkit.org/show_bug.cgi?id=79677

Reviewed by Oliver Hunt.

This patch specializes isIdentStart, isIdentPart, isWhiteSpace,
and isLineTerminator to perform a more limited number of checks if
the lexer is being instantiated to work on LChar sequences.  This
is about a 1.5% win on the --parse-only suite, here.

* parser/Lexer.cpp:
(JSC::isLatin1): New static helper, specialized for LChar and
UChar.
(JSC::typesOfLatin1Characters): Rename from
typesOfASCIICharacters, and expand to the range of the LChar
type.  All uses of isASCII are changed to use isLatin1.  Generated
using libunistring.
(JSC::isNonLatin1IdentStart):
(JSC::isIdentStart):
(JSC::isNonLatin1IdentPart):
(JSC::isIdentPart):
(JSC::Lexer::shiftLineTerminator):
(JSC::Lexer::parseIdentifier):
(JSC::Lexer::parseIdentifierSlowCase):
(JSC::Lexer::parseStringSlowCase):
(JSC::Lexer::parseMultilineComment):
(JSC::Lexer::lex):
(JSC::Lexer::scanRegExp):
(JSC::Lexer::skipRegExp): Sprinkle static_cast<T>(_) around.
* parser/Lexer.h:
(JSC::Lexer::isWhiteSpace):
(JSC::Lexer::isLineTerminator):
* KeywordLookupGenerator.py:
(Trie.printAsC): Declare specialized isIdentPart static functions.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@109769 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/KeywordLookupGenerator.py
Source/JavaScriptCore/parser/Lexer.cpp
Source/JavaScriptCore/parser/Lexer.h