Title: [261542] trunk/Source/_javascript_Core
Revision
261542
Author
[email protected]
Date
2020-05-11 20:04:10 -0700 (Mon, 11 May 2020)

Log Message

[clang-tidy] Run modernize-use-override over JSC, then ensure as much as possible is final
https://bugs.webkit.org/show_bug.cgi?id=211743

Reviewed by Saam Barati.

* API/JSScriptRef.cpp:
* b3/B3ArgumentRegValue.h:
* b3/B3AtomicValue.h:
* b3/B3CCallValue.h:
* b3/B3CheckSpecial.h:
* b3/B3CheckValue.h:
* b3/B3Const32Value.h:
* b3/B3Const64Value.h:
* b3/B3ConstDoubleValue.h:
* b3/B3ConstFloatValue.h:
* b3/B3DataSection.h:
* b3/B3ExtractValue.h:
* b3/B3FenceValue.h:
* b3/B3MemoryValue.h:
* b3/B3PatchpointSpecial.h:
* b3/B3PatchpointValue.h:
* b3/B3SlotBaseValue.h:
* b3/B3StackmapSpecial.h:
* b3/B3StackmapValue.h:
* b3/B3SwitchValue.h:
* b3/B3UpsilonValue.h:
* b3/B3VariableValue.h:
* b3/B3WasmAddressValue.h:
* b3/B3WasmBoundsCheckValue.h:
* b3/air/AirCCallSpecial.h:
* b3/air/AirPrintSpecial.h:
* bytecode/BytecodeDumper.h:
* bytecode/GetterSetterAccessCase.h:
* bytecode/InstanceOfAccessCase.h:
* bytecode/IntrinsicGetterAccessCase.h:
* bytecode/ModuleNamespaceAccessCase.h:
* bytecode/ProxyableAccessCase.h:
* bytecode/Watchpoint.h:
* dfg/DFGFailedFinalizer.h:
* dfg/DFGGraph.h:
* dfg/DFGJITCode.h:
* dfg/DFGJITFinalizer.h:
* dfg/DFGToFTLDeferredCompilationCallback.h:
* dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h:
* ftl/FTLForOSREntryJITCode.h:
* ftl/FTLJITCode.h:
* ftl/FTLJITFinalizer.h:
* heap/CompleteSubspace.h:
* heap/FastMallocAlignedMemoryAllocator.h:
* heap/GigacageAlignedMemoryAllocator.h:
* heap/HeapSnapshotBuilder.h:
* heap/IsoAlignedMemoryAllocator.h:
* heap/IsoSubspace.h:
* heap/IsoSubspacePerVM.cpp:
* heap/IsoSubspacePerVM.h:
* heap/MarkStackMergingConstraint.h:
* heap/SimpleMarkingConstraint.h:
* heap/SpaceTimeMutatorScheduler.h:
* heap/StochasticSpaceTimeMutatorScheduler.h:
* heap/SynchronousStopTheWorldMutatorScheduler.h:
* jit/GCAwareJITStubRoutine.h:
* jit/JITCode.h:
* jit/JITThunks.h:
* jit/JITToDFGDeferredCompilationCallback.h:
* jit/PolymorphicCallStubRoutine.h:
* jsc.cpp:
* parser/Lexer.cpp: Address warning.
* runtime/JSDestructibleObjectHeapCellType.h:
* runtime/SimpleTypedArrayController.h:
* runtime/Structure.h:
* runtime/WeakGCMap.h:
* wasm/WasmEntryPlan.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/API/JSScriptRef.cpp (261541 => 261542)


--- trunk/Source/_javascript_Core/API/JSScriptRef.cpp	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/API/JSScriptRef.cpp	2020-05-12 03:04:10 UTC (rev 261542)
@@ -39,7 +39,7 @@
 
 using namespace JSC;
 
