Diff
Modified: trunk/Source/_javascript_Core/CMakeLists.txt (252842 => 252843)
--- trunk/Source/_javascript_Core/CMakeLists.txt 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/CMakeLists.txt 2019-11-24 22:39:11 UTC (rev 252843)
@@ -99,7 +99,6 @@
wasm/js/JSToWasmICCallee.cpp
wasm/js/WebAssemblyCompileErrorConstructor.cpp
wasm/js/WebAssemblyCompileErrorPrototype.cpp
- wasm/js/WebAssemblyFunctionHeapCellType.cpp
wasm/js/WebAssemblyInstanceConstructor.cpp
wasm/js/WebAssemblyInstancePrototype.cpp
wasm/js/WebAssemblyLinkErrorConstructor.cpp
@@ -614,6 +613,7 @@
heap/HeapSnapshotBuilder.h
heap/IncrementalSweeper.h
heap/IsoCellSet.h
+ heap/IsoHeapCellType.h
heap/IsoSubspace.h
heap/IsoSubspaceInlines.h
heap/IsoSubspacePerVM.h
Modified: trunk/Source/_javascript_Core/ChangeLog (252842 => 252843)
--- trunk/Source/_javascript_Core/ChangeLog 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/ChangeLog 2019-11-24 22:39:11 UTC (rev 252843)
@@ -1,3 +1,34 @@
+2019-11-24 Yusuke Suzuki <[email protected]>
+
+ [JSC] Introduce IsoHeapCellType
+ https://bugs.webkit.org/show_bug.cgi?id=204555
+
+ Reviewed by Mark Lam.
+
+ We introduce IsoHeapCellType<CellType>, which destroys cell based on CellType information, which should be in IsoSubspace.
+ By using this, we can avoid inheriting JSDestructibleObject. For each IsoSubspace, we know how to destroy cells if we use
+ IsoHeapCellType<CellType> without using methodTable. We start using it for, JSString, JSWeakMap, JSWeakSet, WebAssemblyFunction,
+ and JSWebAssemblyCodeBlock. And we use JSNonFinalObject for the base of JSWeakMap and JSWeakSet, which shrinks size of them
+ from 48 to 32.
+
+ * CMakeLists.txt:
+ * _javascript_Core.xcodeproj/project.pbxproj:
+ * Sources.txt:
+ * heap/IsoHeapCellType.h: Renamed from Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.h.
+ * runtime/JSString.cpp:
+ (JSC::JSString::destroy): Deleted.
+ * runtime/JSString.h:
+ (JSC::JSString::destroy):
+ * runtime/JSStringHeapCellType.cpp: Removed.
+ * runtime/JSStringHeapCellType.h: Removed.
+ * runtime/VM.cpp:
+ (JSC::VM::VM):
+ * runtime/VM.h:
+ * runtime/WeakMapImpl.h:
+ * wasm/js/JSWebAssemblyCodeBlockHeapCellType.cpp: Removed.
+ * wasm/js/JSWebAssemblyCodeBlockHeapCellType.h: Removed.
+ * wasm/js/WebAssemblyFunctionHeapCellType.cpp: Removed.
+
2019-11-23 Ross Kirsling <[email protected]>
[JSC] GetSubstitution is performed incorrectly via RegExp.prototype[@@replace]
Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (252842 => 252843)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2019-11-24 22:39:11 UTC (rev 252843)
@@ -454,7 +454,6 @@
0F7DF1371E2970E10095951B /* Subspace.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7DF1321E2970D50095951B /* Subspace.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F7DF1381E2970E40095951B /* SubspaceInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7DF1331E2970D50095951B /* SubspaceInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F7DF13C1E2971130095951B /* JSDestructibleObjectHeapCellType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7DF13A1E29710E0095951B /* JSDestructibleObjectHeapCellType.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 0F7DF13F1E2AFC4D0095951B /* JSStringHeapCellType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7DF13E1E2AFC4B0095951B /* JSStringHeapCellType.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F7DF1461E2BEF6A0095951B /* BlockDirectoryInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7DF1451E2BEF680095951B /* BlockDirectoryInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F7F988C1D9596C800F4F12E /* DFGStoreBarrierClusteringPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F7F988A1D9596C300F4F12E /* DFGStoreBarrierClusteringPhase.h */; };
0F8023EA1613832B00A0BA45 /* ByValInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8023E91613832300A0BA45 /* ByValInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -894,7 +893,6 @@
521131F71F82BF14007CCEEE /* PolyProtoAccessChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 521131F61F82BF11007CCEEE /* PolyProtoAccessChain.h */; settings = {ATTRIBUTES = (Private, ); }; };
521322461ECBCE8200F65615 /* WebAssemblyFunctionBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 521322441ECBCE8200F65615 /* WebAssemblyFunctionBase.h */; };
522927D5235FD0B9005CB169 /* GCMemoryOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 5272987B235FC8BA005C982C /* GCMemoryOperations.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 523FD88E225566C9003B3DCC /* WebAssemblyFunctionHeapCellType.h in Headers */ = {isa = PBXBuildFile; fileRef = 523FD88C225566C3003B3DCC /* WebAssemblyFunctionHeapCellType.h */; };
524E9D7322092B5200A6BEEE /* AirAllocateRegistersAndStackAndGenerateCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 524E9D7222092B4600A6BEEE /* AirAllocateRegistersAndStackAndGenerateCode.h */; };
5250D2D21E8DA05A0029A932 /* WasmThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 5250D2D01E8DA05A0029A932 /* WasmThunks.h */; settings = {ATTRIBUTES = (Private, ); }; };
525C0DDA1E935847002184CD /* WasmCallee.h in Headers */ = {isa = PBXBuildFile; fileRef = 525C0DD81E935847002184CD /* WasmCallee.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -1217,7 +1215,6 @@
79DAE27A1E03C82200B526AA /* WasmExceptionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 79DAE2791E03C82200B526AA /* WasmExceptionType.h */; settings = {ATTRIBUTES = (Private, ); }; };
79DFCBDB1D88C59600527D03 /* HasOwnPropertyCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 79DFCBDA1D88C59600527D03 /* HasOwnPropertyCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
79EE0C001B4AFB85000385C9 /* VariableEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = 79EE0BFE1B4AFB85000385C9 /* VariableEnvironment.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 79EFD4841EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.h in Headers */ = {isa = PBXBuildFile; fileRef = 79EFD4821EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.h */; settings = {ATTRIBUTES = (Private, ); }; };
79FC8A081E32E9F000D88F0E /* DFGRegisteredStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = 79FC8A071E32E9F000D88F0E /* DFGRegisteredStructure.h */; settings = {ATTRIBUTES = (Private, ); }; };
7A9774A8206B82E4008D03D0 /* JSWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A9774A7206B82C9008D03D0 /* JSWeakValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
7BC547D31B6959A100959B58 /* WasmFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BC547D21B69599B00959B58 /* WasmFormat.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -1836,6 +1833,7 @@
E3A421431D6F58930007C617 /* PreciseJumpTargetsInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = E3A421421D6F588F0007C617 /* PreciseJumpTargetsInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
E3AC277721FDB4940024452C /* RegExpCachedResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 86F75EFC151C062F007C9BA3 /* RegExpCachedResult.h */; settings = {ATTRIBUTES = (Private, ); }; };
E3BD2B7622F275020011765C /* WasmCompilationMode.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BD2B7522F275020011765C /* WasmCompilationMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ E3BF1BAE238AAEDB003A1C2B /* IsoHeapCellType.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BF1BAD238AAED1003A1C2B /* IsoHeapCellType.h */; };
E3BFA5D021E853A1009C0EBA /* DFGDesiredGlobalProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BFA5CD21E853A1009C0EBA /* DFGDesiredGlobalProperty.h */; };
E3BFD0BC1DAF808E0065DEA2 /* AccessCaseSnippetParams.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BFD0BA1DAF807C0065DEA2 /* AccessCaseSnippetParams.h */; };
E3C295DD1ED2CBDA00D3016F /* ObjectPropertyChangeAdaptiveWatchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C295DC1ED2CBAA00D3016F /* ObjectPropertyChangeAdaptiveWatchpoint.h */; };
@@ -2737,8 +2735,6 @@
0F7DF1331E2970D50095951B /* SubspaceInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubspaceInlines.h; sourceTree = "<group>"; };
0F7DF1391E29710E0095951B /* JSDestructibleObjectHeapCellType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDestructibleObjectHeapCellType.cpp; sourceTree = "<group>"; };
0F7DF13A1E29710E0095951B /* JSDestructibleObjectHeapCellType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDestructibleObjectHeapCellType.h; sourceTree = "<group>"; };
- 0F7DF13D1E2AFC4B0095951B /* JSStringHeapCellType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStringHeapCellType.cpp; sourceTree = "<group>"; };
- 0F7DF13E1E2AFC4B0095951B /* JSStringHeapCellType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringHeapCellType.h; sourceTree = "<group>"; };
0F7DF1451E2BEF680095951B /* BlockDirectoryInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockDirectoryInlines.h; sourceTree = "<group>"; };
0F7F98891D9596C300F4F12E /* DFGStoreBarrierClusteringPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGStoreBarrierClusteringPhase.cpp; path = dfg/DFGStoreBarrierClusteringPhase.cpp; sourceTree = "<group>"; };
0F7F988A1D9596C300F4F12E /* DFGStoreBarrierClusteringPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGStoreBarrierClusteringPhase.h; path = dfg/DFGStoreBarrierClusteringPhase.h; sourceTree = "<group>"; };
@@ -3541,8 +3537,6 @@
521322431ECBCE8200F65615 /* WebAssemblyFunctionBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebAssemblyFunctionBase.cpp; path = js/WebAssemblyFunctionBase.cpp; sourceTree = "<group>"; };
521322441ECBCE8200F65615 /* WebAssemblyFunctionBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebAssemblyFunctionBase.h; path = js/WebAssemblyFunctionBase.h; sourceTree = "<group>"; };
52335628225EB8E900268BD2 /* CPU.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CPU.cpp; sourceTree = "<group>"; };
- 523FD88C225566C3003B3DCC /* WebAssemblyFunctionHeapCellType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WebAssemblyFunctionHeapCellType.h; path = js/WebAssemblyFunctionHeapCellType.h; sourceTree = "<group>"; };
- 523FD88D225566C4003B3DCC /* WebAssemblyFunctionHeapCellType.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WebAssemblyFunctionHeapCellType.cpp; path = js/WebAssemblyFunctionHeapCellType.cpp; sourceTree = "<group>"; };
524E9D7122092B4500A6BEEE /* AirAllocateRegistersAndStackAndGenerateCode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AirAllocateRegistersAndStackAndGenerateCode.cpp; path = b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp; sourceTree = "<group>"; };
524E9D7222092B4600A6BEEE /* AirAllocateRegistersAndStackAndGenerateCode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AirAllocateRegistersAndStackAndGenerateCode.h; path = b3/air/AirAllocateRegistersAndStackAndGenerateCode.h; sourceTree = "<group>"; };
5250D2CF1E8DA05A0029A932 /* WasmThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WasmThunks.cpp; sourceTree = "<group>"; };
@@ -4021,8 +4015,6 @@
79DFCBDA1D88C59600527D03 /* HasOwnPropertyCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HasOwnPropertyCache.h; sourceTree = "<group>"; };
79EE0BFD1B4AFB85000385C9 /* VariableEnvironment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VariableEnvironment.cpp; sourceTree = "<group>"; };
79EE0BFE1B4AFB85000385C9 /* VariableEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariableEnvironment.h; sourceTree = "<group>"; };
- 79EFD4811EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebAssemblyCodeBlockHeapCellType.cpp; path = js/JSWebAssemblyCodeBlockHeapCellType.cpp; sourceTree = "<group>"; };
- 79EFD4821EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebAssemblyCodeBlockHeapCellType.h; path = js/JSWebAssemblyCodeBlockHeapCellType.h; sourceTree = "<group>"; };
79FC8A071E32E9F000D88F0E /* DFGRegisteredStructure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGRegisteredStructure.h; path = dfg/DFGRegisteredStructure.h; sourceTree = "<group>"; };
7A9774A6206B828C008D03D0 /* JSWeakValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWeakValue.cpp; sourceTree = "<group>"; };
7A9774A7206B82C9008D03D0 /* JSWeakValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWeakValue.h; sourceTree = "<group>"; };
@@ -4980,6 +4972,7 @@
E3A32BC61FC8312E007D7E76 /* WeakMapImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakMapImpl.h; sourceTree = "<group>"; };
E3A421421D6F588F0007C617 /* PreciseJumpTargetsInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreciseJumpTargetsInlines.h; sourceTree = "<group>"; };
E3BD2B7522F275020011765C /* WasmCompilationMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmCompilationMode.h; sourceTree = "<group>"; };
+ E3BF1BAD238AAED1003A1C2B /* IsoHeapCellType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IsoHeapCellType.h; sourceTree = "<group>"; };
E3BFA5CB21E853A0009C0EBA /* DFGDesiredGlobalProperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDesiredGlobalProperties.cpp; path = dfg/DFGDesiredGlobalProperties.cpp; sourceTree = "<group>"; };
E3BFA5CC21E853A0009C0EBA /* DFGDesiredGlobalProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDesiredGlobalProperties.h; path = dfg/DFGDesiredGlobalProperties.h; sourceTree = "<group>"; };
E3BFA5CD21E853A1009C0EBA /* DFGDesiredGlobalProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDesiredGlobalProperty.h; path = dfg/DFGDesiredGlobalProperty.h; sourceTree = "<group>"; };
@@ -6199,6 +6192,7 @@
0FB4677C1FDDA6D9003FCB09 /* IsoCellSet.cpp */,
0FB4677D1FDDA6D9003FCB09 /* IsoCellSet.h */,
0FB4677B1FDDA6D8003FCB09 /* IsoCellSetInlines.h */,
+ E3BF1BAD238AAED1003A1C2B /* IsoHeapCellType.h */,
0FDCE12C1FAFB4DE006F3901 /* IsoSubspace.cpp */,
0FDCE12B1FAFB4DE006F3901 /* IsoSubspace.h */,
0FD2FD9220B52BDC00F09441 /* IsoSubspaceInlines.h */,
@@ -7325,8 +7319,6 @@
3032175DF1AD47D8998B34E1 /* JSSourceCode.h */,
BC02E9B60E1842FA000F9297 /* JSString.cpp */,
F692A8620255597D01FF60F7 /* JSString.h */,
- 0F7DF13D1E2AFC4B0095951B /* JSStringHeapCellType.cpp */,
- 0F7DF13E1E2AFC4B0095951B /* JSStringHeapCellType.h */,
FEFD6FC51D5E7970008F2F0B /* JSStringInlines.h */,
70EC0EBC1AA0D7DA00B6AAFA /* JSStringIterator.cpp */,
70EC0EBD1AA0D7DA00B6AAFA /* JSStringIterator.h */,
@@ -8213,10 +8205,10 @@
14AD91161DCA97FD0014F9FE /* FunctionCodeBlock.cpp */,
14AD91071DCA92940014F9FE /* FunctionCodeBlock.h */,
1498CAD5214BF36D00710879 /* GetByIdMetadata.h */,
+ 0F0332C118B01763005F979A /* GetByIdVariant.cpp */,
+ 0F0332C218B01763005F979A /* GetByIdVariant.h */,
0F93329514CA7DC10085F3C6 /* GetByStatus.cpp */,
0F93329614CA7DC10085F3C6 /* GetByStatus.h */,
- 0F0332C118B01763005F979A /* GetByIdVariant.cpp */,
- 0F0332C218B01763005F979A /* GetByIdVariant.h */,
520D99F02388CC78000509A3 /* GetByValHistory.h */,
14AD91081DCA92940014F9FE /* GlobalCodeBlock.h */,
0F0B83A814BCF55E00885B4F /* HandlerInfo.h */,
@@ -8599,8 +8591,6 @@
ADD09AF31F62482E001313C2 /* JSWebAssembly.h */,
5383AA2F1E65E8A100A532FC /* JSWebAssemblyCodeBlock.cpp */,
AD9E852E1E8A0C6E008DE39E /* JSWebAssemblyCodeBlock.h */,
- 79EFD4811EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.cpp */,
- 79EFD4821EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.h */,
AD2FCBA61DB58DA400B3E736 /* JSWebAssemblyCompileError.cpp */,
AD2FCBA71DB58DA400B3E736 /* JSWebAssemblyCompileError.h */,
796FB4391DFF8C3F0039C95D /* JSWebAssemblyHelpers.h */,
@@ -8626,8 +8616,6 @@
AD4937CA1DDD27340077C807 /* WebAssemblyFunction.h */,
521322431ECBCE8200F65615 /* WebAssemblyFunctionBase.cpp */,
521322441ECBCE8200F65615 /* WebAssemblyFunctionBase.h */,
- 523FD88D225566C4003B3DCC /* WebAssemblyFunctionHeapCellType.cpp */,
- 523FD88C225566C3003B3DCC /* WebAssemblyFunctionHeapCellType.h */,
AD2FCBB41DB58DA400B3E736 /* WebAssemblyInstanceConstructor.cpp */,
AD2FCBB51DB58DA400B3E736 /* WebAssemblyInstanceConstructor.h */,
AD2FCBB61DB58DA400B3E736 /* WebAssemblyInstancePrototype.cpp */,
@@ -9056,7 +9044,6 @@
65B8392E1BACAD360044E824 /* CachedRecovery.h in Headers */,
14F09C2A2231923100CF88EB /* CachedTypes.h in Headers */,
1409ECC1225E178C00BEDD54 /* CachePayload.h in Headers */,
- 520D99F12388CC81000509A3 /* GetByValHistory.h in Headers */,
1409ECC0225E178100BEDD54 /* CacheUpdate.h in Headers */,
0FEC3C601F379F5300F59B6C /* CagedBarrierPtr.h in Headers */,
BC18C3ED0E16F5CD00B34460 /* CallData.h in Headers */,
@@ -9497,8 +9484,9 @@
0F2B66E017B6B5AB00A7AE3F /* GenericTypedArrayView.h in Headers */,
0F2B66E117B6B5AB00A7AE3F /* GenericTypedArrayViewInlines.h in Headers */,
1498CAD6214BF36D00710879 /* GetByIdMetadata.h in Headers */,
+ 0F0332C418B01763005F979A /* GetByIdVariant.h in Headers */,
0F9332A014CA7DCD0085F3C6 /* GetByStatus.h in Headers */,
- 0F0332C418B01763005F979A /* GetByIdVariant.h in Headers */,
+ 520D99F12388CC81000509A3 /* GetByValHistory.h in Headers */,
7964656A1B952FF0003059EE /* GetPutInfo.h in Headers */,
534E03581E53BF2F00213F64 /* GetterSetterAccessCase.h in Headers */,
FE1D6D6F236258FE007A5C26 /* GetVM.h in Headers */,
@@ -9613,6 +9601,7 @@
0FDCE1321FB11DA4006F3901 /* IsoAlignedMemoryAllocator.h in Headers */,
0FB467801FDDA6F1003FCB09 /* IsoCellSet.h in Headers */,
0FB467811FDDA6F7003FCB09 /* IsoCellSetInlines.h in Headers */,
+ E3BF1BAE238AAEDB003A1C2B /* IsoHeapCellType.h in Headers */,
0FDCE12D1FAFB4E5006F3901 /* IsoSubspace.h in Headers */,
0FD2FD9520B52BE200F09441 /* IsoSubspaceInlines.h in Headers */,
0F5E0FE72086AD480097F0DE /* IsoSubspacePerVM.h in Headers */,
@@ -9789,7 +9778,6 @@
A790DD70182F499700588807 /* JSSetIterator.h in Headers */,
BDFCB2BBE90F41349E1B0BED /* JSSourceCode.h in Headers */,
BC18C4270E16F5CD00B34460 /* JSString.h in Headers */,
- 0F7DF13F1E2AFC4D0095951B /* JSStringHeapCellType.h in Headers */,
FEFD6FC61D5E7992008F2F0B /* JSStringInlines.h in Headers */,
70EC0EC31AA0D7DA00B6AAFA /* JSStringIterator.h in Headers */,
2600B5A7152BAAA70091EE5F /* JSStringJoiner.h in Headers */,
@@ -9828,7 +9816,6 @@
7A9774A8206B82E4008D03D0 /* JSWeakValue.h in Headers */,
AD5C36EB1F75AD73000BCAAF /* JSWebAssembly.h in Headers */,
AD9E852F1E8A0C7C008DE39E /* JSWebAssemblyCodeBlock.h in Headers */,
- 79EFD4841EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.h in Headers */,
AD2FCBE31DB58DAD00B3E736 /* JSWebAssemblyCompileError.h in Headers */,
796FB43A1DFF8C3F0039C95D /* JSWebAssemblyHelpers.h in Headers */,
AD2FCBE51DB58DAD00B3E736 /* JSWebAssemblyInstance.h in Headers */,
@@ -10295,7 +10282,6 @@
AD2FCC171DB59CB200B3E736 /* WebAssemblyCompileErrorPrototype.lut.h in Headers */,
AD4937D41DDD27DE0077C807 /* WebAssemblyFunction.h in Headers */,
521322461ECBCE8200F65615 /* WebAssemblyFunctionBase.h in Headers */,
- 523FD88E225566C9003B3DCC /* WebAssemblyFunctionHeapCellType.h in Headers */,
AD2FCBF11DB58DAD00B3E736 /* WebAssemblyInstanceConstructor.h in Headers */,
AD2FCC181DB59CB200B3E736 /* WebAssemblyInstanceConstructor.lut.h in Headers */,
AD2FCBF31DB58DAD00B3E736 /* WebAssemblyInstancePrototype.h in Headers */,
Modified: trunk/Source/_javascript_Core/Sources.txt (252842 => 252843)
--- trunk/Source/_javascript_Core/Sources.txt 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/Sources.txt 2019-11-24 22:39:11 UTC (rev 252843)
@@ -863,7 +863,6 @@
runtime/JSString.cpp
runtime/JSStringIterator.cpp
runtime/JSStringJoiner.cpp
-runtime/JSStringHeapCellType.cpp
runtime/JSSymbolTableObject.cpp
runtime/JSTemplateObjectDescriptor.cpp
runtime/JSType.cpp
@@ -1042,7 +1041,6 @@
wasm/js/JSToWasmICCallee.cpp
wasm/js/JSWebAssembly.cpp
wasm/js/JSWebAssemblyCodeBlock.cpp
-wasm/js/JSWebAssemblyCodeBlockHeapCellType.cpp
wasm/js/JSWebAssemblyCompileError.cpp
wasm/js/JSWebAssemblyInstance.cpp
wasm/js/JSWebAssemblyLinkError.cpp
@@ -1056,7 +1054,6 @@
wasm/js/WebAssemblyCompileErrorPrototype.cpp
wasm/js/WebAssemblyFunction.cpp
wasm/js/WebAssemblyFunctionBase.cpp
-wasm/js/WebAssemblyFunctionHeapCellType.cpp
wasm/js/WebAssemblyInstanceConstructor.cpp
wasm/js/WebAssemblyInstancePrototype.cpp
wasm/js/WebAssemblyLinkErrorConstructor.cpp
Copied: trunk/Source/_javascript_Core/heap/IsoHeapCellType.h (from rev 252842, trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.h) (0 => 252843)
--- trunk/Source/_javascript_Core/heap/IsoHeapCellType.h (rev 0)
+++ trunk/Source/_javascript_Core/heap/IsoHeapCellType.h 2019-11-24 22:39:11 UTC (rev 252843)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "HeapCellType.h"
+#include "MarkedBlockInlines.h"
+
+namespace JSC {
+
+template<typename CellType>
+class IsoHeapCellType final : public HeapCellType {
+public:
+ IsoHeapCellType()
+ : HeapCellType(CellAttributes(CellType::needsDestruction ? NeedsDestruction : DoesNotNeedDestruction, HeapCell::JSCell))
+ {
+ }
+
+ struct DestroyFunc {
+ ALWAYS_INLINE void operator()(VM&, JSCell* cell) const
+ {
+ CellType::destroy(cell);
+ }
+ };
+
+ void finishSweep(MarkedBlock::Handle& handle, FreeList* freeList) override
+ {
+ handle.finishSweepKnowingHeapCellType(freeList, DestroyFunc());
+ }
+
+ void destroy(VM&, JSCell* cell) override
+ {
+ CellType::destroy(cell);
+ }
+};
+
+} // namespace JSC
+
Modified: trunk/Source/_javascript_Core/runtime/JSString.cpp (252842 => 252843)
--- trunk/Source/_javascript_Core/runtime/JSString.cpp 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/runtime/JSString.cpp 2019-11-24 22:39:11 UTC (rev 252843)
@@ -64,11 +64,6 @@
m_strings.append(string);
}
-void JSString::destroy(JSCell* cell)
-{
- static_cast<JSString*>(cell)->JSString::~JSString();
-}
-
void JSString::dumpToStream(const JSCell* cell, PrintStream& out)
{
VM& vm = cell->vm();
Modified: trunk/Source/_javascript_Core/runtime/JSString.h (252842 => 252843)
--- trunk/Source/_javascript_Core/runtime/JSString.h 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/runtime/JSString.h 2019-11-24 22:39:11 UTC (rev 252843)
@@ -92,7 +92,10 @@
static constexpr unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | StructureIsImmortal | OverridesToThis;
static constexpr bool needsDestruction = true;
- static void destroy(JSCell*);
+ static ALWAYS_INLINE void destroy(JSCell* cell)
+ {
+ static_cast<JSString*>(cell)->JSString::~JSString();
+ }
// We specialize the string subspace to get the fastest possible sweep. This wouldn't be
// necessary if JSString didn't have a destructor.
Deleted: trunk/Source/_javascript_Core/runtime/JSStringHeapCellType.cpp (252842 => 252843)
--- trunk/Source/_javascript_Core/runtime/JSStringHeapCellType.cpp 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/runtime/JSStringHeapCellType.cpp 2019-11-24 22:39:11 UTC (rev 252843)
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2017-2018 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "JSStringHeapCellType.h"
-
-#include "MarkedBlockInlines.h"
-#include "JSCInlines.h"
-
-namespace JSC {
-
-struct JSStringDestroyFunc {
- ALWAYS_INLINE void operator()(VM&, JSCell* cell) const
- {
- static_cast<JSString*>(cell)->JSString::~JSString();
- }
-};
-
-JSStringHeapCellType::JSStringHeapCellType()
- : HeapCellType(CellAttributes(NeedsDestruction, HeapCell::JSCell))
-{
-}
-
-JSStringHeapCellType::~JSStringHeapCellType()
-{
-}
-
-void JSStringHeapCellType::finishSweep(MarkedBlock::Handle& handle, FreeList* freeList)
-{
- handle.finishSweepKnowingHeapCellType(freeList, JSStringDestroyFunc());
-}
-
-void JSStringHeapCellType::destroy(VM& vm, JSCell* cell)
-{
- JSStringDestroyFunc()(vm, cell);
-}
-
-} // namespace JSC
-
Deleted: trunk/Source/_javascript_Core/runtime/JSStringHeapCellType.h (252842 => 252843)
--- trunk/Source/_javascript_Core/runtime/JSStringHeapCellType.h 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/runtime/JSStringHeapCellType.h 2019-11-24 22:39:11 UTC (rev 252843)
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include "HeapCellType.h"
-
-namespace JSC {
-
-class JSStringHeapCellType : public HeapCellType {
-public:
- JS_EXPORT_PRIVATE JSStringHeapCellType();
- JS_EXPORT_PRIVATE virtual ~JSStringHeapCellType();
-
- void finishSweep(MarkedBlock::Handle&, FreeList*) override;
- void destroy(VM&, JSCell*) override;
-};
-
-} // namespace JSC
-
Modified: trunk/Source/_javascript_Core/runtime/VM.cpp (252842 => 252843)
--- trunk/Source/_javascript_Core/runtime/VM.cpp 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/runtime/VM.cpp 2019-11-24 22:39:11 UTC (rev 252843)
@@ -69,6 +69,7 @@
#include "IntlDateTimeFormatConstructor.h"
#include "IntlNumberFormatConstructor.h"
#include "IntlPluralRulesConstructor.h"
+#include "IsoHeapCellType.h"
#include "JITCode.h"
#include "JITWorklist.h"
#include "JSAPIValueWrapper.h"
@@ -96,7 +97,6 @@
#include "JSSet.h"
#include "JSSetIterator.h"
#include "JSSourceCode.h"
-#include "JSStringHeapCellType.h"
#include "JSTemplateObjectDescriptor.h"
#include "JSWeakMap.h"
#include "JSWeakObjectRef.h"
@@ -103,7 +103,6 @@
#include "JSWeakSet.h"
#include "JSWebAssembly.h"
#include "JSWebAssemblyCodeBlock.h"
-#include "JSWebAssemblyCodeBlockHeapCellType.h"
#include "JSWebAssemblyMemory.h"
#include "JSWithScope.h"
#include "LLIntData.h"
@@ -151,7 +150,6 @@
#include "Watchdog.h"
#include "WeakGCMapInlines.h"
#include "WebAssemblyFunction.h"
-#include "WebAssemblyFunctionHeapCellType.h"
#include "WebAssemblyWrapperFunction.h"
#include <wtf/ProcessID.h>
#include <wtf/ReadWriteLock.h>
@@ -263,11 +261,13 @@
, immutableButterflyHeapCellType(makeUnique<HeapCellType>(CellAttributes(DoesNotNeedDestruction, HeapCell::JSCellWithInteriorPointers)))
, cellHeapCellType(makeUnique<HeapCellType>(CellAttributes(DoesNotNeedDestruction, HeapCell::JSCell)))
, destructibleCellHeapCellType(makeUnique<HeapCellType>(CellAttributes(NeedsDestruction, HeapCell::JSCell)))
- , stringHeapCellType(makeUnique<JSStringHeapCellType>())
+ , stringHeapCellType(makeUnique<IsoHeapCellType<JSString>>())
+ , weakMapHeapCellType(makeUnique<IsoHeapCellType<JSWeakMap>>())
+ , weakSetHeapCellType(makeUnique<IsoHeapCellType<JSWeakSet>>())
, destructibleObjectHeapCellType(makeUnique<JSDestructibleObjectHeapCellType>())
#if ENABLE(WEBASSEMBLY)
- , webAssemblyCodeBlockHeapCellType(makeUnique<JSWebAssemblyCodeBlockHeapCellType>())
- , webAssemblyFunctionHeapCellType(makeUnique<WebAssemblyFunctionHeapCellType>())
+ , webAssemblyCodeBlockHeapCellType(makeUnique<IsoHeapCellType<JSWebAssemblyCodeBlock>>())
+ , webAssemblyFunctionHeapCellType(makeUnique<IsoHeapCellType<WebAssemblyFunction>>())
#endif
, primitiveGigacageAuxiliarySpace("Primitive Gigacage Auxiliary", heap, auxiliaryHeapCellType.get(), primitiveGigacageAllocator.get()) // Hash:0x3e7cd762
, jsValueGigacageAuxiliarySpace("JSValue Gigacage Auxiliary", heap, auxiliaryHeapCellType.get(), jsValueGigacageAllocator.get()) // Hash:0x241e946
@@ -1307,8 +1307,8 @@
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedFunctionCodeBlockSpace, destructibleCellHeapCellType.get(), UnlinkedFunctionCodeBlock)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedModuleProgramCodeBlockSpace, destructibleCellHeapCellType.get(), UnlinkedModuleProgramCodeBlock)
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedProgramCodeBlockSpace, destructibleCellHeapCellType.get(), UnlinkedProgramCodeBlock)
-DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakMapSpace, destructibleObjectHeapCellType.get(), JSWeakMap) // Hash:0x662b12a3
-DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakSetSpace, destructibleObjectHeapCellType.get(), JSWeakSet) // Hash:0x4c781b30
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakMapSpace, weakMapHeapCellType.get(), JSWeakMap) // Hash:0x662b12a3
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakSetSpace, weakSetHeapCellType.get(), JSWeakSet) // Hash:0x4c781b30
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakObjectRefSpace, cellHeapCellType.get(), JSWeakObjectRef) // Hash:0x8ec68f1f
#if JSC_OBJC_API_ENABLED
DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(objCCallbackFunctionSpace, destructibleObjectHeapCellType.get(), ObjCCallbackFunction) // Hash:0x10f610b8
Modified: trunk/Source/_javascript_Core/runtime/VM.h (252842 => 252843)
--- trunk/Source/_javascript_Core/runtime/VM.h 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/runtime/VM.h 2019-11-24 22:39:11 UTC (rev 252843)
@@ -127,8 +127,9 @@
class JSPromise;
class JSPropertyNameEnumerator;
class JSRunLoopTimer;
-class JSStringHeapCellType;
-class JSWebAssemblyCodeBlockHeapCellType;
+class JSWeakMap;
+class JSWeakSet;
+class JSWebAssemblyCodeBlock;
class JSWebAssemblyInstance;
class LLIntOffsetsExtractor;
class NativeExecutable;
@@ -162,8 +163,10 @@
class Watchdog;
class Watchpoint;
class WatchpointSet;
-class WebAssemblyFunctionHeapCellType;
+class WebAssemblyFunction;
+template<typename CellType> class IsoHeapCellType;
+
#if ENABLE(FTL_JIT)
namespace FTL {
class Thunks;
@@ -339,11 +342,13 @@
std::unique_ptr<HeapCellType> immutableButterflyHeapCellType;
std::unique_ptr<HeapCellType> cellHeapCellType;
std::unique_ptr<HeapCellType> destructibleCellHeapCellType;
- std::unique_ptr<JSStringHeapCellType> stringHeapCellType;
+ std::unique_ptr<IsoHeapCellType<JSString>> stringHeapCellType;
+ std::unique_ptr<IsoHeapCellType<JSWeakMap>> weakMapHeapCellType;
+ std::unique_ptr<IsoHeapCellType<JSWeakSet>> weakSetHeapCellType;
std::unique_ptr<JSDestructibleObjectHeapCellType> destructibleObjectHeapCellType;
#if ENABLE(WEBASSEMBLY)
- std::unique_ptr<JSWebAssemblyCodeBlockHeapCellType> webAssemblyCodeBlockHeapCellType;
- std::unique_ptr<WebAssemblyFunctionHeapCellType> webAssemblyFunctionHeapCellType;
+ std::unique_ptr<IsoHeapCellType<JSWebAssemblyCodeBlock>> webAssemblyCodeBlockHeapCellType;
+ std::unique_ptr<IsoHeapCellType<WebAssemblyFunction>> webAssemblyFunctionHeapCellType;
#endif
CompleteSubspace primitiveGigacageAuxiliarySpace; // Typed arrays, strings, bitvectors, etc go here.
Modified: trunk/Source/_javascript_Core/runtime/WeakMapImpl.h (252842 => 252843)
--- trunk/Source/_javascript_Core/runtime/WeakMapImpl.h 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/runtime/WeakMapImpl.h 2019-11-24 22:39:11 UTC (rev 252843)
@@ -192,13 +192,14 @@
};
template <typename WeakMapBucketType>
-class WeakMapImpl : public JSDestructibleObject {
- using Base = JSDestructibleObject;
+class WeakMapImpl : public JSNonFinalObject {
+ using Base = JSNonFinalObject;
using WeakMapBufferType = WeakMapBuffer<WeakMapBucketType>;
public:
using BucketType = WeakMapBucketType;
+ static constexpr bool needsDestruction = true;
static void destroy(JSCell*);
static void visitChildren(JSCell*, SlotVisitor&);
Deleted: trunk/Source/_javascript_Core/wasm/js/JSWebAssemblyCodeBlockHeapCellType.cpp (252842 => 252843)
--- trunk/Source/_javascript_Core/wasm/js/JSWebAssemblyCodeBlockHeapCellType.cpp 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/wasm/js/JSWebAssemblyCodeBlockHeapCellType.cpp 2019-11-24 22:39:11 UTC (rev 252843)
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "JSWebAssemblyCodeBlockHeapCellType.h"
-
-#if ENABLE(WEBASSEMBLY)
-
-#include "JSCInlines.h"
-#include "JSWebAssemblyCodeBlock.h"
-#include "MarkedBlockInlines.h"
-
-namespace JSC {
-
-struct JSWebAssemblyCodeBlockDestroyFunc {
- ALWAYS_INLINE void operator()(VM&, JSCell* cell) const
- {
- static_assert(std::is_final<JSWebAssemblyCodeBlock>::value, "Otherwise, this code would not be correct.");
- JSWebAssemblyCodeBlock::destroy(cell);
- }
-};
-
-JSWebAssemblyCodeBlockHeapCellType::JSWebAssemblyCodeBlockHeapCellType()
- : HeapCellType(CellAttributes(NeedsDestruction, HeapCell::JSCell))
-{
-}
-
-JSWebAssemblyCodeBlockHeapCellType::~JSWebAssemblyCodeBlockHeapCellType()
-{
-}
-
-void JSWebAssemblyCodeBlockHeapCellType::finishSweep(MarkedBlock::Handle& handle, FreeList* freeList)
-{
- handle.finishSweepKnowingHeapCellType(freeList, JSWebAssemblyCodeBlockDestroyFunc());
-}
-
-void JSWebAssemblyCodeBlockHeapCellType::destroy(VM& vm, JSCell* cell)
-{
- JSWebAssemblyCodeBlockDestroyFunc()(vm, cell);
-}
-
-} // namespace JSC
-
-#endif // ENABLE(WEBASSEMBLY)
Deleted: trunk/Source/_javascript_Core/wasm/js/JSWebAssemblyCodeBlockHeapCellType.h (252842 => 252843)
--- trunk/Source/_javascript_Core/wasm/js/JSWebAssemblyCodeBlockHeapCellType.h 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/wasm/js/JSWebAssemblyCodeBlockHeapCellType.h 2019-11-24 22:39:11 UTC (rev 252843)
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(WEBASSEMBLY)
-
-#include "HeapCellType.h"
-
-namespace JSC {
-
-class JSWebAssemblyCodeBlockHeapCellType : public HeapCellType {
-public:
- JSWebAssemblyCodeBlockHeapCellType();
- virtual ~JSWebAssemblyCodeBlockHeapCellType();
-
- void finishSweep(MarkedBlock::Handle&, FreeList*) override;
- void destroy(VM&, JSCell*) override;
-};
-
-} // namespace JSC
-
-#endif // ENABLE(WEBASSEMBLY)
Deleted: trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.cpp (252842 => 252843)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.cpp 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.cpp 2019-11-24 22:39:11 UTC (rev 252843)
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2019 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "WebAssemblyFunctionHeapCellType.h"
-
-#if ENABLE(WEBASSEMBLY)
-
-#include "JSCInlines.h"
-#include "MarkedBlockInlines.h"
-#include "WebAssemblyFunction.h"
-
-namespace JSC {
-
-struct WebAssemblyFunctionDestroyFunc {
- ALWAYS_INLINE void operator()(VM&, JSCell* cell) const
- {
- static_assert(std::is_final<WebAssemblyFunction>::value, "Otherwise, this code would not be correct.");
- WebAssemblyFunction::destroy(cell);
- }
-};
-
-WebAssemblyFunctionHeapCellType::WebAssemblyFunctionHeapCellType()
- : HeapCellType(CellAttributes(NeedsDestruction, HeapCell::JSCell))
-{
-}
-
-WebAssemblyFunctionHeapCellType::~WebAssemblyFunctionHeapCellType()
-{
-}
-
-void WebAssemblyFunctionHeapCellType::finishSweep(MarkedBlock::Handle& handle, FreeList* freeList)
-{
- handle.finishSweepKnowingHeapCellType(freeList, WebAssemblyFunctionDestroyFunc());
-}
-
-void WebAssemblyFunctionHeapCellType::destroy(VM& vm, JSCell* cell)
-{
- WebAssemblyFunctionDestroyFunc()(vm, cell);
-}
-
-} // namespace JSC
-
-#endif // ENABLE(WEBASSEMBLY)
Deleted: trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.h (252842 => 252843)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.h 2019-11-24 20:18:54 UTC (rev 252842)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyFunctionHeapCellType.h 2019-11-24 22:39:11 UTC (rev 252843)
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2019 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(WEBASSEMBLY)
-
-#include "HeapCellType.h"
-
-namespace JSC {
-
-class WebAssemblyFunctionHeapCellType : public HeapCellType {
-public:
- WebAssemblyFunctionHeapCellType();
- virtual ~WebAssemblyFunctionHeapCellType();
-
- void finishSweep(MarkedBlock::Handle&, FreeList*) override;
- void destroy(VM&, JSCell*) override;
-};
-
-} // namespace JSC
-
-#endif // ENABLE(WEBASSEMBLY)