-
mjs@apple.com authored
Reviewed by Oliver. - enable polymorphic inline caching of properties of primitives 1.012x speedup on SunSpider. We create special structure IDs for JSString and JSNumberCell. Unlike normal structure IDs, these cannot hold the true prototype. Due to JS autoboxing semantics, the prototype used when looking up string or number properties depends on the lexical global object of the call site, not the creation site. Thus we enable StructureIDs to handle this quirk for primitives. Everything else should be straightforward. * VM/CTI.cpp: (JSC::CTI::privateCompileGetByIdProto): (JSC::CTI::privateCompileGetByIdChain): * VM/CTI.h: (JSC::CTI::compileGetByIdProto): (JSC::CTI::compileGetByIdChain): * VM/JSPropertyNameIterator.h: (JSC::JSPropertyNameIterator::JSPropertyNameIterator): * VM/Machine.cpp: (JSC::Machine::Machine): (JSC::cachePrototypeChain): (JSC::Machine::tryCachePutByID): (JSC::Machine::tryCacheGetByID): (JSC::Machine::privateExecute): (JSC::Machine::tryCTICachePutByID): (JSC::Machine::tryCTICacheGetByID): * kjs/GetterSetter.h: (JSC::GetterSetter::GetterSetter): * kjs/JSCell.h: * kjs/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): * kjs/JSGlobalData.h: * kjs/JSGlobalObject.h: (JSC::StructureID::prototypeForLookup): * kjs/JSNumberCell.h: (JSC::JSNumberCell::JSNumberCell): (JSC::jsNumberCell): * kjs/JSObject.h: (JSC::JSObject::prototype): * kjs/JSString.cpp: (JSC::jsString): (JSC::jsSubstring): (JSC::jsOwnedString): * kjs/JSString.h: (JSC::JSString::JSString): (JSC::JSString::): (JSC::jsSingleCharacterString): (JSC::jsSingleCharacterSubstring): (JSC::jsNontrivialString): * kjs/SmallStrings.cpp: (JSC::SmallStrings::createEmptyString): (JSC::SmallStrings::createSingleCharacterString): * kjs/StructureID.cpp: (JSC::StructureID::StructureID): (JSC::StructureID::addPropertyTransition): (JSC::StructureID::getterSetterTransition): (JSC::StructureIDChain::StructureIDChain): * kjs/StructureID.h: (JSC::StructureID::create): (JSC::StructureID::storedPrototype): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36316 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4fab8113