Changeset 232080 in webkit


Ignore:
Timestamp:
May 22, 2018 2:33:26 PM (6 years ago)
Author:
keith_miller@apple.com
Message:

Remove the UnconditionalFinalizer class
https://bugs.webkit.org/show_bug.cgi?id=185881

Reviewed by Filip Pizlo.

The only remaining user of this API is
JSWebAssemblyCodeBlock. This patch changes, JSWebAssemblyCodeBlock
to use the newer template based API and removes the old class.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.h:
  • heap/Heap.cpp:

(JSC::Heap::finalizeUnconditionalFinalizers):

  • heap/Heap.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::addUnconditionalFinalizer): Deleted.

  • heap/SlotVisitor.h:
  • heap/UnconditionalFinalizer.h: Removed.
  • wasm/js/JSWebAssemblyCodeBlock.cpp:

(JSC::JSWebAssemblyCodeBlock::JSWebAssemblyCodeBlock):
(JSC::JSWebAssemblyCodeBlock::visitChildren):
(JSC::JSWebAssemblyCodeBlock::finalizeUnconditionally):
(JSC::JSWebAssemblyCodeBlock::UnconditionalFinalizer::finalizeUnconditionally): Deleted.

  • wasm/js/JSWebAssemblyCodeBlock.h:
  • wasm/js/JSWebAssemblyModule.h:
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.h:
  • heap/Heap.cpp:

(JSC::Heap::finalizeUnconditionalFinalizers):

  • heap/Heap.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::addUnconditionalFinalizer): Deleted.

  • heap/SlotVisitor.h:
  • heap/UnconditionalFinalizer.h: Removed.
  • wasm/js/JSWebAssemblyCodeBlock.cpp:

(JSC::JSWebAssemblyCodeBlock::JSWebAssemblyCodeBlock):
(JSC::JSWebAssemblyCodeBlock::visitChildren):
(JSC::JSWebAssemblyCodeBlock::finalizeUnconditionally):
(JSC::JSWebAssemblyCodeBlock::UnconditionalFinalizer::finalizeUnconditionally): Deleted.

  • wasm/js/JSWebAssemblyCodeBlock.h:
  • wasm/js/JSWebAssemblyModule.h:
