First step toward incremental Weak<T> finalization
Created attachment 134688 [details] Patch
Comment on attachment 134688 [details] Patch Attachment 134688 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12240002
Comment on attachment 134688 [details] Patch Attachment 134688 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/12248004
Comment on attachment 134688 [details] Patch Attachment 134688 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/12248001
Comment on attachment 134688 [details] Patch Attachment 134688 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/12249003
Comment on attachment 134688 [details] Patch Attachment 134688 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/12255002
Comment on attachment 134688 [details] Patch Attachment 134688 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/12267005
Created attachment 134716 [details] Patch
Comment on attachment 134716 [details] Patch Attachment 134716 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12266035
Comment on attachment 134716 [details] Patch Attachment 134716 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/12291006
Comment on attachment 134716 [details] Patch Attachment 134716 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/12266040
Comment on attachment 134716 [details] Patch Attachment 134716 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/12265025
Comment on attachment 134716 [details] Patch Attachment 134716 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/12266034
Comment on attachment 134716 [details] Patch Attachment 134716 [details] did not pass efl-ews (efl): Output: http://queues.webkit.org/results/12265049
Created attachment 134838 [details] Patch
Comment on attachment 134838 [details] Patch Attachment 134838 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/12266406
Comment on attachment 134838 [details] Patch Attachment 134838 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/12265352
Comment on attachment 134838 [details] Patch Attachment 134838 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/12265351
Comment on attachment 134838 [details] Patch Attachment 134838 [details] did not pass win-ews (win): Output: http://queues.webkit.org/results/12267337
Created attachment 134848 [details] Patch
Comment on attachment 134848 [details] Patch Attachment 134848 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12288352
Comment on attachment 134848 [details] Patch Attachment 134848 [details] did not pass qt-ews (qt): Output: http://queues.webkit.org/results/12253385
Comment on attachment 134848 [details] Patch Attachment 134848 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/12253378
Comment on attachment 134848 [details] Patch Attachment 134848 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/12288357
Created attachment 134896 [details] Patch
Comment on attachment 134896 [details] Patch Attachment 134896 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12288470
Comment on attachment 134896 [details] Patch Attachment 134896 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/12253490
Comment on attachment 134896 [details] Patch Attachment 134896 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/12291472
Created attachment 134982 [details] Patch
Comment on attachment 134982 [details] Patch Attachment 134982 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/12291937
Comment on attachment 134982 [details] Patch Attachment 134982 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12308021
Comment on attachment 134982 [details] Patch Attachment 134982 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12288940
Comment on attachment 134982 [details] Patch Attachment 134982 [details] did not pass mac-ews (mac): Output: http://queues.webkit.org/results/12253990
Created attachment 135114 [details] Patch
Comment on attachment 135114 [details] Patch Attachment 135114 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12308642
Comment on attachment 135114 [details] Patch Attachment 135114 [details] did not pass qt-wk2-ews (qt): Output: http://queues.webkit.org/results/12312645
Created attachment 135199 [details] Patch
Comment on attachment 135199 [details] Patch Attachment 135199 [details] did not pass gtk-ews (gtk): Output: http://queues.webkit.org/results/12306917
Created attachment 135219 [details] Patch
Attachment 135219 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/API/JSCallbackObject..." exit_code: 1 Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp:32: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 1 in 39 files If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 135219 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=135219&action=review R=me except for the one comment about possibly not having to do a round of tracing after handling dead weak handles. > Source/JavaScriptCore/heap/Heap.cpp:716 > + { > + ParallelModeEnabler enabler(visitor); > + visitor.donateAndDrain(); > +#if ENABLE(PARALLEL_GC) > + visitor.drainFromShared(SlotVisitor::MasterDrain); > +#endif > + } Why do we have to retrace? I don't see marking in visitDeadWeakImpls. > Source/JavaScriptCore/heap/Heap.h:138 > + WeakHeap* weakHeap() { return &m_weakHeap; } Random nit: whenever I look at this code I get confused by the terms "WeakHeap" and "HandleHeap". Those aren't really heaps. I mean, they do some of their own memory management, but so do many things in our code, and yet we don't call them "heaps" for that reason. I feel like in the future - not in this patch - it might be good to rename "HandleHeap" and "WeakHeap" to "HandleSet" and "WeakSet". Thoughts? > Source/JavaScriptCore/heap/WeakHeap.h:73 > + if (!allocator) UNLIKELY() ?
Comment on attachment 135219 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=135219&action=review > Source/JavaScriptCore/Configurations/Base.xcconfig:-27 > -COMPILER_SPECIFIC_WARNING_CFLAGS_LLVM_COMPILER = -Wglobal-constructors -Wexit-time-destructors; Why have you removed this?
> > -COMPILER_SPECIFIC_WARNING_CFLAGS_LLVM_COMPILER = -Wglobal-constructors -Wexit-time-destructors; > > Why have you removed this? Accident. I was testing with GCC to try to figure out the build failures. Will fix before landing.
> Why do we have to retrace? I don't see marking in visitDeadWeakImpls. True, we don't yet. I'll remove this, and add it back once it makes sense. > > Source/JavaScriptCore/heap/Heap.h:138 > > + WeakHeap* weakHeap() { return &m_weakHeap; } > > Random nit: whenever I look at this code I get confused by the terms "WeakHeap" and "HandleHeap". Those aren't really heaps. I mean, they do some of their own memory management, but so do many things in our code, and yet we don't call them "heaps" for that reason. > > I feel like in the future - not in this patch - it might be good to rename "HandleHeap" and "WeakHeap" to "HandleSet" and "WeakSet". Thoughts? Sounds OK. If we go with "WeakSet", I might want to change "allocate" and "deallocate" to "add" and "remove". I'm a little worried that "*Set" implies uniqueness, which is not true in this case. Maybe "WeakList"? > > Source/JavaScriptCore/heap/WeakHeap.h:73 > > + if (!allocator) > > UNLIKELY() ? Fixed.
Committed r113141: <http://trac.webkit.org/changeset/113141>
Follow-up fix for WebKit2: <http://trac.webkit.org/changeset/113146>.
Follow-up fix for Qt / 32-bit: <http://trac.webkit.org/changeset/113209>.