Modified: trunk/Source/_javascript_Core/KeywordLookupGenerator.py (88118 => 88119)
--- trunk/Source/_javascript_Core/KeywordLookupGenerator.py 2011-06-04 18:18:28 UTC (rev 88118)
+++ trunk/Source/_javascript_Core/KeywordLookupGenerator.py 2011-06-04 18:55:17 UTC (rev 88119)
@@ -1,4 +1,4 @@
-# Copyright (C) 2010 Apple Inc. All rights reserved.
+# Copyright (C) 2011 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -149,12 +149,14 @@
if itemCount == 0:
print(str + "if (" + comparison + ") {")
else:
- print(str + "else if (" + comparison + ") {")
+ print(str + "} else if (" + comparison + ") {")
trie.printSubTreeAsC(indent + 4)
itemCount = itemCount + 1
- print(str + "}")
+ if itemCount == len(self.keys):
+ print(str + "}")
+
def maxLength(self):
max = len(self.fullPrefix)
for (_, trie) in self.keys:
@@ -165,16 +167,21 @@
def printAsC(self):
print("namespace JSC {")
+ print("")
print("static ALWAYS_INLINE bool isIdentPart(int c);")
# max length + 1 so we don't need to do any bounds checking at all
print("static const int maxTokenLength = %d;" % (self.maxLength() + 1))
- print("template <bool shouldCreateIdentifier> ALWAYS_INLINE JSTokenType Lexer::parseKeyword(JSTokenData* data) {")
+ print("")
+ print("template <bool shouldCreateIdentifier> ALWAYS_INLINE JSTokenType Lexer::parseKeyword(JSTokenData* data)")
+ print("{")
print(" ASSERT(m_codeEnd - m_code >= maxTokenLength);")
+ print("")
print(" const UChar* code = m_code;")
self.printSubTreeAsC(4)
print(" return IDENT;")
print("}")
- print("}")
+ print("")
+ print("} // namespace JSC")
keywords = parseKeywords(keywordsText)
trie = Trie("")
@@ -184,46 +191,58 @@
trie.fillOut()
print("// This file was generated by KeywordLookupGenerator.py. Do not edit.")
print("""
-
#if CPU(NEEDS_ALIGNED_ACCESS)
-#define COMPARE_CHARACTERS2(address, char1, char2) \
+#define COMPARE_CHARACTERS2(address, char1, char2) \\
(((address)[0] == char1) && ((address)[1] == char2))
-#define COMPARE_CHARACTERS4(address, char1, char2, char3, char4) \
+#define COMPARE_CHARACTERS4(address, char1, char2, char3, char4) \\
(COMPARE_CHARACTERS2(address, char1, char2) && COMPARE_CHARACTERS2((address) + 2, char3, char4))
-#else
+#else // CPU(NEEDS_ALIGNED_ACCESS)
#if CPU(BIG_ENDIAN)
-#define CHARPAIR_TOUINT32(a, b) ((((uint32_t)(a)) << 16) + (uint32_t)(b))
-#define CHARQUAD_TOUINT64(a, b, c, d) ((((uint64_t)(CHARPAIR_TOUINT32(a, b))) << 32) + CHARPAIR_TOUINT32(c, d))
-#else
-#define CHARPAIR_TOUINT32(a, b) ((((uint32_t)(b)) << 16) + (uint32_t)(a))
-#define CHARQUAD_TOUINT64(a, b, c, d) ((((uint64_t)(CHARPAIR_TOUINT32(c, d))) << 32) + CHARPAIR_TOUINT32(a, b))
-#endif
-#define COMPARE_CHARACTERS2(address, char1, char2) \
+#define CHARPAIR_TOUINT32(a, b) \\
+ ((((uint32_t)(a)) << 16) + (uint32_t)(b))
+#define CHARQUAD_TOUINT64(a, b, c, d) \\
+ ((((uint64_t)(CHARPAIR_TOUINT32(a, b))) << 32) + CHARPAIR_TOUINT32(c, d))
+
+#else // CPU(BIG_ENDIAN)
+
+#define CHARPAIR_TOUINT32(a, b) \\
+ ((((uint32_t)(b)) << 16) + (uint32_t)(a))
+#define CHARQUAD_TOUINT64(a, b, c, d) \\
+ ((((uint64_t)(CHARPAIR_TOUINT32(c, d))) << 32) + CHARPAIR_TOUINT32(a, b))
+
+#endif // CPU(BIG_ENDIAN)
+
+
+#define COMPARE_CHARACTERS2(address, char1, char2) \\
(((uint32_t*)(address))[0] == CHARPAIR_TOUINT32(char1, char2))
+
#if CPU(X86_64)
-#define COMPARE_CHARACTERS4(address, char1, char2, char3, char4) \
+#define COMPARE_CHARACTERS4(address, char1, char2, char3, char4) \\
(((uint64_t*)(address))[0] == CHARQUAD_TOUINT64(char1, char2, char3, char4))
-#else
-#define COMPARE_CHARACTERS4(address, char1, char2, char3, char4) \
+
+#else // CPU(X86_64)
+
+#define COMPARE_CHARACTERS4(address, char1, char2, char3, char4) \\
(COMPARE_CHARACTERS2(address, char1, char2) && COMPARE_CHARACTERS2((address) + 2, char3, char4))
-#endif
-#endif
+#endif // CPU(X86_64)
-#define COMPARE_CHARACTERS3(address, char1, char2, char3) \
+#endif // CPU(NEEDS_ALIGNED_ACCESS)
+
+#define COMPARE_CHARACTERS3(address, char1, char2, char3) \\
(COMPARE_CHARACTERS2(address, char1, char2) && ((address)[2] == (char3)))
-#define COMPARE_CHARACTERS5(address, char1, char2, char3, char4, char5) \
+#define COMPARE_CHARACTERS5(address, char1, char2, char3, char4, char5) \\
(COMPARE_CHARACTERS4(address, char1, char2, char3, char4) && ((address)[4] == (char5)))
-#define COMPARE_CHARACTERS6(address, char1, char2, char3, char4, char5, char6) \
+#define COMPARE_CHARACTERS6(address, char1, char2, char3, char4, char5, char6) \\
(COMPARE_CHARACTERS4(address, char1, char2, char3, char4) && COMPARE_CHARACTERS2(address + 4, char5, char6))
-#define COMPARE_CHARACTERS7(address, char1, char2, char3, char4, char5, char6, char7) \
+#define COMPARE_CHARACTERS7(address, char1, char2, char3, char4, char5, char6, char7) \\
(COMPARE_CHARACTERS4(address, char1, char2, char3, char4) && COMPARE_CHARACTERS4(address + 3, char4, char5, char6, char7))
-#define COMPARE_CHARACTERS8(address, char1, char2, char3, char4, char5, char6, char7, char8) \
+#define COMPARE_CHARACTERS8(address, char1, char2, char3, char4, char5, char6, char7, char8) \\
(COMPARE_CHARACTERS4(address, char1, char2, char3, char4) && COMPARE_CHARACTERS4(address + 4, char5, char6, char7, char8))
""")