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/identifier.cpp

    r34412 r34607  
    125125};
    126126
    127 PassRefPtr<UString::Rep> Identifier::add(const char* c)
     127PassRefPtr<UString::Rep> Identifier::add(JSGlobalData* globalData, const char* c)
    128128{
    129129    if (!c) {
     
    137137    }
    138138
    139     IdentifierTable& identifierTable = *JSGlobalData::threadInstance().identifierTable;
     139    IdentifierTable& identifierTable = *globalData->identifierTable;
    140140    LiteralIdentifierTable& literalIdentifierTable = identifierTable.literalTable();
    141141
     
    150150}
    151151
    152 PassRefPtr<UString::Rep> Identifier::add(JSGlobalData* globalData, const char* c)
    153 {
    154     if (!c) {
    155         UString::Rep::null.hash();
    156         return &UString::Rep::null;
    157     }
    158 
    159     if (!c[0]) {
    160         UString::Rep::empty.hash();
    161         return &UString::Rep::empty;
    162     }
    163 
    164     IdentifierTable& identifierTable = *globalData->identifierTable;
    165     LiteralIdentifierTable& literalIdentifierTable = identifierTable.literalTable();
    166 
    167     const LiteralIdentifierTable::iterator& iter = literalIdentifierTable.find(c);
    168     if (iter != literalIdentifierTable.end())
    169         return iter->second;
    170 
    171     UString::Rep* addedString = *identifierTable.add<const char*, CStringTranslator>(c).first;
    172     literalIdentifierTable.add(c, addedString);
    173 
    174     return addedString;
     152PassRefPtr<UString::Rep> Identifier::add(ExecState* exec, const char* c)
     153{
     154    return add(&exec->globalData(), c);
    175155}
    176156
     
    206186};
    207187
    208 PassRefPtr<UString::Rep> Identifier::add(const UChar *s, int length)
     188PassRefPtr<UString::Rep> Identifier::add(JSGlobalData* globalData, const UChar* s, int length)
    209189{
    210190    if (!length) {
     
    214194   
    215195    UCharBuffer buf = {s, length};
    216     return *JSGlobalData::threadInstance().identifierTable->add<UCharBuffer, UCharBufferTranslator>(buf).first;
    217 }
    218 
    219 PassRefPtr<UString::Rep> Identifier::addSlowCase(UString::Rep *r)
     196    return *globalData->identifierTable->add<UCharBuffer, UCharBufferTranslator>(buf).first;
     197}
     198
     199PassRefPtr<UString::Rep> Identifier::add(ExecState* exec, const UChar* s, int length)
     200{
     201    return add(&exec->globalData(), s, length);
     202}
     203
     204PassRefPtr<UString::Rep> Identifier::addSlowCase(JSGlobalData* globalData, UString::Rep* r)
    220205{
    221206    ASSERT(!r->identifierTable);
     
    226211    }
    227212
    228     return *JSGlobalData::threadInstance().identifierTable->add(r).first;
     213    return *globalData->identifierTable->add(r).first;
     214}
     215
     216PassRefPtr<UString::Rep> Identifier::addSlowCase(ExecState* exec, UString::Rep* r)
     217{
     218    return addSlowCase(&exec->globalData(), r);
    229219}
    230220
Note: See TracChangeset for help on using the changeset viewer.