diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/runtime/SmallStrings.cpp | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/runtime/SmallStrings.cpp')
-rw-r--r-- | Source/JavaScriptCore/runtime/SmallStrings.cpp | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/Source/JavaScriptCore/runtime/SmallStrings.cpp b/Source/JavaScriptCore/runtime/SmallStrings.cpp index 947518607..ff304039c 100644 --- a/Source/JavaScriptCore/runtime/SmallStrings.cpp +++ b/Source/JavaScriptCore/runtime/SmallStrings.cpp @@ -29,8 +29,9 @@ #include "HeapRootVisitor.h" #include "JSGlobalObject.h" #include "JSString.h" -#include "JSCInlines.h" +#include "Operations.h" #include <wtf/Noncopyable.h> +#include <wtf/PassOwnPtr.h> #include <wtf/text/StringImpl.h> namespace JSC { @@ -57,7 +58,7 @@ SmallStringsStorage::SmallStringsStorage() RefPtr<StringImpl> baseString = StringImpl::createUninitialized(singleCharacterStringCount, characterBuffer); for (unsigned i = 0; i < singleCharacterStringCount; ++i) { characterBuffer[i] = i; - m_reps[i] = AtomicStringImpl::add(PassRefPtr<StringImpl>(StringImpl::createSubstringSharingImpl(baseString, i, 1)).get()); + m_reps[i] = StringImpl::create(baseString, i, 1); } } @@ -66,10 +67,6 @@ SmallStrings::SmallStrings() #define JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE(name) , m_##name(0) JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE) #undef JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE - , m_objectStringStart(nullptr) - , m_nullObjectString(nullptr) - , m_undefinedObjectString(nullptr) - , m_needsToBeVisited(true) { COMPILE_ASSERT(singleCharacterStringCount == sizeof(m_singleCharacterStrings) / sizeof(m_singleCharacterStrings[0]), IsNumCharactersConstInSyncWithClassUsage); @@ -85,23 +82,16 @@ void SmallStrings::initializeCommonStrings(VM& vm) #define JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE(name) initialize(&vm, m_##name, #name); JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE) #undef JSC_COMMON_STRINGS_ATTRIBUTE_INITIALIZE - initialize(&vm, m_objectStringStart, "[object "); - initialize(&vm, m_nullObjectString, "[object Null]"); - initialize(&vm, m_undefinedObjectString, "[object Undefined]"); } void SmallStrings::visitStrongReferences(SlotVisitor& visitor) { - m_needsToBeVisited = false; visitor.appendUnbarrieredPointer(&m_emptyString); for (unsigned i = 0; i <= maxSingleCharacterString; ++i) visitor.appendUnbarrieredPointer(m_singleCharacterStrings + i); #define JSC_COMMON_STRINGS_ATTRIBUTE_VISIT(name) visitor.appendUnbarrieredPointer(&m_##name); JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ATTRIBUTE_VISIT) #undef JSC_COMMON_STRINGS_ATTRIBUTE_VISIT - visitor.appendUnbarrieredPointer(&m_objectStringStart); - visitor.appendUnbarrieredPointer(&m_nullObjectString); - visitor.appendUnbarrieredPointer(&m_undefinedObjectString); } SmallStrings::~SmallStrings() @@ -112,29 +102,26 @@ void SmallStrings::createEmptyString(VM* vm) { ASSERT(!m_emptyString); m_emptyString = JSString::createHasOtherOwner(*vm, StringImpl::empty()); - ASSERT(m_needsToBeVisited); } void SmallStrings::createSingleCharacterString(VM* vm, unsigned char character) { if (!m_storage) - m_storage = std::make_unique<SmallStringsStorage>(); + m_storage = adoptPtr(new SmallStringsStorage); ASSERT(!m_singleCharacterStrings[character]); m_singleCharacterStrings[character] = JSString::createHasOtherOwner(*vm, PassRefPtr<StringImpl>(m_storage->rep(character))); - ASSERT(m_needsToBeVisited); } StringImpl* SmallStrings::singleCharacterStringRep(unsigned char character) { if (!m_storage) - m_storage = std::make_unique<SmallStringsStorage>(); + m_storage = adoptPtr(new SmallStringsStorage); return m_storage->rep(character); } -void SmallStrings::initialize(VM* vm, JSString*& string, const char* value) +void SmallStrings::initialize(VM* vm, JSString*& string, const char* value) const { - string = JSString::create(*vm, Identifier::fromString(vm, value).impl()); - ASSERT(m_needsToBeVisited); + string = JSString::create(*vm, StringImpl::create(value)); } } // namespace JSC |