summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/StructureRareData.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/runtime/StructureRareData.cpp')
-rw-r--r--Source/JavaScriptCore/runtime/StructureRareData.cpp37
1 files changed, 19 insertions, 18 deletions
diff --git a/Source/JavaScriptCore/runtime/StructureRareData.cpp b/Source/JavaScriptCore/runtime/StructureRareData.cpp
index 20a5371e7..9e7265178 100644
--- a/Source/JavaScriptCore/runtime/StructureRareData.cpp
+++ b/Source/JavaScriptCore/runtime/StructureRareData.cpp
@@ -26,17 +26,17 @@
#include "config.h"
#include "StructureRareData.h"
-#include "JSPropertyNameEnumerator.h"
+#include "JSPropertyNameIterator.h"
#include "JSString.h"
-#include "JSCInlines.h"
+#include "Operations.h"
namespace JSC {
-const ClassInfo StructureRareData::s_info = { "StructureRareData", 0, 0, CREATE_METHOD_TABLE(StructureRareData) };
+const ClassInfo StructureRareData::s_info = { "StructureRareData", 0, 0, 0, CREATE_METHOD_TABLE(StructureRareData) };
Structure* StructureRareData::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
{
- return Structure::create(vm, globalObject, prototype, TypeInfo(CellType, StructureFlags), info());
+ return Structure::create(vm, globalObject, prototype, TypeInfo(CompoundType, StructureFlags), info());
}
StructureRareData* StructureRareData::create(VM& vm, Structure* previous)
@@ -46,9 +46,11 @@ StructureRareData* StructureRareData::create(VM& vm, Structure* previous)
return rareData;
}
-void StructureRareData::destroy(JSCell* cell)
+StructureRareData* StructureRareData::clone(VM& vm, const StructureRareData* other)
{
- static_cast<StructureRareData*>(cell)->StructureRareData::~StructureRareData();
+ StructureRareData* newRareData = new (NotNull, allocateCell<StructureRareData>(vm.heap)) StructureRareData(vm, other);
+ newRareData->finishCreation(vm);
+ return newRareData;
}
StructureRareData::StructureRareData(VM& vm, Structure* previous)
@@ -58,26 +60,25 @@ StructureRareData::StructureRareData(VM& vm, Structure* previous)
m_previous.set(vm, this, previous);
}
+StructureRareData::StructureRareData(VM& vm, const StructureRareData* other)
+ : JSCell(vm, other->structure())
+{
+ if (other->previousID())
+ m_previous.set(vm, this, other->previousID());
+ if (other->objectToStringValue())
+ m_objectToStringValue.set(vm, this, other->objectToStringValue());
+}
+
void StructureRareData::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
StructureRareData* thisObject = jsCast<StructureRareData*>(cell);
ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+ ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());
JSCell::visitChildren(thisObject, visitor);
visitor.append(&thisObject->m_previous);
visitor.append(&thisObject->m_objectToStringValue);
- visitor.append(&thisObject->m_cachedPropertyNameEnumerator);
- visitor.append(&thisObject->m_cachedGenericPropertyNameEnumerator);
-}
-
-JSPropertyNameEnumerator* StructureRareData::cachedPropertyNameEnumerator() const
-{
- return m_cachedPropertyNameEnumerator.get();
-}
-
-void StructureRareData::setCachedPropertyNameEnumerator(VM& vm, JSPropertyNameEnumerator* enumerator)
-{
- m_cachedPropertyNameEnumerator.set(vm, this, enumerator);
+ visitor.append(&thisObject->m_enumerationCache);
}
} // namespace JSC