Location:
trunk/Source/JavaScriptCore
Files:
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/CMakeLists.txt

    r232074 r232080  
    558558    heap/Synchronousness.h
    559559    heap/TinyBloomFilter.h
    560     heap/UnconditionalFinalizer.h
    561560    heap/VisitRaceKey.h
    562561    heap/Weak.h
  • trunk/Source/JavaScriptCore/ChangeLog

    r232076 r232080  
     12018-05-22  Keith Miller  <keith_miller@apple.com>
     2
     3        Remove the UnconditionalFinalizer class
     4        https://bugs.webkit.org/show_bug.cgi?id=185881
     5
     6        Reviewed by Filip Pizlo.
     7
     8        The only remaining user of this API is
     9        JSWebAssemblyCodeBlock. This patch changes, JSWebAssemblyCodeBlock
     10        to use the newer template based API and removes the old class.
     11
     12        * JavaScriptCore.xcodeproj/project.pbxproj:
     13        * bytecode/CodeBlock.h:
     14        * heap/Heap.cpp:
     15        (JSC::Heap::finalizeUnconditionalFinalizers):
     16        * heap/Heap.h:
     17        * heap/SlotVisitor.cpp:
     18        (JSC::SlotVisitor::addUnconditionalFinalizer): Deleted.
     19        * heap/SlotVisitor.h:
     20        * heap/UnconditionalFinalizer.h: Removed.
     21        * wasm/js/JSWebAssemblyCodeBlock.cpp:
     22        (JSC::JSWebAssemblyCodeBlock::JSWebAssemblyCodeBlock):
     23        (JSC::JSWebAssemblyCodeBlock::visitChildren):
     24        (JSC::JSWebAssemblyCodeBlock::finalizeUnconditionally):
     25        (JSC::JSWebAssemblyCodeBlock::UnconditionalFinalizer::finalizeUnconditionally): Deleted.
     26        * wasm/js/JSWebAssemblyCodeBlock.h:
     27        * wasm/js/JSWebAssemblyModule.h:
     28
     29        * CMakeLists.txt:
     30        * JavaScriptCore.xcodeproj/project.pbxproj:
     31        * bytecode/CodeBlock.h:
     32        * heap/Heap.cpp:
     33        (JSC::Heap::finalizeUnconditionalFinalizers):
     34        * heap/Heap.h:
     35        * heap/SlotVisitor.cpp:
     36        (JSC::SlotVisitor::addUnconditionalFinalizer): Deleted.
     37        * heap/SlotVisitor.h:
     38        * heap/UnconditionalFinalizer.h: Removed.
     39        * wasm/js/JSWebAssemblyCodeBlock.cpp:
     40        (JSC::JSWebAssemblyCodeBlock::JSWebAssemblyCodeBlock):
     41        (JSC::JSWebAssemblyCodeBlock::visitChildren):
     42        (JSC::JSWebAssemblyCodeBlock::finalizeUnconditionally):
     43        (JSC::JSWebAssemblyCodeBlock::UnconditionalFinalizer::finalizeUnconditionally): Deleted.
     44        * wasm/js/JSWebAssemblyCodeBlock.h:
     45        * wasm/js/JSWebAssemblyModule.h:
     46
    1472018-05-22  Keith Miller  <keith_miller@apple.com>
    248
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r232074 r232080  
    349349                0F5E0FE72086AD480097F0DE /* IsoSubspacePerVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5E0FE52086AD460097F0DE /* IsoSubspacePerVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
    350350                0F5EF91F16878F7D003E5C25 /* JITThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5EF91C16878F78003E5C25 /* JITThunks.h */; settings = {ATTRIBUTES = (Private, ); }; };
    351                 0F5F08CF146C7633000472A9 /* UnconditionalFinalizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5F08CE146C762F000472A9 /* UnconditionalFinalizer.h */; settings = {ATTRIBUTES = (Private, ); }; };
    352351                0F60FE901FFC37020003320A /* ExecutableToCodeBlockEdge.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F60FE8E1FFC36FD0003320A /* ExecutableToCodeBlockEdge.h */; settings = {ATTRIBUTES = (Private, ); }; };
    353352                0F61832A1C45BF070072450B /* AirCCallingConvention.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6183211C45BF070072450B /* AirCCallingConvention.h */; };
     
    23662365                0F5EF91B16878F78003E5C25 /* JITThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITThunks.cpp; sourceTree = "<group>"; };
    23672366                0F5EF91C16878F78003E5C25 /* JITThunks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITThunks.h; sourceTree = "<group>"; };
    2368                 0F5F08CE146C762F000472A9 /* UnconditionalFinalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnconditionalFinalizer.h; sourceTree = "<group>"; };
    23692367                0F60FE8D1FFC36FC0003320A /* ExecutableToCodeBlockEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutableToCodeBlockEdge.cpp; sourceTree = "<group>"; };
    23702368                0F60FE8E1FFC36FD0003320A /* ExecutableToCodeBlockEdge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutableToCodeBlockEdge.h; sourceTree = "<group>"; };
     
    57745772                                0F1FB38B1E173A6200A9BE50 /* SynchronousStopTheWorldMutatorScheduler.h */,
    57755773                                141448CC13A1783700F5BA1A /* TinyBloomFilter.h */,
    5776                                 0F5F08CE146C762F000472A9 /* UnconditionalFinalizer.h */,
    57775774                                0F4D8C721FC7A973001D32AC /* VisitCounter.h */,
    57785775                                0F952A9F1DF7860700E06FBD /* VisitRaceKey.cpp */,
     
    88628859                                0F4680D514BBD24B00BFE272 /* HostCallReturnValue.h in Headers */,
    88638860                                DC2143071CA32E55000A8869 /* ICStats.h in Headers */,
     8861                                0FB399BE20AF6B3D0017E213 /* ICStatusUtils.h in Headers */,
    88648862                                BC18C40F0E16F5CD00B34460 /* Identifier.h in Headers */,
    88658863                                8606DDEA18DA44AB00A383D0 /* IdentifierInlines.h in Headers */,
     
    89098907                                A55165D31BDF0B9E003B75C1 /* InspectorScriptProfilerAgent.h in Headers */,
    89108908                                0F49E9AA20AB4D00001CA0AA /* InstanceOfAccessCase.h in Headers */,
     8909                                0FB399BF20AF6B3F0017E213 /* InstanceOfStatus.h in Headers */,
     8910                                0FB399C020AF6B430017E213 /* InstanceOfVariant.h in Headers */,
    89118911                                969A07990ED1D3AE00F1F681 /* Instruction.h in Headers */,
    89128912                                A7A8AF3B17ADB5F3005AB174 /* Int16Array.h in Headers */,
     
    90679067                                7013CA8C1B491A9400CAE613 /* JSJob.h in Headers */,
    90689068                                BC18C4160E16F5CD00B34460 /* JSLexicalEnvironment.h in Headers */,
    9069                                 0FB399C020AF6B430017E213 /* InstanceOfVariant.h in Headers */,
    90709069                                BC18C4230E16F5CD00B34460 /* JSLock.h in Headers */,
    90719070                                C25D709C16DE99F400FCA6BC /* JSManagedValue.h in Headers */,
     
    91929191                                981ED82328234D91BAECCADE /* MachineContext.h in Headers */,
    91939192                                14B723B812D7DA6F003BD5ED /* MachineStackMarker.h in Headers */,
    9194                                 0FB399BF20AF6B3F0017E213 /* InstanceOfStatus.h in Headers */,
    91959193                                86C36EEA0EE1289D00B3DF59 /* MacroAssembler.h in Headers */,
    91969194                                86D3B2C610156BDE002865E7 /* MacroAssemblerARM.h in Headers */,
     
    94499447                                996B73271BDA08EF00331B84 /* SymbolConstructor.lut.h in Headers */,
    94509448                                705B41B01A6E501E00716757 /* SymbolObject.h in Headers */,
    9451                                 0FB399BE20AF6B3D0017E213 /* ICStatusUtils.h in Headers */,
    94529449                                705B41B21A6E501E00716757 /* SymbolPrototype.h in Headers */,
    94539450                                996B73281BDA08EF00331B84 /* SymbolPrototype.lut.h in Headers */,
     
    94909487                                A7A8AF3F17ADB5F3005AB174 /* Uint8Array.h in Headers */,
    94919488                                A7A8AF4017ADB5F3005AB174 /* Uint8ClampedArray.h in Headers */,
    9492                                 0F5F08CF146C7633000472A9 /* UnconditionalFinalizer.h in Headers */,
    94939489                                A7B601821639FD2A00372BA3 /* UnlinkedCodeBlock.h in Headers */,
    94949490                                14AD91241DCA9FA40014F9FE /* UnlinkedEvalCodeBlock.h in Headers */,
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.h

    r231719 r232080  
    6464#include "ProgramExecutable.h"
    6565#include "PutPropertySlot.h"
    66 #include "UnconditionalFinalizer.h"
    6766#include "ValueProfile.h"
    6867#include "VirtualRegister.h"
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r232074 r232080  
    592592    finalizeMarkedUnconditionalFinalizers<JSWeakSet>(vm()->weakSetSpace);
    593593    finalizeMarkedUnconditionalFinalizers<JSWeakMap>(vm()->weakMapSpace);
    594    
    595     while (m_unconditionalFinalizers.hasNext()) {
    596         UnconditionalFinalizer* finalizer = m_unconditionalFinalizers.removeNext();
    597         finalizer->finalizeUnconditionally();
    598     }
     594
     595#if ENABLE(WEBASSEMBLY)
     596    finalizeMarkedUnconditionalFinalizers<JSWebAssemblyCodeBlock>(vm()->webAssemblyCodeBlockSpace);
     597#endif
    599598}
    600599
  • trunk/Source/JavaScriptCore/heap/Heap.h

    r232074 r232080  
    4040#include "StructureIDTable.h"
    4141#include "Synchronousness.h"
    42 #include "UnconditionalFinalizer.h"
    4342#include "WeakHandleOwner.h"
    4443#include "WeakReferenceHarvester.h"
     
    671670
    672671    ListableHandler<WeakReferenceHarvester>::List m_weakReferenceHarvesters;
    673     ListableHandler<UnconditionalFinalizer>::List m_unconditionalFinalizers;
    674672
    675673    ParallelHelperClient m_helperClient;
  • trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp

    r227718 r232080  
    759759}
    760760
    761 void SlotVisitor::addUnconditionalFinalizer(UnconditionalFinalizer* unconditionalFinalizer)
    762 {
    763     m_heap.m_unconditionalFinalizers.addThreadSafe(unconditionalFinalizer);
    764 }
    765 
    766761void SlotVisitor::didRace(const VisitRaceKey& race)
    767762{
  • trunk/Source/JavaScriptCore/heap/SlotVisitor.h

    r227617 r232080  
    4545class MarkingConstraint;
    4646class MarkingConstraintSolver;
    47 class UnconditionalFinalizer;
    4847template<typename T> class Weak;
    4948class WeakReferenceHarvester;
     
    143142   
    144143    void addWeakReferenceHarvester(WeakReferenceHarvester*);
    145     void addUnconditionalFinalizer(UnconditionalFinalizer*);
    146144
    147145    void dump(PrintStream&) const;
  • trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlock.cpp

    r229209 r232080  
    5151    , m_codeBlock(WTFMove(codeBlock))
    5252{
    53     m_unconditionalFinalizer = PoisonedUniquePtr<JSWebAssemblyCodeBlockPoison, UnconditionalFinalizer>::create(*this);
    54 
    5553    // FIXME: We should not need to do this synchronously.
    5654    // https://bugs.webkit.org/show_bug.cgi?id=170567
     
    9391
    9492    Base::visitChildren(thisObject, visitor);
    95 
    96     visitor.addUnconditionalFinalizer(thisObject->m_unconditionalFinalizer.get());
    9793}
    9894
    99 void JSWebAssemblyCodeBlock::UnconditionalFinalizer::finalizeUnconditionally()
     95void JSWebAssemblyCodeBlock::finalizeUnconditionally(VM& vm)
    10096{
    101     for (auto iter = codeBlock.m_callLinkInfos.begin(); !!iter; ++iter)
    102         (*iter)->visitWeak(*codeBlock.vm());
     97    for (auto iter = m_callLinkInfos.begin(); !!iter; ++iter)
     98        (*iter)->visitWeak(vm);
    10399}
    104100
  • trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyCodeBlock.h

    r230748 r232080  
    3333#include "PromiseDeferredTimer.h"
    3434#include "Structure.h"
    35 #include "UnconditionalFinalizer.h"
    3635#include "WasmCallee.h"
    3736#include "WasmFormat.h"
     
    8382    }
    8483
     84    void finalizeUnconditionally(VM&);
     85
    8586private:
    8687    JSWebAssemblyCodeBlock(VM&, Ref<Wasm::CodeBlock>&&, const Wasm::ModuleInformation&);
     
    9091    static void visitChildren(JSCell*, SlotVisitor&);
    9192
    92     struct UnconditionalFinalizer : public JSC::UnconditionalFinalizer {
    93         UnconditionalFinalizer(JSWebAssemblyCodeBlock& codeBlock)
    94             : codeBlock(codeBlock)
    95         { }
    96         void finalizeUnconditionally() override;
    97         JSWebAssemblyCodeBlock& codeBlock;
    98     };
    99 
    10093    PoisonedRef<JSWebAssemblyCodeBlockPoison, Wasm::CodeBlock> m_codeBlock;
    10194    Vector<MacroAssemblerCodeRef<WasmEntryPtrTag>> m_wasmToJSExitStubs;
    102     PoisonedUniquePtr<JSWebAssemblyCodeBlockPoison, UnconditionalFinalizer> m_unconditionalFinalizer;
    10395    Bag<CallLinkInfo> m_callLinkInfos;
    10496    String m_errorMessage;
  • trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.h

    r229413 r232080  
    3131#include "JSDestructibleObject.h"
    3232#include "JSObject.h"
    33 #include "UnconditionalFinalizer.h"
    3433#include "WasmMemoryMode.h"
    3534#include <wtf/Bag.h>
Note: See TracChangeset for help on using the changeset viewer.