Changeset 126695 in webkit for trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.h
- Timestamp:
- Aug 25, 2012, 8:25:31 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.h
r120244 r126695 40 40 typedef JSNonFinalObject Base; 41 41 42 SymbolTable& symbolTable() const { return *m_symbolTable; } 43 44 JS_EXPORT_PRIVATE static void destroy(JSCell*); 42 SharedSymbolTable* symbolTable() const { return m_symbolTable.get(); } 45 43 46 44 static NO_RETURN_DUE_TO_ASSERT void putDirectVirtual(JSObject*, ExecState*, PropertyName, JSValue, unsigned attributes); … … 52 50 53 51 protected: 54 static const unsigned StructureFlags = Overrides GetPropertyNames | JSNonFinalObject::StructureFlags;52 static const unsigned StructureFlags = OverridesVisitChildren | OverridesGetPropertyNames | Base::StructureFlags; 55 53 56 JSSymbolTableObject(JSGlobalData& globalData, Structure* structure, SymbolTable* symbolTable) 57 : JSNonFinalObject(globalData, structure) 58 , m_symbolTable(symbolTable) 54 JSSymbolTableObject(JSGlobalData& globalData, Structure* structure) 55 : Base(globalData, structure) 59 56 { 60 57 } 61 62 void finishCreation(JSGlobalData& globalData )58 59 void finishCreation(JSGlobalData& globalData, SharedSymbolTable* symbolTable = 0) 63 60 { 64 61 Base::finishCreation(globalData); 65 ASSERT(m_symbolTable); 62 if (!symbolTable) 63 symbolTable = SharedSymbolTable::create(globalData); 64 m_symbolTable.set(globalData, this, symbolTable); 66 65 } 67 68 SymbolTable* m_symbolTable; 66 67 static void visitChildren(JSCell*, SlotVisitor&); 68 69 WriteBarrier<SharedSymbolTable> m_symbolTable; 69 70 }; 70 71 … … 73 74 SymbolTableObjectType* object, PropertyName propertyName, PropertySlot& slot) 74 75 { 75 SymbolTable& symbolTable = object->symbolTable();76 SymbolTable& symbolTable = *object->symbolTable(); 76 77 SymbolTable::iterator iter = symbolTable.find(propertyName.publicName()); 77 78 if (iter == symbolTable.end()) … … 87 88 SymbolTableObjectType* object, PropertyName propertyName, PropertyDescriptor& descriptor) 88 89 { 89 SymbolTable& symbolTable = object->symbolTable();90 SymbolTable& symbolTable = *object->symbolTable(); 90 91 SymbolTable::iterator iter = symbolTable.find(propertyName.publicName()); 91 92 if (iter == symbolTable.end()) … … 103 104 bool& slotIsWriteable) 104 105 { 105 SymbolTable& symbolTable = object->symbolTable();106 SymbolTable& symbolTable = *object->symbolTable(); 106 107 SymbolTable::iterator iter = symbolTable.find(propertyName.publicName()); 107 108 if (iter == symbolTable.end()) … … 122 123 ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(object)); 123 124 124 SymbolTable& symbolTable = object->symbolTable();125 SymbolTable& symbolTable = *object->symbolTable(); 125 126 SymbolTable::iterator iter = symbolTable.find(propertyName.publicName()); 126 127 if (iter == symbolTable.end()) … … 147 148 ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(object)); 148 149 149 SymbolTable::iterator iter = object->symbolTable() .find(propertyName.publicName());150 if (iter == object->symbolTable() .end())150 SymbolTable::iterator iter = object->symbolTable()->find(propertyName.publicName()); 151 if (iter == object->symbolTable()->end()) 151 152 return false; 152 153 SymbolTableEntry& entry = iter->second;
Note:
See TracChangeset
for help on using the changeset viewer.