Changeset 34607 in webkit for trunk/JavaScriptCore/kjs/lexer.cpp


Ignore:
Timestamp:
Jun 16, 2008, 4:28:38 PM (17 years ago)
Author:
[email protected]
Message:

Reviewed by Geoff Garen.

Make Identifier construction use an explicitly passed IdentifierTable.

No change on SunSpider total.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/lexer.cpp

    r34581 r34607  
    6060static const size_t initialStringTableCapacity = 64;
    6161
    62 Lexer::Lexer()
     62Lexer::Lexer(JSGlobalData* globalData)
    6363    : yylineno(1)
    6464    , restrKeyword(false)
     
    7474    , next2(0)
    7575    , next3(0)
     76    , m_globalData(globalData)
    7677    , mainTable(KJS::mainTable)
    7778{
     
    550551    token = IDENT;
    551552    break;
    552   case IdentifierOrKeyword:
     553  case IdentifierOrKeyword: {
    553554    lvalp->ident = makeIdentifier(m_buffer16);
    554     if ((token = mainTable.value(*lvalp->ident)) < 0) {
     555    const HashEntry* entry = mainTable.entry(m_globalData, *lvalp->ident);
     556    if (!entry) {
    555557      // Lookup for keyword failed, means this is an identifier.
    556558      token = IDENT;
    557559      break;
    558560    }
     561    token = entry->integerValue;
    559562    // Hack for "f = function somename() { ... }"; too hard to get into the grammar.
    560563    eatNextIdentifier = token == FUNCTION && lastToken == '=';
     
    562565      restrKeyword = true;
    563566    break;
     567  }
    564568  case String:
    565569    lvalp->string = makeUString(m_buffer16);
     
    887891Identifier* Lexer::makeIdentifier(const Vector<UChar>& buffer)
    888892{
    889     KJS::Identifier* identifier = new KJS::Identifier(buffer.data(), buffer.size());
     893    KJS::Identifier* identifier = new KJS::Identifier(m_globalData, buffer.data(), buffer.size());
    890894    m_identifiers.append(identifier);
    891895    return identifier;
Note: See TracChangeset for help on using the changeset viewer.