Changeset 176583 in webkit
- Timestamp:
- Nov 29, 2014, 4:06:58 PM (12 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 19 edited
-
ChangeLog (modified) (1 diff)
-
bytecode/ComplexGetStatus.cpp (modified) (1 diff)
-
bytecode/ComplexGetStatus.h (modified) (1 diff)
-
bytecode/GetByIdStatus.cpp (modified) (5 diffs)
-
bytecode/GetByIdStatus.h (modified) (2 diffs)
-
bytecode/PutByIdStatus.cpp (modified) (5 diffs)
-
bytecode/PutByIdStatus.h (modified) (2 diffs)
-
dfg/DFGByteCodeParser.cpp (modified) (4 diffs)
-
dfg/DFGDesiredIdentifiers.cpp (modified) (1 diff)
-
dfg/DFGDesiredIdentifiers.h (modified) (2 diffs)
-
dfg/DFGFixupPhase.cpp (modified) (1 diff)
-
runtime/Identifier.h (modified) (1 diff)
-
runtime/IntendedStructureChain.cpp (modified) (1 diff)
-
runtime/IntendedStructureChain.h (modified) (1 diff)
-
runtime/PropertyMapHashTable.h (modified) (3 diffs)
-
runtime/Structure.cpp (modified) (7 diffs)
-
runtime/Structure.h (modified) (7 diffs)
-
runtime/StructureInlines.h (modified) (1 diff)
-
runtime/StructureTransitionTable.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r176572 r176583 1 2014-11-29 Andreas Kling <akling@apple.com> 2 3 PropertyTable keys should be AtomicStringImpl. 4 <https://webkit.org/b/139096> 5 6 Reviewed by Sam Weinig. 7 8 Since PropertyTable keys are really always Identifiers, switch the key 9 type from StringImpl* to AtomicStringImpl*. 10 11 We have code in the GetByVal opcode implementations that assumes things 12 about this, so this change adds confidence to those algorithms. 13 14 * bytecode/ComplexGetStatus.cpp: 15 (JSC::ComplexGetStatus::computeFor): 16 * bytecode/ComplexGetStatus.h: 17 * bytecode/GetByIdStatus.cpp: 18 (JSC::GetByIdStatus::computeFromLLInt): 19 (JSC::GetByIdStatus::computeFor): 20 (JSC::GetByIdStatus::computeForStubInfo): 21 * bytecode/GetByIdStatus.h: 22 * bytecode/PutByIdStatus.cpp: 23 (JSC::PutByIdStatus::computeFromLLInt): 24 (JSC::PutByIdStatus::computeFor): 25 (JSC::PutByIdStatus::computeForStubInfo): 26 * bytecode/PutByIdStatus.h: 27 * dfg/DFGByteCodeParser.cpp: 28 (JSC::DFG::ByteCodeParser::parseBlock): 29 (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry): 30 * dfg/DFGDesiredIdentifiers.cpp: 31 (JSC::DFG::DesiredIdentifiers::addLazily): 32 (JSC::DFG::DesiredIdentifiers::at): 33 * dfg/DFGDesiredIdentifiers.h: 34 (JSC::DFG::DesiredIdentifiers::operator[]): 35 * dfg/DFGFixupPhase.cpp: 36 (JSC::DFG::FixupPhase::isStringPrototypeMethodSane): 37 * runtime/Identifier.h: 38 (JSC::Identifier::impl): 39 * runtime/IntendedStructureChain.cpp: 40 (JSC::IntendedStructureChain::mayInterceptStoreTo): 41 * runtime/IntendedStructureChain.h: 42 * runtime/PropertyMapHashTable.h: 43 * runtime/Structure.cpp: 44 (JSC::StructureTransitionTable::contains): 45 (JSC::StructureTransitionTable::get): 46 (JSC::Structure::addPropertyTransitionToExistingStructureImpl): 47 (JSC::Structure::addPropertyTransitionToExistingStructureConcurrently): 48 (JSC::Structure::getConcurrently): 49 (JSC::Structure::add): 50 (JSC::Structure::remove): 51 * runtime/Structure.h: 52 (JSC::PropertyMapEntry::PropertyMapEntry): 53 * runtime/StructureInlines.h: 54 (JSC::Structure::getConcurrently): 55 * runtime/StructureTransitionTable.h: 56 (JSC::StructureTransitionTable::Hash::hash): 57 1 58 2014-11-28 Gyuyoung Kim <gyuyoung.kim@samsung.com> 2 59 -
trunk/Source/JavaScriptCore/bytecode/ComplexGetStatus.cpp
r176506 r176583 33 33 ComplexGetStatus ComplexGetStatus::computeFor( 34 34 CodeBlock* profiledBlock, Structure* headStructure, StructureChain* chain, 35 unsigned chainCount, StringImpl* uid)35 unsigned chainCount, AtomicStringImpl* uid) 36 36 { 37 37 // FIXME: We should assert that we never see a structure that -
trunk/Source/JavaScriptCore/bytecode/ComplexGetStatus.h
r172129 r176583 99 99 static ComplexGetStatus computeFor( 100 100 CodeBlock* profiledBlock, Structure* headStructure, StructureChain* chain, 101 unsigned chainCount, StringImpl* uid);101 unsigned chainCount, AtomicStringImpl* uid); 102 102 103 103 Kind kind() const { return m_kind; } -
trunk/Source/JavaScriptCore/bytecode/GetByIdStatus.cpp
r175846 r176583 67 67 #endif 68 68 69 GetByIdStatus GetByIdStatus::computeFromLLInt(CodeBlock* profiledBlock, unsigned bytecodeIndex, StringImpl* uid)69 GetByIdStatus GetByIdStatus::computeFromLLInt(CodeBlock* profiledBlock, unsigned bytecodeIndex, AtomicStringImpl* uid) 70 70 { 71 71 UNUSED_PARAM(profiledBlock); … … 92 92 } 93 93 94 GetByIdStatus GetByIdStatus::computeFor(CodeBlock* profiledBlock, StubInfoMap& map, unsigned bytecodeIndex, StringImpl* uid)94 GetByIdStatus GetByIdStatus::computeFor(CodeBlock* profiledBlock, StubInfoMap& map, unsigned bytecodeIndex, AtomicStringImpl* uid) 95 95 { 96 96 ConcurrentJITLocker locker(profiledBlock->m_lock); … … 119 119 #if ENABLE(JIT) 120 120 GetByIdStatus GetByIdStatus::computeForStubInfo( 121 const ConcurrentJITLocker& locker, CodeBlock* profiledBlock, StructureStubInfo* stubInfo, StringImpl* uid,121 const ConcurrentJITLocker& locker, CodeBlock* profiledBlock, StructureStubInfo* stubInfo, AtomicStringImpl* uid, 122 122 CallLinkStatus::ExitSiteData callExitSiteData) 123 123 { … … 225 225 GetByIdStatus GetByIdStatus::computeFor( 226 226 CodeBlock* profiledBlock, CodeBlock* dfgBlock, StubInfoMap& baselineMap, 227 StubInfoMap& dfgMap, CodeOrigin codeOrigin, StringImpl* uid)227 StubInfoMap& dfgMap, CodeOrigin codeOrigin, AtomicStringImpl* uid) 228 228 { 229 229 #if ENABLE(DFG_JIT) … … 263 263 } 264 264 265 GetByIdStatus GetByIdStatus::computeFor(const StructureSet& set, StringImpl* uid)265 GetByIdStatus GetByIdStatus::computeFor(const StructureSet& set, AtomicStringImpl* uid) 266 266 { 267 267 // For now we only handle the super simple self access case. We could handle the -
trunk/Source/JavaScriptCore/bytecode/GetByIdStatus.h
r173797 r176583 68 68 } 69 69 70 static GetByIdStatus computeFor(CodeBlock*, StubInfoMap&, unsigned bytecodeIndex, StringImpl* uid);71 static GetByIdStatus computeFor(const StructureSet&, StringImpl* uid);70 static GetByIdStatus computeFor(CodeBlock*, StubInfoMap&, unsigned bytecodeIndex, AtomicStringImpl* uid); 71 static GetByIdStatus computeFor(const StructureSet&, AtomicStringImpl* uid); 72 72 73 static GetByIdStatus computeFor(CodeBlock* baselineBlock, CodeBlock* dfgBlock, StubInfoMap& baselineMap, StubInfoMap& dfgMap, CodeOrigin, StringImpl* uid);73 static GetByIdStatus computeFor(CodeBlock* baselineBlock, CodeBlock* dfgBlock, StubInfoMap& baselineMap, StubInfoMap& dfgMap, CodeOrigin, AtomicStringImpl* uid); 74 74 75 75 State state() const { return m_state; } … … 98 98 static GetByIdStatus computeForStubInfo( 99 99 const ConcurrentJITLocker&, CodeBlock* profiledBlock, StructureStubInfo*, 100 StringImpl* uid, CallLinkStatus::ExitSiteData);100 AtomicStringImpl* uid, CallLinkStatus::ExitSiteData); 101 101 #endif 102 static GetByIdStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex, StringImpl* uid);102 static GetByIdStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex, AtomicStringImpl* uid); 103 103 104 104 bool appendVariant(const GetByIdVariant&); -
trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp
r174815 r176583 63 63 #endif 64 64 65 PutByIdStatus PutByIdStatus::computeFromLLInt(CodeBlock* profiledBlock, unsigned bytecodeIndex, StringImpl* uid)65 PutByIdStatus PutByIdStatus::computeFromLLInt(CodeBlock* profiledBlock, unsigned bytecodeIndex, AtomicStringImpl* uid) 66 66 { 67 67 UNUSED_PARAM(profiledBlock); … … 106 106 } 107 107 108 PutByIdStatus PutByIdStatus::computeFor(CodeBlock* profiledBlock, StubInfoMap& map, unsigned bytecodeIndex, StringImpl* uid)108 PutByIdStatus PutByIdStatus::computeFor(CodeBlock* profiledBlock, StubInfoMap& map, unsigned bytecodeIndex, AtomicStringImpl* uid) 109 109 { 110 110 ConcurrentJITLocker locker(profiledBlock->m_lock); … … 135 135 PutByIdStatus PutByIdStatus::computeForStubInfo( 136 136 const ConcurrentJITLocker& locker, CodeBlock* profiledBlock, StructureStubInfo* stubInfo, 137 StringImpl* uid, CallLinkStatus::ExitSiteData callExitSiteData)137 AtomicStringImpl* uid, CallLinkStatus::ExitSiteData callExitSiteData) 138 138 { 139 139 if (!stubInfo || !stubInfo->seen) … … 275 275 #endif 276 276 277 PutByIdStatus PutByIdStatus::computeFor(CodeBlock* baselineBlock, CodeBlock* dfgBlock, StubInfoMap& baselineMap, StubInfoMap& dfgMap, CodeOrigin codeOrigin, StringImpl* uid)277 PutByIdStatus PutByIdStatus::computeFor(CodeBlock* baselineBlock, CodeBlock* dfgBlock, StubInfoMap& baselineMap, StubInfoMap& dfgMap, CodeOrigin codeOrigin, AtomicStringImpl* uid) 278 278 { 279 279 #if ENABLE(DFG_JIT) … … 309 309 } 310 310 311 PutByIdStatus PutByIdStatus::computeFor(JSGlobalObject* globalObject, const StructureSet& set, StringImpl* uid, bool isDirect)311 PutByIdStatus PutByIdStatus::computeFor(JSGlobalObject* globalObject, const StructureSet& set, AtomicStringImpl* uid, bool isDirect) 312 312 { 313 313 if (toUInt32FromStringImpl(uid) != PropertyName::NotAnIndex) -
trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.h
r173797 r176583 71 71 } 72 72 73 static PutByIdStatus computeFor(CodeBlock*, StubInfoMap&, unsigned bytecodeIndex, StringImpl* uid);74 static PutByIdStatus computeFor(JSGlobalObject*, const StructureSet&, StringImpl* uid, bool isDirect);73 static PutByIdStatus computeFor(CodeBlock*, StubInfoMap&, unsigned bytecodeIndex, AtomicStringImpl* uid); 74 static PutByIdStatus computeFor(JSGlobalObject*, const StructureSet&, AtomicStringImpl* uid, bool isDirect); 75 75 76 static PutByIdStatus computeFor(CodeBlock* baselineBlock, CodeBlock* dfgBlock, StubInfoMap& baselineMap, StubInfoMap& dfgMap, CodeOrigin, StringImpl* uid);76 static PutByIdStatus computeFor(CodeBlock* baselineBlock, CodeBlock* dfgBlock, StubInfoMap& baselineMap, StubInfoMap& dfgMap, CodeOrigin, AtomicStringImpl* uid); 77 77 78 78 State state() const { return m_state; } … … 97 97 #if ENABLE(JIT) 98 98 static PutByIdStatus computeForStubInfo( 99 const ConcurrentJITLocker&, CodeBlock*, StructureStubInfo*, StringImpl* uid,99 const ConcurrentJITLocker&, CodeBlock*, StructureStubInfo*, AtomicStringImpl* uid, 100 100 CallLinkStatus::ExitSiteData); 101 101 #endif 102 static PutByIdStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex, StringImpl* uid);102 static PutByIdStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex, AtomicStringImpl* uid); 103 103 104 104 bool appendVariant(const PutByIdVariant&); -
trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
r176479 r176583 2835 2835 unsigned identifierNumber = m_inlineStackTop->m_identifierRemap[currentInstruction[3].u.operand]; 2836 2836 2837 StringImpl* uid = m_graph.identifiers()[identifierNumber];2837 AtomicStringImpl* uid = m_graph.identifiers()[identifierNumber]; 2838 2838 GetByIdStatus getByIdStatus = GetByIdStatus::computeFor( 2839 2839 m_inlineStackTop->m_profiledBlock, m_dfgCodeBlock, … … 3209 3209 int scope = currentInstruction[2].u.operand; 3210 3210 unsigned identifierNumber = m_inlineStackTop->m_identifierRemap[currentInstruction[3].u.operand]; 3211 StringImpl* uid = m_graph.identifiers()[identifierNumber];3211 AtomicStringImpl* uid = m_graph.identifiers()[identifierNumber]; 3212 3212 ResolveType resolveType = ResolveModeAndType(currentInstruction[4].u.operand).type(); 3213 3213 … … 3298 3298 unsigned value = currentInstruction[3].u.operand; 3299 3299 ResolveType resolveType = ResolveModeAndType(currentInstruction[4].u.operand).type(); 3300 StringImpl* uid = m_graph.identifiers()[identifierNumber];3300 AtomicStringImpl* uid = m_graph.identifiers()[identifierNumber]; 3301 3301 3302 3302 Structure* structure = 0; … … 3710 3710 3711 3711 for (size_t i = 0; i < codeBlock->numberOfIdentifiers(); ++i) { 3712 StringImpl* rep = codeBlock->identifier(i).impl();3712 AtomicStringImpl* rep = codeBlock->identifier(i).impl(); 3713 3713 BorrowedIdentifierMap::AddResult result = byteCodeParser->m_identifierMap.add(rep, byteCodeParser->m_graph.identifiers().numberOfIdentifiers()); 3714 3714 if (result.isNewEntry) -
trunk/Source/JavaScriptCore/dfg/DFGDesiredIdentifiers.cpp
r167897 r176583 53 53 } 54 54 55 void DesiredIdentifiers::addLazily( StringImpl* rep)55 void DesiredIdentifiers::addLazily(AtomicStringImpl* rep) 56 56 { 57 57 m_addedIdentifiers.append(rep); 58 58 } 59 59 60 StringImpl* DesiredIdentifiers::at(unsigned index) const60 AtomicStringImpl* DesiredIdentifiers::at(unsigned index) const 61 61 { 62 StringImpl* result;62 AtomicStringImpl* result; 63 63 if (index < m_codeBlock->numberOfIdentifiers()) 64 64 result = m_codeBlock->identifier(index).impl(); -
trunk/Source/JavaScriptCore/dfg/DFGDesiredIdentifiers.h
r167897 r176583 46 46 47 47 unsigned numberOfIdentifiers(); 48 void addLazily( StringImpl*);48 void addLazily(AtomicStringImpl*); 49 49 50 StringImpl* at(unsigned index) const;50 AtomicStringImpl* at(unsigned index) const; 51 51 52 StringImpl* operator[](unsigned index) const { return at(index); }52 AtomicStringImpl* operator[](unsigned index) const { return at(index); } 53 53 54 54 void reallyAdd(VM&, CommonData*); … … 56 56 private: 57 57 CodeBlock* m_codeBlock; 58 Vector< StringImpl*> m_addedIdentifiers;58 Vector<AtomicStringImpl*> m_addedIdentifiers; 59 59 }; 60 60 -
trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
r176109 r176583 1441 1441 1442 1442 bool isStringPrototypeMethodSane( 1443 JSObject* stringPrototype, Structure* stringPrototypeStructure, StringImpl* uid)1443 JSObject* stringPrototype, Structure* stringPrototypeStructure, AtomicStringImpl* uid) 1444 1444 { 1445 1445 unsigned attributesUnused; -
trunk/Source/JavaScriptCore/runtime/Identifier.h
r173269 r176583 54 54 55 55 const String& string() const { return m_string; } 56 StringImpl* impl() const { return m_string.impl(); }56 AtomicStringImpl* impl() const { return static_cast<AtomicStringImpl*>(m_string.impl()); } 57 57 58 58 int length() const { return m_string.length(); } -
trunk/Source/JavaScriptCore/runtime/IntendedStructureChain.cpp
r173797 r176583 104 104 } 105 105 106 bool IntendedStructureChain::mayInterceptStoreTo( StringImpl* uid)106 bool IntendedStructureChain::mayInterceptStoreTo(AtomicStringImpl* uid) 107 107 { 108 108 for (unsigned i = 0; i < m_vector.size(); ++i) { -
trunk/Source/JavaScriptCore/runtime/IntendedStructureChain.h
r173797 r176583 50 50 bool isStillValid() const; 51 51 bool matches(StructureChain*) const; 52 bool mayInterceptStoreTo( StringImpl* uid);52 bool mayInterceptStoreTo(AtomicStringImpl* uid); 53 53 bool isNormalized(); 54 54 -
trunk/Source/JavaScriptCore/runtime/PropertyMapHashTable.h
r173799 r176583 31 31 #include <wtf/PassOwnPtr.h> 32 32 #include <wtf/Vector.h> 33 #include <wtf/text/ StringImpl.h>33 #include <wtf/text/AtomicStringImpl.h> 34 34 35 35 … … 37 37 #define DUMP_PROPERTYMAP_COLLISIONS 0 38 38 39 #define PROPERTY_MAP_DELETED_ENTRY_KEY (( StringImpl*)1)39 #define PROPERTY_MAP_DELETED_ENTRY_KEY ((AtomicStringImpl*)1) 40 40 41 41 namespace JSC { … … 133 133 } 134 134 135 typedef StringImpl* KeyType;135 typedef AtomicStringImpl* KeyType; 136 136 typedef PropertyMapEntry ValueType; 137 137 -
trunk/Source/JavaScriptCore/runtime/Structure.cpp
r173993 r176583 60 60 #endif 61 61 62 bool StructureTransitionTable::contains( StringImpl* rep, unsigned attributes) const62 bool StructureTransitionTable::contains(AtomicStringImpl* rep, unsigned attributes) const 63 63 { 64 64 if (isUsingSingleSlot()) { … … 69 69 } 70 70 71 inline Structure* StructureTransitionTable::get( StringImpl* rep, unsigned attributes) const71 inline Structure* StructureTransitionTable::get(AtomicStringImpl* rep, unsigned attributes) const 72 72 { 73 73 if (isUsingSingleSlot()) { … … 316 316 } 317 317 318 Structure* Structure::addPropertyTransitionToExistingStructureImpl(Structure* structure, StringImpl* uid, unsigned attributes, PropertyOffset& offset)318 Structure* Structure::addPropertyTransitionToExistingStructureImpl(Structure* structure, AtomicStringImpl* uid, unsigned attributes, PropertyOffset& offset) 319 319 { 320 320 ASSERT(!structure->isDictionary()); … … 336 336 } 337 337 338 Structure* Structure::addPropertyTransitionToExistingStructureConcurrently(Structure* structure, StringImpl* uid, unsigned attributes, PropertyOffset& offset)338 Structure* Structure::addPropertyTransitionToExistingStructureConcurrently(Structure* structure, AtomicStringImpl* uid, unsigned attributes, PropertyOffset& offset) 339 339 { 340 340 ConcurrentJITLocker locker(structure->m_lock); … … 851 851 } 852 852 853 PropertyOffset Structure::getConcurrently( StringImpl* uid, unsigned& attributes)853 PropertyOffset Structure::getConcurrently(AtomicStringImpl* uid, unsigned& attributes) 854 854 { 855 855 PropertyOffset result = invalidOffset; … … 891 891 setHasNonEnumerableProperties(true); 892 892 893 StringImpl* rep = propertyName.uid();893 AtomicStringImpl* rep = propertyName.uid(); 894 894 895 895 if (!propertyTable()) … … 910 910 checkConsistency(); 911 911 912 StringImpl* rep = propertyName.uid();912 AtomicStringImpl* rep = propertyName.uid(); 913 913 914 914 if (!propertyTable()) -
trunk/Source/JavaScriptCore/runtime/Structure.h
r173993 r176583 49 49 #include <wtf/PrintStream.h> 50 50 #include <wtf/RefCounted.h> 51 #include <wtf/text/StringImpl.h> 52 51 #include <wtf/text/AtomicStringImpl.h> 53 52 54 53 namespace JSC { … … 75 74 76 75 struct PropertyMapEntry { 77 StringImpl* key;76 AtomicStringImpl* key; 78 77 PropertyOffset offset; 79 78 unsigned attributes; … … 86 85 } 87 86 88 PropertyMapEntry( StringImpl* key, PropertyOffset offset, unsigned attributes)87 PropertyMapEntry(AtomicStringImpl* key, PropertyOffset offset, unsigned attributes) 89 88 : key(key) 90 89 , offset(offset) … … 134 133 135 134 JS_EXPORT_PRIVATE static Structure* addPropertyTransition(VM&, Structure*, PropertyName, unsigned attributes, PropertyOffset&, PutPropertySlot::Context = PutPropertySlot::UnknownContext); 136 static Structure* addPropertyTransitionToExistingStructureConcurrently(Structure*, StringImpl* uid, unsigned attributes, PropertyOffset&);135 static Structure* addPropertyTransitionToExistingStructureConcurrently(Structure*, AtomicStringImpl* uid, unsigned attributes, PropertyOffset&); 137 136 JS_EXPORT_PRIVATE static Structure* addPropertyTransitionToExistingStructure(Structure*, PropertyName, unsigned attributes, PropertyOffset&); 138 137 static Structure* removePropertyTransition(VM&, Structure*, PropertyName, PropertyOffset&); … … 290 289 void forEachPropertyConcurrently(const Functor&); 291 290 292 PropertyOffset getConcurrently( StringImpl* uid);293 PropertyOffset getConcurrently( StringImpl* uid, unsigned& attributes);291 PropertyOffset getConcurrently(AtomicStringImpl* uid); 292 PropertyOffset getConcurrently(AtomicStringImpl* uid, unsigned& attributes); 294 293 295 294 Vector<PropertyMapEntry> getPropertiesConcurrently(); … … 487 486 static Structure* create(VM&, Structure*); 488 487 489 static Structure* addPropertyTransitionToExistingStructureImpl(Structure*, StringImpl* uid, unsigned attributes, PropertyOffset&);488 static Structure* addPropertyTransitionToExistingStructureImpl(Structure*, AtomicStringImpl* uid, unsigned attributes, PropertyOffset&); 490 489 491 490 // This will return the structure that has a usable property table, that property table, … … 595 594 WriteBarrier<JSCell> m_previousOrRareData; 596 595 597 RefPtr< StringImpl> m_nameInPrevious;596 RefPtr<AtomicStringImpl> m_nameInPrevious; 598 597 599 598 const ClassInfo* m_classInfo; -
trunk/Source/JavaScriptCore/runtime/StructureInlines.h
r173799 r176583 134 134 } 135 135 136 inline PropertyOffset Structure::getConcurrently( StringImpl* uid)136 inline PropertyOffset Structure::getConcurrently(AtomicStringImpl* uid) 137 137 { 138 138 unsigned attributesIgnored; -
trunk/Source/JavaScriptCore/runtime/StructureTransitionTable.h
r166292 r176583 31 31 #include <wtf/HashFunctions.h> 32 32 #include <wtf/OwnPtr.h> 33 #include <wtf/text/ StringImpl.h>33 #include <wtf/text/AtomicStringImpl.h> 34 34 35 35 namespace JSC { … … 95 95 96 96 struct Hash { 97 typedef std::pair< StringImpl*, unsigned> Key;97 typedef std::pair<AtomicStringImpl*, unsigned> Key; 98 98 99 99 static unsigned hash(const Key& p) 100 100 { 101 return PtrHash< StringImpl*>::hash(p.first) + p.second;101 return PtrHash<AtomicStringImpl*>::hash(p.first) + p.second; 102 102 } 103 103 … … 132 132 133 133 inline void add(VM&, Structure*); 134 inline bool contains( StringImpl* rep, unsigned attributes) const;135 inline Structure* get( StringImpl* rep, unsigned attributes) const;134 inline bool contains(AtomicStringImpl* rep, unsigned attributes) const; 135 inline Structure* get(AtomicStringImpl* rep, unsigned attributes) const; 136 136 137 137 private:
Note:
See TracChangeset
for help on using the changeset viewer.