-struct OpaqueJSScript : public SourceProvider {
+struct OpaqueJSScript final : public SourceProvider {
 public:
     static WTF::Ref<OpaqueJSScript> create(VM& vm, const SourceOrigin& sourceOrigin, URL&& url, int startingLineNumber, const String& source)
     {
@@ -46,12 +46,12 @@
         return WTF::adoptRef(*new OpaqueJSScript(vm, sourceOrigin, WTFMove(url), startingLineNumber, source));
     }
 
-    unsigned hash() const override
+    unsigned hash() const final
     {
         return m_source.get().hash();
     }
 
-    StringView source() const override
+    StringView source() const final
     {
         return m_source.get();
     }
@@ -66,7 +66,7 @@
     {
     }
 
-    virtual ~OpaqueJSScript() { }
+    ~OpaqueJSScript() final { }
 
     VM& m_vm;
     Ref<StringImpl> m_source;

Modified: trunk/Source/_javascript_Core/ChangeLog (261541 => 261542)


--- trunk/Source/_javascript_Core/ChangeLog	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/ChangeLog	2020-05-12 03:04:10 UTC (rev 261542)
@@ -1,3 +1,78 @@
+2020-05-11  Ross Kirsling  <[email protected]>
+
+        [clang-tidy] Run modernize-use-override over JSC, then ensure as much as possible is final
+        https://bugs.webkit.org/show_bug.cgi?id=211743
+
+        Reviewed by Saam Barati.
+
+        * API/JSScriptRef.cpp:
+        * b3/B3ArgumentRegValue.h:
+        * b3/B3AtomicValue.h:
+        * b3/B3CCallValue.h:
+        * b3/B3CheckSpecial.h:
+        * b3/B3CheckValue.h:
+        * b3/B3Const32Value.h:
+        * b3/B3Const64Value.h:
+        * b3/B3ConstDoubleValue.h:
+        * b3/B3ConstFloatValue.h:
+        * b3/B3DataSection.h:
+        * b3/B3ExtractValue.h:
+        * b3/B3FenceValue.h:
+        * b3/B3MemoryValue.h:
+        * b3/B3PatchpointSpecial.h:
+        * b3/B3PatchpointValue.h:
+        * b3/B3SlotBaseValue.h:
+        * b3/B3StackmapSpecial.h:
+        * b3/B3StackmapValue.h:
+        * b3/B3SwitchValue.h:
+        * b3/B3UpsilonValue.h:
+        * b3/B3VariableValue.h:
+        * b3/B3WasmAddressValue.h:
+        * b3/B3WasmBoundsCheckValue.h:
+        * b3/air/AirCCallSpecial.h:
+        * b3/air/AirPrintSpecial.h:
+        * bytecode/BytecodeDumper.h:
+        * bytecode/GetterSetterAccessCase.h:
+        * bytecode/InstanceOfAccessCase.h:
+        * bytecode/IntrinsicGetterAccessCase.h:
+        * bytecode/ModuleNamespaceAccessCase.h:
+        * bytecode/ProxyableAccessCase.h:
+        * bytecode/Watchpoint.h:
+        * dfg/DFGFailedFinalizer.h:
+        * dfg/DFGGraph.h:
+        * dfg/DFGJITCode.h:
+        * dfg/DFGJITFinalizer.h:
+        * dfg/DFGToFTLDeferredCompilationCallback.h:
+        * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h:
+        * ftl/FTLForOSREntryJITCode.h:
+        * ftl/FTLJITCode.h:
+        * ftl/FTLJITFinalizer.h:
+        * heap/CompleteSubspace.h:
+        * heap/FastMallocAlignedMemoryAllocator.h:
+        * heap/GigacageAlignedMemoryAllocator.h:
+        * heap/HeapSnapshotBuilder.h:
+        * heap/IsoAlignedMemoryAllocator.h:
+        * heap/IsoSubspace.h:
+        * heap/IsoSubspacePerVM.cpp:
+        * heap/IsoSubspacePerVM.h:
+        * heap/MarkStackMergingConstraint.h:
+        * heap/SimpleMarkingConstraint.h:
+        * heap/SpaceTimeMutatorScheduler.h:
+        * heap/StochasticSpaceTimeMutatorScheduler.h:
+        * heap/SynchronousStopTheWorldMutatorScheduler.h:
+        * jit/GCAwareJITStubRoutine.h:
+        * jit/JITCode.h:
+        * jit/JITThunks.h:
+        * jit/JITToDFGDeferredCompilationCallback.h:
+        * jit/PolymorphicCallStubRoutine.h:
+        * jsc.cpp:
+        * parser/Lexer.cpp: Address warning.
+        * runtime/JSDestructibleObjectHeapCellType.h:
+        * runtime/SimpleTypedArrayController.h:
+        * runtime/Structure.h:
+        * runtime/WeakGCMap.h:
+        * wasm/WasmEntryPlan.h:
+
 2020-05-11  Mark Lam  <[email protected]>
 
         Introduce WTF::Config and put Signal.cpp's init-once globals in it.

Modified: trunk/Source/_javascript_Core/b3/B3ArgumentRegValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3ArgumentRegValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3ArgumentRegValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,20 +32,19 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE ArgumentRegValue : public Value {
+class JS_EXPORT_PRIVATE ArgumentRegValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == ArgumentReg; }
     
-    ~ArgumentRegValue();
+    ~ArgumentRegValue() final;
 
     Reg argumentReg() const { return m_reg; }
 
     B3_SPECIALIZE_VALUE_FOR_NO_CHILDREN
 
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
     

Modified: trunk/Source/_javascript_Core/b3/B3AtomicValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3AtomicValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3AtomicValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,7 +32,7 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE AtomicValue : public MemoryValue {
+class JS_EXPORT_PRIVATE AtomicValue final : public MemoryValue {
 public:
     static bool accepts(Kind kind)
     {
@@ -39,7 +39,7 @@
         return isAtom(kind.opcode());
     }
     
-    ~AtomicValue();
+    ~AtomicValue() final;
     
     Type accessType() const { return child(0)->type(); }
     
@@ -47,10 +47,9 @@
 
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_FIXED_CHILDREN
     
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
 

Modified: trunk/Source/_javascript_Core/b3/B3CCallValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3CCallValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3CCallValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,11 +32,11 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE CCallValue : public Value {
+class JS_EXPORT_PRIVATE CCallValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == CCall; }
 
-    ~CCallValue();
+    ~CCallValue() final;
 
     void appendArgs(const Vector<Value*>&);
     

Modified: trunk/Source/_javascript_Core/b3/B3CheckSpecial.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3CheckSpecial.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3CheckSpecial.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -48,7 +48,7 @@
 // - CheckSub(0, x), which turns into BranchNeg32 x.
 // - CheckMul(a, b), which turns into Mul32 b, a but we pass Any for a's ValueRep.
 
-class CheckSpecial : public StackmapSpecial {
+class CheckSpecial final : public StackmapSpecial {
 public:
     // Support for hash consing these things.
     class Key {
@@ -113,9 +113,9 @@
     
     CheckSpecial(Air::Kind, unsigned numArgs, RoleMode stackmapRole = SameAsRep);
     CheckSpecial(const Key&);
-    ~CheckSpecial();
+    ~CheckSpecial() final;
 
-protected:
+private:
     // Constructs and returns the Inst representing the branch that this will use.
     Air::Inst hiddenBranch(const Air::Inst&) const;
 
@@ -133,7 +133,6 @@
     void dumpImpl(PrintStream&) const final;
     void deepDumpImpl(PrintStream&) const final;
 
-private:
     Air::Kind m_checkKind;
     RoleMode m_stackmapRole;
     unsigned m_numCheckArgs;

Modified: trunk/Source/_javascript_Core/b3/B3CheckValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3CheckValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3CheckValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,7 +31,7 @@
 
 namespace JSC { namespace B3 {
 
-class CheckValue : public StackmapValue {
+class CheckValue final : public StackmapValue {
 public:
     static bool accepts(Kind kind)
     {
@@ -46,7 +46,7 @@
         }
     }
 
-    ~CheckValue();
+    ~CheckValue() final;
 
     void convertToAdd();
 

Modified: trunk/Source/_javascript_Core/b3/B3Const32Value.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3Const32Value.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3Const32Value.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -35,7 +35,7 @@
 public:
     static bool accepts(Kind kind) { return kind == Const32; }
     
-    ~Const32Value();
+    ~Const32Value() override;
     
     int32_t value() const { return m_value; }
 

Modified: trunk/Source/_javascript_Core/b3/B3Const64Value.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3Const64Value.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3Const64Value.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -35,7 +35,7 @@
 public:
     static bool accepts(Kind kind) { return kind == Const64; }
     
-    ~Const64Value();
+    ~Const64Value() override;
     
     int64_t value() const { return m_value; }
 

Modified: trunk/Source/_javascript_Core/b3/B3ConstDoubleValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3ConstDoubleValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3ConstDoubleValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,38 +31,38 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE ConstDoubleValue : public Value {
+class JS_EXPORT_PRIVATE ConstDoubleValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == ConstDouble; }
     
-    ~ConstDoubleValue();
+    ~ConstDoubleValue() final;
     
     double value() const { return m_value; }
 
-    Value* negConstant(Procedure&) const override;
-    Value* addConstant(Procedure&, int32_t other) const override;
-    Value* addConstant(Procedure&, const Value* other) const override;
-    Value* subConstant(Procedure&, const Value* other) const override;
-    Value* divConstant(Procedure&, const Value* other) const override;
-    Value* modConstant(Procedure&, const Value* other) const override;
-    Value* mulConstant(Procedure&, const Value* other) const override;
-    Value* bitAndConstant(Procedure&, const Value* other) const override;
-    Value* bitOrConstant(Procedure&, const Value* other) const override;
-    Value* bitXorConstant(Procedure&, const Value* other) const override;
-    Value* bitwiseCastConstant(Procedure&) const override;
-    Value* doubleToFloatConstant(Procedure&) const override;
-    Value* absConstant(Procedure&) const override;
-    Value* ceilConstant(Procedure&) const override;
-    Value* floorConstant(Procedure&) const override;
-    Value* sqrtConstant(Procedure&) const override;
+    Value* negConstant(Procedure&) const final;
+    Value* addConstant(Procedure&, int32_t other) const final;
+    Value* addConstant(Procedure&, const Value* other) const final;
+    Value* subConstant(Procedure&, const Value* other) const final;
+    Value* divConstant(Procedure&, const Value* other) const final;
+    Value* modConstant(Procedure&, const Value* other) const final;
+    Value* mulConstant(Procedure&, const Value* other) const final;
+    Value* bitAndConstant(Procedure&, const Value* other) const final;
+    Value* bitOrConstant(Procedure&, const Value* other) const final;
+    Value* bitXorConstant(Procedure&, const Value* other) const final;
+    Value* bitwiseCastConstant(Procedure&) const final;
+    Value* doubleToFloatConstant(Procedure&) const final;
+    Value* absConstant(Procedure&) const final;
+    Value* ceilConstant(Procedure&) const final;
+    Value* floorConstant(Procedure&) const final;
+    Value* sqrtConstant(Procedure&) const final;
 
-    TriState equalConstant(const Value* other) const override;
-    TriState notEqualConstant(const Value* other) const override;
-    TriState lessThanConstant(const Value* other) const override;
-    TriState greaterThanConstant(const Value* other) const override;
-    TriState lessEqualConstant(const Value* other) const override;
-    TriState greaterEqualConstant(const Value* other) const override;
-    TriState equalOrUnorderedConstant(const Value* other) const override;
+    TriState equalConstant(const Value* other) const final;
+    TriState notEqualConstant(const Value* other) const final;
+    TriState lessThanConstant(const Value* other) const final;
+    TriState greaterThanConstant(const Value* other) const final;
+    TriState lessEqualConstant(const Value* other) const final;
+    TriState greaterEqualConstant(const Value* other) const final;
+    TriState equalOrUnorderedConstant(const Value* other) const final;
 
     B3_SPECIALIZE_VALUE_FOR_NO_CHILDREN
 
@@ -70,7 +70,7 @@
     friend class Procedure;
     friend class Value;
 
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
     static Opcode opcodeFromConstructor(Origin, double) { return ConstDouble; }
 

Modified: trunk/Source/_javascript_Core/b3/B3ConstFloatValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3ConstFloatValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3ConstFloatValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,37 +31,37 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE ConstFloatValue : public Value {
+class JS_EXPORT_PRIVATE ConstFloatValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == ConstFloat; }
 
-    ~ConstFloatValue();
+    ~ConstFloatValue() final;
 
     float value() const { return m_value; }
 
-    Value* negConstant(Procedure&) const override;
-    Value* addConstant(Procedure&, int32_t other) const override;
-    Value* addConstant(Procedure&, const Value* other) const override;
-    Value* subConstant(Procedure&, const Value* other) const override;
-    Value* divConstant(Procedure&, const Value* other) const override;
-    Value* mulConstant(Procedure&, const Value* other) const override;
-    Value* bitAndConstant(Procedure&, const Value* other) const override;
-    Value* bitOrConstant(Procedure&, const Value* other) const override;
-    Value* bitXorConstant(Procedure&, const Value* other) const override;
-    Value* bitwiseCastConstant(Procedure&) const override;
-    Value* floatToDoubleConstant(Procedure&) const override;
-    Value* absConstant(Procedure&) const override;
-    Value* ceilConstant(Procedure&) const override;
-    Value* floorConstant(Procedure&) const override;
-    Value* sqrtConstant(Procedure&) const override;
+    Value* negConstant(Procedure&) const final;
+    Value* addConstant(Procedure&, int32_t other) const final;
+    Value* addConstant(Procedure&, const Value* other) const final;
+    Value* subConstant(Procedure&, const Value* other) const final;
+    Value* divConstant(Procedure&, const Value* other) const final;
+    Value* mulConstant(Procedure&, const Value* other) const final;
+    Value* bitAndConstant(Procedure&, const Value* other) const final;
+    Value* bitOrConstant(Procedure&, const Value* other) const final;
+    Value* bitXorConstant(Procedure&, const Value* other) const final;
+    Value* bitwiseCastConstant(Procedure&) const final;
+    Value* floatToDoubleConstant(Procedure&) const final;
+    Value* absConstant(Procedure&) const final;
+    Value* ceilConstant(Procedure&) const final;
+    Value* floorConstant(Procedure&) const final;
+    Value* sqrtConstant(Procedure&) const final;
 
-    TriState equalConstant(const Value* other) const override;
-    TriState notEqualConstant(const Value* other) const override;
-    TriState lessThanConstant(const Value* other) const override;
-    TriState greaterThanConstant(const Value* other) const override;
-    TriState lessEqualConstant(const Value* other) const override;
-    TriState greaterEqualConstant(const Value* other) const override;
-    TriState equalOrUnorderedConstant(const Value* other) const override;
+    TriState equalConstant(const Value* other) const final;
+    TriState notEqualConstant(const Value* other) const final;
+    TriState lessThanConstant(const Value* other) const final;
+    TriState greaterThanConstant(const Value* other) const final;
+    TriState lessEqualConstant(const Value* other) const final;
+    TriState greaterEqualConstant(const Value* other) const final;
+    TriState equalOrUnorderedConstant(const Value* other) const final;
 
     B3_SPECIALIZE_VALUE_FOR_NO_CHILDREN
 
@@ -69,7 +69,7 @@
     friend class Procedure;
     friend class Value;
 
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
     static Opcode opcodeFromConstructor(Origin, float) { return ConstFloat; }
 

Modified: trunk/Source/_javascript_Core/b3/B3DataSection.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3DataSection.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3DataSection.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,15 +31,15 @@
 
 namespace JSC { namespace B3 {
 
-class DataSection : public OpaqueByproduct {
+class DataSection final : public OpaqueByproduct {
 public:
     DataSection(size_t size);
-    virtual ~DataSection();
+    ~DataSection() final;
 
     void* data() const { return m_data; }
     size_t size() const { return m_size; }
 
-    void dump(PrintStream&) const override;
+    void dump(PrintStream&) const final;
 
 private:
     void* m_data;

Modified: trunk/Source/_javascript_Core/b3/B3ExtractValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3ExtractValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3ExtractValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -35,7 +35,7 @@
 public:
     static bool accepts(Kind kind) { return kind == Extract; }
 
-    ~ExtractValue();
+    ~ExtractValue() final;
 
     int32_t index() const { return m_index; }
 
@@ -43,7 +43,7 @@
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_FIXED_CHILDREN
 
 private:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
     static Opcode opcodeFromConstructor(Origin, Type, Value*, int32_t) { return Extract; }
 

Modified: trunk/Source/_javascript_Core/b3/B3FenceValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3FenceValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3FenceValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,11 +32,11 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE FenceValue : public Value {
+class JS_EXPORT_PRIVATE FenceValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == Fence; }
     
-    ~FenceValue();
+    ~FenceValue() final;
     
     // The read/write heaps are reflected in the effects() of this value. The compiler may change
     // the lowering of a Fence based on the heaps. For example, if a fence does not write anything

Modified: trunk/Source/_javascript_Core/b3/B3MemoryValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3MemoryValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3MemoryValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -41,7 +41,7 @@
         return isMemoryAccess(kind.opcode());
     }
 
-    ~MemoryValue();
+    ~MemoryValue() override;
 
     OffsetType offset() const { return m_offset; }
     template<typename Int, typename = IsLegalOffset<Int>>

Modified: trunk/Source/_javascript_Core/b3/B3PatchpointSpecial.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3PatchpointSpecial.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3PatchpointSpecial.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -41,12 +41,12 @@
 //
 //     Patch &patchpoint, result, args...
 
-class PatchpointSpecial : public StackmapSpecial {
+class PatchpointSpecial final : public StackmapSpecial {
 public:
     JS_EXPORT_PRIVATE PatchpointSpecial();
-    virtual ~PatchpointSpecial();
+    ~PatchpointSpecial() final;
 
-protected:
+private:
     void forEachArg(Air::Inst&, const ScopedLambda<Air::Inst::EachArgCallback>&) final;
     bool isValid(Air::Inst&) final;
     bool admitsStack(Air::Inst&, unsigned argIndex) final;

Modified: trunk/Source/_javascript_Core/b3/B3PatchpointValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3PatchpointValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3PatchpointValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,13 +33,13 @@
 
 namespace JSC { namespace B3 {
 
-class PatchpointValue : public StackmapValue {
+class PatchpointValue final : public StackmapValue {
 public:
     typedef StackmapValue Base;
     
     static bool accepts(Kind kind) { return kind == Patchpoint; }
 
-    ~PatchpointValue();
+    ~PatchpointValue() final;
 
     // The effects of the patchpoint. This defaults to Effects::forCall(), but you can set it to anything.
     //
@@ -64,10 +64,9 @@
 
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_VARARGS_CHILDREN
 
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
 

Modified: trunk/Source/_javascript_Core/b3/B3SlotBaseValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3SlotBaseValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3SlotBaseValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,11 +33,11 @@
 
 class StackSlot;
 
-class JS_EXPORT_PRIVATE SlotBaseValue : public Value {
+class JS_EXPORT_PRIVATE SlotBaseValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == SlotBase; }
 
-    ~SlotBaseValue();
+    ~SlotBaseValue() final;
 
     StackSlot* slot() const { return m_slot; }
 
@@ -47,7 +47,7 @@
     friend class Procedure;
     friend class Value;
 
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
     static Opcode opcodeFromConstructor(Origin, StackSlot*) { return SlotBase; }
     SlotBaseValue(Origin origin, StackSlot* slot)

Modified: trunk/Source/_javascript_Core/b3/B3StackmapSpecial.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3StackmapSpecial.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3StackmapSpecial.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -42,7 +42,7 @@
 class StackmapSpecial : public Air::Special {
 public:
     StackmapSpecial();
-    virtual ~StackmapSpecial();
+    ~StackmapSpecial() override;
 
     enum RoleMode : int8_t {
         SameAsRep,

Modified: trunk/Source/_javascript_Core/b3/B3StackmapValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3StackmapValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3StackmapValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -61,7 +61,7 @@
         }
     }
 
-    ~StackmapValue();
+    ~StackmapValue() override;
 
     // Use this to add children.
     void append(const ConstrainedValue& value)

Modified: trunk/Source/_javascript_Core/b3/B3SwitchValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3SwitchValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3SwitchValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,11 +33,11 @@
 
 namespace JSC { namespace B3 {
 
-class SwitchValue : public Value {
+class SwitchValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == Switch; }
 
-    ~SwitchValue();
+    ~SwitchValue() final;
 
     // numCaseValues() + 1 == numSuccessors().
     unsigned numCaseValues() const { return m_values.size(); }
@@ -62,15 +62,14 @@
     JS_EXPORT_PRIVATE void setFallThrough(const FrequentedBlock&);
     JS_EXPORT_PRIVATE void appendCase(const SwitchCase&);
 
-    void dumpSuccessors(const BasicBlock*, PrintStream&) const override;
+    void dumpSuccessors(const BasicBlock*, PrintStream&) const final;
 
     B3_SPECIALIZE_VALUE_FOR_FIXED_CHILDREN(1)
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_FIXED_CHILDREN
 
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
 

Modified: trunk/Source/_javascript_Core/b3/B3UpsilonValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3UpsilonValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3UpsilonValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,11 +31,11 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE UpsilonValue : public Value {
+class JS_EXPORT_PRIVATE UpsilonValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == Upsilon; }
 
-    ~UpsilonValue();
+    ~UpsilonValue() final;
 
     Value* phi() const { return m_phi; }
     void setPhi(Value* phi)
@@ -48,10 +48,9 @@
     B3_SPECIALIZE_VALUE_FOR_FIXED_CHILDREN(1)
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_FIXED_CHILDREN
 
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
 

Modified: trunk/Source/_javascript_Core/b3/B3VariableValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3VariableValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3VariableValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,11 +33,11 @@
 
 class Variable;
 
-class JS_EXPORT_PRIVATE VariableValue : public Value {
+class JS_EXPORT_PRIVATE VariableValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == Get || kind == Set; }
 
-    ~VariableValue();
+    ~VariableValue() final;
 
     Variable* variable() const { return m_variable; }
 
@@ -44,10 +44,9 @@
     B3_SPECIALIZE_VALUE_FOR_NON_VARARGS_CHILDREN
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_FIXED_CHILDREN
 
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
 

Modified: trunk/Source/_javascript_Core/b3/B3WasmAddressValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3WasmAddressValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3WasmAddressValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,11 +32,11 @@
 
 namespace JSC { namespace B3 {
 
-class JS_EXPORT_PRIVATE WasmAddressValue : public Value {
+class JS_EXPORT_PRIVATE WasmAddressValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == WasmAddress; }
 
-    ~WasmAddressValue();
+    ~WasmAddressValue() final;
 
     GPRReg pinnedGPR() const { return m_pinnedGPR; }
 
@@ -43,10 +43,9 @@
     B3_SPECIALIZE_VALUE_FOR_FIXED_CHILDREN(1)
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_FIXED_CHILDREN
 
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
 

Modified: trunk/Source/_javascript_Core/b3/B3WasmBoundsCheckValue.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/B3WasmBoundsCheckValue.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/B3WasmBoundsCheckValue.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,11 +32,11 @@
 
 namespace JSC { namespace B3 {
 
-class WasmBoundsCheckValue : public Value {
+class WasmBoundsCheckValue final : public Value {
 public:
     static bool accepts(Kind kind) { return kind == WasmBoundsCheck; }
     
-    ~WasmBoundsCheckValue();
+    ~WasmBoundsCheckValue() final;
 
     enum class Type {
         Pinned,
@@ -55,10 +55,9 @@
     B3_SPECIALIZE_VALUE_FOR_FIXED_CHILDREN(1)
     B3_SPECIALIZE_VALUE_FOR_FINAL_SIZE_FIXED_CHILDREN
 
-protected:
-    void dumpMeta(CommaPrinter&, PrintStream&) const override;
+private:
+    void dumpMeta(CommaPrinter&, PrintStream&) const final;
 
-private:
     friend class Procedure;
     friend class Value;
 

Modified: trunk/Source/_javascript_Core/b3/air/AirCCallSpecial.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/air/AirCCallSpecial.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/air/AirCCallSpecial.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -42,10 +42,10 @@
 // if we had a call that didn't pass them, then they'd appear to be live until some clobber point or
 // the prologue, whichever happened sooner.
 
-class CCallSpecial : public Special {
+class CCallSpecial final : public Special {
 public:
     CCallSpecial();
-    ~CCallSpecial();
+    ~CCallSpecial() final;
 
     // You cannot use this register to pass arguments. It just so happens that this register is not
     // used for arguments in the C calling convention. By the way, this is the only thing that causes
@@ -52,7 +52,7 @@
     // this special to be specific to C calls.
     static constexpr GPRReg scratchRegister = GPRInfo::nonPreservedNonArgumentGPR0;
 
-protected:
+private:
     void forEachArg(Inst&, const ScopedLambda<Inst::EachArgCallback>&) final;
     bool isValid(Inst&) final;
     bool admitsStack(Inst&, unsigned argIndex) final;
@@ -65,7 +65,6 @@
     void dumpImpl(PrintStream&) const final;
     void deepDumpImpl(PrintStream&) const final;
 
-private:
     static constexpr unsigned specialArgOffset = 0;
     static constexpr unsigned numSpecialArgs = 1;
     static constexpr unsigned calleeArgOffset = numSpecialArgs;

Modified: trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.h (261541 => 261542)


--- trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/b3/air/AirPrintSpecial.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -92,10 +92,10 @@
 
 namespace B3 { namespace Air {
 
-class PrintSpecial : public Special {
+class PrintSpecial final : public Special {
 public:
     PrintSpecial(Printer::PrintRecordList*);
-    ~PrintSpecial();
+    ~PrintSpecial() final;
     
     // You cannot use this register to pass arguments. It just so happens that this register is not
     // used for arguments in the C calling convention. By the way, this is the only thing that causes
@@ -102,7 +102,7 @@
     // this special to be specific to C calls.
     static constexpr GPRReg scratchRegister = GPRInfo::nonArgGPR0;
     
-protected:
+private:
     void forEachArg(Inst&, const ScopedLambda<Inst::EachArgCallback>&) final;
     bool isValid(Inst&) final;
     bool admitsStack(Inst&, unsigned argIndex) final;
@@ -115,7 +115,6 @@
     void dumpImpl(PrintStream&) const final;
     void deepDumpImpl(PrintStream&) const final;
     
-private:
     static constexpr unsigned specialArgOffset = 0;
     static constexpr unsigned numSpecialArgs = 1;
     static constexpr unsigned calleeArgOffset = numSpecialArgs;

Modified: trunk/Source/_javascript_Core/bytecode/BytecodeDumper.h (261541 => 261542)


--- trunk/Source/_javascript_Core/bytecode/BytecodeDumper.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/bytecode/BytecodeDumper.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -84,7 +84,7 @@
     {
     }
 
-    virtual ~BytecodeDumper() { }
+    ~BytecodeDumper() override { }
 
 protected:
     Block* block() const { return m_block; }
@@ -101,7 +101,7 @@
 };
 
 template<class Block>
-class CodeBlockBytecodeDumper : public BytecodeDumper<Block> {
+class CodeBlockBytecodeDumper final : public BytecodeDumper<Block> {
 public:
     static void dumpBlock(Block*, const InstructionStream&, PrintStream& out, const ICStatusMap& = ICStatusMap());
 
@@ -127,7 +127,7 @@
 struct ModuleInformation;
 enum Type : int8_t;
 
-class BytecodeDumper : public JSC::BytecodeDumper<FunctionCodeBlock> {
+class BytecodeDumper final : public JSC::BytecodeDumper<FunctionCodeBlock> {
 public:
     static void dumpBlock(FunctionCodeBlock*, const ModuleInformation&, PrintStream& out);
 
@@ -135,7 +135,7 @@
     using JSC::BytecodeDumper<FunctionCodeBlock>::BytecodeDumper;
 
     void dumpConstants();
-    CString constantName(VirtualRegister index) const override;
+    CString constantName(VirtualRegister index) const final;
     CString formatConstant(Type, uint64_t) const;
 };
 

Modified: trunk/Source/_javascript_Core/bytecode/GetterSetterAccessCase.h (261541 => 261542)


--- trunk/Source/_javascript_Core/bytecode/GetterSetterAccessCase.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/bytecode/GetterSetterAccessCase.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,7 +32,7 @@
 
 namespace JSC {
 
-class GetterSetterAccessCase : public ProxyableAccessCase {
+class GetterSetterAccessCase final : public ProxyableAccessCase {
 public:
     typedef ProxyableAccessCase Base;
     friend class AccessCase;
@@ -48,8 +48,8 @@
     JSObject* customSlotBase() const { return m_customSlotBase.get(); }
     Optional<DOMAttributeAnnotation> domAttribute() const { return m_domAttribute; }
 
-    bool hasAlternateBase() const override;
-    JSObject* alternateBase() const override;
+    bool hasAlternateBase() const final;
+    JSObject* alternateBase() const final;
 
     void emitDOMJITGetter(AccessGenerationState&, const DOMJIT::GetterSetter*, GPRReg baseForGetGPR);
 
@@ -62,10 +62,10 @@
         const ObjectPropertyConditionSet&, std::unique_ptr<PolyProtoAccessChain>,
         FunctionPtr<OperationPtrTag> customSetter = nullptr, JSObject* customSlotBase = nullptr);
 
-    void dumpImpl(PrintStream&, CommaPrinter&) const override;
-    std::unique_ptr<AccessCase> clone() const override;
+    void dumpImpl(PrintStream&, CommaPrinter&) const final;
+    std::unique_ptr<AccessCase> clone() const final;
 
-    ~GetterSetterAccessCase();
+    ~GetterSetterAccessCase() final;
 
     FunctionPtr<OperationPtrTag> customAccessor() const { return m_customAccessor; }
 

Modified: trunk/Source/_javascript_Core/bytecode/InstanceOfAccessCase.h (261541 => 261542)


--- trunk/Source/_javascript_Core/bytecode/InstanceOfAccessCase.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/bytecode/InstanceOfAccessCase.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,7 +31,7 @@
 
 namespace JSC {
 
-class InstanceOfAccessCase : public AccessCase {
+class InstanceOfAccessCase final : public AccessCase {
 public:
     using Base = AccessCase;
     
@@ -41,17 +41,16 @@
     
     JSObject* prototype() const { return m_prototype.get(); }
     
-    void dumpImpl(PrintStream&, CommaPrinter&) const override;
-    std::unique_ptr<AccessCase> clone() const override;
+    void dumpImpl(PrintStream&, CommaPrinter&) const final;
+    std::unique_ptr<AccessCase> clone() const final;
     
-    ~InstanceOfAccessCase();
+    ~InstanceOfAccessCase() final;
 
-protected:
+private:
     InstanceOfAccessCase(
         VM&, JSCell*, AccessType, Structure*, const ObjectPropertyConditionSet&,
         JSObject* prototype);
 
-private:
     WriteBarrier<JSObject> m_prototype;
 };
 

Modified: trunk/Source/_javascript_Core/bytecode/IntrinsicGetterAccessCase.h (261541 => 261542)


--- trunk/Source/_javascript_Core/bytecode/IntrinsicGetterAccessCase.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/bytecode/IntrinsicGetterAccessCase.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,7 +31,7 @@
 
 namespace JSC {
 
-class IntrinsicGetterAccessCase : public AccessCase {
+class IntrinsicGetterAccessCase final : public AccessCase {
 public:
     typedef AccessCase Base;
     friend class AccessCase;
@@ -44,9 +44,9 @@
 
     static std::unique_ptr<AccessCase> create(VM&, JSCell*, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&, JSFunction* intrinsicFunction, std::unique_ptr<PolyProtoAccessChain>);
 
-    std::unique_ptr<AccessCase> clone() const override;
+    std::unique_ptr<AccessCase> clone() const final;
 
-    ~IntrinsicGetterAccessCase();
+    ~IntrinsicGetterAccessCase() final;
 
 private:
     IntrinsicGetterAccessCase(VM&, JSCell*, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&, JSFunction* intrinsicFunction, std::unique_ptr<PolyProtoAccessChain>);

Modified: trunk/Source/_javascript_Core/bytecode/ModuleNamespaceAccessCase.h (261541 => 261542)


--- trunk/Source/_javascript_Core/bytecode/ModuleNamespaceAccessCase.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/bytecode/ModuleNamespaceAccessCase.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -35,7 +35,7 @@
 class JSModuleEnvironment;
 class JSModuleNamespaceObject;
 
-class ModuleNamespaceAccessCase : public AccessCase {
+class ModuleNamespaceAccessCase final : public AccessCase {
 public:
     using Base = AccessCase;
     friend class AccessCase;
@@ -46,11 +46,11 @@
 
     static std::unique_ptr<AccessCase> create(VM&, JSCell* owner, CacheableIdentifier, JSModuleNamespaceObject*, JSModuleEnvironment*, ScopeOffset);
 
-    std::unique_ptr<AccessCase> clone() const override;
+    std::unique_ptr<AccessCase> clone() const final;
 
     void emit(AccessGenerationState&, MacroAssembler::JumpList& fallThrough);
 
-    ~ModuleNamespaceAccessCase();
+    ~ModuleNamespaceAccessCase() final;
 
 private:
     ModuleNamespaceAccessCase(VM&, JSCell* owner, CacheableIdentifier, JSModuleNamespaceObject*, JSModuleEnvironment*, ScopeOffset);

Modified: trunk/Source/_javascript_Core/bytecode/ProxyableAccessCase.h (261541 => 261542)


--- trunk/Source/_javascript_Core/bytecode/ProxyableAccessCase.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/bytecode/ProxyableAccessCase.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -43,7 +43,7 @@
     void dumpImpl(PrintStream&, CommaPrinter&) const override;
     std::unique_ptr<AccessCase> clone() const override;
 
-    ~ProxyableAccessCase();
+    ~ProxyableAccessCase() override;
 
 protected:
     ProxyableAccessCase(VM&, JSCell*, AccessType, CacheableIdentifier, PropertyOffset, Structure*, const ObjectPropertyConditionSet&, bool viaProxy, WatchpointSet* additionalSet, std::unique_ptr<PolyProtoAccessChain>);

Modified: trunk/Source/_javascript_Core/bytecode/Watchpoint.h (261541 => 261542)


--- trunk/Source/_javascript_Core/bytecode/Watchpoint.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/bytecode/Watchpoint.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -533,7 +533,7 @@
     WTF_MAKE_NONCOPYABLE(DeferredWatchpointFire);
 public:
     JS_EXPORT_PRIVATE DeferredWatchpointFire(VM&);
-    JS_EXPORT_PRIVATE ~DeferredWatchpointFire();
+    JS_EXPORT_PRIVATE ~DeferredWatchpointFire() override;
 
     JS_EXPORT_PRIVATE void takeWatchpointsToFire(WatchpointSet*);
     JS_EXPORT_PRIVATE void fireAll();

Modified: trunk/Source/_javascript_Core/dfg/DFGFailedFinalizer.h (261541 => 261542)


--- trunk/Source/_javascript_Core/dfg/DFGFailedFinalizer.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/dfg/DFGFailedFinalizer.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,14 +31,14 @@
 
 namespace JSC { namespace DFG {
 
-class FailedFinalizer : public Finalizer {
+class FailedFinalizer final : public Finalizer {
 public:
     FailedFinalizer(Plan&);
-    virtual ~FailedFinalizer();
+    ~FailedFinalizer() final;
     
-    size_t codeSize() override;
-    bool finalize() override;
-    bool finalizeFunction() override;
+    size_t codeSize() final;
+    bool finalize() final;
+    bool finalizeFunction() final;
 };
 
 } } // namespace JSC::DFG

Modified: trunk/Source/_javascript_Core/dfg/DFGGraph.h (261541 => 261542)


--- trunk/Source/_javascript_Core/dfg/DFGGraph.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/dfg/DFGGraph.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -159,10 +159,10 @@
 //
 // The order may be significant for nodes with side-effects (property accesses, value conversions).
 // Nodes that are 'dead' remain in the vector with refCount 0.
-class Graph : public virtual Scannable {
+class Graph final : public virtual Scannable {
 public:
     Graph(VM&, Plan&);
-    ~Graph();
+    ~Graph() final;
     
     void changeChild(Edge& edge, Node* newNode)
     {
@@ -1001,7 +1001,7 @@
     
     void registerFrozenValues();
     
-    void visitChildren(SlotVisitor&) override;
+    void visitChildren(SlotVisitor&) final;
     
     void logAssertionFailure(
         std::nullptr_t, const char* file, int line, const char* function,

Modified: trunk/Source/_javascript_Core/dfg/DFGJITCode.h (261541 => 261542)


--- trunk/Source/_javascript_Core/dfg/DFGJITCode.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/dfg/DFGJITCode.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -46,13 +46,13 @@
 
 class JITCompiler;
 
-class JITCode : public DirectJITCode {
+class JITCode final : public DirectJITCode {
 public:
     JITCode();
-    virtual ~JITCode();
+    ~JITCode() final;
     
-    CommonData* dfgCommon() override;
-    JITCode* dfg() override;
+    CommonData* dfgCommon() final;
+    JITCode* dfg() final;
     
     OSREntryData* appendOSREntryData(BytecodeIndex bytecodeIndex, CodeLocationLabel<OSREntryPtrTag> machineCode)
     {
@@ -113,11 +113,11 @@
     void setOptimizationThresholdBasedOnCompilationResult(CodeBlock*, CompilationResult);
 #endif // ENABLE(FTL_JIT)
     
-    void validateReferences(const TrackedReferences&) override;
+    void validateReferences(const TrackedReferences&) final;
     
-    void shrinkToFit(const ConcurrentJSLocker&) override;
+    void shrinkToFit(const ConcurrentJSLocker&) final;
 
-    RegisterSet liveRegistersToPreserveAtExceptionHandlingCallSite(CodeBlock*, CallSiteIndex) override;
+    RegisterSet liveRegistersToPreserveAtExceptionHandlingCallSite(CodeBlock*, CallSiteIndex) final;
 #if ENABLE(FTL_JIT)
     CodeBlock* osrEntryBlock() { return m_osrEntryBlock.get(); }
     void setOSREntryBlock(VM&, const JSCell* owner, CodeBlock* osrEntryBlock);
@@ -126,7 +126,7 @@
 
     static ptrdiff_t commonDataOffset() { return OBJECT_OFFSETOF(JITCode, common); }
 
-    Optional<CodeOrigin> findPC(CodeBlock*, void* pc) override;
+    Optional<CodeOrigin> findPC(CodeBlock*, void* pc) final;
 
     using DirectJITCode::initializeCodeRefForDFG;
     

Modified: trunk/Source/_javascript_Core/dfg/DFGJITFinalizer.h (261541 => 261542)


--- trunk/Source/_javascript_Core/dfg/DFGJITFinalizer.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/dfg/DFGJITFinalizer.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,14 +33,14 @@
 
 namespace JSC { namespace DFG {
 
-class JITFinalizer : public Finalizer {
+class JITFinalizer final : public Finalizer {
 public:
     JITFinalizer(Plan&, Ref<JITCode>&&, std::unique_ptr<LinkBuffer>, MacroAssemblerCodePtr<JSEntryPtrTag> withArityCheck = MacroAssemblerCodePtr<JSEntryPtrTag>(MacroAssemblerCodePtr<JSEntryPtrTag>::EmptyValue));
-    virtual ~JITFinalizer();
+    ~JITFinalizer() final;
     
-    size_t codeSize() override;
-    bool finalize() override;
-    bool finalizeFunction() override;
+    size_t codeSize() final;
+    bool finalize() final;
+    bool finalizeFunction() final;
 
 private:
     void finalizeCommon();

Modified: trunk/Source/_javascript_Core/dfg/DFGToFTLDeferredCompilationCallback.h (261541 => 261542)


--- trunk/Source/_javascript_Core/dfg/DFGToFTLDeferredCompilationCallback.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/dfg/DFGToFTLDeferredCompilationCallback.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -36,17 +36,17 @@
 
 namespace DFG {
 
-class ToFTLDeferredCompilationCallback : public DeferredCompilationCallback {
-protected:
-    ToFTLDeferredCompilationCallback();
-
+class ToFTLDeferredCompilationCallback final : public DeferredCompilationCallback {
 public:
-    virtual ~ToFTLDeferredCompilationCallback();
+    ~ToFTLDeferredCompilationCallback() final;
 
     static Ref<ToFTLDeferredCompilationCallback> create();
     
-    virtual void compilationDidBecomeReadyAsynchronously(CodeBlock*, CodeBlock* profiledDFGCodeBlock);
-    virtual void compilationDidComplete(CodeBlock*, CodeBlock* profiledDFGCodeBlock, CompilationResult);
+    void compilationDidBecomeReadyAsynchronously(CodeBlock*, CodeBlock* profiledDFGCodeBlock) final;
+    void compilationDidComplete(CodeBlock*, CodeBlock* profiledDFGCodeBlock, CompilationResult) final;
+
+private:
+    ToFTLDeferredCompilationCallback();
 };
 
 } } // namespace JSC::DFG

Modified: trunk/Source/_javascript_Core/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h (261541 => 261542)


--- trunk/Source/_javascript_Core/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -37,19 +37,18 @@
 
 namespace DFG {
 
-class ToFTLForOSREntryDeferredCompilationCallback : public DeferredCompilationCallback {
-protected:
-    ToFTLForOSREntryDeferredCompilationCallback(JITCode::TriggerReason* forcedOSREntryTrigger);
-
+class ToFTLForOSREntryDeferredCompilationCallback final : public DeferredCompilationCallback {
 public:
-    virtual ~ToFTLForOSREntryDeferredCompilationCallback();
+    ~ToFTLForOSREntryDeferredCompilationCallback() final;
 
     static Ref<ToFTLForOSREntryDeferredCompilationCallback> create(JITCode::TriggerReason* forcedOSREntryTrigger);
-    
-    virtual void compilationDidBecomeReadyAsynchronously(CodeBlock*, CodeBlock* profiledDFGCodeBlock);
-    virtual void compilationDidComplete(CodeBlock*, CodeBlock* profiledDFGCodeBlock, CompilationResult);
 
+    void compilationDidBecomeReadyAsynchronously(CodeBlock*, CodeBlock* profiledDFGCodeBlock) final;
+    void compilationDidComplete(CodeBlock*, CodeBlock* profiledDFGCodeBlock, CompilationResult) final;
+
 private:
+    ToFTLForOSREntryDeferredCompilationCallback(JITCode::TriggerReason* forcedOSREntryTrigger);
+
     JITCode::TriggerReason* m_forcedOSREntryTrigger;
 };
 

Modified: trunk/Source/_javascript_Core/ftl/FTLForOSREntryJITCode.h (261541 => 261542)


--- trunk/Source/_javascript_Core/ftl/FTLForOSREntryJITCode.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/ftl/FTLForOSREntryJITCode.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -40,10 +40,10 @@
 //
 // - Each OSR entry compilation allows entry through only one bytecode index.
 
-class ForOSREntryJITCode : public FTL::JITCode {
+class ForOSREntryJITCode final : public FTL::JITCode {
 public:
     ForOSREntryJITCode();
-    ~ForOSREntryJITCode();
+    ~ForOSREntryJITCode() final;
     
     void initializeEntryBuffer(VM&, unsigned numCalleeLocals);
     ScratchBuffer* entryBuffer() const { return m_entryBuffer; }
@@ -54,7 +54,7 @@
     void countEntryFailure() { m_entryFailureCount++; }
     unsigned entryFailureCount() const { return m_entryFailureCount; }
     
-    ForOSREntryJITCode* ftlForOSREntry();
+    ForOSREntryJITCode* ftlForOSREntry() final;
     
 private:
     ScratchBuffer* m_entryBuffer; // Only for OSR entry code blocks.

Modified: trunk/Source/_javascript_Core/ftl/FTLJITCode.h (261541 => 261542)


--- trunk/Source/_javascript_Core/ftl/FTLJITCode.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/ftl/FTLJITCode.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -42,7 +42,7 @@
 class JITCode : public JSC::JITCode {
 public:
     JITCode();
-    ~JITCode();
+    ~JITCode() override;
 
     CodePtr<JSEntryPtrTag> addressForCall(ArityCheckMode) override;
     void* executableAddressAtOffset(size_t offset) override;

Modified: trunk/Source/_javascript_Core/ftl/FTLJITFinalizer.h (261541 => 261542)


--- trunk/Source/_javascript_Core/ftl/FTLJITFinalizer.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/ftl/FTLJITFinalizer.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -47,14 +47,14 @@
     const char* m_codeDescription;
 };
 
-class JITFinalizer : public DFG::Finalizer {
+class JITFinalizer final : public DFG::Finalizer {
 public:
     JITFinalizer(DFG::Plan&);
-    virtual ~JITFinalizer();
+    ~JITFinalizer() final;
 
-    size_t codeSize() override;
-    bool finalize() override;
-    bool finalizeFunction() override;
+    size_t codeSize() final;
+    bool finalize() final;
+    bool finalizeFunction() final;
     
     bool finalizeCommon();
 

Modified: trunk/Source/_javascript_Core/heap/CompleteSubspace.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/CompleteSubspace.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/CompleteSubspace.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -29,10 +29,10 @@
 
 namespace JSC {
 
-class CompleteSubspace : public Subspace {
+class CompleteSubspace final : public Subspace {
 public:
     JS_EXPORT_PRIVATE CompleteSubspace(CString name, Heap&, HeapCellType*, AlignedMemoryAllocator*);
-    JS_EXPORT_PRIVATE ~CompleteSubspace();
+    JS_EXPORT_PRIVATE ~CompleteSubspace() final;
 
     // In some code paths, we need it to be a compile error to call the virtual version of one of
     // these functions. That's why we do final methods the old school way.
@@ -39,10 +39,10 @@
     
     // FIXME: Currently subspaces speak of BlockDirectories as "allocators", but that's temporary.
     // https://bugs.webkit.org/show_bug.cgi?id=181559
-    Allocator allocatorFor(size_t, AllocatorForMode) override;
+    Allocator allocatorFor(size_t, AllocatorForMode) final;
     Allocator allocatorForNonVirtual(size_t, AllocatorForMode);
     
-    void* allocate(VM&, size_t, GCDeferralContext*, AllocationFailureMode) override;
+    void* allocate(VM&, size_t, GCDeferralContext*, AllocationFailureMode) final;
     void* allocateNonVirtual(VM&, size_t, GCDeferralContext*, AllocationFailureMode);
     void* reallocatePreciseAllocationNonVirtual(VM&, HeapCell*, size_t, GCDeferralContext*, AllocationFailureMode);
     

Modified: trunk/Source/_javascript_Core/heap/FastMallocAlignedMemoryAllocator.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/FastMallocAlignedMemoryAllocator.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/FastMallocAlignedMemoryAllocator.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,19 +33,19 @@
 
 namespace JSC {
 
-class FastMallocAlignedMemoryAllocator : public AlignedMemoryAllocator {
+class FastMallocAlignedMemoryAllocator final : public AlignedMemoryAllocator {
 public:
     FastMallocAlignedMemoryAllocator();
-    ~FastMallocAlignedMemoryAllocator();
+    ~FastMallocAlignedMemoryAllocator() final;
     
-    void* tryAllocateAlignedMemory(size_t alignment, size_t size) override;
-    void freeAlignedMemory(void*) override;
+    void* tryAllocateAlignedMemory(size_t alignment, size_t size) final;
+    void freeAlignedMemory(void*) final;
     
-    void dump(PrintStream&) const override;
+    void dump(PrintStream&) const final;
 
-    void* tryAllocateMemory(size_t) override;
-    void freeMemory(void*) override;
-    void* tryReallocateMemory(void*, size_t) override;
+    void* tryAllocateMemory(size_t) final;
+    void freeMemory(void*) final;
+    void* tryReallocateMemory(void*, size_t) final;
 
 #if ENABLE(MALLOC_HEAP_BREAKDOWN)
 private:

Modified: trunk/Source/_javascript_Core/heap/GigacageAlignedMemoryAllocator.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/GigacageAlignedMemoryAllocator.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/GigacageAlignedMemoryAllocator.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -34,19 +34,19 @@
 
 namespace JSC {
 
-class GigacageAlignedMemoryAllocator : public AlignedMemoryAllocator {
+class GigacageAlignedMemoryAllocator final : public AlignedMemoryAllocator {
 public:
     GigacageAlignedMemoryAllocator(Gigacage::Kind);
-    ~GigacageAlignedMemoryAllocator();
+    ~GigacageAlignedMemoryAllocator() final;
     
-    void* tryAllocateAlignedMemory(size_t alignment, size_t size) override;
-    void freeAlignedMemory(void*) override;
+    void* tryAllocateAlignedMemory(size_t alignment, size_t size) final;
+    void freeAlignedMemory(void*) final;
     
-    void dump(PrintStream&) const override;
+    void dump(PrintStream&) const final;
 
-    void* tryAllocateMemory(size_t) override;
-    void freeMemory(void*) override;
-    void* tryReallocateMemory(void*, size_t) override;
+    void* tryAllocateMemory(size_t) final;
+    void freeMemory(void*) final;
+    void* tryReallocateMemory(void*, size_t) final;
 
 private:
     Gigacage::Kind m_kind;

Modified: trunk/Source/_javascript_Core/heap/HeapSnapshotBuilder.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/HeapSnapshotBuilder.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/HeapSnapshotBuilder.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -108,7 +108,7 @@
     enum SnapshotType { InspectorSnapshot, GCDebuggingSnapshot };
 
     HeapSnapshotBuilder(HeapProfiler&, SnapshotType = SnapshotType::InspectorSnapshot);
-    ~HeapSnapshotBuilder();
+    ~HeapSnapshotBuilder() final;
 
     static void resetNextAvailableObjectIdentifier();
 
@@ -116,17 +116,17 @@
     void buildSnapshot();
 
     // A root or marked cell.
-    void analyzeNode(JSCell*);
+    void analyzeNode(JSCell*) final;
 
     // A reference from one cell to another.
-    void analyzeEdge(JSCell* from, JSCell* to, SlotVisitor::RootMarkReason);
-    void analyzePropertyNameEdge(JSCell* from, JSCell* to, UniquedStringImpl* propertyName);
-    void analyzeVariableNameEdge(JSCell* from, JSCell* to, UniquedStringImpl* variableName);
-    void analyzeIndexEdge(JSCell* from, JSCell* to, uint32_t index);
+    void analyzeEdge(JSCell* from, JSCell* to, SlotVisitor::RootMarkReason) final;
+    void analyzePropertyNameEdge(JSCell* from, JSCell* to, UniquedStringImpl* propertyName) final;
+    void analyzeVariableNameEdge(JSCell* from, JSCell* to, UniquedStringImpl* variableName) final;
+    void analyzeIndexEdge(JSCell* from, JSCell* to, uint32_t index) final;
 
-    void setOpaqueRootReachabilityReasonForCell(JSCell*, const char*);
-    void setWrappedObjectForCell(JSCell*, void*);
-    void setLabelForCell(JSCell*, const String&);
+    void setOpaqueRootReachabilityReasonForCell(JSCell*, const char*) final;
+    void setWrappedObjectForCell(JSCell*, void*) final;
+    void setLabelForCell(JSCell*, const String&) final;
 
     String json();
     String json(Function<bool (const HeapSnapshotNode&)> allowNodeCallback);

Modified: trunk/Source/_javascript_Core/heap/IsoAlignedMemoryAllocator.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/IsoAlignedMemoryAllocator.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/IsoAlignedMemoryAllocator.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -34,19 +34,19 @@
 
 namespace JSC {
 
-class IsoAlignedMemoryAllocator : public AlignedMemoryAllocator {
+class IsoAlignedMemoryAllocator final : public AlignedMemoryAllocator {
 public:
     IsoAlignedMemoryAllocator(CString);
-    ~IsoAlignedMemoryAllocator();
+    ~IsoAlignedMemoryAllocator() final;
 
-    void* tryAllocateAlignedMemory(size_t alignment, size_t size) override;
-    void freeAlignedMemory(void*) override;
+    void* tryAllocateAlignedMemory(size_t alignment, size_t size) final;
+    void freeAlignedMemory(void*) final;
 
-    void dump(PrintStream&) const override;
+    void dump(PrintStream&) const final;
 
-    void* tryAllocateMemory(size_t) override;
-    void freeMemory(void*) override;
-    void* tryReallocateMemory(void*, size_t) override;
+    void* tryAllocateMemory(size_t) final;
+    void freeMemory(void*) final;
+    void* tryReallocateMemory(void*, size_t) final;
 
 private:
 #if ENABLE(MALLOC_HEAP_BREAKDOWN)

Modified: trunk/Source/_javascript_Core/heap/IsoSubspace.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/IsoSubspace.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/IsoSubspace.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -38,7 +38,7 @@
 class IsoSubspace : public Subspace {
 public:
     JS_EXPORT_PRIVATE IsoSubspace(CString name, Heap&, HeapCellType*, size_t size, uint8_t numberOfLowerTierCells);
-    JS_EXPORT_PRIVATE ~IsoSubspace();
+    JS_EXPORT_PRIVATE ~IsoSubspace() override;
 
     size_t cellSize() { return m_directory.cellSize(); }
 

Modified: trunk/Source/_javascript_Core/heap/IsoSubspacePerVM.cpp (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/IsoSubspacePerVM.cpp	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/IsoSubspacePerVM.cpp	2020-05-12 03:04:10 UTC (rev 261542)
@@ -31,7 +31,7 @@
 
 namespace JSC {
 
-class IsoSubspacePerVM::AutoremovingIsoSubspace : public IsoSubspace {
+class IsoSubspacePerVM::AutoremovingIsoSubspace final : public IsoSubspace {
 public:
     AutoremovingIsoSubspace(IsoSubspacePerVM& perVM, CString name, Heap& heap, HeapCellType* heapCellType, size_t size)
         : IsoSubspace(name, heap, heapCellType, size, /* numberOfLowerTierCells */ 0)
@@ -39,7 +39,7 @@
     {
     }
     
-    ~AutoremovingIsoSubspace()
+    ~AutoremovingIsoSubspace() final
     {
         auto locker = holdLock(m_perVM.m_lock);
         m_perVM.m_subspacePerVM.remove(&space().heap().vm());

Modified: trunk/Source/_javascript_Core/heap/IsoSubspacePerVM.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/IsoSubspacePerVM.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/IsoSubspacePerVM.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -36,7 +36,7 @@
 // sure to be main-thread-only. But if a class typically gets instantiated from multiple threads at
 // once, then this is not great, because concurrent allocations will probably contend on this thing's
 // lock.
-class IsoSubspacePerVM {
+class IsoSubspacePerVM final {
 public:
     struct SubspaceParameters {
         SubspaceParameters() { }

Modified: trunk/Source/_javascript_Core/heap/MarkStackMergingConstraint.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/MarkStackMergingConstraint.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/MarkStackMergingConstraint.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -32,18 +32,17 @@
 class Heap;
 class SlotVisitor;
 
-class MarkStackMergingConstraint : public MarkingConstraint {
+class MarkStackMergingConstraint final : public MarkingConstraint {
 public:
     MarkStackMergingConstraint(Heap&);
-    ~MarkStackMergingConstraint();
+    ~MarkStackMergingConstraint() final;
     
-    double quickWorkEstimate(SlotVisitor&) override;
+    double quickWorkEstimate(SlotVisitor&) final;
     
-protected:
-    void prepareToExecuteImpl(const AbstractLocker& constraintSolvingLocker, SlotVisitor&) override;
-    void executeImpl(SlotVisitor&) override;
+private:
+    void prepareToExecuteImpl(const AbstractLocker& constraintSolvingLocker, SlotVisitor&) final;
+    void executeImpl(SlotVisitor&) final;
     
-private:
     Heap& m_heap;
 };
 

Modified: trunk/Source/_javascript_Core/heap/SimpleMarkingConstraint.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/SimpleMarkingConstraint.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/SimpleMarkingConstraint.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,7 +33,7 @@
 // This allows for an informal way to define constraints. Just pass a lambda to the constructor. The only
 // downside is that this makes it hard for constraints to override any functions in MarkingConstraint
 // other than executeImpl. In those cases, just subclass MarkingConstraint.
-class SimpleMarkingConstraint : public MarkingConstraint {
+class SimpleMarkingConstraint final : public MarkingConstraint {
 public:
     JS_EXPORT_PRIVATE SimpleMarkingConstraint(
         CString abbreviatedName, CString name,
@@ -51,10 +51,10 @@
     {
     }
     
-    JS_EXPORT_PRIVATE ~SimpleMarkingConstraint();
+    JS_EXPORT_PRIVATE ~SimpleMarkingConstraint() final;
     
 private:
-    void executeImpl(SlotVisitor&) override;
+    void executeImpl(SlotVisitor&) final;
 
     ::Function<void(SlotVisitor&)> m_executeFunction;
 };

Modified: trunk/Source/_javascript_Core/heap/SpaceTimeMutatorScheduler.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/SpaceTimeMutatorScheduler.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/SpaceTimeMutatorScheduler.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -38,25 +38,25 @@
 // that the world is paused for to the amount of space that the world allocated since the GC cycle
 // began.
 
-class SpaceTimeMutatorScheduler : public MutatorScheduler {
+class SpaceTimeMutatorScheduler final : public MutatorScheduler {
 public:
     SpaceTimeMutatorScheduler(Heap&);
-    ~SpaceTimeMutatorScheduler();
+    ~SpaceTimeMutatorScheduler() final;
     
-    State state() const override;
+    State state() const final;
     
-    void beginCollection() override;
+    void beginCollection() final;
     
-    void didStop() override;
-    void willResume() override;
-    void didExecuteConstraints() override;
+    void didStop() final;
+    void willResume() final;
+    void didExecuteConstraints() final;
     
-    MonotonicTime timeToStop() override;
-    MonotonicTime timeToResume() override;
+    MonotonicTime timeToStop() final;
+    MonotonicTime timeToResume() final;
     
-    void log() override;
+    void log() final;
     
-    void endCollection() override;
+    void endCollection() final;
     
 private:
     class Snapshot;

Modified: trunk/Source/_javascript_Core/heap/StochasticSpaceTimeMutatorScheduler.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/StochasticSpaceTimeMutatorScheduler.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/StochasticSpaceTimeMutatorScheduler.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -39,27 +39,27 @@
 // that the world is paused for to the amount of space that the world allocated since the GC cycle
 // began.
 
-class StochasticSpaceTimeMutatorScheduler : public MutatorScheduler {
+class StochasticSpaceTimeMutatorScheduler final : public MutatorScheduler {
 public:
     StochasticSpaceTimeMutatorScheduler(Heap&);
-    ~StochasticSpaceTimeMutatorScheduler();
+    ~StochasticSpaceTimeMutatorScheduler() final;
     
-    State state() const override;
+    State state() const final;
     
-    void beginCollection() override;
+    void beginCollection() final;
     
-    void didStop() override;
-    void willResume() override;
-    void didReachTermination() override;
-    void didExecuteConstraints() override;
-    void synchronousDrainingDidStall() override;
+    void didStop() final;
+    void willResume() final;
+    void didReachTermination() final;
+    void didExecuteConstraints() final;
+    void synchronousDrainingDidStall() final;
     
-    MonotonicTime timeToStop() override;
-    MonotonicTime timeToResume() override;
+    MonotonicTime timeToStop() final;
+    MonotonicTime timeToResume() final;
     
-    void log() override;
+    void log() final;
     
-    void endCollection() override;
+    void endCollection() final;
     
 private:
     class Snapshot;

Modified: trunk/Source/_javascript_Core/heap/SynchronousStopTheWorldMutatorScheduler.h (261541 => 261542)


--- trunk/Source/_javascript_Core/heap/SynchronousStopTheWorldMutatorScheduler.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/heap/SynchronousStopTheWorldMutatorScheduler.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -35,19 +35,19 @@
 // than X86-64 and ARM64. This scheduler is a drop-in replacement for the concurrent GC's
 // SpaceTimeMutatorScheduler. It tells the GC to never resume the world once the GC cycle begins.
 
-class SynchronousStopTheWorldMutatorScheduler : public MutatorScheduler {
+class SynchronousStopTheWorldMutatorScheduler final : public MutatorScheduler {
 public:
     SynchronousStopTheWorldMutatorScheduler();
-    ~SynchronousStopTheWorldMutatorScheduler();
+    ~SynchronousStopTheWorldMutatorScheduler() final;
     
-    State state() const override;
+    State state() const final;
     
-    void beginCollection() override;
+    void beginCollection() final;
     
-    MonotonicTime timeToStop() override;
-    MonotonicTime timeToResume() override;
+    MonotonicTime timeToStop() final;
+    MonotonicTime timeToResume() final;
     
-    void endCollection() override;
+    void endCollection() final;
 
 private:
     State m_state { Normal };

Modified: trunk/Source/_javascript_Core/jit/GCAwareJITStubRoutine.h (261541 => 261542)


--- trunk/Source/_javascript_Core/jit/GCAwareJITStubRoutine.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/jit/GCAwareJITStubRoutine.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -51,7 +51,7 @@
 class GCAwareJITStubRoutine : public JITStubRoutine {
 public:
     GCAwareJITStubRoutine(const MacroAssemblerCodeRef<JITStubRoutinePtrTag>&, VM&);
-    virtual ~GCAwareJITStubRoutine();
+    ~GCAwareJITStubRoutine() override;
 
     static Ref<JITStubRoutine> create(const MacroAssemblerCodeRef<JITStubRoutinePtrTag>& code, VM& vm)
     {
@@ -83,7 +83,7 @@
 public:
     MarkingGCAwareJITStubRoutine(
         const MacroAssemblerCodeRef<JITStubRoutinePtrTag>&, VM&, const JSCell* owner, const Vector<JSCell*>&, Bag<CallLinkInfo>&&);
-    virtual ~MarkingGCAwareJITStubRoutine();
+    ~MarkingGCAwareJITStubRoutine() override;
     
 protected:
     void markRequiredObjectsInternal(SlotVisitor&) override;
@@ -97,14 +97,14 @@
 // The stub has exception handlers in it. So it clears itself from exception
 // handling table when it dies. It also frees space in CodeOrigin table
 // for new exception handlers to use the same DisposableCallSiteIndex.
-class GCAwareJITStubRoutineWithExceptionHandler : public MarkingGCAwareJITStubRoutine {
+class GCAwareJITStubRoutineWithExceptionHandler final : public MarkingGCAwareJITStubRoutine {
 public:
     typedef GCAwareJITStubRoutine Base;
 
     GCAwareJITStubRoutineWithExceptionHandler(const MacroAssemblerCodeRef<JITStubRoutinePtrTag>&, VM&, const JSCell* owner, const Vector<JSCell*>&, Bag<CallLinkInfo>&&, CodeBlock*, DisposableCallSiteIndex);
 
-    void aboutToDie() override;
-    void observeZeroRefCount() override;
+    void aboutToDie() final;
+    void observeZeroRefCount() final;
 
 private:
     CodeBlock* m_codeBlockWithExceptionHandler;

Modified: trunk/Source/_javascript_Core/jit/JITCode.h (261541 => 261542)


--- trunk/Source/_javascript_Core/jit/JITCode.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/jit/JITCode.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -226,7 +226,7 @@
     JITCodeWithCodeRef(CodeRef<JSEntryPtrTag>, JITType, JITCode::ShareAttribute);
 
 public:
-    virtual ~JITCodeWithCodeRef();
+    ~JITCodeWithCodeRef() override;
 
     void* executableAddressAtOffset(size_t offset) override;
     void* dataAddressAtOffset(size_t offset) override;
@@ -245,7 +245,7 @@
     DirectJITCode(JITType);
     DirectJITCode(CodeRef<JSEntryPtrTag>, CodePtr<JSEntryPtrTag> withArityCheck, JITType, JITCode::ShareAttribute = JITCode::ShareAttribute::NotShared);
     DirectJITCode(CodeRef<JSEntryPtrTag>, CodePtr<JSEntryPtrTag> withArityCheck, JITType, Intrinsic, JITCode::ShareAttribute = JITCode::ShareAttribute::NotShared); // For generated thunk.
-    virtual ~DirectJITCode();
+    ~DirectJITCode() override;
     
     CodePtr<JSEntryPtrTag> addressForCall(ArityCheckMode) override;
 
@@ -260,7 +260,7 @@
 public:
     NativeJITCode(JITType);
     NativeJITCode(CodeRef<JSEntryPtrTag>, JITType, Intrinsic, JITCode::ShareAttribute = JITCode::ShareAttribute::NotShared);
-    virtual ~NativeJITCode();
+    ~NativeJITCode() override;
 
     CodePtr<JSEntryPtrTag> addressForCall(ArityCheckMode) override;
 };
@@ -268,9 +268,9 @@
 class NativeDOMJITCode final : public NativeJITCode {
 public:
     NativeDOMJITCode(CodeRef<JSEntryPtrTag>, JITType, Intrinsic, const DOMJIT::Signature*);
-    virtual ~NativeDOMJITCode() = default;
+    ~NativeDOMJITCode() final = default;
 
-    const DOMJIT::Signature* signature() const override { return m_signature; }
+    const DOMJIT::Signature* signature() const final { return m_signature; }
 
 private:
     const DOMJIT::Signature* m_signature;

Modified: trunk/Source/_javascript_Core/jit/JITThunks.h (261541 => 261542)


--- trunk/Source/_javascript_Core/jit/JITThunks.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/jit/JITThunks.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -50,7 +50,7 @@
     WTF_MAKE_FAST_ALLOCATED;
 public:
     JITThunks();
-    virtual ~JITThunks();
+    ~JITThunks() final;
 
     MacroAssemblerCodePtr<JITThunkPtrTag> ctiNativeCall(VM&);
     MacroAssemblerCodePtr<JITThunkPtrTag> ctiNativeConstruct(VM&);
@@ -67,7 +67,7 @@
     NativeExecutable* hostFunctionStub(VM&, TaggedNativeFunction, ThunkGenerator, Intrinsic, const String& name);
 
 private:
-    void finalize(Handle<Unknown>, void* context) override;
+    void finalize(Handle<Unknown>, void* context) final;
     
     typedef HashMap<ThunkGenerator, MacroAssemblerCodeRef<JITThunkPtrTag>> CTIStubMap;
     CTIStubMap m_ctiStubMap;

Modified: trunk/Source/_javascript_Core/jit/JITToDFGDeferredCompilationCallback.h (261541 => 261542)


--- trunk/Source/_javascript_Core/jit/JITToDFGDeferredCompilationCallback.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/jit/JITToDFGDeferredCompilationCallback.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -33,17 +33,17 @@
 
 class ScriptExecutable;
 
-class JITToDFGDeferredCompilationCallback : public DeferredCompilationCallback {
-protected:
-    JITToDFGDeferredCompilationCallback();
-
+class JITToDFGDeferredCompilationCallback final : public DeferredCompilationCallback {
 public:
-    virtual ~JITToDFGDeferredCompilationCallback();
+    ~JITToDFGDeferredCompilationCallback() final;
 
     static Ref<JITToDFGDeferredCompilationCallback> create();
     
-    void compilationDidBecomeReadyAsynchronously(CodeBlock*, CodeBlock* profiledDFGCodeBlock) override;
-    void compilationDidComplete(CodeBlock*, CodeBlock* profiledDFGCodeBlock, CompilationResult) override;
+    void compilationDidBecomeReadyAsynchronously(CodeBlock*, CodeBlock* profiledDFGCodeBlock) final;
+    void compilationDidComplete(CodeBlock*, CodeBlock* profiledDFGCodeBlock, CompilationResult) final;
+
+private:
+    JITToDFGDeferredCompilationCallback();
 };
 
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/jit/PolymorphicCallStubRoutine.h (261541 => 261542)


--- trunk/Source/_javascript_Core/jit/PolymorphicCallStubRoutine.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/jit/PolymorphicCallStubRoutine.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -80,7 +80,7 @@
     CodeBlock* m_codeBlock;
 };
 
-class PolymorphicCallStubRoutine : public GCAwareJITStubRoutine {
+class PolymorphicCallStubRoutine final : public GCAwareJITStubRoutine {
 public:
     PolymorphicCallStubRoutine(
         const MacroAssemblerCodeRef<JITStubRoutinePtrTag>&, VM&, const JSCell* owner,
@@ -87,7 +87,7 @@
         CallFrame* callerFrame, CallLinkInfo&, const Vector<PolymorphicCallCase>&,
         UniqueArray<uint32_t>&& fastCounts);
     
-    virtual ~PolymorphicCallStubRoutine();
+    ~PolymorphicCallStubRoutine() final;
     
     CallVariantList variants() const;
     bool hasEdges() const;
@@ -102,12 +102,11 @@
             functor(variant.get());
     }
 
-    bool visitWeak(VM&) override;
+    bool visitWeak(VM&) final;
 
-protected:
-    void markRequiredObjectsInternal(SlotVisitor&) override;
+private:
+    void markRequiredObjectsInternal(SlotVisitor&) final;
 
-private:
     Vector<WriteBarrier<JSCell>, 2> m_variants;
     UniqueArray<uint32_t> m_fastCounts;
     Bag<PolymorphicCallNode> m_callNodes;

Modified: trunk/Source/_javascript_Core/jsc.cpp (261541 => 261542)


--- trunk/Source/_javascript_Core/jsc.cpp	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/jsc.cpp	2020-05-12 03:04:10 UTC (rev 261542)
@@ -973,7 +973,7 @@
     return true;
 }
 
-class ShellSourceProvider : public StringSourceProvider {
+class ShellSourceProvider final : public StringSourceProvider {
 public:
     static Ref<ShellSourceProvider> create(const String& source, const SourceOrigin& sourceOrigin, URL&& url, const TextPosition& startPosition, SourceProviderSourceType sourceType)
     {
@@ -980,12 +980,12 @@
         return adoptRef(*new ShellSourceProvider(source, sourceOrigin, WTFMove(url), startPosition, sourceType));
     }
 
-    ~ShellSourceProvider()
+    ~ShellSourceProvider() final
     {
         commitCachedBytecode();
     }
 
-    RefPtr<CachedBytecode> cachedBytecode() const override
+    RefPtr<CachedBytecode> cachedBytecode() const final
     {
         if (!m_cachedBytecode)
             loadBytecode();
@@ -992,7 +992,7 @@
         return m_cachedBytecode.copyRef();
     }
 
-    void updateCache(const UnlinkedFunctionExecutable* executable, const SourceCode&, CodeSpecializationKind kind, const UnlinkedFunctionCodeBlock* codeBlock) const override
+    void updateCache(const UnlinkedFunctionExecutable* executable, const SourceCode&, CodeSpecializationKind kind, const UnlinkedFunctionCodeBlock* codeBlock) const final
     {
         if (!cacheEnabled() || !m_cachedBytecode)
             return;
@@ -1002,7 +1002,7 @@
             m_cachedBytecode->addFunctionUpdate(executable, kind, *cachedBytecode);
     }
 
-    void cacheBytecode(const BytecodeCacheGenerator& generator) const override
+    void cacheBytecode(const BytecodeCacheGenerator& generator) const final
     {
         if (!cacheEnabled())
             return;
@@ -1013,7 +1013,7 @@
             m_cachedBytecode->addGlobalUpdate(*update);
     }
 
-    void commitCachedBytecode() const override
+    void commitCachedBytecode() const final
     {
         if (!cacheEnabled() || !m_cachedBytecode || !m_cachedBytecode->hasUpdates())
             return;

Modified: trunk/Source/_javascript_Core/parser/Lexer.cpp (261541 => 261542)


--- trunk/Source/_javascript_Core/parser/Lexer.cpp	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/parser/Lexer.cpp	2020-05-12 03:04:10 UTC (rev 261542)
@@ -746,7 +746,7 @@
     return typesOfLatin1Characters[static_cast<LChar>(c)] == CharacterIdentifierStart;
 }
 
-static ALWAYS_INLINE bool isSingleCharacterIdentStart(UChar c)
+static ALWAYS_INLINE UNUSED_FUNCTION bool isSingleCharacterIdentStart(UChar c)
 {
     if (LIKELY(isLatin1(c)))
         return isIdentStart(static_cast<LChar>(c));

Modified: trunk/Source/_javascript_Core/runtime/JSDestructibleObjectHeapCellType.h (261541 => 261542)


--- trunk/Source/_javascript_Core/runtime/JSDestructibleObjectHeapCellType.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/runtime/JSDestructibleObjectHeapCellType.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -29,13 +29,13 @@
 
 namespace JSC {
 
-class JSDestructibleObjectHeapCellType : public HeapCellType {
+class JSDestructibleObjectHeapCellType final : public HeapCellType {
 public:
     JS_EXPORT_PRIVATE JSDestructibleObjectHeapCellType();
-    JS_EXPORT_PRIVATE virtual ~JSDestructibleObjectHeapCellType();
+    JS_EXPORT_PRIVATE ~JSDestructibleObjectHeapCellType() final;
     
-    void finishSweep(MarkedBlock::Handle&, FreeList*) override;
-    void destroy(VM&, JSCell*) override;
+    void finishSweep(MarkedBlock::Handle&, FreeList*) final;
+    void destroy(VM&, JSCell*) final;
 };
 
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/runtime/SimpleTypedArrayController.h (261541 => 261542)


--- trunk/Source/_javascript_Core/runtime/SimpleTypedArrayController.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/runtime/SimpleTypedArrayController.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -46,20 +46,20 @@
 //   already been created and it didn't die, then you get the same
 //   one.
 
-class SimpleTypedArrayController : public TypedArrayController {
+class SimpleTypedArrayController final : public TypedArrayController {
 public:
     SimpleTypedArrayController();
-    virtual ~SimpleTypedArrayController();
+    ~SimpleTypedArrayController() final;
     
-    JSArrayBuffer* toJS(JSGlobalObject*, JSGlobalObject*, ArrayBuffer*) override;
-    void registerWrapper(JSGlobalObject*, ArrayBuffer*, JSArrayBuffer*) override;
-    bool isAtomicsWaitAllowedOnCurrentThread() override;
+    JSArrayBuffer* toJS(JSGlobalObject*, JSGlobalObject*, ArrayBuffer*) final;
+    void registerWrapper(JSGlobalObject*, ArrayBuffer*, JSArrayBuffer*) final;
+    bool isAtomicsWaitAllowedOnCurrentThread() final;
 
 private:
-    class JSArrayBufferOwner : public WeakHandleOwner {
+    class JSArrayBufferOwner final : public WeakHandleOwner {
     public:
-        bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, SlotVisitor&, const char** reason) override;
-        void finalize(JSC::Handle<JSC::Unknown>, void* context) override;
+        bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, SlotVisitor&, const char** reason) final;
+        void finalize(JSC::Handle<JSC::Unknown>, void* context) final;
     };
 
     JSArrayBufferOwner m_owner;

Modified: trunk/Source/_javascript_Core/runtime/Structure.h (261541 => 261542)


--- trunk/Source/_javascript_Core/runtime/Structure.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/runtime/Structure.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -96,7 +96,7 @@
     }
 };
 
-class StructureFireDetail : public FireDetail {
+class StructureFireDetail final : public FireDetail {
 public:
     StructureFireDetail(const Structure* structure)
         : m_structure(structure)
@@ -103,19 +103,19 @@
     {
     }
     
-    void dump(PrintStream& out) const override;
+    void dump(PrintStream& out) const final;
 
 private:
     const Structure* m_structure;
 };
 
-class DeferredStructureTransitionWatchpointFire : public DeferredWatchpointFire {
+class DeferredStructureTransitionWatchpointFire final : public DeferredWatchpointFire {
     WTF_MAKE_NONCOPYABLE(DeferredStructureTransitionWatchpointFire);
 public:
     JS_EXPORT_PRIVATE DeferredStructureTransitionWatchpointFire(VM&, Structure*);
-    JS_EXPORT_PRIVATE ~DeferredStructureTransitionWatchpointFire();
+    JS_EXPORT_PRIVATE ~DeferredStructureTransitionWatchpointFire() final;
     
-    void dump(PrintStream& out) const override;
+    void dump(PrintStream& out) const final;
 
     const Structure* structure() const { return m_structure; }
 

Modified: trunk/Source/_javascript_Core/runtime/WeakGCMap.h (261541 => 261542)


--- trunk/Source/_javascript_Core/runtime/WeakGCMap.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/runtime/WeakGCMap.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -40,7 +40,7 @@
 
 template<typename KeyArg, typename ValueArg, typename HashArg = typename DefaultHash<KeyArg>::Hash,
     typename KeyTraitsArg = HashTraits<KeyArg>>
-class WeakGCMap : public WeakGCMapBase {
+class WeakGCMap final : public WeakGCMapBase {
     WTF_MAKE_FAST_ALLOCATED;
     typedef Weak<ValueArg> ValueType;
     typedef HashMap<KeyArg, ValueType, HashArg, KeyTraitsArg> HashMapType;
@@ -52,7 +52,7 @@
     typedef typename HashMapType::const_iterator const_iterator;
 
     explicit WeakGCMap(VM&);
-    ~WeakGCMap();
+    ~WeakGCMap() final;
 
     ValueArg* get(const KeyType& key) const
     {
@@ -91,7 +91,7 @@
 
     inline bool contains(const KeyType& key) const;
 
-    void pruneStaleEntries() override;
+    void pruneStaleEntries() final;
 
 private:
     HashMapType m_map;

Modified: trunk/Source/_javascript_Core/wasm/WasmEntryPlan.h (261541 => 261542)


--- trunk/Source/_javascript_Core/wasm/WasmEntryPlan.h	2020-05-12 02:52:03 UTC (rev 261541)
+++ trunk/Source/_javascript_Core/wasm/WasmEntryPlan.h	2020-05-12 03:04:10 UTC (rev 261542)
@@ -50,7 +50,7 @@
     EntryPlan(Context*, Ref<ModuleInformation>, AsyncWork, CompletionTask&&);
     JS_EXPORT_PRIVATE EntryPlan(Context*, Vector<uint8_t>&&, AsyncWork, CompletionTask&&);
 
-    virtual ~EntryPlan() = default;
+    ~EntryPlan() override = default;
 
     void prepare();
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to