summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/parser/ParserArena.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/parser/ParserArena.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/parser/ParserArena.h')
-rw-r--r--Source/JavaScriptCore/parser/ParserArena.h40
1 files changed, 15 insertions, 25 deletions
diff --git a/Source/JavaScriptCore/parser/ParserArena.h b/Source/JavaScriptCore/parser/ParserArena.h
index d8bc2cffa..16e065d61 100644
--- a/Source/JavaScriptCore/parser/ParserArena.h
+++ b/Source/JavaScriptCore/parser/ParserArena.h
@@ -23,8 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef ParserArena_h
-#define ParserArena_h
+#pragma once
#include "CommonIdentifiers.h"
#include "Identifier.h"
@@ -34,7 +33,6 @@
namespace JSC {
class ParserArenaDeletable;
- class ParserArenaRefCounted;
class IdentifierArena {
WTF_MAKE_FAST_ALLOCATED;
@@ -46,12 +44,11 @@ namespace JSC {
template <typename T>
ALWAYS_INLINE const Identifier& makeIdentifier(VM*, const T* characters, size_t length);
+ ALWAYS_INLINE const Identifier& makeEmptyIdentifier(VM*);
ALWAYS_INLINE const Identifier& makeIdentifierLCharFromUChar(VM*, const UChar* characters, size_t length);
const Identifier& makeNumericIdentifier(VM*, double number);
- bool isEmpty() const { return m_identifiers.isEmpty(); }
-
public:
static const int MaximumCachableCharacter = 128;
typedef SegmentedVector<Identifier, 64> IdentifierVector;
@@ -76,24 +73,29 @@ namespace JSC {
if (!length)
return vm->propertyNames->emptyIdentifier;
if (characters[0] >= MaximumCachableCharacter) {
- m_identifiers.append(Identifier(vm, characters, length));
+ m_identifiers.append(Identifier::fromString(vm, characters, length));
return m_identifiers.last();
}
if (length == 1) {
if (Identifier* ident = m_shortIdentifiers[characters[0]])
return *ident;
- m_identifiers.append(Identifier(vm, characters, length));
+ m_identifiers.append(Identifier::fromString(vm, characters, length));
m_shortIdentifiers[characters[0]] = &m_identifiers.last();
return m_identifiers.last();
}
Identifier* ident = m_recentIdentifiers[characters[0]];
if (ident && Identifier::equal(ident->impl(), characters, length))
return *ident;
- m_identifiers.append(Identifier(vm, characters, length));
+ m_identifiers.append(Identifier::fromString(vm, characters, length));
m_recentIdentifiers[characters[0]] = &m_identifiers.last();
return m_identifiers.last();
}
+ ALWAYS_INLINE const Identifier& IdentifierArena::makeEmptyIdentifier(VM* vm)
+ {
+ return vm->propertyNames->emptyIdentifier;
+ }
+
ALWAYS_INLINE const Identifier& IdentifierArena::makeIdentifierLCharFromUChar(VM* vm, const UChar* characters, size_t length)
{
if (!length)
@@ -105,7 +107,7 @@ namespace JSC {
if (length == 1) {
if (Identifier* ident = m_shortIdentifiers[characters[0]])
return *ident;
- m_identifiers.append(Identifier(vm, characters, length));
+ m_identifiers.append(Identifier::fromString(vm, characters, length));
m_shortIdentifiers[characters[0]] = &m_identifiers.last();
return m_identifiers.last();
}
@@ -119,7 +121,7 @@ namespace JSC {
inline const Identifier& IdentifierArena::makeNumericIdentifier(VM* vm, double number)
{
- m_identifiers.append(Identifier(vm, String::numberToStringECMAScript(number)));
+ m_identifiers.append(Identifier::fromString(vm, String::numberToStringECMAScript(number)));
return m_identifiers.last();
}
@@ -136,7 +138,6 @@ namespace JSC {
m_identifierArena.swap(otherArena.m_identifierArena);
m_freeablePools.swap(otherArena.m_freeablePools);
m_deletableObjects.swap(otherArena.m_deletableObjects);
- m_refCountedObjects.swap(otherArena.m_refCountedObjects);
}
void* allocateFreeable(size_t size)
@@ -159,18 +160,10 @@ namespace JSC {
return deletable;
}
- void derefWithArena(PassRefPtr<ParserArenaRefCounted>);
- bool contains(ParserArenaRefCounted*) const;
- ParserArenaRefCounted* last() const;
- void removeLast();
-
- bool isEmpty() const;
- JS_EXPORT_PRIVATE void reset();
-
IdentifierArena& identifierArena()
{
if (UNLIKELY (!m_identifierArena))
- m_identifierArena = adoptPtr(new IdentifierArena);
+ m_identifierArena = std::make_unique<IdentifierArena>();
return *m_identifierArena;
}
@@ -189,12 +182,9 @@ namespace JSC {
char* m_freeableMemory;
char* m_freeablePoolEnd;
- OwnPtr<IdentifierArena> m_identifierArena;
+ std::unique_ptr<IdentifierArena> m_identifierArena;
Vector<void*> m_freeablePools;
Vector<ParserArenaDeletable*> m_deletableObjects;
- Vector<RefPtr<ParserArenaRefCounted>> m_refCountedObjects;
};
-}
-
-#endif
+} // namespace JSC