Changeset 58003 in webkit for trunk/JavaScriptCore/runtime
- Timestamp:
- Apr 21, 2010, 12:40:20 PM (15 years ago)
- Location:
- trunk/JavaScriptCore/runtime
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/Identifier.cpp
r58001 r58003 36 36 namespace JSC { 37 37 38 typedef HashMap<const char*, RefPtr<UString::Rep>, PtrHash<const char*> > LiteralIdentifierTable; 39 40 class IdentifierTable : public FastAllocBase { 41 public: 42 ~IdentifierTable() 43 { 44 HashSet<UString::Rep*>::iterator end = m_table.end(); 45 for (HashSet<UString::Rep*>::iterator iter = m_table.begin(); iter != end; ++iter) 46 (*iter)->setIsIdentifier(false); 47 } 48 49 std::pair<HashSet<UString::Rep*>::iterator, bool> add(UString::Rep* value) 50 { 51 std::pair<HashSet<UString::Rep*>::iterator, bool> result = m_table.add(value); 52 (*result.first)->setIsIdentifier(true); 53 return result; 54 } 55 56 template<typename U, typename V> 57 std::pair<HashSet<UString::Rep*>::iterator, bool> add(U value) 58 { 59 std::pair<HashSet<UString::Rep*>::iterator, bool> result = m_table.add<U, V>(value); 60 (*result.first)->setIsIdentifier(true); 61 return result; 62 } 63 64 void remove(UString::Rep* r) { m_table.remove(r); } 65 66 LiteralIdentifierTable& literalTable() { return m_literalTable; } 67 68 private: 69 HashSet<UString::Rep*> m_table; 70 LiteralIdentifierTable m_literalTable; 71 }; 38 IdentifierTable::~IdentifierTable() 39 { 40 HashSet<StringImpl*>::iterator end = m_table.end(); 41 for (HashSet<StringImpl*>::iterator iter = m_table.begin(); iter != end; ++iter) 42 (*iter)->setIsIdentifier(false); 43 } 44 std::pair<HashSet<StringImpl*>::iterator, bool> IdentifierTable::add(StringImpl* value) 45 { 46 std::pair<HashSet<StringImpl*>::iterator, bool> result = m_table.add(value); 47 (*result.first)->setIsIdentifier(true); 48 return result; 49 } 50 template<typename U, typename V> 51 std::pair<HashSet<StringImpl*>::iterator, bool> IdentifierTable::add(U value) 52 { 53 std::pair<HashSet<StringImpl*>::iterator, bool> result = m_table.add<U, V>(value); 54 (*result.first)->setIsIdentifier(true); 55 return result; 56 } 72 57 73 58 IdentifierTable* createIdentifierTable() … … 229 214 } 230 215 231 void Identifier::remove(UString::Rep* r)232 {233 wtfThreadData().currentIdentifierTable()->remove(r);234 }235 236 216 Identifier Identifier::from(ExecState* exec, unsigned value) 237 217 { -
trunk/JavaScriptCore/runtime/Identifier.h
r58001 r58003 74 74 friend bool operator!=(const Identifier&, const char*); 75 75 76 static void remove(UString::Rep*);77 78 76 static bool equal(const UString::Rep*, const char*); 79 77 static bool equal(const UString::Rep*, const UChar*, unsigned length);
Note:
See TracChangeset
for help on using the changeset viewer.