https://bugs.webkit.org/show_bug.cgi?id=149961
Patch by Joseph Pecoraro <pecoraro@apple.com> on 2015-10-09
Reviewed by Andreas Kling.
SmallStrings are all initialized at once privately before the VM
enables Garbage Collection. There is no need to keep updating
this flag, as it couldn't have changed.
* runtime/SmallStrings.cpp:
(JSC::SmallStrings::createEmptyString):
(JSC::SmallStrings::createSingleCharacterString):
(JSC::SmallStrings::initialize):
* runtime/SmallStrings.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@190829
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2015-10-09 Joseph Pecoraro <pecoraro@apple.com>
+
+ No need to keep setting needsVisit flag in SmallStrings
+ https://bugs.webkit.org/show_bug.cgi?id=149961
+
+ Reviewed by Andreas Kling.
+
+ SmallStrings are all initialized at once privately before the VM
+ enables Garbage Collection. There is no need to keep updating
+ this flag, as it couldn't have changed.
+
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStrings::createEmptyString):
+ (JSC::SmallStrings::createSingleCharacterString):
+ (JSC::SmallStrings::initialize):
+ * runtime/SmallStrings.h:
+
2015-10-09 Geoffrey Garen <ggaren@apple.com>
Unreviewed, rolling back in r190694
{
ASSERT(!m_emptyString);
m_emptyString = JSString::createHasOtherOwner(*vm, StringImpl::empty());
- m_needsToBeVisited = true;
+ ASSERT(m_needsToBeVisited);
}
void SmallStrings::createSingleCharacterString(VM* vm, unsigned char character)
m_storage = std::make_unique<SmallStringsStorage>();
ASSERT(!m_singleCharacterStrings[character]);
m_singleCharacterStrings[character] = JSString::createHasOtherOwner(*vm, PassRefPtr<StringImpl>(m_storage->rep(character)));
- m_needsToBeVisited = true;
+ ASSERT(m_needsToBeVisited);
}
StringImpl* SmallStrings::singleCharacterStringRep(unsigned char character)
void SmallStrings::initialize(VM* vm, JSString*& string, const char* value)
{
string = JSString::create(*vm, Identifier::fromString(vm, value).impl());
- m_needsToBeVisited = true;
+ ASSERT(m_needsToBeVisited);
}
} // namespace JSC
namespace JSC {
-class HeapRootVisitor;
class VM;
class JSString;
class SmallStringsStorage;
private:
static const unsigned singleCharacterStringCount = maxSingleCharacterString + 1;
- JS_EXPORT_PRIVATE void createEmptyString(VM*);
- JS_EXPORT_PRIVATE void createSingleCharacterString(VM*, unsigned char);
+ void createEmptyString(VM*);
+ void createSingleCharacterString(VM*, unsigned char);
void initialize(VM*, JSString*&, const char* value);