Modified: trunk/Source/_javascript_Core/runtime/FunctionRareData.h (252420 => 252421)
--- trunk/Source/_javascript_Core/runtime/FunctionRareData.h 2019-11-13 19:36:39 UTC (rev 252420)
+++ trunk/Source/_javascript_Core/runtime/FunctionRareData.h 2019-11-13 19:40:11 UTC (rev 252421)
@@ -53,6 +53,13 @@
static FunctionRareData* create(VM&, JSFunction*);
static constexpr bool needsDestruction = true;
+
+ template<typename CellType, SubspaceAccess mode>
+ static IsoSubspace* subspaceFor(VM& vm)
+ {
+ return vm.functionRareDataSpace<mode>();
+ }
+
static void destroy(JSCell*);
static Structure* createStructure(VM&, JSGlobalObject*, JSValue prototype);
Modified: trunk/Source/_javascript_Core/runtime/ProxyObject.h (252420 => 252421)
--- trunk/Source/_javascript_Core/runtime/ProxyObject.h 2019-11-13 19:36:39 UTC (rev 252420)
+++ trunk/Source/_javascript_Core/runtime/ProxyObject.h 2019-11-13 19:40:11 UTC (rev 252421)
@@ -36,6 +36,12 @@
static constexpr unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | OverridesGetCallData | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | OverridesGetPropertyNames | ProhibitsPropertyCaching;
+ template<typename CellType, SubspaceAccess mode>
+ static IsoSubspace* subspaceFor(VM& vm)
+ {
+ return vm.proxyObjectSpace<mode>();
+ }
+
static ProxyObject* create(JSGlobalObject* globalObject, JSValue target, JSValue handler)
{
VM& vm = getVM(globalObject);
Modified: trunk/Source/_javascript_Core/runtime/SparseArrayValueMap.h (252420 => 252421)
--- trunk/Source/_javascript_Core/runtime/SparseArrayValueMap.h 2019-11-13 19:36:39 UTC (rev 252420)
+++ trunk/Source/_javascript_Core/runtime/SparseArrayValueMap.h 2019-11-13 19:40:11 UTC (rev 252421)
@@ -29,6 +29,7 @@
#include "JSTypeInfo.h"
#include "PropertyDescriptor.h"
#include "PutDirectIndexMode.h"
+#include "VM.h"
#include "WriteBarrier.h"
#include <wtf/HashMap.h>
@@ -105,6 +106,12 @@
static constexpr bool needsDestruction = true;
static void destroy(JSCell*);
+
+ template<typename CellType, SubspaceAccess>
+ static IsoSubspace* subspaceFor(VM& vm)
+ {
+ return &vm.sparseArrayValueMapSpace;
+ }
static Structure* createStructure(VM&, JSGlobalObject*, JSValue prototype);
Modified: trunk/Source/_javascript_Core/runtime/VM.cpp (252420 => 252421)
--- trunk/Source/_javascript_Core/runtime/VM.cpp 2019-11-13 19:36:39 UTC (rev 252420)
+++ trunk/Source/_javascript_Core/runtime/VM.cpp 2019-11-13 19:40:11 UTC (rev 252421)
@@ -281,8 +281,9 @@
, internalFunctionSpace ISO_SUBSPACE_INIT(heap, destructibleObjectHeapCellType.get(), InternalFunction) // Hash:0xf845c464
, nativeExecutableSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), NativeExecutable) // Hash:0x67567f95
, propertyTableSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), PropertyTable) // Hash:0xc6bc9f12
+ , ropeStringSpace ISO_SUBSPACE_INIT(heap, stringHeapCellType.get(), JSRopeString)
+ , sparseArrayValueMapSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), SparseArrayValueMap)
, stringSpace ISO_SUBSPACE_INIT(heap, stringHeapCellType.get(), JSString) // Hash:0x90cf758f
- , ropeStringSpace ISO_SUBSPACE_INIT(heap, stringHeapCellType.get(), JSRopeString)
, structureRareDataSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), StructureRareData) // Hash:0xaca4e62d
, structureSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), Structure) // Hash:0x1f1bcdca
, symbolTableSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), SymbolTable) // Hash:0xc5215afd
@@ -1293,7 +1294,9 @@
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(callbackFunctionSpace, destructibleObjectHeapCellType.get(), JSCallbackFunction) // Hash:0xe7648ebc
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(customGetterSetterFunctionSpace, cellHeapCellType.get(), JSCustomGetterSetterFunction) // Hash:0x18091000
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(errorInstanceSpace, destructibleObjectHeapCellType.get(), ErrorInstance) // Hash:0x3f40d4a
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(functionRareDataSpace, destructibleCellHeapCellType.get(), FunctionRareData)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(nativeStdFunctionSpace, cellHeapCellType.get(), JSNativeStdFunction) // Hash:0x70ed61e4
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(proxyObjectSpace, cellHeapCellType.get(), ProxyObject)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(proxyRevokeSpace, destructibleObjectHeapCellType.get(), ProxyRevoke) // Hash:0xb506a939
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(symbolSpace, destructibleCellHeapCellType.get(), Symbol)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedEvalCodeBlockSpace, destructibleCellHeapCellType.get(), UnlinkedEvalCodeBlock)
Modified: trunk/Source/_javascript_Core/runtime/VM.h (252420 => 252421)
--- trunk/Source/_javascript_Core/runtime/VM.h 2019-11-13 19:36:39 UTC (rev 252420)
+++ trunk/Source/_javascript_Core/runtime/VM.h 2019-11-13 19:40:11 UTC (rev 252421)
@@ -382,8 +382,9 @@
IsoSubspace internalFunctionSpace;
IsoSubspace nativeExecutableSpace;
IsoSubspace propertyTableSpace;
+ IsoSubspace ropeStringSpace;
+ IsoSubspace sparseArrayValueMapSpace;
IsoSubspace stringSpace;
- IsoSubspace ropeStringSpace;
IsoSubspace structureRareDataSpace;
IsoSubspace structureSpace;
IsoSubspace symbolTableSpace;
@@ -396,7 +397,7 @@
return m_##name.get(); \
return name##Slow(); \
} \
- IsoSubspace* name##Slow(); \
+ JS_EXPORT_PRIVATE IsoSubspace* name##Slow(); \
std::unique_ptr<IsoSubspace> m_##name;
@@ -407,7 +408,9 @@
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackFunctionSpace)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(customGetterSetterFunctionSpace)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(errorInstanceSpace)
+ DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(functionRareDataSpace)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(nativeStdFunctionSpace)
+ DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyObjectSpace)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyRevokeSpace)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(symbolSpace)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedEvalCodeBlockSpace)