Removed (now) unused Token-lookup code.
authorlrn@chromium.org <lrn@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 5 Nov 2009 10:24:20 +0000 (10:24 +0000)
committerlrn@chromium.org <lrn@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 5 Nov 2009 10:24:20 +0000 (10:24 +0000)
Review URL: http://codereview.chromium.org/361026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3223 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/scanner.cc
src/token.cc
src/token.h

index ec2b2c3fcf4b5df8bfbb2d4464a727009aad29a8..23b8aff9c41488001bf12fb475aaf6ff46a91963 100644 (file)
@@ -329,9 +329,7 @@ void KeywordMatcher::Step(uc32 input) {
 // ----------------------------------------------------------------------------
 // Scanner
 
-Scanner::Scanner(bool pre) : stack_overflow_(false), is_pre_parsing_(pre) {
-  Token::Initialize();
-}
+Scanner::Scanner(bool pre) : stack_overflow_(false), is_pre_parsing_(pre) { }
 
 
 void Scanner::Init(Handle<String> source, unibrow::CharacterStream* stream,
index bb42cead4b60a3c5bde23f2b9a0026bea45f9288..0a4ad4c1ad7fbf4e9045be14dff4bc9690c77a7d 100644 (file)
@@ -55,109 +55,4 @@ int8_t Token::precedence_[NUM_TOKENS] = {
 #undef T
 
 
-// A perfect (0 collision) hash table of keyword token values.
-
-// larger N will reduce the number of collisions (power of 2 for fast %)
-const unsigned int N = 128;
-// make this small since we have <= 256 tokens
-static uint8_t Hashtable[N];
-static bool IsInitialized = false;
-
-
-static unsigned int Hash(const char* s) {
-  // The following constants have been found using trial-and-error. If the
-  // keyword set changes, they may have to be recomputed (make them flags
-  // and play with the flag values). Increasing N is the simplest way to
-  // reduce the number of collisions.
-
-  // we must use at least 4 or more chars ('const' and 'continue' share
-  // 'con')
-  const unsigned int L = 5;
-  // smaller S tend to reduce the number of collisions
-  const unsigned int S = 4;
-  // make this a prime, or at least an odd number
-  const unsigned int M = 3;
-
-  unsigned int h = 0;
-  for (unsigned int i = 0; s[i] != '\0' && i < L; i++) {
-    h += (h << S) + s[i];
-  }
-  // unsigned int % by a power of 2 (otherwise this will not be a bit mask)
-  return h * M % N;
-}
-
-
-Token::Value Token::Lookup(const char* str) {
-  ASSERT(IsInitialized);
-  Value k = static_cast<Value>(Hashtable[Hash(str)]);
-  const char* s = string_[k];
-  ASSERT(s != NULL || k == IDENTIFIER);
-  if (s == NULL || strcmp(s, str) == 0) {
-    return k;
-  }
-  return IDENTIFIER;
-}
-
-
-#ifdef DEBUG
-// We need this function because C++ doesn't allow the expression
-// NULL == NULL, which is a result of macro expansion below. What
-// the hell?
-static bool IsNull(const char* s) {
-  return s == NULL;
-}
-#endif
-
-
-void Token::Initialize() {
-  if (IsInitialized) return;
-
-  // A list of all keywords, terminated by ILLEGAL.
-#define T(name, string, precedence) name,
-  static Value keyword[] = {
-    TOKEN_LIST(IGNORE_TOKEN, T, IGNORE_TOKEN)
-    ILLEGAL
-  };
-#undef T
-
-  // Assert that the keyword array contains the 25 keywords, 3 future
-  // reserved words (const, debugger, and native), and the 3 named literals
-  // defined by ECMA-262 standard.
-  ASSERT(ARRAY_SIZE(keyword) == 25 + 3 + 3 + 1);  // +1 for ILLEGAL sentinel
-
-  // Initialize Hashtable.
-  ASSERT(NUM_TOKENS <= 256);  // Hashtable contains uint8_t elements
-  for (unsigned int i = 0; i < N; i++) {
-    Hashtable[i] = IDENTIFIER;
-  }
-
-  // Insert all keywords into Hashtable.
-  int collisions = 0;
-  for (int i = 0; keyword[i] != ILLEGAL; i++) {
-    Value k = keyword[i];
-    unsigned int h = Hash(string_[k]);
-    if (Hashtable[h] != IDENTIFIER) collisions++;
-    Hashtable[h] = k;
-  }
-
-  if (collisions > 0) {
-    PrintF("%d collisions in keyword hashtable\n", collisions);
-    FATAL("Fix keyword lookup!");
-  }
-
-  IsInitialized = true;
-
-  // Verify hash table.
-#define T(name, string, precedence) \
-  ASSERT(IsNull(string) || Lookup(string) == IDENTIFIER);
-
-#define K(name, string, precedence) \
-  ASSERT(Lookup(string) == name);
-
-  TOKEN_LIST(T, K, IGNORE_TOKEN)
-
-#undef K
-#undef T
-}
-
 } }  // namespace v8::internal
index 4d4df63458cf324f0687f1d2346cdc9297939946..a60704cd07aa69e02413a53daf9779a0d92d9b52 100644 (file)
@@ -260,15 +260,6 @@ class Token {
     return precedence_[tok];
   }
 
-  // Returns the keyword value if str is a keyword;
-  // returns IDENTIFIER otherwise. The class must
-  // have been initialized.
-  static Value Lookup(const char* str);
-
-  // Must be called once to initialize the class.
-  // Multiple calls are ignored.
-  static void Initialize();
-
  private:
 #ifdef DEBUG
   static const char* name_[NUM_TOKENS];