NeverDestroyed related leaks seen on bots
[WebKit.git] / Source / WTF / ChangeLog
1 2017-08-02  Joseph Pecoraro  <pecoraro@apple.com>
2
3         NeverDestroyed related leaks seen on bots
4         https://bugs.webkit.org/show_bug.cgi?id=175113
5
6         Reviewed by Yusuke Suzuki.
7
8         * wtf/NeverDestroyed.h:
9         (WTF::NeverDestroyed::NeverDestroyed):
10         Previously the result of makeNeverDestroyed was not always moving into
11         the `static NeverDestroyed` static local variable. In some cases it would
12         re-invoke the constructor, creating a new NeverDestroyed object. In the
13         case of a Vector it was causing leaks.
14
15         Adding a move constructor convinces the compiler to move the result
16         of makeNeverDestroyed into the NeverDestroyed static. It doesn't actually
17         invoke the move constructor here, which I believe means it is deciding
18         to perform optional copy elision optimization.
19         'http://en.cppreference.com/w/cpp/language/copy_elision
20
21 2017-08-02  Filip Pizlo  <fpizlo@apple.com>
22
23         All C++ accesses to JSObject::m_butterfly should do caging
24         https://bugs.webkit.org/show_bug.cgi?id=175039
25
26         Reviewed by Keith Miller.
27         
28         Adds a smart pointer class that does various kinds of caging for you.
29
30         * WTF.xcodeproj/project.pbxproj:
31         * wtf/CMakeLists.txt:
32         * wtf/CagedPtr.h: Added.
33         (WTF::CagedPtr::CagedPtr):
34         (WTF::CagedPtr::get const):
35         (WTF::CagedPtr::getMayBeNull const):
36         (WTF::CagedPtr::operator== const):
37         (WTF::CagedPtr::operator!= const):
38         (WTF::CagedPtr::operator bool const):
39         (WTF::CagedPtr::operator* const):
40         (WTF::CagedPtr::operator-> const):
41
42 2017-08-02  Filip Pizlo  <fpizlo@apple.com>
43
44         We should be OK with the gigacage being disabled on gmalloc
45         https://bugs.webkit.org/show_bug.cgi?id=175082
46
47         Reviewed by Michael Saboff.
48
49         * wtf/Gigacage.h:
50         (Gigacage::shouldBeEnabled):
51
52 2017-08-01  Filip Pizlo  <fpizlo@apple.com>
53
54         Bmalloc and GC should put auxiliaries (butterflies, typed array backing stores) in a gigacage (separate multi-GB VM region)
55         https://bugs.webkit.org/show_bug.cgi?id=174727
56
57         Reviewed by Mark Lam.
58         
59         For the Gigacage project to have minimal impact, we need to have some abstraction that allows code to
60         avoid having to guard itself with #if's. This adds a Gigacage abstraction that overlays the Gigacage
61         namespace from bmalloc, which always lets you call things like Gigacage::caged and Gigacage::tryMalloc.
62         
63         Because of how many places need to possibly allocate in a gigacage, or possibly perform caged accesses,
64         it's better to hide the question of whether or not it's enabled inside this API.
65
66         * WTF.xcodeproj/project.pbxproj:
67         * wtf/CMakeLists.txt:
68         * wtf/FastMalloc.cpp:
69         * wtf/Gigacage.cpp: Added.
70         (Gigacage::tryMalloc):
71         (Gigacage::tryAllocateVirtualPages):
72         (Gigacage::freeVirtualPages):
73         (Gigacage::tryAlignedMalloc):
74         (Gigacage::alignedFree):
75         (Gigacage::free):
76         * wtf/Gigacage.h: Added.
77         (Gigacage::ensureGigacage):
78         (Gigacage::disableGigacage):
79         (Gigacage::addDisableCallback):
80         (Gigacage::removeDisableCallback):
81         (Gigacage::caged):
82         (Gigacage::isCaged):
83         (Gigacage::tryAlignedMalloc):
84         (Gigacage::alignedFree):
85         (Gigacage::free):
86
87 2017-07-31  Matt Lewis  <jlewis3@apple.com>
88
89         Unreviewed, rolling out r220060.
90
91         This broke our internal builds. Contact reviewer of patch for
92         more information.
93
94         Reverted changeset:
95
96         "Merge WTFThreadData to Thread::current"
97         https://bugs.webkit.org/show_bug.cgi?id=174716
98         http://trac.webkit.org/changeset/220060
99
100 2017-07-31  Yusuke Suzuki  <utatane.tea@gmail.com>
101
102         Merge WTFThreadData to Thread::current
103         https://bugs.webkit.org/show_bug.cgi?id=174716
104
105         Reviewed by Sam Weinig.
106
107         We placed thread specific data in WTFThreadData previously. But now, we have a new good place
108         to put thread specific data: WTF::Thread. Before this patch, WTFThreadData and WTF::Thread
109         sometimes have the completely same fields (m_stack etc.) due to initialization order limitations.
110         This patch merges WTFThreadData to WTF::Thread. We apply WTFThreadData's initialization style
111         to WTF::Thread. So, WTF::Thread's holder now uses fast TLS for darwin environment. Thus,
112         Thread::current() access is now accelerated. And WTF::Thread::current() can be accessed even
113         before calling WTF::initializeThreading.
114
115         * WTF.xcodeproj/project.pbxproj:
116         * wtf/CMakeLists.txt:
117         * wtf/LockAlgorithm.h:
118         * wtf/LockAlgorithmInlines.h:
119         * wtf/MainThread.h:
120         * wtf/ParkingLot.cpp:
121         * wtf/StackStats.cpp:
122         (WTF::StackStats::PerThreadStats::PerThreadStats):
123         (WTF::StackStats::CheckPoint::CheckPoint):
124         (WTF::StackStats::CheckPoint::~CheckPoint):
125         (WTF::StackStats::probe):
126         (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
127         * wtf/ThreadHolder.cpp:
128         (WTF::ThreadHolder::initializeCurrent):
129         * wtf/ThreadHolder.h:
130         (WTF::ThreadHolder::ThreadHolder):
131         (WTF::ThreadHolder::currentMayBeNull):
132         (WTF::ThreadHolder::current):
133         * wtf/ThreadHolderPthreads.cpp:
134         (WTF::ThreadHolder::initialize):
135         (WTF::ThreadHolder::destruct):
136         (WTF::ThreadHolder::current): Deleted.
137         * wtf/ThreadHolderWin.cpp:
138         (WTF::ThreadHolder::currentDying):
139         (WTF::ThreadHolder::initialize):
140         (WTF::ThreadHolder::current): Deleted.
141         * wtf/Threading.cpp:
142         (WTF::Thread::initializeInThread):
143         (WTF::Thread::entryPoint):
144         (WTF::Thread::didExit):
145         (WTF::initializeThreading):
146         (WTF::Thread::currentMayBeNull): Deleted.
147         * wtf/Threading.h:
148         (WTF::Thread::atomicStringTable):
149         (WTF::Thread::setCurrentAtomicStringTable):
150         (WTF::Thread::stackStats):
151         (WTF::Thread::savedStackPointerAtVMEntry):
152         (WTF::Thread::setSavedStackPointerAtVMEntry):
153         (WTF::Thread::savedLastStackTop):
154         (WTF::Thread::setSavedLastStackTop):
155         (WTF::Thread::current):
156         * wtf/ThreadingPrimitives.h:
157         * wtf/ThreadingPthreads.cpp:
158         (WTF::Thread::createCurrentThread):
159         (WTF::Thread::current): Deleted.
160         * wtf/ThreadingWin.cpp:
161         (WTF::Thread::createCurrentThread):
162         (WTF::Thread::current): Deleted.
163         * wtf/WTFThreadData.cpp: Removed.
164         * wtf/WTFThreadData.h: Removed.
165         * wtf/text/AtomicString.cpp:
166         * wtf/text/AtomicStringImpl.cpp:
167         (WTF::stringTable):
168         * wtf/text/AtomicStringTable.cpp:
169         (WTF::AtomicStringTable::create):
170         * wtf/text/AtomicStringTable.h:
171
172 2017-07-31  Xabier Rodriguez Calvar  <calvaris@igalia.com>
173
174         Created a bool pretty printer at WTF for debugging purposes
175         https://bugs.webkit.org/show_bug.cgi?id=174893
176
177         Reviewed by Darin Adler.
178
179         * wtf/PrintStream.cpp:
180         (WTF::printInternal): The overload taking bool uses boolForPrinting
181         * wtf/PrintStream.h:
182         (WTF::boolForPrinting): Converts a bool in "true" or "false".
183
184 2017-07-30  Yusuke Suzuki  <utatane.tea@gmail.com>
185
186         [WTF] Introduce Private Symbols
187         https://bugs.webkit.org/show_bug.cgi?id=174935
188
189         Reviewed by Darin Adler.
190
191         Upcoming proposal of class fields[1] requires private fields.
192         The simple way to implement it is adding a property with a private symbol.
193         Currently, we have private symbols for internal properties. They are usual
194         Symbols managed by the hash table. So basically private symbols are statically
195         created in BuiltinNames. However this new proposal encourages users to create
196         such private symbols more and more.
197
198         So, this patch introduces notion of "Private" into WTF SymbolImpl. This patch
199         adds PrivateSymbolImpl. This is SymbolImpl with "Private" flag. We do not need
200         to look up the symbol from the hash table to check whether the given symbol
201         is a private one.
202
203         [1]: https://github.com/tc39/proposal-class-fields
204
205         * wtf/text/StringImpl.h:
206         * wtf/text/SymbolImpl.cpp:
207         (WTF::PrivateSymbolImpl::create):
208         (WTF::PrivateSymbolImpl::createNullSymbol):
209         * wtf/text/SymbolImpl.h:
210         (WTF::SymbolImpl::isPrivate):
211         (WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl):
212         (WTF::SymbolImpl::SymbolImpl):
213         (WTF::PrivateSymbolImpl::PrivateSymbolImpl):
214
215 2017-07-30  Brady Eidson  <beidson@apple.com>
216
217         Add URLSchemeHandler API tests that verify the lack of URLSchemeTask object leaks.
218         https://bugs.webkit.org/show_bug.cgi?id=174958
219
220         Reviewed by Darin Adler.
221
222         This patch adds a new template class "InstanceCounted<T>".
223         
224         For each specialization, "InstanceCounted" will keep track of the total number of
225         instances in existence.
226         
227         This makes explicate leak checking in API tests possible.
228         
229         Since this adds some runtime and storage overhead the code that actually does anything
230         is only compiled in debug builds.
231         
232         * WTF.xcodeproj/project.pbxproj:
233         * wtf/InstanceCounted.h: Added.
234         (WTF::InstanceCounted::InstanceCounted):
235         (WTF::InstanceCounted::instanceCount):
236         (WTF::InstanceCounted::~InstanceCounted):
237
238 2017-07-27  Yusuke Suzuki  <utatane.tea@gmail.com>
239
240         [WTF] Drop Thread initialization wait in some platforms by introducing StackBounds::newThreadStackBounds(PlatformThreadHandle&)
241         https://bugs.webkit.org/show_bug.cgi?id=174303
242
243         Reviewed by Mark Lam.
244
245         Currently, the caller thread of Thread::create() need to wait for completion of the initialization of the target thread.
246         This is because we need to initialize Thread::m_stack in the target thread. Before this patch, a target thread's
247         StackBounds can only be retrieved by the target thread itself. However, this potentially causes context-switching between
248         the caller and the target threads and hurts efficiency of creating threads.
249
250         Fortunately, in some platforms (including major platforms except for Windows), we can get StackBounds of a target
251         thread from a caller thread. This allows us to avoid waiting for completion of thread initialization.
252
253         In this patch, we introduce HAVE_STACK_BOUNDS_FOR_NEW_THREAD and StackBounds::newThreadStackBounds. When creating
254         a new thread, we will use StackBounds::newThreadStackBounds to get StackBounds if possible. As a result, we
255         do not need to wait for completion of thread initialization to ensure m_stack field of Thread is initialized.
256
257         While some documents claim that it is possible on Windows to get the StackBounds of another thread[1], the method relies on
258         undocumented Windows NT APIs (NtQueryInformationThread, NtReadVirtualMemory etc.). So in this patch, we just
259         use the conservative approach simply waiting for completion of thread initialization.
260
261         [1]: https://stackoverflow.com/questions/3918375/how-to-get-thread-stack-information-on-windows
262
263         * wtf/Platform.h:
264         * wtf/StackBounds.cpp:
265         (WTF::StackBounds::newThreadStackBounds):
266         (WTF::StackBounds::currentThreadStackBoundsInternal):
267         (WTF::StackBounds::initialize): Deleted.
268         * wtf/StackBounds.h:
269         (WTF::StackBounds::currentThreadStackBounds):
270         (WTF::StackBounds::StackBounds):
271         * wtf/Threading.cpp:
272         (WTF::Thread::NewThreadContext::NewThreadContext):
273         (WTF::Thread::entryPoint):
274         (WTF::Thread::create):
275         (WTF::Thread::initialize): Deleted.
276         * wtf/Threading.h:
277         * wtf/ThreadingPrimitives.h:
278         * wtf/ThreadingPthreads.cpp:
279         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
280         (WTF::wtfThreadEntryPoint):
281         (WTF::Thread::establishHandle):
282         (WTF::Thread::initializeCurrentThreadInternal):
283         (WTF::Thread::current):
284         * wtf/ThreadingWin.cpp:
285         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
286         (WTF::Thread::initializeCurrentThreadInternal):
287         (WTF::Thread::current):
288         * wtf/win/MainThreadWin.cpp:
289         (WTF::initializeMainThreadPlatform):
290
291 2017-07-27  JF Bastien  <jfbastien@apple.com>
292
293         Update lock benchmarks
294         https://bugs.webkit.org/show_bug.cgi?id=174907
295
296         Reviewed by Filip Pizlo.
297
298         * benchmarks/ConditionSpeedTest.cpp:
299         (main):
300         * benchmarks/LockFairnessTest.cpp:
301         * benchmarks/LockSpeedTest.cpp:
302         * benchmarks/ToyLocks.h:
303
304 2017-07-26  Brian Burg  <bburg@apple.com>
305
306         Remove WEB_TIMING feature flag
307         https://bugs.webkit.org/show_bug.cgi?id=174795
308
309         Reviewed by Alex Christensen.
310
311         * wtf/FeatureDefines.h:
312
313 2017-07-26  Claudio Saavedra  <csaavedra@igalia.com>
314
315         [WPE] Enable KeyboardEvent key and code attributes
316         https://bugs.webkit.org/show_bug.cgi?id=174822
317
318         Reviewed by Žan Doberšek.
319
320         There is no reason for this to be disabled from what I see.
321
322         * wtf/FeatureDefines.h: Enable KeyboardEvent key and code attributes.
323
324 2017-07-23  Filip Pizlo  <fpizlo@apple.com>
325
326         B3 should do LICM
327         https://bugs.webkit.org/show_bug.cgi?id=174750
328
329         Reviewed by Keith Miller and Saam Barati.
330         
331         Moved DFG::NaturalLoops to WTF. The new templatized NaturalLoops<> uses the same Graph abstraction as
332         Dominators<>. This allows us to add a B3::NaturalLoops for free.
333         
334         Also made small tweaks to RangeSet, which the LICM uses.
335
336         * WTF.xcodeproj/project.pbxproj:
337         * wtf/CMakeLists.txt:
338         * wtf/Dominators.h:
339         * wtf/NaturalLoops.h: Added.
340         (WTF::NaturalLoop::NaturalLoop):
341         (WTF::NaturalLoop::graph):
342         (WTF::NaturalLoop::header):
343         (WTF::NaturalLoop::size):
344         (WTF::NaturalLoop::at):
345         (WTF::NaturalLoop::operator[]):
346         (WTF::NaturalLoop::contains):
347         (WTF::NaturalLoop::index):
348         (WTF::NaturalLoop::isOuterMostLoop):
349         (WTF::NaturalLoop::dump):
350         (WTF::NaturalLoop::addBlock):
351         (WTF::NaturalLoops::NaturalLoops):
352         (WTF::NaturalLoops::graph):
353         (WTF::NaturalLoops::numLoops):
354         (WTF::NaturalLoops::loop):
355         (WTF::NaturalLoops::headerOf):
356         (WTF::NaturalLoops::innerMostLoopOf):
357         (WTF::NaturalLoops::innerMostOuterLoop):
358         (WTF::NaturalLoops::belongsTo):
359         (WTF::NaturalLoops::loopDepth):
360         (WTF::NaturalLoops::loopsOf):
361         (WTF::NaturalLoops::dump):
362         * wtf/RangeSet.h:
363         (WTF::RangeSet::begin):
364         (WTF::RangeSet::end):
365         (WTF::RangeSet::addAll):
366
367 2017-07-23  Michael Catanzaro  <mcatanzaro@igalia.com>
368
369         Implement FALLTHROUGH attribute for C with GCC
370         https://bugs.webkit.org/show_bug.cgi?id=174555
371
372         Reviewed by Darin Adler.
373
374         My previous attempt to silence the JSC -Wimplicit-fallthrough warnings failed because they
375         are coming from a C file, and our FALLTHROUGH macro is only implemented for C++. So
376         implement it for C as well, using C attribute syntax.
377  
378         Note this is only possible to do for GCC, because Clang only supports this attribute using
379         the [[C++ attribute syntax]].
380
381         * wtf/Compiler.h:
382
383 2017-07-14  Filip Pizlo  <fpizlo@apple.com>
384
385         It should be easy to decide how WebKit yields
386         https://bugs.webkit.org/show_bug.cgi?id=174298
387
388         Reviewed by Saam Barati.
389         
390         Created a Thread::yield() abstraction for sched_yield(), and made WTF use it everywhere that it
391         had previously used std::this_thread::yield().
392         
393         To make it less annoying to experiment with changes to the lock algorithm in the future, this also
394         moves the meat of the algorithm into LockAlgorithmInlines.h. Only two files include that header.
395         Since LockAlgorithm.h no longer includes ParkingLot.h, a bunch of files in WK now need to include
396         timing headers (Seconds, MonotonicTime, etc) manually.
397
398         * WTF.xcodeproj/project.pbxproj:
399         * benchmarks/ToyLocks.h:
400         * wtf/CMakeLists.txt:
401         * wtf/Lock.cpp:
402         * wtf/LockAlgorithm.h:
403         (WTF::LockAlgorithm::lockSlow): Deleted.
404         (WTF::LockAlgorithm::unlockSlow): Deleted.
405         * wtf/LockAlgorithmInlines.h: Added.
406         (WTF::hasParkedBit>::lockSlow):
407         (WTF::hasParkedBit>::unlockSlow):
408         * wtf/MainThread.cpp:
409         * wtf/RunLoopTimer.h:
410         * wtf/Threading.cpp:
411         * wtf/Threading.h:
412         * wtf/ThreadingPthreads.cpp:
413         (WTF::Thread::yield):
414         * wtf/ThreadingWin.cpp:
415         (WTF::Thread::yield):
416         * wtf/WordLock.cpp:
417         (WTF::WordLockBase::lockSlow):
418         (WTF::WordLockBase::unlockSlow):
419
420 2017-07-22  Yusuke Suzuki  <utatane.tea@gmail.com>
421
422         [WTF] Extend ThreadGroup::add results from bool to ThreadGroupAddResult
423         https://bugs.webkit.org/show_bug.cgi?id=174705
424
425         Reviewed by Mark Lam.
426
427         After starting using ThreadGroup to bookkeep active threads for Signals,
428         we would like to know tristate of ThreadGroup::add result, NewlyAdded, AlreadyAdded, NotAdded.
429         This patch extends the result of ThreadGroup::add from bool to ThreadGroupAddResult tristate.
430         Note that NotAdded is returned if the target thread is dying.
431
432         * wtf/ThreadGroup.cpp:
433         (WTF::ThreadGroup::add):
434         (WTF::ThreadGroup::addCurrentThread):
435         * wtf/ThreadGroup.h:
436         * wtf/Threading.cpp:
437         (WTF::Thread::addToThreadGroup):
438         * wtf/Threading.h:
439         * wtf/threads/Signals.cpp:
440         (WTF::registerThreadForMachExceptionHandling):
441
442 2017-07-21  Commit Queue  <commit-queue@webkit.org>
443
444         Unreviewed, rolling out r219732.
445         https://bugs.webkit.org/show_bug.cgi?id=174748
446
447         static is not threadsafe in WebKit tree (Requested by
448         yusukesuzuki on #webkit).
449
450         Reverted changeset:
451
452         "[WTF] Drop initializeDate"
453         https://bugs.webkit.org/show_bug.cgi?id=174714
454         http://trac.webkit.org/changeset/219732
455
456 2017-07-21  Yusuke Suzuki  <utatane.tea@gmail.com>
457
458         [WTF] Drop initializeDate
459         https://bugs.webkit.org/show_bug.cgi?id=174714
460
461         Reviewed by Darin Adler.
462
463         minYear static variable will be initialized in an exclusive manner, which is ensured by C++ "static" semantics.
464         Thus, we do not need to call initializeDate() explicitly.
465
466         * wtf/DateMath.cpp:
467         (WTF::equivalentYearForDST):
468         (WTF::initializeDates): Deleted.
469         * wtf/Threading.cpp:
470         (WTF::initializeThreading):
471
472 2017-07-21  Yusuke Suzuki  <utatane.tea@gmail.com>
473
474         [JSC] Introduce static symbols
475         https://bugs.webkit.org/show_bug.cgi?id=158863
476
477         Reviewed by Darin Adler.
478
479         We add a new class StaticSymbolImpl. StaticSymbolImpl can offer
480         the way to create static SymbolImpl. It can be shared between
481         multiple VMs and multiple threads.
482
483         * wtf/text/SymbolImpl.h:
484         (WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl):
485         (WTF::SymbolImpl::StaticSymbolImpl::operator SymbolImpl&):
486         For StaticSymbolImpl's hashForSymbol, we use usual string hash value.
487         Since all the SymbolImpls are unique, basically, any value is OK here.
488         Non-confilicting to the other SymbolImpls is ideal.
489
490 2017-07-21  Yusuke Suzuki  <utatane.tea@gmail.com>
491
492         [WTF] Newly added AtomicStringImpl should use BufferInternal static string if StringImpl is static
493         https://bugs.webkit.org/show_bug.cgi?id=174501
494
495         Reviewed by Darin Adler.
496
497         When creating AtomicStringImpl from static StringImpl, we can just use createWithoutCopying
498         to create a BufferInternal AtomicStringImpl which m_data{8,16} is static string's one.
499
500         * wtf/text/AtomicStringImpl.cpp:
501         (WTF::CStringTranslator::hash):
502         (WTF::CStringTranslator::equal):
503         (WTF::CStringTranslator::translate):
504         (WTF::AtomicStringImpl::add):
505         (WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer):
506         (WTF::UCharBufferTranslator::hash):
507         (WTF::UCharBufferTranslator::equal):
508         (WTF::UCharBufferTranslator::translate):
509         (WTF::LCharBufferTranslator::hash):
510         (WTF::LCharBufferTranslator::equal):
511         (WTF::LCharBufferTranslator::translate):
512         (WTF::BufferFromStaticDataTranslator::hash):
513         (WTF::BufferFromStaticDataTranslator::equal):
514         (WTF::BufferFromStaticDataTranslator::translate):
515         (WTF::AtomicStringImpl::addLiteral):
516         (WTF::addSymbol):
517         (WTF::addStatic):
518         (WTF::AtomicStringImpl::addSlowCase):
519         (WTF::AtomicStringImpl::lookUp):
520         (WTF::CharBufferFromLiteralDataTranslator::hash): Deleted.
521         (WTF::CharBufferFromLiteralDataTranslator::equal): Deleted.
522         (WTF::CharBufferFromLiteralDataTranslator::translate): Deleted.
523         (WTF::addSubstring): Deleted.
524         * wtf/text/StringImpl.h:
525
526 2017-07-21  Konstantin Tokarev  <annulen@yandex.ru>
527
528        [cmake] Unreviewed, add definitions necessary to use ICU shipped with macOS
529
530        macOS system ICU libraries are built with U_DISABLE_RENAMING=1 and
531        U_SHOW_CPLUSPLUS_API=0. After r219155 we have to pass this definitons
532        explicitly, because ICU headers in the tree are not modified anymore.
533
534         * wtf/PlatformMac.cmake: Rely on ICU_LIBRARIES instead of passing ICU
535         library name explicitly in WTF_LIBRARIES.
536
537 2017-07-20  Chris Dumez  <cdumez@apple.com>
538
539         Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable
540         https://bugs.webkit.org/show_bug.cgi?id=174660
541
542         Reviewed by Geoffrey Garen.
543
544         Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable.
545         This essentially replaces a branch to figure out if the new size is less or greater than the
546         current size by an assertion.
547
548         * wtf/IndexSparseSet.h:
549         (WTF::OverflowHandler>::IndexSparseSet):
550         (WTF::OverflowHandler>::clear):
551         * wtf/Insertion.h:
552         (WTF::executeInsertions):
553         * wtf/RangeSet.h:
554         (WTF::RangeSet::compact):
555         * wtf/Vector.h:
556         (WTF::removeRepeatedElements):
557         * wtf/persistence/Coders.h:
558
559 2017-07-20  Yusuke Suzuki  <utatane.tea@gmail.com>
560
561         [WTF] Use ThreadGroup to bookkeep active threads for Mach exception
562         https://bugs.webkit.org/show_bug.cgi?id=174678
563
564         Reviewed by Mark Lam.
565
566         We can use ThreadGroup to bookkeep active threads for Mach exceptions.
567         When the thread dies, it is automatically removed from the thread groups.
568         So we do not need to call unregisterThreadForMachExceptionHandling.
569
570         * wtf/ThreadGroup.cpp:
571         (WTF::ThreadGroup::~ThreadGroup):
572         (WTF::ThreadGroup::add):
573         * wtf/ThreadGroup.h:
574         * wtf/ThreadHolder.cpp:
575         (WTF::ThreadHolder::~ThreadHolder):
576         * wtf/Threading.cpp:
577         (WTF::Thread::addToThreadGroup):
578         (WTF::Thread::removeFromThreadGroup):
579         * wtf/Threading.h:
580         * wtf/threads/Signals.cpp:
581         (WTF::setExceptionPorts):
582         (WTF::activeThreads):
583         (WTF::registerThreadForMachExceptionHandling):
584         (WTF::installSignalHandler):
585         (WTF::unregisterThreadForMachExceptionHandling): Deleted.
586         * wtf/threads/Signals.h:
587
588 2017-07-19  Yusuke Suzuki  <utatane.tea@gmail.com>
589
590         [WTF] Remove unnecessary indirection of WTF::Thread entry point
591         https://bugs.webkit.org/show_bug.cgi?id=174291
592
593         Reviewed by Mark Lam.
594
595         Now wtfThreadEntryPoint is almost the same. Only the difference is function signature due to platform APIs.
596         We remove ThreadFunctionInvocation indirection in ThreadingPthread.cpp and ThreadingWin.cpp.
597
598         Also, ThreadFunctionInvocation keeps a RefPtr to the Thread object. This was previously needed to keep the
599         Thread object alive until the thread itself could install the ThreadHolder into its thread local storage.
600         The ThreadHolder has a Ref that keeps the Thread object alive for the lifetime of the thread. Since
601         Thread::create() now waits for the thread to be initialized before returning and Thread::create() hold a Ref
602         to the Thread object, we are guaranteed that the Thread object will be alive long enough for it to be installed
603         in the thread's ThreadHolder, and we no longer need ThreadFunctionInvocation.
604
605         And we also simplify ThreadHolder::initialize a bit. Now Thread::create waits for the completion of Thread
606         initialization. So, after establishing thread handle, we can call ThreadHolder::initialize before completing
607         Thread initialization.
608
609         Also we drop errno.h ifdefs in ThreadingWin.cpp. This is introduced to support WinCE. But now WinCE port is removed.
610
611         * WTF.xcodeproj/project.pbxproj:
612         * wtf/ThreadFunctionInvocation.h: Removed.
613         * wtf/ThreadHolder.h:
614         * wtf/ThreadHolderWin.cpp:
615         (WTF::ThreadHolder::initialize):
616         * wtf/Threading.cpp:
617         (WTF::Thread::entryPoint):
618         (WTF::Thread::create):
619         (WTF::threadEntryPoint): Deleted.
620         * wtf/Threading.h:
621         * wtf/ThreadingPthreads.cpp:
622         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
623         (WTF::wtfThreadEntryPoint):
624         (WTF::Thread::establishHandle):
625         (WTF::Thread::initializeCurrentThreadInternal):
626         (WTF::Thread::current):
627         (WTF::Thread::establishPlatformSpecificHandle):
628         (WTF::Thread::createInternal): Deleted.
629         (WTF::Thread::establish): Deleted.
630         * wtf/ThreadingWin.cpp:
631         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
632         (WTF::Thread::initializeCurrentThreadInternal):
633         (WTF::wtfThreadEntryPoint):
634         (WTF::Thread::establishHandle):
635         (WTF::Thread::current):
636         (WTF::Thread::establishPlatformSpecificHandle):
637         (WTF::Thread::createInternal): Deleted.
638         (WTF::Thread::establish): Deleted.
639         * wtf/win/MainThreadWin.cpp:
640         (WTF::initializeMainThreadPlatform):
641
642 2017-07-19  Yusuke Suzuki  <utatane.tea@gmail.com>
643
644         [WTF] Implement WTF::ThreadGroup
645         https://bugs.webkit.org/show_bug.cgi?id=174081
646
647         Reviewed by Mark Lam.
648
649         This patch implements WTF::ThreadGroup. It implements core of JSC::MachineThreads with more reliable way.
650         JSC::MachineThreads was complicated because of managing dead threads. Each JSC::MachineThreads has its
651         own TLS with a registered destructor. And everytime a thread dies, the registered TLS destructor is called.
652         And this destructor will remove the current dying thread from JSC::MachineThreads.
653
654         However the above implementation is tricky. And each JSC::MachineThreads requires own TLS space, which is
655         not considered in WTF's Windows ThreadSpecific implementation. Current design works well since we only
656         have small number of MachineThreads right now.
657
658         Instead, we use more reliable way. After introducing WTF::Thread, WTF::Thread has WTF::Thread::didExit,
659         which is called when associated TLS (with WTF::Thread) is destroyed. We leverage this mechanism to remove
660         WTF::Thread from MachineThreads.
661
662         This patch introduces WTF::ThreadGroup. It is tightly integrated with WTF::Thread: WTF::Thread knows
663         ThreadGroups which includes this thread. And WTF::ThreadGroup of course knows WTF::Threads added to it.
664         WTF::Thread::didExit carefully remove itself from WTF::ThreadGroups.
665
666         The most important part of this patch is locking. WTF::Thread can die. And WTF::ThreadGroup can die.
667         If we take a design using two fine grain locks in WTF::Thread and WTF::ThreadGroup, we easily encounter
668         dead lock. Consider the following case.
669
670         1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold a lock of THG, and hold a lock of TH (locking order is THG -> TH).
671         2. When TH dies, TH need to hold a lock of TH to iterate THGs. And we hold a lock of THG to unregister TH from it (locking order is TH -> THG).
672         3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (locking order is THG -> TH).
673         4. When destroying THG, we need to hold a lock of TH to unregister THG from TH. We can hold a lock of THG before that (locking order is THG -> TH).
674
675         Then, it easily causes dead lock. We cannot swap the locking order of (2) since iterating THG requires a lock of TH.
676         To solve this problem, we use std::shared_ptr and std::weak_ptr.
677
678         1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold THG, and hold a lock of TH. (THG -> TH)
679         2. When TH dies, TH first hold lock of TH. And we use std::weak_ptr<>::lock() to retain non-destructed ThreadGroups.
680         If some of ThreadGroups are dying, we just ignore them. It is ok because such a ThreadGroup will be destructed. So we do not need to unregister this thread from
681         such a ThreadGroup. Then, we have Vector<std::shared_ptr<ThreadGroup>>. So we unlock a lock of TH. To unregister a thread from thread group, we first hold a
682         lock of THG and then hold a lock of TH. Both lifetime is ensured: THG is retained by std::shared_ptr. And TH is itself. (TH), (THG -> TH).
683         3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (THG -> TH).
684         4. When destroying THG, we hold a lock of THG. And hold a lock of TH. During holding THG's lock, registered thread never dies because (2) holds THG lock. (THG -> TH).
685
686         We also fix suspend and resume locking mechanism to avoid dead lock. We should hold the global lock when suspending and resuming.
687         If we use per-thread lock, the suspended thread can hold the lock of the other threads. It causes dead lock.
688
689         * WTF.xcodeproj/project.pbxproj:
690         * wtf/AutomaticThread.cpp:
691         * wtf/CMakeLists.txt:
692         * wtf/CrossThreadCopier.h:
693         * wtf/ParkingLot.h:
694         * wtf/ThreadGroup.cpp: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
695         (WTF::ThreadGroup::~ThreadGroup):
696         (WTF::ThreadGroup::add):
697         (WTF::ThreadGroup::addCurrentThread):
698         * wtf/ThreadGroup.h: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
699         (WTF::ThreadGroup::create):
700         (WTF::ThreadGroup::threads):
701         (WTF::ThreadGroup::getLock):
702         (WTF::ThreadGroup::weakFromThis):
703         * wtf/Threading.cpp:
704         (WTF::shouldRemoveThreadFromThreadGroup):
705         (WTF::Thread::didExit):
706         (WTF::Thread::addToThreadGroup):
707         (WTF::Thread::removeFromThreadGroup):
708         * wtf/Threading.h:
709         * wtf/ThreadingPthreads.cpp:
710         (WTF::Thread::resume):
711         (WTF::Thread::getRegisters):
712         * wtf/ThreadingWin.cpp:
713         (WTF::Thread::resume):
714         (WTF::Thread::getRegisters):
715
716 2017-07-18  Andy Estes  <aestes@apple.com>
717
718         [Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
719         https://bugs.webkit.org/show_bug.cgi?id=174631
720
721         Reviewed by Tim Horton.
722
723         * Configurations/Base.xcconfig:
724
725 2017-07-18  Yusuke Suzuki  <utatane.tea@gmail.com>
726
727         WTF::Thread should have the threads stack bounds.
728         https://bugs.webkit.org/show_bug.cgi?id=173975
729
730         Reviewed by Mark Lam.
731
732         We move StackBounds from WTFThreadData to WTF::Thread.
733         One important thing is that we should make valid StackBounds
734         visible to Thread::create() caller. When the caller get
735         WTF::Thread from Thread::create(), this WTF::Thread should
736         have a valid StackBounds. But StackBounds information can be
737         retrived only in the WTF::Thread's thread itself.
738
739         We also clean up WTF::initializeThreading. StringImpl::empty()
740         is now statically initialized by using constexpr constructor.
741         Thus we do not need to call StringImpl::empty() explicitly here.
742         And WTF::initializeThreading() does not have any main thread
743         affinity right now in all the platforms. So we fix the comment
744         in Threading.h. Then, now, WTF::initializeThreading() is called
745         in UI thread when using Web thread in iOS.
746
747         * wtf/StackBounds.h:
748         (WTF::StackBounds::emptyBounds):
749         (WTF::StackBounds::StackBounds):
750         * wtf/Threading.cpp:
751         (WTF::threadEntryPoint):
752         (WTF::Thread::create):
753         (WTF::Thread::currentMayBeNull):
754         (WTF::Thread::initialize):
755         (WTF::initializeThreading):
756         * wtf/Threading.h:
757         (WTF::Thread::stack):
758         * wtf/ThreadingPthreads.cpp:
759         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
760         (WTF::Thread::current):
761         (WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
762         (WTF::Thread::currentMayBeNull): Deleted.
763         * wtf/ThreadingWin.cpp:
764         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
765         (WTF::Thread::initializeCurrentThreadInternal):
766         (WTF::Thread::current):
767         * wtf/WTFThreadData.cpp:
768         (WTF::WTFThreadData::WTFThreadData):
769         * wtf/WTFThreadData.h:
770         (WTF::WTFThreadData::stack):
771
772 2017-07-18  Andy Estes  <aestes@apple.com>
773
774         [Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
775         https://bugs.webkit.org/show_bug.cgi?id=174631
776
777         Reviewed by Sam Weinig.
778
779         * Configurations/Base.xcconfig:
780
781 2017-07-18  Andy Estes  <aestes@apple.com>
782
783         [Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
784         https://bugs.webkit.org/show_bug.cgi?id=174631
785
786         Reviewed by Dan Bernstein.
787
788         * Configurations/Base.xcconfig:
789
790 2017-07-18  Andy Estes  <aestes@apple.com>
791
792         [Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
793         https://bugs.webkit.org/show_bug.cgi?id=174631
794
795         Reviewed by Darin Adler.
796
797         * Configurations/Base.xcconfig:
798
799 2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>
800
801         [cmake] Set library types before their targets are created
802         https://bugs.webkit.org/show_bug.cgi?id=174600
803
804         Reviewed by Michael Catanzaro.
805
806         Since r219560 library targets are created before PlatformXXX.cmake
807         files are processed, however library type must be passed in
808         add_library() call and cannot be changed afterwards. Set these
809         variables in OptionsXXX.cmake.
810
811         * wtf/PlatformGTK.cmake:
812         * wtf/PlatformMac.cmake:
813
814 2017-07-17  Yoshiaki Jitsukawa  <Yoshiaki.Jitsukawa@sony.com>
815
816         Move USE_AVFOUNDATION definition on Windows to wtf/Platform.h
817         https://bugs.webkit.org/show_bug.cgi?id=174356
818
819         Reviewed by Brent Fulgham.
820
821         Move the definition of USE_AVFOUNDATION on Windows to wtf/platform.h
822
823         Add a custom command to generate AVFoundationHeaderDetection.h, which
824         is renamed from WebCoreHeaderDetection.h
825
826         * AVFoundationSupport.py: Moved from Source/WebCore/AVFoundationSupport.py.
827         * wtf/Platform.h:
828         * wtf/PlatformWin.cmake:
829
830 2017-07-17  Darin Adler  <darin@apple.com>
831
832         Improve use of NeverDestroyed
833         https://bugs.webkit.org/show_bug.cgi?id=174348
834
835         Reviewed by Sam Weinig.
836
837         * wtf/HashSet.h: Added an overload of HashSet::add that takes an initializer list of
838         const references. This is handy to add a bunch of values all at once. Later we can
839         consider optimizing to grow the hash table only once instead of deciding whether to
840         grow repeatedly as we add each value.
841         (WTF::copyToVector): Changed to use std::copy, removing 4 of the 6 lines of code here.
842
843         * wtf/MemoryPressureHandler.cpp: Include NeverDestroyed.h here ...
844         * wtf/MemoryPressureHandler.h: ... not here.
845
846         * wtf/NeverDestroyed.h: Added the ability to have a const NeverDestroyed.
847         Added a makeNeverDestroyed function that deduces the type from the argument.
848         With auto, this can be used to avoid writing out a long type twice.
849
850         * wtf/ThreadingPthreads.cpp: Removed unneeded include of NeverDestroyed.h.
851         * wtf/text/AtomicString.cpp: Ditto.
852
853 2017-07-17  Konstantin Tokarev  <annulen@yandex.ru>
854
855         [CMake] Create targets before WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS is called
856         https://bugs.webkit.org/show_bug.cgi?id=174557
857
858         Reviewed by Michael Catanzaro.
859
860         * wtf/CMakeLists.txt:
861
862 2017-07-14  Jonathan Bedard  <jbedard@apple.com>
863
864         Add iOS 11 SPI
865         https://bugs.webkit.org/show_bug.cgi?id=174430
866         <rdar://problem/33269288>
867
868         Reviewed by Tim Horton.
869
870         * Configurations/WTF.xcconfig: Exclude MachExceptions.def when building iOS 11 for
871         the iOS simulator.
872
873 2017-07-14  Commit Queue  <commit-queue@webkit.org>
874
875         Unreviewed, rolling out r219510.
876         https://bugs.webkit.org/show_bug.cgi?id=174525
877
878         Need to revert length() == 0 check for null string (Requested
879         by yusukesuzuki on #webkit).
880
881         Reverted changeset:
882
883         "[WTF] Newly added AtomicStringImpl should use BufferInternal
884         static string if StringImpl is static"
885         https://bugs.webkit.org/show_bug.cgi?id=174501
886         http://trac.webkit.org/changeset/219510
887
888 2017-07-14  Yusuke Suzuki  <utatane.tea@gmail.com>
889
890         [WTF] Newly added AtomicStringImpl should use BufferInternal static string if StringImpl is static
891         https://bugs.webkit.org/show_bug.cgi?id=174501
892
893         Reviewed by Darin Adler.
894
895         When creating AtomicStringImpl from static StringImpl, we can just use createWithoutCopying
896         to create a BufferInternal AtomicStringImpl which m_data{8,16} is static string's one.
897
898         * wtf/text/AtomicStringImpl.cpp:
899         (WTF::CStringTranslator::hash):
900         (WTF::CStringTranslator::equal):
901         (WTF::CStringTranslator::translate):
902         (WTF::AtomicStringImpl::add):
903         (WTF::HashTranslatorCharBuffer::HashTranslatorCharBuffer):
904         (WTF::UCharBufferTranslator::hash):
905         (WTF::UCharBufferTranslator::equal):
906         (WTF::UCharBufferTranslator::translate):
907         (WTF::LCharBufferTranslator::hash):
908         (WTF::LCharBufferTranslator::equal):
909         (WTF::LCharBufferTranslator::translate):
910         (WTF::BufferFromStaticDataTranslator::hash):
911         (WTF::BufferFromStaticDataTranslator::equal):
912         (WTF::BufferFromStaticDataTranslator::translate):
913         (WTF::AtomicStringImpl::addLiteral):
914         (WTF::addSymbol):
915         (WTF::addStatic):
916         (WTF::AtomicStringImpl::addSlowCase):
917         (WTF::AtomicStringImpl::lookUp):
918         (WTF::CharBufferFromLiteralDataTranslator::hash): Deleted.
919         (WTF::CharBufferFromLiteralDataTranslator::equal): Deleted.
920         (WTF::CharBufferFromLiteralDataTranslator::translate): Deleted.
921         (WTF::addSubstring): Deleted.
922         * wtf/text/StringImpl.h:
923
924 2017-07-14  Yusuke Suzuki  <utatane.tea@gmail.com>
925
926         [WTF] Use std::unique_ptr for StackTrace
927         https://bugs.webkit.org/show_bug.cgi?id=174495
928
929         Reviewed by Alex Christensen.
930
931         Instead of returning pointer to heap allocated StackTrace,
932         we should return std::unique_ptr<StackTrace>.
933         And we also move WTFGetBackTrace from Assertions.cpp to
934         StackTrace.cpp to consolidate stack trace related operations
935         into StackTrace.cpp.
936
937         * wtf/Assertions.cpp:
938         * wtf/StackTrace.cpp:
939         (WTFGetBacktrace):
940         (WTF::StackTrace::captureStackTrace):
941         * wtf/StackTrace.h:
942
943 2017-07-13  Yusuke Suzuki  <utatane.tea@gmail.com>
944
945         Unreviewed, annotate inline for operator==/!= for FastAllocator
946         https://bugs.webkit.org/show_bug.cgi?id=174366
947
948         * wtf/FastMalloc.h:
949         (WTF::operator==):
950         (WTF::operator!=):
951
952 2017-07-12  Commit Queue  <commit-queue@webkit.org>
953
954         Unreviewed, rolling out r219176.
955         https://bugs.webkit.org/show_bug.cgi?id=174436
956
957         "Can cause infinite recursion on iOS" (Requested by mlam on
958         #webkit).
959
960         Reverted changeset:
961
962         "WTF::Thread should have the threads stack bounds."
963         https://bugs.webkit.org/show_bug.cgi?id=173975
964         http://trac.webkit.org/changeset/219176
965
966 2017-07-12  Adrian Perez de Castro  <aperez@igalia.com>
967
968         [WTF] Failure to build when the compiler specifically targets ARMv8-A / defines __ARM_ARCH_8A__
969         https://bugs.webkit.org/show_bug.cgi?id=174425
970
971         Reviewed by Michael Catanzaro.
972
973         * wtf/Platform.h: Also check for __ARCH_ARM_8A__ to detect ARMv8.
974
975 2017-07-12  Michael Saboff  <msaboff@apple.com>
976
977         Unreviewed build fix when both DATA_LOG_TO_FILE and DATA_LOG_FILENAME are defined.
978
979         * wtf/DataLog.cpp:
980         (WTF::initializeLogFileOnce): Changed declaration of logBasename from
981         char* logBasename to const char* logBasename.
982
983 2017-07-12  Matt Lewis  <jlewis3@apple.com>
984
985         Unreviewed, rolling out r219401.
986
987         This revision rolled out the previous patch, but after talking
988         with reviewer, a rebaseline is what was needed.Rolling back in
989         before rebaseline.
990
991         Reverted changeset:
992
993         "Unreviewed, rolling out r219379."
994         https://bugs.webkit.org/show_bug.cgi?id=174400
995         http://trac.webkit.org/changeset/219401
996
997 2017-07-12  Matt Lewis  <jlewis3@apple.com>
998
999         Unreviewed, rolling out r219379.
1000
1001         This revision caused a consistent failure in the test
1002         fast/dom/Window/property-access-on-cached-window-after-frame-
1003         removed.html.
1004
1005         Reverted changeset:
1006
1007         "Remove NAVIGATOR_HWCONCURRENCY"
1008         https://bugs.webkit.org/show_bug.cgi?id=174400
1009         http://trac.webkit.org/changeset/219379
1010
1011 2017-07-12  Yusuke Suzuki  <utatane.tea@gmail.com>
1012
1013         Unreviewed, attempt to fix Windows build
1014         https://bugs.webkit.org/show_bug.cgi?id=174366
1015
1016         * wtf/FastMalloc.h:
1017         (WTF::operator==):
1018         (WTF::operator!=):
1019         (WTF::FastAllocator::operator==): Deleted.
1020         (WTF::FastAllocator::operator!=): Deleted.
1021
1022 2017-07-11  Carlos Garcia Campos  <cgarcia@igalia.com>
1023
1024         [GTK][WPE] Enable FILE_LOCK and implement lockFile and unlockFile
1025         https://bugs.webkit.org/show_bug.cgi?id=174357
1026
1027         Reviewed by Michael Catanzaro.
1028
1029         * wtf/Platform.h: Enable FILE_LOCK in GTK and WPE ports.
1030
1031 2017-07-11  Dean Jackson  <dino@apple.com>
1032
1033         Remove NAVIGATOR_HWCONCURRENCY
1034         https://bugs.webkit.org/show_bug.cgi?id=174400
1035
1036         Reviewed by Sam Weinig.
1037
1038         * wtf/FeatureDefines.h:
1039
1040 2017-07-11  Dean Jackson  <dino@apple.com>
1041
1042         Rolling out r219372.
1043
1044         * wtf/FeatureDefines.h:
1045
1046 2017-07-11  Dean Jackson  <dino@apple.com>
1047
1048         Remove NAVIGATOR_HWCONCURRENCY
1049         https://bugs.webkit.org/show_bug.cgi?id=174400
1050
1051         Reviewed by Sam Weinig.
1052
1053         * wtf/FeatureDefines.h:
1054
1055 2017-07-11  Yusuke Suzuki  <utatane.tea@gmail.com>
1056
1057         [WTF] Drop unnecessary AtomicString constructor since we have constexpr hash function
1058         https://bugs.webkit.org/show_bug.cgi?id=174347
1059
1060         Reviewed by Alex Christensen.
1061
1062         Previously, we calculate hash value in perl script and generate source code with that value.
1063         This AtomicString constructor takes this pre-calculated hash value to efficiently construct
1064         itself. But now, we have constexpr hash function, then we do not need to specify hash value
1065         directly in this way. Thus we drop this functionality.
1066
1067         * wtf/text/AtomicString.h:
1068         * wtf/text/AtomicStringImpl.cpp:
1069         (WTF::HashAndCharactersTranslator::hash): Deleted.
1070         (WTF::HashAndCharactersTranslator::equal): Deleted.
1071         (WTF::HashAndCharactersTranslator::translate): Deleted.
1072         * wtf/text/AtomicStringImpl.h:
1073         (WTF::AtomicStringImpl::add):
1074
1075 2017-07-10  Per Arne Vollan  <pvollan@apple.com>
1076
1077         [Win] Link error when building WTF from WTF.proj project file.
1078         https://bugs.webkit.org/show_bug.cgi?id=174316
1079         <rdar://problem/33178200>
1080
1081         Reviewed by Brent Fulgham.
1082
1083         WTF_CPU_X86 cmake variable needs to be set for link libraries directories to be correct.
1084
1085         * WTF.vcxproj/WTF.proj:
1086
1087 2017-07-03  Brian Burg  <bburg@apple.com>
1088
1089         Web Replay: remove some unused code
1090         https://bugs.webkit.org/show_bug.cgi?id=173903
1091
1092         Rubber-stamped by Joseph Pecoraro.
1093
1094         * wtf/FeatureDefines.h:
1095
1096 2017-07-10  Brady Eidson  <beidson@apple.com>
1097
1098         Cleanup lifetime issues of UniqueIDBDatabase and IDBBackingStore.
1099         <rdar://problem/32908525> and https://bugs.webkit.org/show_bug.cgi?id=174244
1100
1101         Reviewed by David Kilzer and Alex Christensen. 
1102
1103         Add proper "kill" support to CrossThreadQueue, as well as isEmpty() support.
1104
1105         * wtf/CrossThreadQueue.h:
1106         (WTF::CrossThreadQueue<DataType>::append):
1107         (WTF::CrossThreadQueue<DataType>::kill):
1108         (WTF::CrossThreadQueue<DataType>::isKilled):
1109         (WTF::CrossThreadQueue<DataType>::isEmpty):
1110         (WTF::CrossThreadQueue::isKilled): Deleted.
1111
1112 2017-07-09  Yusuke Suzuki  <utatane.tea@gmail.com>
1113
1114         [JSC] Use fastMalloc / fastFree for STL containers
1115         https://bugs.webkit.org/show_bug.cgi?id=174297
1116
1117         Reviewed by Sam Weinig.
1118
1119         * wtf/FastMalloc.h:
1120         (WTF::FastAllocator::FastAllocator):
1121         (WTF::FastAllocator::allocate):
1122         (WTF::FastAllocator::deallocate):
1123         (WTF::FastAllocator::operator==):
1124         (WTF::FastAllocator::operator!=):
1125
1126 2017-07-07  Brent Fulgham  <bfulgham@apple.com>
1127
1128         [WK2] Use a rolling 30-day uptime for processing statistics
1129         https://bugs.webkit.org/show_bug.cgi?id=174235
1130         <rdar://problem/33164381>
1131
1132         Reviewed by Chris Dumez.
1133
1134         Modify Deque to allow it to be used in a template specialization in KeyedDecoder.
1135
1136         * wtf/Deque.h:
1137
1138 2017-07-07  Commit Queue  <commit-queue@webkit.org>
1139
1140         Unreviewed, rolling out r219238, r219239, and r219241.
1141         https://bugs.webkit.org/show_bug.cgi?id=174265
1142
1143         "fast/workers/dedicated-worker-lifecycle.html is flaky"
1144         (Requested by yusukesuzuki on #webkit).
1145
1146         Reverted changesets:
1147
1148         "[WTF] Implement WTF::ThreadGroup"
1149         https://bugs.webkit.org/show_bug.cgi?id=174081
1150         http://trac.webkit.org/changeset/219238
1151
1152         "Unreviewed, build fix after r219238"
1153         https://bugs.webkit.org/show_bug.cgi?id=174081
1154         http://trac.webkit.org/changeset/219239
1155
1156         "Unreviewed, CLoop build fix after r219238"
1157         https://bugs.webkit.org/show_bug.cgi?id=174081
1158         http://trac.webkit.org/changeset/219241
1159
1160 2017-07-07  Yusuke Suzuki  <utatane.tea@gmail.com>
1161
1162         Unreviewed, Windows build fix after r219233 part 4
1163         https://bugs.webkit.org/show_bug.cgi?id=174231
1164
1165         * wtf/Assertions.h:
1166
1167 2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1168
1169         Unreviewed, Windows build fix after r219233 part 3
1170         https://bugs.webkit.org/show_bug.cgi?id=174231
1171
1172         * wtf/Assertions.h:
1173         (compilerFenceForCrash):
1174
1175 2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1176
1177         Unreviewed, Windows build fix after r219233 part 2
1178         https://bugs.webkit.org/show_bug.cgi?id=174231
1179
1180         * wtf/Assertions.h:
1181
1182 2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1183
1184         Unreviewed, Windows build fix after r219233
1185         https://bugs.webkit.org/show_bug.cgi?id=174231
1186
1187         * wtf/Compiler.h:
1188
1189 2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1190
1191         Unreviewed, build fix after r219238
1192         https://bugs.webkit.org/show_bug.cgi?id=174081
1193
1194         * wtf/Threading.cpp:
1195         (WTF::Thread::addToThreadGroup):
1196
1197 2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1198
1199         [WTF] Implement WTF::ThreadGroup
1200         https://bugs.webkit.org/show_bug.cgi?id=174081
1201
1202         Reviewed by Mark Lam.
1203
1204         This patch implements WTF::ThreadGroup. It implements core of JSC::MachineThreads with more reliable way.
1205         JSC::MachineThreads was complicated because of managing dead threads. Each JSC::MachineThreads has its
1206         own TLS with a registered destructor. And everytime a thread dies, the registered TLS destructor is called.
1207         And this destructor will remove the current dying thread from JSC::MachineThreads.
1208
1209         However the above implementation is tricky. And each JSC::MachineThreads requires own TLS space, which is
1210         not considered in WTF's Windows ThreadSpecific implementation. Current design works well since we only
1211         have small number of MachineThreads right now.
1212
1213         Instead, we use more reliable way. After introducing WTF::Thread, WTF::Thread has WTF::Thread::didExit,
1214         which is called when associated TLS (with WTF::Thread) is destroyed. We leverage this mechanism to remove
1215         WTF::Thread from MachineThreads.
1216
1217         This patch introduces WTF::ThreadGroup. It is tightly integrated with WTF::Thread: WTF::Thread knows
1218         ThreadGroups which includes this thread. And WTF::ThreadGroup of course knows WTF::Threads added to it.
1219         WTF::Thread::didExit carefully remove itself from WTF::ThreadGroups.
1220
1221         The most important part of this patch is locking. WTF::Thread can die. And WTF::ThreadGroup can die.
1222         If we take a design using two fine grain locks in WTF::Thread and WTF::ThreadGroup, we easily encounter
1223         dead lock. Consider the following case.
1224
1225         1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold a lock of THG, and hold a lock of TH (locking order is THG -> TH).
1226         2. When TH dies, TH need to hold a lock of TH to iterate THGs. And we hold a lock of THG to unregister TH from it (locking order is TH -> THG).
1227         3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (locking order is THG -> TH).
1228         4. When destroying THG, we need to hold a lock of TH to unregister THG from TH. We can hold a lock of THG before that (locking order is THG -> TH).
1229
1230         Then, it easily causes dead lock. We cannot swap the locking order of (2) since iterating THG requires a lock of TH.
1231         To solve this problem, we introduce one global lock ThreadGroup::destructionMutex (GL).
1232
1233         1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold GL, and hold a lock of THG. Do not hold a
1234         lock of TH. TH's thread groups information is guarded by GL instead of a lock of TH (locking order is GL -> THG).
1235         2. When TH dies, TH need to hold GL to iterate THGs. And we hold a lock of THG to unregister TH from it (locking order is GL -> THG).
1236         3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (locking order is THG -> TH).
1237         4. When destroying THG, we need to hold GL to unregister THG from TH. We can hold a lock of THG after that (locking order is GL -> THG).
1238
1239         We still have a lock of THG. By separating GL and THG's lock, we can hold a lock of THG while completely unrelated TH is destructed which takes a lock of GL and unrelated THG.
1240
1241         * WTF.xcodeproj/project.pbxproj:
1242         * wtf/AutomaticThread.cpp:
1243         * wtf/CMakeLists.txt:
1244         * wtf/CrossThreadCopier.h:
1245         * wtf/ParkingLot.h:
1246         * wtf/ThreadGroup.cpp: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
1247         (WTF::ThreadGroup::destructionMutex):
1248         (WTF::ThreadGroup::~ThreadGroup):
1249         (WTF::ThreadGroup::add):
1250         (WTF::ThreadGroup::addCurrentThread):
1251         (WTF::ThreadGroup::removeCurrentThread):
1252         * wtf/ThreadGroup.h: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
1253         (WTF::ThreadGroup::create):
1254         (WTF::ThreadGroup::threads):
1255         (WTF::ThreadGroup::getLock):
1256         * wtf/Threading.cpp:
1257         (WTF::Thread::didExit):
1258         (WTF::Thread::addToThreadGroup):
1259         (WTF::Thread::removeFromThreadGroup):
1260         * wtf/Threading.h:
1261         (WTF::Thread::canAddToThreadGroup):
1262
1263 2017-07-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1264
1265         [WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed<> for Atoms
1266         https://bugs.webkit.org/show_bug.cgi?id=174150
1267
1268         Reviewed by Mark Lam.
1269
1270         This patch cleans up StringStatics.cpp and remove it from the tree.
1271
1272         1. Move StringImpl methods to appropriate place, "StringImpl.cpp".
1273
1274         StringImpl::hashSlowCase() and StringImpl::concurrentHash() are defined in
1275         StringStatics.cpp. But they should be defined in StringImpl.cpp.
1276         This patch just moves them to StringImpl.cpp.
1277
1278         2. Use LazyNeverDestroyed to initialize AtomicString atoms like emptyAtom.
1279
1280         Previously, we initialized AtomicString atoms like emptyAtom in a hacky way.
1281         We first define them as extern global variables. However, AtomicString has
1282         a non-trivial constructor. Thus, we cannot do this because it requires global
1283         constructor calls. This is why we have StringStatics.cpp. In this file, we
1284         include "StaticConstructors.h". After including this file, all the global
1285         constructor call disabled in Windows. And in GCC environment, we allocate
1286         void* storage for that variable. And we use placement new in AtomicString::init()
1287         to initialize these storage.
1288         However, we already have better way for that: LazyNeverDestroyed. It just allocates
1289         storage like the above. And it does not have any global constructors. Thus
1290         we can just declare it as a global variable. And we initialize them lazily in
1291         AtomicString::init(). This way effectively avoids "StaticConstructors.h" hacky way.
1292         And it makes "StringStatics.cpp" unnecessary.
1293         Then, we just move these variables and AtomicString::init() to AtomicString.cpp.
1294
1295         And we also change emptyAtom to emptyAtom() to get the value from LazyNeverDestroyed<>.
1296
1297         * WTF.xcodeproj/project.pbxproj:
1298         * wtf/CMakeLists.txt:
1299         * wtf/text/AtomicString.cpp:
1300         (WTF::AtomicString::convertASCIICase):
1301         (WTF::AtomicString::fromUTF8Internal):
1302         (WTF::AtomicString::init):
1303         * wtf/text/AtomicString.h:
1304         (WTF::nullAtom):
1305         (WTF::emptyAtom):
1306         (WTF::starAtom):
1307         (WTF::xmlAtom):
1308         (WTF::xmlnsAtom):
1309         (WTF::AtomicString::fromUTF8):
1310         * wtf/text/StringBuilder.h:
1311         (WTF::StringBuilder::toAtomicString):
1312         * wtf/text/StringImpl.cpp:
1313         (WTF::StringImpl::hashSlowCase):
1314         (WTF::StringImpl::concurrentHash):
1315         * wtf/text/StringStatics.cpp: Removed.
1316
1317 2017-07-06  Keith Miller  <keith_miller@apple.com>
1318
1319         Add extra insurance to prevent clang from making crash traces sad
1320         https://bugs.webkit.org/show_bug.cgi?id=174231
1321
1322         Reviewed by Saam Barati.
1323
1324         This patch makes it slightly harder for Clang to coalesce our crash calls.
1325         Additionally, it also makes Clang never tail call the WTFCrashWithInfo so
1326         our stack trace should always be "reasonable".
1327
1328         * wtf/Assertions.h:
1329         * wtf/Compiler.h:
1330
1331 2017-07-06  Matt Lewis  <jlewis3@apple.com>
1332
1333         Unreviewed, rolling out r219178.
1334
1335         This caused a consistent failure with the API test
1336         StringBuilderTest.ToAtomicStringOnEmpty on all Debug testers.
1337
1338         Reverted changeset:
1339
1340         "[WTF] Clean up StringStatics.cpp by using
1341         LazyNeverDestroyed<> for Atoms"
1342         https://bugs.webkit.org/show_bug.cgi?id=174150
1343         http://trac.webkit.org/changeset/219178
1344
1345 2017-07-05  Don Olmstead  <don.olmstead@sony.com>
1346
1347         [WTF] Move SoftLinking.h into WTF
1348         https://bugs.webkit.org/show_bug.cgi?id=174000
1349
1350         Reviewed by Alex Christensen.
1351
1352         * WTF.xcodeproj/project.pbxproj:
1353         * wtf/SoftLinking.h: Copied from Source/WebCore/platform/ios/QuickLookSoftLink.mm.
1354         * wtf/cocoa/SoftLinking.h: Renamed from Source/WebCore/platform/cocoa/SoftLinking.h.
1355         * wtf/win/SoftLinking.h: Renamed from Source/WebCore/platform/win/SoftLinking.h.
1356
1357 2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1358
1359         Upgrade GCC baseline
1360         https://bugs.webkit.org/show_bug.cgi?id=174155
1361
1362         Reviewed by Michael Catanzaro.
1363
1364         * wtf/Compiler.h:
1365
1366 2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1367
1368         WTF::StringImpl::copyChars segfaults when built with GCC 7
1369         https://bugs.webkit.org/show_bug.cgi?id=173407
1370
1371         Reviewed by Andreas Kling.
1372
1373         With GCC 7, StringImpl::copyChars() behaves as unexpected.
1374         This function violates strict aliasing rule.
1375
1376         This optimization is originally introduced to improve performance
1377         in SunSpider's string tests in 2008. When running it in my Linux
1378         box, it no longer causes any observable difference. So, we just
1379         remove this optimization.
1380
1381                                         baseline                  patched
1382
1383         string-base64                7.7544+-0.1761            7.6138+-0.2071          might be 1.0185x faster
1384         string-fasta                10.5429+-0.2746     ?     10.7500+-0.2669        ? might be 1.0196x slower
1385         string-tagcloud             14.8588+-0.2828           14.8039+-0.3039
1386         string-unpack-code          36.1769+-0.4251           35.3397+-0.5398          might be 1.0237x faster
1387         string-validate-input        8.5182+-0.2206            8.3514+-0.2179          might be 1.0200x faster
1388
1389         * wtf/text/StringImpl.h:
1390         (WTF::StringImpl::copyChars):
1391
1392 2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1393
1394         Use std::lock_guard instead of std::unique_lock if move semantics and try_lock is not necessary
1395         https://bugs.webkit.org/show_bug.cgi?id=174148
1396
1397         Reviewed by Mark Lam.
1398
1399         It is not necessary to use std::unique_lock if we do not use additional features compared to std::lock_guard.
1400
1401         (WTF::ThreadHolder::get):
1402         (WTF::ThreadHolder::initialize):
1403         (WTF::ThreadHolder::destruct):
1404         * wtf/Threading.cpp:
1405         (WTF::Thread::didExit):
1406         * wtf/ThreadingPthreads.cpp:
1407         (WTF::Thread::changePriority):
1408         (WTF::Thread::waitForCompletion):
1409         (WTF::Thread::detach):
1410         (WTF::Thread::signal):
1411         (WTF::Thread::resume):
1412         (WTF::Thread::getRegisters):
1413         (WTF::Thread::establish):
1414         * wtf/ThreadingWin.cpp:
1415         (WTF::Thread::changePriority):
1416         (WTF::Thread::waitForCompletion):
1417         (WTF::Thread::detach):
1418         (WTF::Thread::resume):
1419         (WTF::Thread::getRegisters):
1420         (WTF::Thread::establish):
1421         * wtf/WordLock.cpp:
1422         (WTF::WordLockBase::unlockSlow):
1423
1424 2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1425
1426         [WTF] Clean up StringStatics.cpp by using LazyNeverDestroyed<> for Atoms
1427         https://bugs.webkit.org/show_bug.cgi?id=174150
1428
1429         Reviewed by Mark Lam.
1430
1431         This patch cleans up StringStatics.cpp and remove it from the tree.
1432
1433         1. Move StringImpl methods to appropriate place, "StringImpl.cpp".
1434
1435         StringImpl::hashSlowCase() and StringImpl::concurrentHash() are defined in
1436         StringStatics.cpp. But they should be defined in StringImpl.cpp.
1437         This patch just moves them to StringImpl.cpp.
1438
1439         2. Use LazyNeverDestroyed to initialize AtomicString atoms like emptyAtom.
1440
1441         Previously, we initialized AtomicString atoms like emptyAtom in a hacky way.
1442         We first define them as extern global variables. However, AtomicString has
1443         a non-trivial constructor. Thus, we cannot do this because it requires global
1444         constructor calls. This is why we have StringStatics.cpp. In this file, we
1445         include "StaticConstructors.h". After including this file, all the global
1446         constructor call disabled in Windows. And in GCC environment, we allocate
1447         void* storage for that variable. And we use placement new in AtomicString::init()
1448         to initialize these storage.
1449         However, we already have better way for that: LazyNeverDestroyed. It just allocates
1450         storage like the above. And it does not have any global constructors. Thus
1451         we can just declare it as a global variable. And we initialize them lazily in
1452         AtomicString::init(). This way effectively avoids "StaticConstructors.h" hacky way.
1453         And it makes "StringStatics.cpp" unnecessary.
1454         Then, we just move these variables and AtomicString::init() to AtomicString.cpp.
1455
1456         And we also change emptyAtom to emptyAtom() to get the value from LazyNeverDestroyed<>.
1457
1458         * WTF.xcodeproj/project.pbxproj:
1459         * wtf/CMakeLists.txt:
1460         * wtf/text/AtomicString.cpp:
1461         (WTF::AtomicString::convertASCIICase):
1462         (WTF::AtomicString::fromUTF8Internal):
1463         (WTF::AtomicString::init):
1464         * wtf/text/AtomicString.h:
1465         (WTF::nullAtom):
1466         (WTF::emptyAtom):
1467         (WTF::starAtom):
1468         (WTF::xmlAtom):
1469         (WTF::xmlnsAtom):
1470         (WTF::AtomicString::fromUTF8):
1471         * wtf/text/StringBuilder.h:
1472         (WTF::StringBuilder::toAtomicString):
1473         * wtf/text/StringImpl.cpp:
1474         (WTF::StringImpl::hashSlowCase):
1475         (WTF::StringImpl::concurrentHash):
1476         * wtf/text/StringStatics.cpp: Removed.
1477
1478 2017-07-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1479
1480         WTF::Thread should have the threads stack bounds.
1481         https://bugs.webkit.org/show_bug.cgi?id=173975
1482
1483         Reviewed by Keith Miller.
1484
1485         We move StackBounds from WTFThreadData to WTF::Thread.
1486         One important thing is that we should make valid StackBounds
1487         visible to Thread::create() caller. When the caller get
1488         WTF::Thread from Thread::create(), this WTF::Thread should
1489         have a valid StackBounds. But StackBounds information can be
1490         retrived only in the WTF::Thread's thread itself.
1491
1492         We also clean up WTF::initializeThreading. StringImpl::empty()
1493         is now statically initialized by using constexpr constructor.
1494         Thus we do not need to call StringImpl::empty() explicitly here.
1495         And WTF::initializeThreading() does not have any main thread
1496         affinity right now in all the platforms. So we fix the comment
1497         in Threading.h. Then, now, WTF::initializeThreading() is called
1498         in UI thread when using Web thread in iOS.
1499
1500         * wtf/StackBounds.h:
1501         (WTF::StackBounds::emptyBounds):
1502         (WTF::StackBounds::StackBounds):
1503         * wtf/StackStats.cpp:
1504         (WTF::StackStats::PerThreadStats::PerThreadStats):
1505         * wtf/Threading.cpp:
1506         (WTF::threadEntryPoint):
1507         (WTF::Thread::create):
1508         (WTF::Thread::currentMayBeNull):
1509         (WTF::Thread::initialize):
1510         (WTF::initializeThreading):
1511         * wtf/Threading.h:
1512         (WTF::Thread::stack):
1513         * wtf/ThreadingPthreads.cpp:
1514         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
1515         (WTF::Thread::current):
1516         (WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
1517         (WTF::Thread::currentMayBeNull): Deleted.
1518         * wtf/ThreadingWin.cpp:
1519         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
1520         (WTF::Thread::initializeCurrentThreadInternal):
1521         (WTF::Thread::current):
1522         * wtf/WTFThreadData.cpp:
1523         (WTF::WTFThreadData::WTFThreadData):
1524         * wtf/WTFThreadData.h:
1525         (WTF::WTFThreadData::stack): Deleted.
1526
1527 2017-07-05  Keith Miller  <keith_miller@apple.com>
1528
1529         Crashing with information should have an abort reason
1530         https://bugs.webkit.org/show_bug.cgi?id=174185
1531
1532         Reviewed by Saam Barati.
1533
1534         Fix an ifdef to actually work with X86_64. It turns out X64_64 is
1535         not an architecture... Whoops.
1536
1537         * wtf/Assertions.cpp:
1538
1539 2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>
1540
1541         Remove copy of ICU headers from WebKit
1542         https://bugs.webkit.org/show_bug.cgi?id=116407
1543
1544         Reviewed by Alex Christensen.
1545
1546         Add an extra rsync command to CopyWTFHeaders which copies the ICU headers
1547         to DSTROOT/usr/local/include/. These headers already live inside a
1548         "unicode" folder, so an example path of a header is
1549         DSTROOT/usr/local/include/unicode/uchar.h. This is already in the search
1550         path of the other WebKit projects, so those other projects can remove
1551         their explicit listing of the old place these headers lived.
1552
1553         Also add the remaining ICU 55.1 headers which the other projects (like
1554         WebCore) need. Revert any local changes to these headers in favor of
1555         using the GCC_PREPROCESSOR_DEFINITIONS build setting. This is so we can
1556         compile the same way against unmodified headers.
1557
1558         * Configurations/Base.xcconfig:
1559         * Configurations/CopyWTFHeaders.xcconfig:
1560         * WTF.xcodeproj/project.pbxproj:
1561         * icu/unicode/alphaindex.h: Added.
1562         * icu/unicode/appendable.h: Added.
1563         * icu/unicode/basictz.h: Added.
1564         * icu/unicode/brkiter.h: Added.
1565         (BreakIterator::isBufferClone):
1566         * icu/unicode/bytestrie.h: Added.
1567         * icu/unicode/bytestriebuilder.h: Added.
1568         * icu/unicode/calendar.h: Added.
1569         (Calendar::createInstance):
1570         (Calendar::roll):
1571         (Calendar::internalSet):
1572         (Calendar::weekNumber):
1573         * icu/unicode/caniter.h: Added.
1574         * icu/unicode/chariter.h: Renamed from Source/WebCore/icu/unicode/chariter.h.
1575         * icu/unicode/choicfmt.h: Added.
1576         * icu/unicode/coleitr.h: Added.
1577         (CollationElementIterator::primaryOrder):
1578         (CollationElementIterator::secondaryOrder):
1579         (CollationElementIterator::tertiaryOrder):
1580         (CollationElementIterator::isIgnorable):
1581         * icu/unicode/coll.h: Added.
1582         * icu/unicode/compactdecimalformat.h: Added.
1583         * icu/unicode/curramt.h: Added.
1584         (CurrencyAmount::getCurrency):
1585         (CurrencyAmount::getISOCurrency):
1586         * icu/unicode/currpinf.h: Added.
1587         (CurrencyPluralInfo::operator!=):
1588         * icu/unicode/currunit.h: Added.
1589         (CurrencyUnit::getISOCurrency):
1590         * icu/unicode/datefmt.h: Added.
1591         * icu/unicode/dbbi.h: Added.
1592         * icu/unicode/dcfmtsym.h: Added.
1593         (DecimalFormatSymbols::getSymbol):
1594         (DecimalFormatSymbols::getConstSymbol):
1595         (DecimalFormatSymbols::setSymbol):
1596         (DecimalFormatSymbols::getLocale):
1597         (DecimalFormatSymbols::getCurrencyPattern):
1598         * icu/unicode/decimfmt.h: Added.
1599         (DecimalFormat::getConstSymbol):
1600         * icu/unicode/docmain.h: Added.
1601         * icu/unicode/dtfmtsym.h: Added.
1602         * icu/unicode/dtintrv.h: Added.
1603         (DateInterval::getFromDate):
1604         (DateInterval::getToDate):
1605         (DateInterval::operator!=):
1606         * icu/unicode/dtitvfmt.h: Added.
1607         (DateIntervalFormat::operator!=):
1608         * icu/unicode/dtitvinf.h: Added.
1609         (DateIntervalInfo::operator!=):
1610         * icu/unicode/dtptngen.h: Added.
1611         * icu/unicode/dtrule.h: Added.
1612         * icu/unicode/enumset.h: Added.
1613         (EnumSet::EnumSet):
1614         (EnumSet::~EnumSet):
1615         (EnumSet::clear):
1616         (EnumSet::add):
1617         (EnumSet::remove):
1618         (EnumSet::contains):
1619         (EnumSet::set):
1620         (EnumSet::get):
1621         (EnumSet::isValidEnum):
1622         (EnumSet::isValidValue):
1623         (EnumSet::operator=):
1624         (EnumSet::getAll):
1625         (EnumSet::flag):
1626         * icu/unicode/errorcode.h: Added.
1627         * icu/unicode/fieldpos.h: Added.
1628         (FieldPosition::operator=):
1629         (FieldPosition::operator==):
1630         (FieldPosition::operator!=):
1631         * icu/unicode/filteredbrk.h: Added.
1632         * icu/unicode/fmtable.h: Added.
1633         (Formattable::getDate):
1634         (Formattable::getString):
1635         (Formattable::getLong):
1636         (Formattable::toUFormattable):
1637         (Formattable::fromUFormattable):
1638         * icu/unicode/format.h: Added.
1639         * icu/unicode/fpositer.h: Added.
1640         * icu/unicode/gender.h: Added.
1641         * icu/unicode/gregocal.h: Added.
1642         * icu/unicode/icudataver.h: Added.
1643         * icu/unicode/icuplug.h: Added.
1644         * icu/unicode/idna.h: Added.
1645         * icu/unicode/listformatter.h: Added.
1646         (ListFormatData::ListFormatData):
1647         * icu/unicode/locdspnm.h: Added.
1648         (LocaleDisplayNames::createInstance):
1649         * icu/unicode/locid.h: Added.
1650         (Locale::operator!=):
1651         (Locale::getCountry):
1652         (Locale::getLanguage):
1653         (Locale::getScript):
1654         (Locale::getVariant):
1655         (Locale::getName):
1656         (Locale::isBogus):
1657         * icu/unicode/measfmt.h: Added.
1658         * icu/unicode/measunit.h: Added.
1659         * icu/unicode/measure.h: Added.
1660         (Measure::getNumber):
1661         (Measure::getUnit):
1662         * icu/unicode/messagepattern.h: Added.
1663         * icu/unicode/msgfmt.h: Added.
1664         * icu/unicode/normalizer2.h: Added.
1665         * icu/unicode/normlzr.h: Added.
1666         (Normalizer::operator!= ):
1667         (Normalizer::quickCheck):
1668         (Normalizer::isNormalized):
1669         (Normalizer::compare):
1670         * icu/unicode/numfmt.h: Added.
1671         (NumberFormat::isParseIntegerOnly):
1672         (NumberFormat::isLenient):
1673         * icu/unicode/numsys.h: Added.
1674         * icu/unicode/parsepos.h: Added.
1675         (ParsePosition::operator=):
1676         (ParsePosition::operator==):
1677         (ParsePosition::operator!=):
1678         (ParsePosition::getIndex):
1679         (ParsePosition::setIndex):
1680         (ParsePosition::getErrorIndex):
1681         (ParsePosition::setErrorIndex):
1682         * icu/unicode/plurfmt.h: Added.
1683         * icu/unicode/plurrule.h: Added.
1684         * icu/unicode/rbbi.h: Added.
1685         (RuleBasedBreakIterator::operator!=):
1686         * icu/unicode/rbnf.h: Added.
1687         (RuleBasedNumberFormat::isLenient):
1688         (RuleBasedNumberFormat::getDefaultRuleSet):
1689         * icu/unicode/rbtz.h: Added.
1690         * icu/unicode/regex.h: Added.
1691         * icu/unicode/region.h: Added.
1692         * icu/unicode/reldatefmt.h: Added.
1693         * icu/unicode/resbund.h: Added.
1694         * icu/unicode/schriter.h: Added.
1695         * icu/unicode/scientificnumberformatter.h: Added.
1696         * icu/unicode/search.h: Added.
1697         (SearchIterator::operator!=):
1698         * icu/unicode/selfmt.h: Added.
1699         * icu/unicode/simpletz.h: Added.
1700         (SimpleTimeZone::setStartRule):
1701         (SimpleTimeZone::setEndRule):
1702         (SimpleTimeZone::getOffset):
1703         * icu/unicode/smpdtfmt.h: Added.
1704         (SimpleDateFormat::get2DigitYearStart):
1705         * icu/unicode/sortkey.h: Added.
1706         (CollationKey::operator!=):
1707         (CollationKey::isBogus):
1708         (CollationKey::getByteArray):
1709         * icu/unicode/stringtriebuilder.h: Added.
1710         * icu/unicode/stsearch.h: Added.
1711         * icu/unicode/symtable.h: Added.
1712         * icu/unicode/tblcoll.h: Added.
1713         * icu/unicode/timezone.h: Added.
1714         (TimeZone::getID):
1715         (TimeZone::setID):
1716         * icu/unicode/tmunit.h: Added.
1717         * icu/unicode/tmutamt.h: Added.
1718         (TimeUnitAmount::operator!=):
1719         * icu/unicode/tmutfmt.h: Added.
1720         (TimeUnitFormat::operator!=):
1721         * icu/unicode/translit.h: Added.
1722         (Transliterator::getMaximumContextLength):
1723         (Transliterator::setID):
1724         (Transliterator::integerToken):
1725         (Transliterator::pointerToken):
1726         * icu/unicode/tzfmt.h: Added.
1727         * icu/unicode/tznames.h: Added.
1728         * icu/unicode/tzrule.h: Added.
1729         * icu/unicode/tztrans.h: Added.
1730         * icu/unicode/ubidi.h: Added.
1731         * icu/unicode/ucal.h: Renamed from Source/JavaScriptCore/icu/unicode/ucal.h.
1732         * icu/unicode/ucasemap.h: Added.
1733         * icu/unicode/ucat.h: Added.
1734         * icu/unicode/ucharstrie.h: Added.
1735         * icu/unicode/ucharstriebuilder.h: Added.
1736         * icu/unicode/uchriter.h: Added.
1737         * icu/unicode/uclean.h: Added.
1738         * icu/unicode/ucnv_cb.h: Renamed from Source/WebCore/icu/unicode/ucnv_cb.h.
1739         * icu/unicode/ucnvsel.h: Added.
1740         * icu/unicode/ucoleitr.h: Renamed from Source/WebCore/icu/unicode/ucoleitr.h.
1741         * icu/unicode/uconfig.h:
1742         * icu/unicode/ucsdet.h: Renamed from Source/WebCore/icu/unicode/ucsdet.h.
1743         * icu/unicode/udat.h: Renamed from Source/JavaScriptCore/icu/unicode/udat.h.
1744         * icu/unicode/udata.h: Added.
1745         * icu/unicode/udateintervalformat.h: Added.
1746         * icu/unicode/udatpg.h: Renamed from Source/JavaScriptCore/icu/unicode/udatpg.h.
1747         * icu/unicode/udisplaycontext.h: Renamed from Source/JavaScriptCore/icu/unicode/udisplaycontext.h.
1748         * icu/unicode/ufieldpositer.h: Renamed from Source/JavaScriptCore/icu/unicode/ufieldpositer.h.
1749         * icu/unicode/uformattable.h: Renamed from Source/JavaScriptCore/icu/unicode/uformattable.h.
1750         * icu/unicode/ugender.h: Added.
1751         * icu/unicode/uidna.h: Renamed from Source/WebCore/icu/unicode/uidna.h.
1752         * icu/unicode/uldnames.h: Added.
1753         * icu/unicode/ulistformatter.h: Added.
1754         * icu/unicode/ulocdata.h: Added.
1755         * icu/unicode/umisc.h: Renamed from Source/JavaScriptCore/icu/unicode/umisc.h.
1756         * icu/unicode/umsg.h: Added.
1757         * icu/unicode/unifilt.h: Added.
1758         * icu/unicode/unifunct.h: Added.
1759         * icu/unicode/unimatch.h: Added.
1760         * icu/unicode/unirepl.h: Added.
1761         * icu/unicode/uniset.h: Added.
1762         (UnicodeSet::operator!=):
1763         (UnicodeSet::isFrozen):
1764         (UnicodeSet::containsSome):
1765         (UnicodeSet::isBogus):
1766         (UnicodeSet::fromUSet):
1767         (UnicodeSet::toUSet):
1768         (UnicodeSet::span):
1769         (UnicodeSet::spanBack):
1770         * icu/unicode/unum.h: Renamed from Source/JavaScriptCore/icu/unicode/unum.h.
1771         * icu/unicode/unumsys.h: Renamed from Source/JavaScriptCore/icu/unicode/unumsys.h.
1772         * icu/unicode/upluralrules.h: Added.
1773         * icu/unicode/uregex.h: Added.
1774         * icu/unicode/uregion.h: Added.
1775         * icu/unicode/urep.h: Added.
1776         * icu/unicode/ures.h: Added.
1777         (ures_getUnicodeString):
1778         (ures_getNextUnicodeString):
1779         (ures_getUnicodeStringByIndex):
1780         (ures_getUnicodeStringByKey):
1781         * icu/unicode/usearch.h: Renamed from Source/WebCore/icu/unicode/usearch.h.
1782         * icu/unicode/usetiter.h: Added.
1783         (UnicodeSetIterator::isString):
1784         (UnicodeSetIterator::getCodepoint):
1785         (UnicodeSetIterator::getCodepointEnd):
1786         * icu/unicode/ushape.h: Renamed from Source/WebCore/icu/unicode/ushape.h.
1787         * icu/unicode/uspoof.h: Added.
1788         * icu/unicode/usprep.h: Added.
1789         * icu/unicode/ustdio.h: Added.
1790         * icu/unicode/ustream.h: Added.
1791         * icu/unicode/ustringtrie.h: Added.
1792         * icu/unicode/utf32.h: Added.
1793         * icu/unicode/utmscale.h: Added.
1794         * icu/unicode/utrace.h: Added.
1795         * icu/unicode/utrans.h: Added.
1796         * icu/unicode/utypes.h:
1797         * icu/unicode/vtzone.h: Added.
1798
1799 2017-07-04  Yusuke Suzuki  <utatane.tea@gmail.com>
1800
1801         [WTF] Make double-conversion's cache data constant and drop double_conversion::initialize()
1802         https://bugs.webkit.org/show_bug.cgi?id=174124
1803
1804         Reviewed by Saam Barati.
1805
1806         We annotate double-conversion's cache data as const and constexpr. And move it out of function.
1807         Since they are not involving global constructors, they are compiled as rodata and initialized
1808         without calling double_conversion::initialize().
1809
1810         And we drop double_conversion::initialize() function since it is no longer necessary.
1811
1812         * wtf/Threading.cpp:
1813         (WTF::initializeThreading):
1814         * wtf/dtoa/cached-powers.cc:
1815         * wtf/dtoa/cached-powers.h:
1816
1817 2017-07-04  Yusuke Suzuki  <utatane.tea@gmail.com>
1818
1819         [WTF] Initialize srandom and srand with cryptographically random number
1820         https://bugs.webkit.org/show_bug.cgi?id=174123
1821
1822         Reviewed by Mark Lam.
1823
1824         Use cryptographically random number instead of current time as a seed.
1825
1826         * wtf/RandomNumberSeed.h:
1827         (WTF::initializeRandomNumberGenerator):
1828
1829 2017-07-04  Joseph Pecoraro  <pecoraro@apple.com>
1830
1831         Xcode duplicate UUID for DisallowCType.h and DispatchPtr.h
1832         https://bugs.webkit.org/show_bug.cgi?id=174117
1833
1834         Reviewed by Alexey Proskuryakov.
1835
1836         * WTF.xcodeproj/project.pbxproj:
1837         Give DisallowCType.h and DispatchPtr.h different UUIDs.
1838
1839 2017-07-03  Saam Barati  <sbarati@apple.com>
1840
1841         LayoutTest workers/bomb.html is a Crash
1842         https://bugs.webkit.org/show_bug.cgi?id=167757
1843         <rdar://problem/33086462>
1844
1845         Reviewed by Keith Miller.
1846
1847         * wtf/AutomaticThread.cpp:
1848         (WTF::AutomaticThreadCondition::waitFor):
1849         * wtf/AutomaticThread.h:
1850
1851 2017-07-03  Commit Queue  <commit-queue@webkit.org>
1852
1853         Unreviewed, rolling out r219060.
1854         https://bugs.webkit.org/show_bug.cgi?id=174108
1855
1856         crashing constantly when initializing UIWebView (Requested by
1857         thorton on #webkit).
1858
1859         Reverted changeset:
1860
1861         "WTF::Thread should have the threads stack bounds."
1862         https://bugs.webkit.org/show_bug.cgi?id=173975
1863         http://trac.webkit.org/changeset/219060
1864
1865 2017-07-03  Matt Lewis  <jlewis3@apple.com>
1866
1867         Unreviewed, rolling out r219103.
1868
1869         Caused multiple build failures.
1870
1871         Reverted changeset:
1872
1873         "Remove copy of ICU headers from WebKit"
1874         https://bugs.webkit.org/show_bug.cgi?id=116407
1875         http://trac.webkit.org/changeset/219103
1876
1877 2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>
1878
1879         Remove copy of ICU headers from WebKit
1880         https://bugs.webkit.org/show_bug.cgi?id=116407
1881
1882         Reviewed by Alex Christensen.
1883
1884         Add an extra rsync command to CopyWTFHeaders which copies the ICU headers
1885         to DSTROOT/usr/local/include/. These headers already live inside a
1886         "unicode" folder, so an example path of a header is
1887         DSTROOT/usr/local/include/unicode/uchar.h. This is already in the search
1888         path of the other WebKit projects, so those other projects can remove
1889         their explicit listing of the old place these headers lived.
1890
1891         Also add the remaining ICU 55.1 headers which the other projects (like
1892         WebCore) need. Revert any local changes to these headers in favor of
1893         using the GCC_PREPROCESSOR_DEFINITIONS build setting. This is so we can
1894         compile the same way against unmodified headers.
1895
1896         * Configurations/Base.xcconfig:
1897         * Configurations/CopyWTFHeaders.xcconfig:
1898         * WTF.xcodeproj/project.pbxproj:
1899         * icu/unicode/alphaindex.h: Added.
1900         * icu/unicode/appendable.h: Added.
1901         * icu/unicode/basictz.h: Added.
1902         * icu/unicode/brkiter.h: Added.
1903         (BreakIterator::isBufferClone):
1904         * icu/unicode/bytestrie.h: Added.
1905         * icu/unicode/bytestriebuilder.h: Added.
1906         * icu/unicode/calendar.h: Added.
1907         (Calendar::createInstance):
1908         (Calendar::roll):
1909         (Calendar::internalSet):
1910         (Calendar::weekNumber):
1911         * icu/unicode/caniter.h: Added.
1912         * icu/unicode/chariter.h: Renamed from Source/WebCore/icu/unicode/chariter.h.
1913         * icu/unicode/choicfmt.h: Added.
1914         * icu/unicode/coleitr.h: Added.
1915         (CollationElementIterator::primaryOrder):
1916         (CollationElementIterator::secondaryOrder):
1917         (CollationElementIterator::tertiaryOrder):
1918         (CollationElementIterator::isIgnorable):
1919         * icu/unicode/coll.h: Added.
1920         * icu/unicode/compactdecimalformat.h: Added.
1921         * icu/unicode/curramt.h: Added.
1922         (CurrencyAmount::getCurrency):
1923         (CurrencyAmount::getISOCurrency):
1924         * icu/unicode/currpinf.h: Added.
1925         (CurrencyPluralInfo::operator!=):
1926         * icu/unicode/currunit.h: Added.
1927         (CurrencyUnit::getISOCurrency):
1928         * icu/unicode/datefmt.h: Added.
1929         * icu/unicode/dbbi.h: Added.
1930         * icu/unicode/dcfmtsym.h: Added.
1931         (DecimalFormatSymbols::getSymbol):
1932         (DecimalFormatSymbols::getConstSymbol):
1933         (DecimalFormatSymbols::setSymbol):
1934         (DecimalFormatSymbols::getLocale):
1935         (DecimalFormatSymbols::getCurrencyPattern):
1936         * icu/unicode/decimfmt.h: Added.
1937         (DecimalFormat::getConstSymbol):
1938         * icu/unicode/docmain.h: Added.
1939         * icu/unicode/dtfmtsym.h: Added.
1940         * icu/unicode/dtintrv.h: Added.
1941         (DateInterval::getFromDate):
1942         (DateInterval::getToDate):
1943         (DateInterval::operator!=):
1944         * icu/unicode/dtitvfmt.h: Added.
1945         (DateIntervalFormat::operator!=):
1946         * icu/unicode/dtitvinf.h: Added.
1947         (DateIntervalInfo::operator!=):
1948         * icu/unicode/dtptngen.h: Added.
1949         * icu/unicode/dtrule.h: Added.
1950         * icu/unicode/enumset.h: Added.
1951         (EnumSet::EnumSet):
1952         (EnumSet::~EnumSet):
1953         (EnumSet::clear):
1954         (EnumSet::add):
1955         (EnumSet::remove):
1956         (EnumSet::contains):
1957         (EnumSet::set):
1958         (EnumSet::get):
1959         (EnumSet::isValidEnum):
1960         (EnumSet::isValidValue):
1961         (EnumSet::operator=):
1962         (EnumSet::getAll):
1963         (EnumSet::flag):
1964         * icu/unicode/errorcode.h: Added.
1965         * icu/unicode/fieldpos.h: Added.
1966         (FieldPosition::operator=):
1967         (FieldPosition::operator==):
1968         (FieldPosition::operator!=):
1969         * icu/unicode/filteredbrk.h: Added.
1970         * icu/unicode/fmtable.h: Added.
1971         (Formattable::getDate):
1972         (Formattable::getString):
1973         (Formattable::getLong):
1974         (Formattable::toUFormattable):
1975         (Formattable::fromUFormattable):
1976         * icu/unicode/format.h: Added.
1977         * icu/unicode/fpositer.h: Added.
1978         * icu/unicode/gender.h: Added.
1979         * icu/unicode/gregocal.h: Added.
1980         * icu/unicode/icudataver.h: Added.
1981         * icu/unicode/icuplug.h: Added.
1982         * icu/unicode/idna.h: Added.
1983         * icu/unicode/listformatter.h: Added.
1984         (ListFormatData::ListFormatData):
1985         * icu/unicode/locdspnm.h: Added.
1986         (LocaleDisplayNames::createInstance):
1987         * icu/unicode/locid.h: Added.
1988         (Locale::operator!=):
1989         (Locale::getCountry):
1990         (Locale::getLanguage):
1991         (Locale::getScript):
1992         (Locale::getVariant):
1993         (Locale::getName):
1994         (Locale::isBogus):
1995         * icu/unicode/measfmt.h: Added.
1996         * icu/unicode/measunit.h: Added.
1997         * icu/unicode/measure.h: Added.
1998         (Measure::getNumber):
1999         (Measure::getUnit):
2000         * icu/unicode/messagepattern.h: Added.
2001         * icu/unicode/msgfmt.h: Added.
2002         * icu/unicode/normalizer2.h: Added.
2003         * icu/unicode/normlzr.h: Added.
2004         (Normalizer::operator!= ):
2005         (Normalizer::quickCheck):
2006         (Normalizer::isNormalized):
2007         (Normalizer::compare):
2008         * icu/unicode/numfmt.h: Added.
2009         (NumberFormat::isParseIntegerOnly):
2010         (NumberFormat::isLenient):
2011         * icu/unicode/numsys.h: Added.
2012         * icu/unicode/parsepos.h: Added.
2013         (ParsePosition::operator=):
2014         (ParsePosition::operator==):
2015         (ParsePosition::operator!=):
2016         (ParsePosition::getIndex):
2017         (ParsePosition::setIndex):
2018         (ParsePosition::getErrorIndex):
2019         (ParsePosition::setErrorIndex):
2020         * icu/unicode/plurfmt.h: Added.
2021         * icu/unicode/plurrule.h: Added.
2022         * icu/unicode/rbbi.h: Added.
2023         (RuleBasedBreakIterator::operator!=):
2024         * icu/unicode/rbnf.h: Added.
2025         (RuleBasedNumberFormat::isLenient):
2026         (RuleBasedNumberFormat::getDefaultRuleSet):
2027         * icu/unicode/rbtz.h: Added.
2028         * icu/unicode/regex.h: Added.
2029         * icu/unicode/region.h: Added.
2030         * icu/unicode/reldatefmt.h: Added.
2031         * icu/unicode/resbund.h: Added.
2032         * icu/unicode/schriter.h: Added.
2033         * icu/unicode/scientificnumberformatter.h: Added.
2034         * icu/unicode/search.h: Added.
2035         (SearchIterator::operator!=):
2036         * icu/unicode/selfmt.h: Added.
2037         * icu/unicode/simpletz.h: Added.
2038         (SimpleTimeZone::setStartRule):
2039         (SimpleTimeZone::setEndRule):
2040         (SimpleTimeZone::getOffset):
2041         * icu/unicode/smpdtfmt.h: Added.
2042         (SimpleDateFormat::get2DigitYearStart):
2043         * icu/unicode/sortkey.h: Added.
2044         (CollationKey::operator!=):
2045         (CollationKey::isBogus):
2046         (CollationKey::getByteArray):
2047         * icu/unicode/stringtriebuilder.h: Added.
2048         * icu/unicode/stsearch.h: Added.
2049         * icu/unicode/symtable.h: Added.
2050         * icu/unicode/tblcoll.h: Added.
2051         * icu/unicode/timezone.h: Added.
2052         (TimeZone::getID):
2053         (TimeZone::setID):
2054         * icu/unicode/tmunit.h: Added.
2055         * icu/unicode/tmutamt.h: Added.
2056         (TimeUnitAmount::operator!=):
2057         * icu/unicode/tmutfmt.h: Added.
2058         (TimeUnitFormat::operator!=):
2059         * icu/unicode/translit.h: Added.
2060         (Transliterator::getMaximumContextLength):
2061         (Transliterator::setID):
2062         (Transliterator::integerToken):
2063         (Transliterator::pointerToken):
2064         * icu/unicode/tzfmt.h: Added.
2065         * icu/unicode/tznames.h: Added.
2066         * icu/unicode/tzrule.h: Added.
2067         * icu/unicode/tztrans.h: Added.
2068         * icu/unicode/ubidi.h: Added.
2069         * icu/unicode/ucal.h: Renamed from Source/JavaScriptCore/icu/unicode/ucal.h.
2070         * icu/unicode/ucasemap.h: Added.
2071         * icu/unicode/ucat.h: Added.
2072         * icu/unicode/ucharstrie.h: Added.
2073         * icu/unicode/ucharstriebuilder.h: Added.
2074         * icu/unicode/uchriter.h: Added.
2075         * icu/unicode/uclean.h: Added.
2076         * icu/unicode/ucnv_cb.h: Renamed from Source/WebCore/icu/unicode/ucnv_cb.h.
2077         * icu/unicode/ucnvsel.h: Added.
2078         * icu/unicode/ucoleitr.h: Renamed from Source/WebCore/icu/unicode/ucoleitr.h.
2079         * icu/unicode/uconfig.h:
2080         * icu/unicode/ucsdet.h: Renamed from Source/WebCore/icu/unicode/ucsdet.h.
2081         * icu/unicode/udat.h: Renamed from Source/JavaScriptCore/icu/unicode/udat.h.
2082         * icu/unicode/udata.h: Added.
2083         * icu/unicode/udateintervalformat.h: Added.
2084         * icu/unicode/udatpg.h: Renamed from Source/JavaScriptCore/icu/unicode/udatpg.h.
2085         * icu/unicode/udisplaycontext.h: Renamed from Source/JavaScriptCore/icu/unicode/udisplaycontext.h.
2086         * icu/unicode/ufieldpositer.h: Renamed from Source/JavaScriptCore/icu/unicode/ufieldpositer.h.
2087         * icu/unicode/uformattable.h: Renamed from Source/JavaScriptCore/icu/unicode/uformattable.h.
2088         * icu/unicode/ugender.h: Added.
2089         * icu/unicode/uidna.h: Renamed from Source/WebCore/icu/unicode/uidna.h.
2090         * icu/unicode/uldnames.h: Added.
2091         * icu/unicode/ulistformatter.h: Added.
2092         * icu/unicode/ulocdata.h: Added.
2093         * icu/unicode/umisc.h: Renamed from Source/JavaScriptCore/icu/unicode/umisc.h.
2094         * icu/unicode/umsg.h: Added.
2095         * icu/unicode/unifilt.h: Added.
2096         * icu/unicode/unifunct.h: Added.
2097         * icu/unicode/unimatch.h: Added.
2098         * icu/unicode/unirepl.h: Added.
2099         * icu/unicode/uniset.h: Added.
2100         (UnicodeSet::operator!=):
2101         (UnicodeSet::isFrozen):
2102         (UnicodeSet::containsSome):
2103         (UnicodeSet::isBogus):
2104         (UnicodeSet::fromUSet):
2105         (UnicodeSet::toUSet):
2106         (UnicodeSet::span):
2107         (UnicodeSet::spanBack):
2108         * icu/unicode/unum.h: Renamed from Source/JavaScriptCore/icu/unicode/unum.h.
2109         * icu/unicode/unumsys.h: Renamed from Source/JavaScriptCore/icu/unicode/unumsys.h.
2110         * icu/unicode/upluralrules.h: Added.
2111         * icu/unicode/uregex.h: Added.
2112         * icu/unicode/uregion.h: Added.
2113         * icu/unicode/urep.h: Added.
2114         * icu/unicode/ures.h: Added.
2115         (ures_getUnicodeString):
2116         (ures_getNextUnicodeString):
2117         (ures_getUnicodeStringByIndex):
2118         (ures_getUnicodeStringByKey):
2119         * icu/unicode/usearch.h: Renamed from Source/WebCore/icu/unicode/usearch.h.
2120         * icu/unicode/usetiter.h: Added.
2121         (UnicodeSetIterator::isString):
2122         (UnicodeSetIterator::getCodepoint):
2123         (UnicodeSetIterator::getCodepointEnd):
2124         * icu/unicode/ushape.h: Renamed from Source/WebCore/icu/unicode/ushape.h.
2125         * icu/unicode/usprep.h: Added.
2126         * icu/unicode/ustdio.h: Added.
2127         * icu/unicode/ustream.h: Added.
2128         * icu/unicode/ustringtrie.h: Added.
2129         * icu/unicode/utf32.h: Added.
2130         * icu/unicode/utmscale.h: Added.
2131         * icu/unicode/utrace.h: Added.
2132         * icu/unicode/utrans.h: Added.
2133         * icu/unicode/utypes.h:
2134         * icu/unicode/vtzone.h: Added.
2135
2136 2017-07-03  Keith Miller  <keith_miller@apple.com>
2137
2138         Fix ifndef in Assertions.h
2139         https://bugs.webkit.org/show_bug.cgi?id=174104
2140
2141         Reviewed by Saam Barati.
2142
2143         The ifndef should have been checking for
2144         CRASH_WITH_SECURITY_IMPLICATION_AND_INFO since that is what the
2145         ifndef defines.
2146
2147         * wtf/Assertions.h:
2148
2149 2017-07-03  Andy Estes  <aestes@apple.com>
2150
2151         [Xcode] Add an experimental setting to build with ccache
2152         https://bugs.webkit.org/show_bug.cgi?id=173875
2153
2154         Reviewed by Tim Horton.
2155
2156         * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
2157
2158 2017-07-03  Daewoong Jang  <daewoong.jang@navercorp.com>
2159
2160         Remove an unused function export
2161         https://bugs.webkit.org/show_bug.cgi?id=174084
2162
2163         Reviewed by Yusuke Suzuki.
2164
2165         * wtf/Threading.h:
2166
2167 2017-07-02  Yusuke Suzuki  <utatane.tea@gmail.com>
2168
2169         WTF::Thread should have the threads stack bounds.
2170         https://bugs.webkit.org/show_bug.cgi?id=173975
2171
2172         Reviewed by Mark Lam.
2173
2174         We move StackBounds from WTFThreadData to WTF::Thread.
2175         One important thing is that we should make valid StackBounds
2176         visible to Thread::create() caller. When the caller get
2177         WTF::Thread from Thread::create(), this WTF::Thread should
2178         have a valid StackBounds. But StackBounds information can be
2179         retrived only in the WTF::Thread's thread itself.
2180
2181         * wtf/StackBounds.h:
2182         (WTF::StackBounds::emptyBounds):
2183         (WTF::StackBounds::StackBounds):
2184         * wtf/StackStats.cpp:
2185         (WTF::StackStats::PerThreadStats::PerThreadStats):
2186         * wtf/Threading.cpp:
2187         (WTF::threadEntryPoint):
2188         (WTF::Thread::create):
2189         (WTF::Thread::currentMayBeNull):
2190         (WTF::Thread::initialize):
2191         * wtf/Threading.h:
2192         (WTF::Thread::stack):
2193         * wtf/ThreadingPthreads.cpp:
2194         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
2195         (WTF::Thread::current):
2196         (WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
2197         (WTF::Thread::currentMayBeNull): Deleted.
2198         * wtf/ThreadingWin.cpp:
2199         (WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
2200         (WTF::Thread::initializeCurrentThreadInternal):
2201         (WTF::Thread::current):
2202         * wtf/WTFThreadData.cpp:
2203         (WTF::WTFThreadData::WTFThreadData):
2204         * wtf/WTFThreadData.h:
2205         (WTF::WTFThreadData::stack): Deleted.
2206
2207 2017-07-01  Dan Bernstein  <mitz@apple.com>
2208
2209         [iOS] Remove code only needed when building for iOS 9.x
2210         https://bugs.webkit.org/show_bug.cgi?id=174068
2211
2212         Reviewed by Tim Horton.
2213
2214         * wtf/Platform.h:
2215         * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
2216         * wtf/spi/darwin/dyldSPI.h:
2217
2218 2017-07-01  Caio Lima  <ticaiolima@gmail.com>
2219
2220         [JSC] WTFGetBacktrace can return numberOfFrames == 0 in some architectures
2221         https://bugs.webkit.org/show_bug.cgi?id=172768
2222
2223         Reviewed by Mark Lam.
2224
2225         In some architectures, like ARMv6 running on a Raspberry pi, the
2226         backtrace function from "execinfo.h" is returning 0. In
2227         that case, the RELEASE_ASSERT in StackTrace::captureStackTrace
2228         fails causing a runtime crash.
2229         This patch is adding a guard for the case described above to
2230         avoid a runtime crash in such case.
2231
2232         * wtf/StackTrace.cpp:
2233         (WTF::StackTrace::captureStackTrace):
2234
2235 2017-07-01  Dan Bernstein  <mitz@apple.com>
2236
2237         [macOS] Remove code only needed when building for OS X Yosemite
2238         https://bugs.webkit.org/show_bug.cgi?id=174067
2239
2240         Reviewed by Tim Horton.
2241
2242         * Configurations/Base.xcconfig:
2243         * Configurations/DebugRelease.xcconfig:
2244         * wtf/Platform.h:
2245         * wtf/mac/AppKitCompatibilityDeclarations.h:
2246         * wtf/spi/cocoa/SecuritySPI.h:
2247         * wtf/text/TextBreakIterator.cpp:
2248
2249 2017-07-01  Joseph Pecoraro  <pecoraro@apple.com>
2250
2251         Add a warning if WEBGL2 is enabled without WEBGL
2252         https://bugs.webkit.org/show_bug.cgi?id=174054
2253
2254         Reviewed by Sam Weinig.
2255
2256         * wtf/FeatureDefines.h:
2257
2258 2017-06-30  Keith Miller  <keith_miller@apple.com>
2259
2260         Force crashWithInfo to be out of line.
2261         https://bugs.webkit.org/show_bug.cgi?id=174028
2262
2263         Reviewed by Filip Pizlo.
2264
2265         The first pass at making crashes hold information about why they
2266         were crashing had the problem that it would inline the assertion.
2267         This meant that clang could coalesce DFG_ASSERTS with other
2268         assertion failures in the same function. This patch moves it out
2269         of line to help fix that issue.
2270
2271         * wtf/Assertions.cpp:
2272         (WTFCrashWithInfo):
2273         * wtf/Assertions.h:
2274         (WTF::isIntegralType):
2275
2276 2017-06-30  Yusuke Suzuki  <utatane.tea@gmail.com>
2277
2278         [WTF] Drop SymbolRegistry::keyForSymbol
2279         https://bugs.webkit.org/show_bug.cgi?id=174052
2280
2281         Reviewed by Sam Weinig.
2282
2283         Since we can know whether a given symbol is registered by checking RegisteredSymbolImpl,
2284         we do not need to query key string for a given symbol by using SymbolRegistry::keyForSymbol.
2285
2286         * wtf/text/SymbolImpl.h:
2287         (WTF::SymbolImpl::extractFoldedString): Deleted.
2288         * wtf/text/SymbolRegistry.cpp:
2289         (WTF::SymbolRegistry::keyForSymbol): Deleted.
2290         * wtf/text/SymbolRegistry.h:
2291
2292 2017-06-29  Jer Noble  <jer.noble@apple.com>
2293
2294         Make Legacy EME API controlled by RuntimeEnabled setting.
2295         https://bugs.webkit.org/show_bug.cgi?id=173994
2296
2297         Reviewed by Sam Weinig.
2298
2299         * wtf/FeatureDefines.h:
2300
2301 2017-06-30  Ryosuke Niwa  <rniwa@webkit.org>
2302
2303         Ran sort-Xcode-project-file.
2304
2305         * WTF.xcodeproj/project.pbxproj:
2306
2307 2017-06-30  Matt Lewis  <jlewis3@apple.com>
2308
2309         Unreviewed, rolling out r218992.
2310
2311         The patch broke the iOS device builds.
2312
2313         Reverted changeset:
2314
2315         "DFG_ASSERT should allow stuffing registers before trapping."
2316         https://bugs.webkit.org/show_bug.cgi?id=174005
2317         http://trac.webkit.org/changeset/218992
2318
2319 2017-06-30  Keith Miller  <keith_miller@apple.com>
2320
2321         DFG_ASSERT should allow stuffing registers before trapping.
2322         https://bugs.webkit.org/show_bug.cgi?id=174005
2323
2324         Reviewed by Mark Lam.
2325
2326         Add new template functions that enable stuffing up to five values
2327         into registers before crashing.
2328
2329         * wtf/Assertions.h:
2330         (CRASH_WITH_INFO):
2331
2332 2017-06-28  Brent Fulgham  <bfulgham@apple.com>
2333
2334         Teach ResourceLoadStatistics to recognize changes in the file system
2335         https://bugs.webkit.org/show_bug.cgi?id=173800
2336         <rdar://problem/32937842>
2337
2338         Reviewed by Chris Dumez.
2339
2340         * wtf/DispatchPtr.h: Added (moved from WebKit2)
2341         * wtf/Platform.h: Make sure USE_FILE_LOCK is enabled.
2342
2343 2017-06-28  David Kilzer  <ddkilzer@apple.com>
2344
2345         Fix typo in comment: WordResult => WorkResult
2346
2347         * wtf/AutomaticThread.h:
2348
2349 2017-06-27  Caio Lima  <ticaiolima@gmail.com>
2350
2351         [ESnext] Implement Object Rest - Implementing Object Rest Destructuring
2352         https://bugs.webkit.org/show_bug.cgi?id=167962
2353
2354         Reviewed by Saam Barati.
2355
2356         * wtf/HashSet.h:
2357         (WTF::=):
2358
2359 2017-06-26  Yusuke Suzuki  <utatane.tea@gmail.com>
2360
2361         [WTF] Drop Thread::create(obsolete things) API since we can use lambda
2362         https://bugs.webkit.org/show_bug.cgi?id=173825
2363
2364         Reviewed by Saam Barati.
2365
2366         Thread::create(ThreadFunction, void* data, const char* name) is a bit old API.
2367         Since we have C++ lambda, the above API is simply unnecessary. And C++ lambda
2368         based one is better since the above API needs casting data to and from void*.
2369
2370         * wtf/Function.h:
2371         Avoid ambiguity.
2372         * wtf/ParallelJobsGeneric.cpp:
2373         (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
2374         (WTF::ParallelEnvironment::ThreadPrivate::workerThread): Deleted.
2375         * wtf/ParallelJobsGeneric.h:
2376         * wtf/Threading.cpp:
2377         * wtf/ThreadingWin.cpp:
2378         (WTF::createThread):
2379
2380 2017-06-25  Yusuke Suzuki  <utatane.tea@gmail.com>
2381
2382         initializeThreading() [first] causes WTFCrash due to maxSingleAllocationSize not being initialized
2383         https://bugs.webkit.org/show_bug.cgi?id=173720
2384
2385         Reviewed by Mark Lam.
2386
2387         When using std::numeric_limits<size_t>::max() for global variable's initialization,
2388         it seems that it invokes static constructor to initialize this in VC++.
2389         We avoid this edge case by introducing a workaround using SIZE_MAX here.
2390
2391         When I perform git-grep, there is only one site (this) using std::numeric_limits<>::xxx()
2392         to initialize global variable.
2393
2394         * wtf/FastMalloc.cpp:
2395
2396 2017-06-25  Konstantin Tokarev  <annulen@yandex.ru>
2397
2398         Remove excessive headers from JavaScriptCore
2399         https://bugs.webkit.org/show_bug.cgi?id=173812
2400
2401         Reviewed by Darin Adler.
2402
2403         * wtf/Bag.h:
2404
2405 2017-06-23  Keith Miller  <keith_miller@apple.com>
2406
2407         Switch VMTraps to use halt instructions rather than breakpoint instructions
2408         https://bugs.webkit.org/show_bug.cgi?id=173677
2409         <rdar://problem/32178892>
2410
2411         Reviewed by JF Bastien.
2412
2413         Remove the Trap signal handler code since it plays badly with lldb and combine
2414         SIGBUS with SIGSEGV since distiguishing them is generally non-portable.
2415
2416         Also, update the platform code to only use signaling VMTraps
2417         on where we have an appropriate instruction (x86 and ARM64).
2418
2419         * wtf/Platform.h:
2420         * wtf/threads/Signals.cpp:
2421         (WTF::fromMachException):
2422         (WTF::toMachMask):
2423         (WTF::installSignalHandler):
2424         (WTF::jscSignalHandler):
2425         * wtf/threads/Signals.h:
2426         (WTF::toSystemSignal):
2427         (WTF::fromSystemSignal):
2428
2429 2017-06-23  Antti Koivisto  <antti@apple.com>
2430
2431         Add notifyutil registrations for going in and out of simulated low memory state
2432         https://bugs.webkit.org/show_bug.cgi?id=173797
2433
2434         Reviewed by Andreas Kling.
2435
2436         Add
2437
2438         notifyutil -p org.WebKit.lowMemory.begin
2439         notifyutil -p org.WebKit.lowMemory.end
2440
2441         for debugging.
2442
2443         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
2444         (WTF::MemoryPressureHandler::install):
2445
2446 2017-06-23  Konstantin Tokarev  <annulen@yandex.ru>
2447
2448         Remove more unused headers from WTF
2449         https://bugs.webkit.org/show_bug.cgi?id=173761
2450
2451         Reviewed by Yusuke Suzuki.
2452
2453         * wtf/Liveness.h:
2454         * wtf/PageAllocation.h:
2455         * wtf/ParallelJobs.h:
2456
2457 2017-06-22  Andreas Kling  <akling@apple.com>
2458
2459         Rename MemoryPressureHandler::setTabCount to setPageCount
2460         https://bugs.webkit.org/show_bug.cgi?id=173750
2461
2462         Reviewed by Daniel Bates.
2463
2464         This function is counting WebCore::Page objects (excluding utility Pages used
2465         by SVG-as-image and the web inspector) so let's name it appropriately.
2466         Not all WebKit clients have tabs.
2467
2468         * wtf/MemoryPressureHandler.cpp:
2469         (WTF::MemoryPressureHandler::setPageCount):
2470         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
2471         (WTF::MemoryPressureHandler::measurementTimerFired):
2472         (WTF::MemoryPressureHandler::setTabCount): Deleted.
2473         * wtf/MemoryPressureHandler.h:
2474
2475 2017-06-21  Andreas Kling  <akling@apple.com>
2476
2477         Increase memory kill limits for WebContent processes that manage multiple tabs.
2478         https://bugs.webkit.org/show_bug.cgi?id=173674
2479
2480         Reviewed by Geoffrey Garen.
2481
2482         When opening <a target=_blank> links, we currently have to use the same WebContent
2483         process for the new tab, to support scripting the window.opener object.
2484         This means that some WebContent processes end up hosting multiple tabs, making it
2485         more likely that those processes will hit the memory limits.
2486
2487         Address this by adding some additional allowance for multi-tab processes:
2488
2489             For each additional tab, up to 4 tabs, add 1GB to the memory kill limit.
2490
2491         * wtf/MemoryPressureHandler.cpp:
2492         (WTF::thresholdForMemoryKillWithProcessState):
2493         (WTF::MemoryPressureHandler::setTabCount):
2494         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
2495         (WTF::MemoryPressureHandler::measurementTimerFired):
2496         * wtf/MemoryPressureHandler.h:
2497
2498 2017-06-21  Chris Dumez  <cdumez@apple.com>
2499
2500         Allow constructing a WTF:Function from a function pointer
2501         https://bugs.webkit.org/show_bug.cgi?id=173660
2502
2503         Reviewed by Alex Christensen.
2504
2505         Allow constructing a WTF:Function from a function pointer and
2506         assigning a function pointer to a WTF:Function.
2507
2508         * wtf/Function.h:
2509
2510 2017-06-20  Simon Fraser  <simon.fraser@apple.com>
2511
2512         Remove WILL_REVEAL_EDGE_EVENTS code
2513         https://bugs.webkit.org/show_bug.cgi?id=173632
2514
2515         Reviewed by Sam Weinig, Beth Dakin.
2516
2517         Remove will-reveal-edge events, which never took off.
2518
2519         * wtf/FeatureDefines.h:
2520
2521 2017-06-20  Konstantin Tokarev  <annulen@yandex.ru>
2522
2523         Remove excessive include directives from WTF
2524         https://bugs.webkit.org/show_bug.cgi?id=173553
2525
2526         Reviewed by Saam Barati.
2527
2528         * wtf/AutomaticThread.h:
2529         * wtf/BagToHashMap.h:
2530         * wtf/CrossThreadCopier.h:
2531         * wtf/CrossThreadQueue.h:
2532         * wtf/DateMath.h:
2533         * wtf/Expected.h:
2534         * wtf/HashMap.h:
2535         * wtf/Indenter.h:
2536         * wtf/MessageQueue.h:
2537         * wtf/MetaAllocator.h:
2538         * wtf/MetaAllocatorHandle.h:
2539         * wtf/RandomNumberSeed.h:
2540         * wtf/Ref.h:
2541         * wtf/RefPtr.h:
2542         * wtf/RunLoop.h:
2543         * wtf/SchedulePair.h:
2544         * wtf/StackStats.h:
2545         * wtf/SynchronizedFixedQueue.h:
2546         * wtf/ThreadMessage.h:
2547         * wtf/Threading.cpp:
2548         * wtf/Threading.h:
2549         * wtf/ThreadingPthreads.cpp:
2550         * wtf/ThreadingWin.cpp:
2551         * wtf/WTFThreadData.h:
2552         * wtf/WorkQueue.h:
2553         * wtf/glib/GRefPtr.h:
2554         * wtf/text/AtomicStringTable.h:
2555         * wtf/text/LineBreakIteratorPoolICU.h:
2556
2557 2017-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>
2558
2559         [WTF] Enable WTF::Signals only when HAVE(MACHINE_CONTEXT) is true
2560         https://bugs.webkit.org/show_bug.cgi?id=173590
2561
2562         Reviewed by Carlos Garcia Campos.
2563
2564         WTF::Signals require a feature rewriting a value of a machine context.
2565         This is only available under HAVE(MACHINE_CONTEXT).
2566         This patch disables WTF::Signals on !HAVE(MACHINE_CONTEXT) environments.
2567
2568         * wtf/threads/Signals.cpp:
2569         * wtf/threads/Signals.h:
2570
2571 2017-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>
2572
2573         [WTF] Rebaseline std::optional
2574         https://bugs.webkit.org/show_bug.cgi?id=173582
2575
2576         Reviewed by JF Bastien.
2577
2578         Update the copy of our std::optional to the latest version.
2579         It adds std::optional::has_value() and std::optional::reset().
2580
2581         * wtf/Optional.h:
2582
2583 2017-06-18  Yusuke Suzuki  <utatane.tea@gmail.com>
2584
2585         [WTF] Include execinfo.h and dlfcn.h based on platform defines
2586         https://bugs.webkit.org/show_bug.cgi?id=173531
2587
2588         Reviewed by Alex Christensen.
2589
2590         execinfo.h and dlfcn.h can be missing in some libc libraries.
2591         When including it, we should honor platform defines like HAVE(DLADDR).
2592
2593         * wtf/StackTrace.cpp:
2594
2595 2017-06-18  Darin Adler  <darin@apple.com>
2596
2597         Fix Ref to deref before assignment, add tests for this to RefPtr, Ref, Function
2598         https://bugs.webkit.org/show_bug.cgi?id=173526
2599
2600         Reviewed by Sam Weinig.
2601
2602         * wtf/Ref.h: Changed operator= to not be defined inside the class definition.
2603         Added swap functions. Changed operator= implementations to use swap in the
2604         conventional manner, the same way that RefPtr does.
2605
2606 2017-06-18  Chris Dumez  <cdumez@apple.com>
2607
2608         Use WTF::Function instead of std::function in WTF/
2609         https://bugs.webkit.org/show_bug.cgi?id=173519
2610
2611         Reviewed by Sam Weinig.
2612
2613         Use WTF::Function instead of std::function in WTF/ to avoid
2614         copying.
2615
2616         * wtf/Brigand.h:
2617         * wtf/Condition.h:
2618         * wtf/Expected.h:
2619         * wtf/FunctionDispatcher.h:
2620         * wtf/MainThread.h:
2621         * wtf/MemoryPressureHandler.h:
2622         (WTF::MemoryPressureHandler::setMemoryKillCallback):
2623         (WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
2624         (WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):
2625         * wtf/Optional.h:
2626         * wtf/ParkingLot.h:
2627         * wtf/RefCounter.h:
2628         (WTF::RefCounter<T>::RefCounter):
2629         * wtf/WorkQueue.h:
2630         * wtf/linux/MemoryPressureHandlerLinux.cpp:
2631         (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
2632         * wtf/text/WTFString.cpp:
2633         (WTF::String::split):
2634         * wtf/text/WTFString.h:
2635
2636 2017-06-16  Alex Christensen  <achristensen@webkit.org>
2637
2638         Fix Mac CMake build.
2639
2640         * wtf/PlatformMac.cmake:
2641         Generate MachExceptionsServer.h
2642
2643 2017-06-16  Wenson Hsieh  <wenson_hsieh@apple.com>
2644
2645         [iOS DnD] Upstream iOS drag and drop implementation into OpenSource WebKit
2646         https://bugs.webkit.org/show_bug.cgi?id=173366
2647         <rdar://problem/32767014>
2648
2649         Reviewed by Tim Horton.
2650
2651         Define ENABLE_DRAG_SUPPORT as 1 by default and 0 for iOS, and define ENABLE_DATA_INTERACTION as 0 by default.
2652         These are overridden to both be 1 for iOS 11+ in the FeatureDefines.xcconfig within each individual project.
2653
2654         * wtf/Platform.h:
2655
2656 2017-06-15  Chris Dumez  <cdumez@apple.com>
2657
2658         Fix typo in XPCSPI.h
2659         https://bugs.webkit.org/show_bug.cgi?id=173426
2660
2661         Reviewed by Alex Christensen.
2662
2663         We should check if xpc_release is defined before defining it,
2664         not xpc_retain.
2665
2666         * wtf/spi/darwin/XPCSPI.h:
2667
2668 2017-06-15  Konstantin Tokarev  <annulen@yandex.ru>
2669
2670         Implement FALLTHROUGH macro for compilers other than Clang
2671         https://bugs.webkit.org/show_bug.cgi?id=173385
2672
2673         Reviewed by Alex Christensen.
2674
2675         FALLTHROUGH should be able to use [[gnu::fallthrough]] attribute of
2676         GCC, and [[fallthrough]] from C++17, whichever is available.
2677
2678         * wtf/Compiler.h:
2679
2680 2017-06-14  Nael Ouedraogo  <nael.ouedraogo@crf.canon.fr>
2681
2682         MediaSource duration attribute should not be equal to Infinity when set to a value greater than 2^64
2683         https://bugs.webkit.org/show_bug.cgi?id=171668
2684
2685         Reviewed by Jer Noble.
2686
2687         MediaSource duration attribute is a double represented in MediaSource by a MediaTime instance created with
2688         MediaTime::CreateWithDouble(). This method implements an overflow control mechanism which sets MediaTime to
2689         Infinity when the double value passed as argument is greater than 2^64.
2690
2691         This patch removes the overflow control mechanism when time value is represented as a double. This patch also
2692         modifies the behavior of mathematical operations between a double MediaTime and rational MediaTime: the rational
2693         MediaTime is converted to a double before applying the operation. Double MediaTime precision is the same as for
2694         double. Overflow mechanisms still apply to the conversion of a double MediaTime to rational with setTimescale()
2695         method. No behavior change for rational MediaTime.
2696
2697         * wtf/MediaTime.cpp:
2698         (WTF::MediaTime::createWithFloat):
2699         (WTF::MediaTime::createWithDouble):
2700         (WTF::MediaTime::operator+):
2701         (WTF::MediaTime::operator-):
2702
2703 2017-06-13  Zan Dobersek  <zdobersek@igalia.com>
2704
2705         [GTK][WPE] Use CMAKE_THREAD_LIBS_INIT in WTF platform CMake files
2706         https://bugs.webkit.org/show_bug.cgi?id=173310
2707
2708         Reviewed by Xabier Rodriguez-Calvar.
2709
2710         In the WTF platform CMake files for the GTK+ and WPE ports, use the
2711         CMAKE_THREAD_LIBS_INIT variable to specify the threading library we
2712         should be linking against. On some platforms this variable will be
2713         empty because the given compiler will automatically handle the -pthread
2714         compiler flag and sort out linking on its own.
2715
2716         The same approach is already used for the JSCOnly configuration.
2717
2718         * wtf/PlatformGTK.cmake:
2719         * wtf/PlatformWPE.cmake:
2720
2721 2017-06-13  Youenn Fablet  <youenn@apple.com>
2722
2723         Filter SDP from ICE candidates in case of local ICE candidate filtering
2724         https://bugs.webkit.org/show_bug.cgi?id=173120
2725
2726         Reviewed by Eric Carlson.
2727
2728         Adding split helper routine with functor parameter.
2729
2730         * wtf/text/WTFString.cpp:
2731         (WTF::String::split):
2732         * wtf/text/WTFString.h:
2733         (WTF::String::contains):
2734
2735 2017-06-13  Don Olmstead  <don.olmstead@sony.com>
2736
2737         [WTF] Remove redundant includes in config.h
2738         https://bugs.webkit.org/show_bug.cgi?id=173292
2739
2740         Reviewed by Alex Christensen.
2741
2742         * config.h:
2743         * wtf/ExportMacros.h:
2744
2745 2017-06-12  Jer Noble  <jer.noble@apple.com>
2746
2747         Screen sleeps while doing WebRTC video
2748         https://bugs.webkit.org/show_bug.cgi?id=173278
2749
2750         Reviewed by Eric Carlson.
2751
2752         Drive-by fix: add some generic methods for iterating over collections.
2753
2754         * WTF.xcodeproj/project.pbxproj:
2755         * wtf/Algorithms.h: Added.
2756         (WTF::forEach):
2757         (WTF::anyOf):
2758         (WTF::allOf):
2759
2760 2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>
2761
2762         [GTK] Move WebKit GType macros to WTF
2763         https://bugs.webkit.org/show_bug.cgi?id=173249
2764
2765         Reviewed by Žan Doberšek.
2766
2767         They can be used by glib-based ports and eventually by JavaScriptCore glib bindings too.
2768
2769         * wtf/glib/WTFGType.h: Copied from Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h.
2770
2771 2017-06-11  Yusuke Suzuki  <utatane.tea@gmail.com>
2772
2773         [WTF] Make ThreadMessage portable
2774         https://bugs.webkit.org/show_bug.cgi?id=172073
2775
2776         Reviewed by Keith Miller.
2777
2778         Recently, we change ThreadMessage semantics: message handler
2779         can be executed in the sender thread.
2780         This allows ThreadMessage to be implemented in a portable way.
2781
2782         This patch implements ThreadMessage for all the platforms.
2783         We use platform-independent Thread APIs, suspend(), resume(),
2784         and getRegisters().
2785
2786         * wtf/PlatformRegisters.h:
2787         (WTF::registersFromUContext):
2788         * wtf/ThreadMessage.cpp:
2789         (WTF::sendMessageScoped):
2790         (WTF::ThreadMessageData::ThreadMessageData): Deleted.
2791         (): Deleted.
2792         (WTF::initializeThreadMessages): Deleted.
2793         (WTF::sendMessageUsingSignal): Deleted.
2794         (WTF::sendMessageUsingMach): Deleted.
2795         (WTF::deliverMessagesUsingMach): Deleted.
2796         * wtf/ThreadMessage.h:
2797         * wtf/Threading.cpp:
2798         (WTF::initializeThreading):
2799         * wtf/Threading.h:
2800         (WTF::Thread::threadMessages): Deleted.
2801         * wtf/ThreadingPthreads.cpp:
2802         (WTF::Thread::signalHandlerSuspendResume):
2803         (WTF::threadStateMetadata):
2804         (WTF::Thread::getRegisters):
2805         * wtf/threads/Signals.cpp:
2806         (WTF::handleSignalsWithMach):
2807
2808 2017-06-11  Yusuke Suzuki  <utatane.tea@gmail.com>
2809
2810         [WTF] Drop unnecessary includes in Threading.h
2811         https://bugs.webkit.org/show_bug.cgi?id=173167
2812
2813         Reviewed by Darin Adler.
2814
2815         Threading.h includes bunch of headers. But some of them are not necessary.
2816         This patch cleans up it a bit.
2817
2818         * wtf/Assertions.cpp:
2819         * wtf/LocklessBag.h:
2820         * wtf/Threading.h:
2821         * wtf/ThreadingPrimitives.h:
2822
2823 2017-06-10  Yusuke Suzuki  <utatane.tea@gmail.com>
2824
2825         [WTF] Add RegisteredSymbolImpl
2826         https://bugs.webkit.org/show_bug.cgi?id=173230
2827
2828         Reviewed by Mark Lam.
2829
2830         Most symbols are not registered in SymbolRegistry. However, we currently always
2831         allocate a pointer member to point to a SymbolRegistry, and this pointer is always null.
2832         SymbolImpl is immutable, and it will never be registered with a SymbolRegistry
2833         after it is created. Hence, this member is wasteful.
2834
2835         Instead, we add a new derived class RegisteredSymbolImpl, which will set a flag in
2836         SymbolImpl to indicate that it is registered with a SymbolRegistry. The only way to
2837         create a RegisteredSymbolImpl is via a factory method provided by the SymbolRegistry.
2838         The factory method will pass the SymbolRegistry this pointer to the RegisteredSymbolImpl's
2839         constructor for initializing the RegisteredSymbolImpl's m_symbolRegistry field.
2840         By doing so,
2841
2842         1. We do not need to set m_symbolRegistry after creating a Symbol. It is clean.
2843         2. We reduce the size of SymbolImpls that do not need to be registered.
2844
2845         * wtf/text/StringImpl.cpp:
2846         (WTF::StringImpl::~StringImpl):
2847         * wtf/text/StringImpl.h:
2848         * wtf/text/SymbolImpl.cpp:
2849         (WTF::SymbolImpl::create):
2850         (WTF::RegisteredSymbolImpl::create):
2851         * wtf/text/SymbolImpl.h:
2852         (WTF::SymbolImpl::hashForSymbol):
2853         (WTF::SymbolImpl::isRegistered):
2854         (WTF::SymbolImpl::SymbolImpl):
2855         (WTF::RegisteredSymbolImpl::symbolRegistry):
2856         (WTF::RegisteredSymbolImpl::clearSymbolRegistry):
2857         (WTF::RegisteredSymbolImpl::RegisteredSymbolImpl):
2858         (WTF::SymbolImpl::symbolRegistry):
2859         * wtf/text/SymbolRegistry.cpp:
2860         (WTF::SymbolRegistry::~SymbolRegistry):
2861         (WTF::SymbolRegistry::symbolForKey):
2862         (WTF::SymbolRegistry::keyForSymbol):
2863         (WTF::SymbolRegistry::remove):
2864         * wtf/text/SymbolRegistry.h:
2865
2866 2017-06-10  Dan Bernstein  <mitz@apple.com>
2867
2868         Reverted r218056 because it made the IDE reindex constantly.
2869
2870         * Configurations/DebugRelease.xcconfig:
2871
2872 2017-06-10  Dan Bernstein  <mitz@apple.com>
2873
2874         [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
2875         https://bugs.webkit.org/show_bug.cgi?id=173223
2876
2877         Reviewed by Sam Weinig.
2878
2879         The rebuilds were happening due to a difference in the compiler options that the IDE and
2880         xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
2881         xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
2882         specify an appropriate path in CLANG_INDEX_STORE_PATH.
2883
2884         * Configurations/DebugRelease.xcconfig:
2885
2886 2017-06-09  Chris Dumez  <cdumez@apple.com>
2887
2888         Update Thread::create() to take in a WTF::Function instead of a std::function
2889         https://bugs.webkit.org/show_bug.cgi?id=173175
2890
2891         Reviewed by Mark Lam.
2892
2893         Update Thread::create() to take in a WTF::Function instead of a std::function. Unlike
2894         std::function, WTF:Function is not copyable and does not make implicit copies of captured
2895         variables. Doing captures such as [string = string.isolatedCopy()] when passing an
2896         std::function to another thread has lead to bugs in the past due to implicit copying of
2897         the captured string.
2898
2899         * wtf/Threading.cpp:
2900         (WTF::Thread::create):
2901         * wtf/Threading.h:
2902
2903 2017-06-09  Chris Dumez  <cdumez@apple.com>
2904
2905         Update WorkQueue::concurrentApply() to take a WTF::Function instead of an std::function
2906         https://bugs.webkit.org/show_bug.cgi?id=173165
2907
2908         Reviewed by Saam Barati.
2909
2910         Update WorkQueue::concurrentApply() to take a WTF::Function instead of an std::function
2911         as std::function has issues with regards to thread safety.
2912
2913         * wtf/WorkQueue.h:
2914         * wtf/cocoa/WorkQueueCocoa.cpp:
2915         (WTF::WorkQueue::concurrentApply):
2916
2917 2017-06-08  Xabier Rodriguez Calvar  <calvaris@igalia.com>
2918
2919         MediaTime class has rounding issues in different platforms
2920         https://bugs.webkit.org/show_bug.cgi?id=172640
2921
2922         Reviewed by Jer Noble.
2923
2924         The way a timescale is set when creating a MediaTime from a double
2925         can create rounding issues in different platforms because in some
2926         rounding is made and in others, it truncates. This way we ensure a
2927         common behavior.
2928
2929         Dumping MediaTimes is also confusing and by the output you don't
2930         know if it's containing a double or a fraction. Now, if it
2931         contains a double, it only prints the double because printing the
2932         fraction is misleading (it currently prints the double read as an
2933         integer) and if it contains a fraction it shows the fraction and
2934         its double representation separated by an = instead of a ,.
2935
2936         * wtf/MediaTime.cpp:
2937         (WTF::MediaTime::createWithDouble): When creating MediaTime from
2938         double, we round instead of leaving it to the cast operation.
2939         (WTF::MediaTime::dump):
2940
2941 2017-06-07  Jer Noble  <jer.noble@apple.com>
2942
2943         Refactoring: MediaEngineSupportParameters should take a ContentType rather than separate type & codecs strings
2944         https://bugs.webkit.org/show_bug.cgi?id=173038
2945
2946         Reviewed by Eric Carlson.
2947
2948         Drive by fix: add a version of split that takes a UChar and returns a Vector<String>.
2949
2950         * wtf/text/WTFString.h:
2951         (WTF::String::split):
2952
2953 2017-06-07  Zan Dobersek  <zdobersek@igalia.com>
2954
2955         [GCrypt] RSA-PSS support
2956         https://bugs.webkit.org/show_bug.cgi?id=172856
2957
2958         Reviewed by Jiewen Tan.
2959
2960         * wtf/Platform.h: Define HAVE_RSA_PSS to 1 for USE(GCRYPT). Support for RSA-PSS
2961         is provided by default through the libgcrypt library.
2962
2963 2017-06-06  Chris Dumez  <cdumez@apple.com>
2964
2965         Unreviewed, rolling out r214974.
2966
2967         Causes some tabs to start using a huge amount of CPU after 8
2968         minutes in the background
2969
2970         Reverted changeset:
2971
2972         "Make inactive web processes behave as though under memory
2973         pressure."
2974         https://bugs.webkit.org/show_bug.cgi?id=170042
2975         http://trac.webkit.org/changeset/214974
2976
2977 2017-06-06  Don Olmstead  <don.olmstead@am.sony.com>
2978
2979         [WebCore] Enable REQUEST_ANIMATION_FRAME_TIMER for all ports
2980         https://bugs.webkit.org/show_bug.cgi?id=172780
2981
2982         Reviewed by Alex Christensen.
2983
2984         * wtf/Platform.h:
2985
2986 2017-06-06  Darin Adler  <darin@apple.com>
2987
2988         Cut down use of WTF_ARRAY_LENGTH
2989         https://bugs.webkit.org/show_bug.cgi?id=172997
2990
2991         Reviewed by Chris Dumez.
2992
2993         * wtf/DateMath.cpp:
2994         (WTF::equalLettersIgnoringASCIICase): Added helper function template.
2995         (WTF::parseDateFromNullTerminatedCharacters): Use a modern for loop instead of
2996         WTF_ARRAY_LENGTH. Use startsWithLettersIgnoringASCIICase and
2997         equalLettersIgnoringASCIICase instead of strncasecmp.
2998
2999         * wtf/text/IntegerToStringConversion.h:
3000         (WTF::numberToStringImpl): Use std::end instead of WTF_ARRAY_LENGTH.
3001         (WTF::writeNumberToBufferImpl): Ditto.
3002
3003 2017-06-06  Filip Pizlo  <fpizlo@apple.com>
3004
3005         index out of bound in bytecodebasicblock
3006         https://bugs.webkit.org/show_bug.cgi?id=172963
3007
3008         Reviewed by Saam Barati and Mark Lam.
3009
3010         * wtf/Assertions.h:
3011         (UNREACHABLE_FOR_PLATFORM):
3012
3013 2017-06-05  Jer Noble  <jer.noble@apple.com>
3014
3015         Allow clients to specify a list of codecs which should require hardware decode support.
3016         https://bugs.webkit.org/show_bug.cgi?id=172787
3017
3018         Reviewed by Alex Christensen.
3019
3020         Add a couple of convenience methods:
3021         - a String::split() that returns a vector (rather than taking an out-reference to a vector).
3022         - A Vector::map() template which takes a Callable and returns a Vector of a different type.
3023
3024         * wtf/Vector.h:
3025         (WTF::Vector::map):
3026         * wtf/text/WTFString.h:
3027         (WTF::String::split):
3028
3029 2017-06-04  Konstantin Tokarev  <annulen@yandex.ru>
3030
3031         Fix build of Windows-specific code with ICU 59.1
3032         https://bugs.webkit.org/show_bug.cgi?id=172729
3033
3034         Reviewed by Darin Adler.
3035
3036         * wtf/text/win/WCharStringExtras.h: Added new header file wuth helper
3037         functions for conversion between WTF::String and wchart_t*.
3038         (WTF::stringToNullTerminatedWChar):
3039         (WTF::wcharToString):
3040         (WTF::nullTerminatedWCharToString):
3041
3042 2017-06-02  Stephan Szabo  <stephan.szabo@am.sony.com>
3043
3044         [JSCOnly] Build static jsc.exe on Windows
3045         https://bugs.webkit.org/show_bug.cgi?id=172833
3046
3047         Reviewed by Konstantin Tokarev.
3048
3049         * wtf/PlatformJSCOnly.cmake:
3050
3051 2017-06-02  Simon Fraser  <simon.fraser@apple.com>
3052
3053         Get <chrono> out of StdLibExtras.h
3054         https://bugs.webkit.org/show_bug.cgi?id=172744
3055
3056         Reviewed by Zalan Bujtas.
3057
3058         We hates std::chrono. Don't include it everywhere to discourage use.
3059
3060         * wtf/StdLibExtras.h:
3061
3062 2017-06-02  Filip Pizlo  <fpizlo@apple.com>
3063
3064         Atomics.load and Atomics.store need to be fully fenced
3065         https://bugs.webkit.org/show_bug.cgi?id=172844
3066
3067         Reviewed by Keith Miller.
3068         
3069         Add loadFullyFenced and storeFullyFenced to Atomic<>.
3070
3071         * wtf/Atomics.h:
3072         (WTF::Atomic::loadFullyFenced):
3073         (WTF::Atomic::storeRelaxed):
3074         (WTF::Atomic::storeFullyFenced):
3075         (WTF::atomicLoadFullyFenced):
3076         (WTF::atomicStoreFullyFenced):
3077
3078 2017-06-01  Keith Miller  <keith_miller@apple.com>
3079
3080         Undo rollout in r217638 with bug fix
3081         https://bugs.webkit.org/show_bug.cgi?id=172824
3082
3083         Unreviewed, reland patch with unused set_state code removed.
3084
3085         * Configurations/WTF.xcconfig:
3086         * WTF.xcodeproj/project.pbxproj:
3087         * wtf/Platform.h:
3088         * wtf/PlatformRegisters.h:
3089         (WTF::registersFromUContext):
3090         * wtf/StackBounds.h:
3091         (WTF::StackBounds::StackBounds):
3092         * wtf/ThreadHolder.cpp:
3093         (WTF::ThreadHolder::~ThreadHolder):
3094         * wtf/ThreadMessage.cpp:
3095         (WTF::sendMessageUsingSignal):
3096         (WTF::sendMessageUsingMach):
3097         (WTF::deliverMessagesUsingMach):
3098         (WTF::sendMessageScoped):
3099         * wtf/ThreadMessage.h:
3100         (WTF::sendMessage):
3101         * wtf/Threading.h:
3102         (WTF::Thread::machThread):
3103         * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
3104         * wtf/threads/Signals.cpp:
3105         (WTF::startMachExceptionHandlerThread):
3106         (WTF::fromMachException):
3107         (WTF::toMachMask):
3108         (WTF::handleSignalsWithMach):
3109         (WTF::setExceptionPorts):
3110         (WTF::activeThreads):
3111         (WTF::registerThreadForMachExceptionHandling):
3112         (WTF::unregisterThreadForMachExceptionHandling):
3113         (WTF::installSignalHandler):
3114         (WTF::jscSignalHandler):
3115         * wtf/threads/Signals.h:
3116
3117 2017-05-31  Commit Queue  <commit-queue@webkit.org>
3118
3119         Unreviewed, rolling out r217611 and r217631.
3120         https://bugs.webkit.org/show_bug.cgi?id=172785
3121
3122         "caused wasm-hashset-many.html to become flaky." (Requested by
3123         keith_miller on #webkit).
3124
3125         Reverted changesets:
3126
3127         "Reland r216808, underlying lldb bug has been fixed."
3128         https://bugs.webkit.org/show_bug.cgi?id=172759
3129         http://trac.webkit.org/changeset/217611
3130
3131         "Use dispatch queues for mach exceptions"
3132         https://bugs.webkit.org/show_bug.cgi?id=172775
3133         http://trac.webkit.org/changeset/217631
3134
3135 2017-05-31  Keith Miller  <keith_miller@apple.com>
3136
3137         Use dispatch queues for mach exceptions
3138         https://bugs.webkit.org/show_bug.cgi?id=172775
3139
3140         Reviewed by Geoffrey Garen.
3141
3142         This patch adds support for using a dispatch queue to handle our
3143         mach exceptions. We use a high priority concurrent dispatch queue
3144         to handle our mach exceptions. We don't know the priority of the
3145         thread whose exception we are handling so the most conservative
3146         answer is to respond with a high priority. These events are both
3147         rare and usually quite fast so it is likely not a significant cost
3148         when the thread with an exception has a low priority.
3149
3150         * wtf/threads/Signals.cpp:
3151         (WTF::startMachExceptionHandlerThread):
3152
3153 2017-05-31  Keith Miller  <keith_miller@apple.com>
3154
3155         Reland r216808, underlying lldb bug has been fixed.
3156         https://bugs.webkit.org/show_bug.cgi?id=172759
3157
3158         Unreviewed, relanding old patch. See: rdar://problem/31183352
3159
3160         * Configurations/WTF.xcconfig:
3161         * WTF.xcodeproj/project.pbxproj:
3162         * wtf/Platform.h:
3163         * wtf/PlatformRegisters.h:
3164         (WTF::registersFromUContext):
3165         * wtf/StackBounds.h:
3166         (WTF::StackBounds::StackBounds):
3167         * wtf/ThreadHolder.cpp:
3168         (WTF::ThreadHolder::~ThreadHolder):
3169         * wtf/ThreadMessage.cpp:
3170         (WTF::sendMessageUsingSignal):
3171         (WTF::sendMessageUsingMach):
3172         (WTF::deliverMessagesUsingMach):
3173         (WTF::sendMessageScoped):
3174         * wtf/ThreadMessage.h:
3175         (WTF::sendMessage):
3176         * wtf/Threading.h:
3177         (WTF::Thread::machThread):
3178         * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
3179         * wtf/threads/Signals.cpp:
3180         (WTF::startMachExceptionHandlerThread):
3181         (WTF::fromMachException):
3182         (WTF::toMachMask):
3183         (WTF::handleSignalsWithMach):
3184         (WTF::setExceptionPorts):
3185         (WTF::activeThreads):
3186         (WTF::registerThreadForMachExceptionHandling):
3187         (WTF::unregisterThreadForMachExceptionHandling):
3188         (WTF::installSignalHandler):
3189         (WTF::jscSignalHandler):
3190         * wtf/threads/Signals.h:
3191
3192 2017-05-31  Matt Lewis  <jlewis3@apple.com>
3193
3194         Unreviewed, rolling out r217603.
3195
3196         This patch broke the internal builds.
3197
3198         Reverted changeset:
3199
3200         "Get <chrono> out of StdLibExtras.h"
3201         https://bugs.webkit.org/show_bug.cgi?id=172744
3202         http://trac.webkit.org/changeset/217603
3203
3204 2017-05-31  Simon Fraser  <simon.fraser@apple.com>
3205
3206         Get <chrono> out of StdLibExtras.h
3207         https://bugs.webkit.org/show_bug.cgi?id=172744
3208
3209         Reviewed by Saam Barati.
3210
3211         We hates std::chrono. Don't include it everywhere to discourage use.
3212
3213         * wtf/StdLibExtras.h:
3214
3215 2017-05-30  Ryosuke Niwa  <rniwa@webkit.org>
3216
3217         Only include DataDetectorsUI headers in iOS
3218         https://bugs.webkit.org/show_bug.cgi?id=172633
3219
3220         Reviewed by David Kilzer.
3221
3222         Enable data detectors only on iOS and not other variants of iOS.
3223
3224         * wtf/FeatureDefines.h:
3225         * wtf/Platform.h:
3226
3227 2017-05-29  Yusuke Suzuki  <utatane.tea@gmail.com>
3228
3229         Unreviewed, disable faster Interpreter::getOpcodeID for ARM_THUMB2 with non-Darwin OSes
3230         https://bugs.webkit.org/show_bug.cgi?id=172686
3231
3232         Because of test failures.
3233
3234         * wtf/Platform.h:
3235
3236 2017-05-28  Dan Bernstein  <mitz@apple.com>
3237
3238         [Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
3239         https://bugs.webkit.org/show_bug.cgi?id=172691
3240
3241         Reviewed by Tim Horton.
3242
3243         * Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.
3244
3245 2017-05-28  Yusuke Suzuki  <utatane.tea@gmail.com>
3246
3247         [JSC][Linux][FreeBSD] Use faster Interpreter::getOpcodeID()
3248         https://bugs.webkit.org/show_bug.cgi?id=172686
3249
3250         Reviewed by Mark Lam.
3251
3252         As of r217526, JSC gets faster Interpreter::getOpcodeID() by
3253         embedding OpcodeID value just before the LLInt machine code
3254         handler pointer. By doing so, we can retrieve OpcodeID from
3255         the LLInt machine code handler by dereferencing the code
3256         pointer. `*((int*)ptr - 1)`.
3257
3258         This patch allows Linux and FreeBSD environments to use this
3259         optimization.
3260
3261         * wtf/Platform.h:
3262
3263 2017-05-28  Mark Lam  <mark.lam@apple.com>
3264
3265         Implement a faster Interpreter::getOpcodeID().
3266         https://bugs.webkit.org/show_bug.cgi?id=172669
3267
3268         Reviewed by Saam Barati.
3269
3270         Added the USE(LLINT_EMBEDDED_OPCODE_ID) configuration.
3271
3272         * wtf/Platform.h:
3273
3274 2017-05-26  Brent Fulgham  <bfulgham@apple.com>
3275
3276         [WK2] Address thread safety issues with ResourceLoadStatistics
3277         https://bugs.webkit.org/show_bug.cgi?id=172519
3278         <rdar://problem/31707642>
3279
3280         Reviewed by Chris Dumez.
3281
3282         Add a new specialization for HashSet.
3283
3284         * wtf/CrossThreadCopier.h:
3285
3286 2017-05-26  Ryan Haddad  <ryanhaddad@apple.com>
3287
3288         Unreviewed, rolling out r217458.
3289
3290         This change caused 55 JSC test failures.
3291
3292         Reverted changeset:
3293
3294         "Date should use historical data if it's available."
3295         https://bugs.webkit.org/show_bug.cgi?id=172592
3296         http://trac.webkit.org/changeset/217458
3297
3298 2017-05-25  Keith Miller  <keith_miller@apple.com>
3299
3300         Date should use historical data if it's available.
3301         https://bugs.webkit.org/show_bug.cgi?id=172592
3302
3303         Reviewed by Mark Lam.
3304
3305         The spec previously disallowed using historical data for Dates.
3306         This is no longer the case. Additionally, not using historical
3307         data, when available, seems unfortunate for users. This patch
3308         removes the code dropping historical data.
3309
3310         * wtf/DateMath.cpp:
3311         (WTF::calculateLocalTimeOffset):
3312         (WTF::msToMilliseconds): Deleted.
3313
3314 2017-05-25  Yusuke Suzuki  <utatane.tea@gmail.com>
3315
3316         [Win] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
3317         https://bugs.webkit.org/show_bug.cgi?id=172586
3318
3319         Reviewed by Brent Fulgham.
3320
3321         In ThreadHolder for Windows, we need to construct HashMap<ThreadIdentifier, ThreadHolder*>.
3322         The problem is that ThreadHolder::platformInitialize touches Thread::id() even before Thread
3323         is not established. In that case, id() returns incorrect value.
3324
3325         But, calling ThreadHolder::initialize() after waiting for completion of Thread::establish() is
3326         not a good idea. Since we already have NewThreadContext->creationMutex, we can wait for completion
3327         of Thread::establish() easily. However, if we do so, Thread::create() returns RefPtr<Thread> that
3328         may not call ThreadHolder::initialize() in its thread yet. In that case, ThreadHolder::get() fails.
3329         Thus, Windows WTF::waitForThreadCompletion implementation becomes broken. We can add a new mutex
3330         to wait for completion of ThreadHolder::initialize in the creator of the thread (like a ping-pong!).
3331         But it overly complicates the implementation.
3332
3333         The following is overly complicated initialization phase.
3334
3335         Creator -> AC mutex(1) -------> establishment -> RL mutex(1) ----------------------> AC mutex(2) ->
3336
3337                                Thread -----------------> AC mutex(1) -> ThreadHolder init -> RL mutex(2) ->
3338
3339         So, instead, in this patch, we just use Thread::currentID(). When calling ThreadHolder::initialize(),
3340         we pass ThreadIdentifier by using Thread::currentID(). This implementation works great because,
3341
3342         1. ThreadHolder::initialize requires ThreadIdentifier only in Windows environment because Pthread
3343            ThreadHolder does not create HashMap<>. And this is used for obsolete Threading APIs. Thus this
3344            hack will be removed in the near future.
3345
3346         2. In Windows, Thread::currentID() can return a valid value without using ThreadHolder. And it does
3347            not require Thread establishment. So, calling currentID() to initialize ThreadHolder is ok in
3348            Windows.
3349
3350         * wtf/ThreadHolder.cpp:
3351         (WTF::ThreadHolder::initialize): Deleted.
3352         * wtf/ThreadHolder.h:
3353         * wtf/ThreadHolderPthreads.cpp:
3354         (WTF::ThreadHolder::initialize):
3355         * wtf/ThreadHolderWin.cpp:
3356         (WTF::ThreadHolder::initialize):
3357         (WTF::ThreadHolder::platformInitialize): Deleted.
3358         * wtf/ThreadingWin.cpp:
3359         (WTF::wtfThreadEntryPoint):
3360
3361 2017-05-25  Adrian Perez de Castro  <aperez@igalia.com>
3362
3363         Clang warns about (intended) returning pointer to stack location in WTF/wtf/ThreadingPthreads.cpp
3364         https://bugs.webkit.org/show_bug.cgi?id=172595
3365
3366         Reviewed by Mark Lam.
3367
3368         * wtf/ThreadingPthreads.cpp: Use a #pragma to silence Clang warning about returning a
3369         pointer to the stack (which is intended)
3370
3371 2017-05-25  David Kilzer  <ddkilzer@apple.com>
3372
3373         REGRESSION (r217416): Using #pragma once in WTFString.h broke the build
3374
3375         * wtf/text/WTFString.h: Switch back to #ifndef/#define/#endif.
3376
3377 2017-05-25  David Kilzer  <ddkilzer@apple.com>
3378
3379         Make a change to force a build on the Apple bots
3380
3381         * wtf/text/WTFString.h: Use #pragma once.
3382
3383 2017-05-24  Andreas Kling  <akling@apple.com>
3384
3385         Disable memory kill mechanisms when running with FastMalloc disabled.
3386         https://bugs.webkit.org/show_bug.cgi?id=172550
3387         <rdar://problem/32181908>
3388
3389         Reviewed by Antti Koivisto.
3390
3391         If someone is using WebKit with a non-standard allocator, they are likely trying to debug
3392         or test something, and suddenly getting killed is not gonna help with that.
3393
3394         * wtf/MemoryPressureHandler.cpp:
3395         (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
3396
3397 2017-05-22  Jiewen Tan  <jiewen_tan@apple.com>
3398
3399         [WebCrypto] Support RSA-PSS
3400         https://bugs.webkit.org/show_bug.cgi?id=170869
3401         <rdar://problem/31640672>
3402
3403         Reviewed by Brent Fulgham.
3404
3405         * wtf/Platform.h:
3406         Add a flag to enable RSA-PSS in the future.
3407
3408 2017-05-23  Myles C. Maxfield  <mmaxfield@apple.com>
3409
3410         Remove dead ENABLE(FONT_LOAD_EVENTS) code
3411         https://bugs.webkit.org/show_bug.cgi?id=172517
3412
3413         Rubber-stamped by Simon Fraser.
3414
3415         * wtf/FeatureDefines.h:
3416
3417 2017-05-23  Don Olmstead  <don.olmstead@am.sony.com>
3418
3419         [WTF] Export additional symbols in threading
3420         https://bugs.webkit.org/show_bug.cgi?id=171952
3421
3422         Reviewed by Konstantin Tokarev.
3423
3424         * wtf/ThreadMessage.h:
3425         * wtf/threads/Signals.h:
3426
3427 2017-05-23  Tomas Popela  <tpopela@redhat.com>
3428
3429         [WTF] Compilation fails with system malloc
3430         https://bugs.webkit.org/show_bug.cgi?id=172445
3431
3432         Reviewed by Michael Catanzaro.
3433
3434         We are using the bmalloc even if the system malloc should be used.
3435         Don't use bmalloc if the system malloc is requested and add the
3436         missing implementation for computeRAMSize() on UNIX that's utilizing
3437         the sysinfo() call.
3438
3439         * wtf/RAMSize.cpp:
3440         (WTF::computeRAMSize):
3441
3442 2017-05-22  Brian Burg  <bburg@apple.com>
3443
3444         Add a debugging macro that sleeps a thread until a debugger attaches
3445         https://bugs.webkit.org/show_bug.cgi?id=171575
3446
3447         Reviewed by Mark Lam.
3448
3449         This is really useful for debugging early errors if for some reason you can't
3450         launch a process directly from the debugger easily, such as Web Content processes.
3451
3452         * WTF.xcodeproj/project.pbxproj:
3453         * wtf/Assertions.h:
3454         Always define the WTFBreakpointTrap() macro. Still make it an error if the CPU
3455         type isn't supported for OS(DARWIN); if used on other platforms, cause a WTFCrash()
3456         with a comment that indicates this is not implemented.
3457
3458         * wtf/DebugUtilities.h: Added.
3459
3460 2017-05-19  Don Olmstead  <don.olmstead@am.sony.com>
3461
3462         [WTF] Remove PLATFORM(WIN) references
3463         https://bugs.webkit.org/show_bug.cgi?id=172301
3464
3465         Reviewed by Yusuke Suzuki.
3466
3467         * wtf/MemoryPressureHandler.cpp:
3468         * wtf/MemoryPressureHandler.h:
3469         * wtf/Platform.h:
3470
3471 2017-05-19  Don Olmstead  <don.olmstead@am.sony.com>
3472
3473         [CMake] Add HAVE check for __int128_t
3474         https://bugs.webkit.org/show_bug.cgi?id=172317
3475
3476         Reviewed by Yusuke Suzuki.
3477
3478         * wtf/MediaTime.cpp:
3479         (WTF::MediaTime::setTimeScale):
3480         * wtf/Platform.h:
3481
3482 2017-05-18  Andreas Kling  <akling@apple.com>
3483
3484         [WK2] Notify WebPageProxy client when an active process goes over the inactive memory limit
3485         https://bugs.webkit.org/show_bug.cgi?id=172244
3486         <rdar://problem/31800943>
3487
3488         Reviewed by Geoffrey Garen.
3489
3490         Add an installable callback to MemoryPressureHandler that gets invoked when an active process
3491         exceeds the kill limit for an inactive process.
3492
3493         This allows a UI client to become aware that backgrounding a tab may cause it to get killed.
3494
3495         * wtf/MemoryPressureHandler.cpp:
3496         (WTF::thresholdForMemoryKillWithProcessState):
3497         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
3498         (WTF::MemoryPressureHandler::measurementTimerFired):
3499         (WTF::MemoryPressureHandler::doesExceedInactiveLimitWhileActive):
3500         (WTF::MemoryPressureHandler::doesNotExceedInactiveLimitWhileActive):
3501         * wtf/MemoryPressureHandler.h:
3502         (WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):
3503
3504 2017-05-18  Geoffrey Garen  <ggaren@apple.com>
3505
3506         AutomaticThread should wait longer before timing out
3507         https://bugs.webkit.org/show_bug.cgi?id=172292
3508
3509         Reviewed by Filip Pizlo.
3510
3511         Increased the idle timeout from 1s => 10s.
3512
3513         This reduces the number of thread restarts on JetStream from
3514         ~150 => ~0. It also matches other thread pool APIs on Darwin.
3515
3516         Intuitively, it seems wrong for helper threads to idle exit during
3517         hardcore benchmarking.
3518
3519         This patch in combination with a bmalloc fix seems to be a 1%-2% JetStream
3520         speedup on my Mac Pro.
3521
3522         A nice side-benefit is that per-thread traces are easier to read.
3523
3524         * wtf/AutomaticThread.cpp:
3525         (WTF::AutomaticThread::start):
3526         * wtf/AutomaticThread.h:
3527
3528 2017-05-18  Don Olmstead  <don.olmstead@am.sony.com>
3529
3530         [Win] Remove usage of _snprintf
3531         https://bugs.webkit.org/show_bug.cgi?id=172251
3532
3533         Reviewed by Per Arne Vollan.
3534
3535         * wtf/DataLog.cpp:
3536         (WTF::initializeLogFileOnce):
3537         (WTF::setDataFile):
3538
3539 2017-05-15  Mark Lam  <mark.lam@apple.com>
3540
3541         Rolling out r214038 and r213697: Crashes when using computed properties with rest destructuring and object spread.
3542         https://bugs.webkit.org/show_bug.cgi?id=172147
3543
3544         Rubber-stamped by Saam Barati.
3545
3546         * wtf/HashSet.h:
3547         (WTF::=):
3548
3549 2017-05-14  Chris Dumez  <cdumez@apple.com>
3550
3551         Drop PassRefPtr class from WTF
3552         https://bugs.webkit.org/show_bug.cgi?id=172091
3553
3554         Reviewed by Alex Christensen.
3555
3556         Drop PassRefPtr class from WTF as it is no longer used or needed.
3557         Also drop RefPtr::release() for the same reasons.
3558
3559         * WTF.xcodeproj/project.pbxproj:
3560         * wtf/CMakeLists.txt:
3561         * wtf/CrossThreadCopier.cpp:
3562         * wtf/CrossThreadCopier.h:
3563         * wtf/Forward.h:
3564         * wtf/PassRefPtr.h: Removed.
3565         * wtf/RefPtr.h:
3566         (WTF::refIfNotNull):
3567         (WTF::derefIfNotNull):
3568         (WTF::RefPtr::RefPtr):
3569         (WTF::RefPtr::release): Deleted.
3570         * wtf/SizeLimits.cpp:
3571         * wtf/Vector.h:
3572
3573 2017-05-13  Chris Dumez  <cdumez@apple.com>
3574
3575         Stop using RefPtr::release()
3576         https://bugs.webkit.org/show_bug.cgi?id=172074
3577
3578         Reviewed by Geoffrey Garen.
3579
3580         * wtf/win/WorkQueueWin.cpp:
3581         (WTF::WorkQueue::dispatchAfter):
3582
3583 2017-05-13  Commit Queue  <commit-queue@webkit.org>
3584
3585         Unreviewed, rolling out r216808.
3586         https://bugs.webkit.org/show_bug.cgi?id=172075
3587
3588         caused lldb to hang when debugging (Requested by smfr on
3589         #webkit).
3590
3591         Reverted changeset:
3592
3593         "Use Mach exceptions instead of signals where possible"
3594         https://bugs.webkit.org/show_bug.cgi?id=171865
3595         http://trac.webkit.org/changeset/216808
3596
3597 2017-05-12  Keith Miller  <keith_miller@apple.com>
3598
3599         Use Mach exceptions instead of signals where possible
3600         https://bugs.webkit.org/show_bug.cgi?id=171865
3601
3602         Reviewed by Mark Lam.
3603
3604         This patch enables using mach exceptions on darwin. The way the
3605         mach exception api works is that we create a mach port, which is
3606         like a file descriptor.  We then wait for a message to arrive on
3607         that port in a thread. When another thread raises an exception (say
3608         due to a bad memory access) the OS sends our thread a message. The
3609         payload of that message is the register file of the crashing
3610         thread. We then call our custom handlers that change the state as
3611         needed. In order to restart the thread we send a payload back to
3612         the OS with an updated register file along with a success message
3613         header.
3614
3615         This patch also makes thread messages work without signals by
3616         simply suspending the thread, and then running the message at that
3617         time.
3618
3619         You can read more about mach exceptions here:
3620         http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/exception.ps
3621         and the Mach interface Generator (MiG) here:
3622         http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps
3623
3624         * Configurations/WTF.xcconfig:
3625         * WTF.xcodeproj/project.pbxproj:
3626         * wtf/Platform.h:
3627         * wtf/PlatformRegisters.h:
3628         (WTF::registersFromUContext):
3629         * wtf/StackBounds.h:
3630         (WTF::StackBounds::StackBounds):
3631         * wtf/ThreadHolder.cpp:
3632         (WTF::ThreadHolder::~ThreadHolder):
3633         * wtf/ThreadMessage.cpp:
3634         (WTF::sendMessageUsingSignal):
3635         (WTF::sendMessageUsingMach):
3636         (WTF::deliverMessagesUsingMach):
3637         (WTF::sendMessageScoped):
3638         * wtf/ThreadMessage.h:
3639         (WTF::sendMessage):
3640         * wtf/Threading.h:
3641         (WTF::Thread::machThread):
3642         * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
3643         * wtf/threads/Signals.cpp:
3644         (WTF::startMachExceptionHandlerThread):
3645         (WTF::fromMachException):
3646         (WTF::toMachMask):
3647         (WTF::handleSignalsWithMach):
3648         (WTF::setExceptionPorts):
3649         (WTF::activeThreads):
3650         (WTF::registerThreadForMachExceptionHandling):
3651         (WTF::unregisterThreadForMachExceptionHandling):
3652         (WTF::installSignalHandler):
3653         (WTF::jscSignalHandler):
3654         * wtf/threads/Signals.h:
3655
3656 2017-05-12  Ting-Wei Lan  <lantw44@gmail.com>
3657
3658         Include algorithm before using std::min
3659         https://bugs.webkit.org/show_bug.cgi?id=171733
3660
3661         Reviewed by Chris Dumez.
3662
3663         * wtf/text/StringCommon.h:
3664
3665 2017-05-12  Andreas Kling  <akling@apple.com>
3666
3667         More aggressive memory kill limits.
3668         https://bugs.webkit.org/show_bug.cgi?id=172037
3669         <rdar://problem/31969082>
3670
3671         Reviewed by Michael Saboff.
3672
3673         Bring down the memory kill limits to 4GB for active processes, and 2GB for inactive.
3674         Also make MemoryUsagePolicy::Strict kick in above 1.5GB.
3675
3676         * wtf/MemoryPressureHandler.cpp:
3677         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
3678         (WTF::thresholdForPolicy):
3679
3680 2017-05-12  Michael Saboff  <msaboff@apple.com>
3681
3682         [iOS] Use memory footprint to dynamically adjust behavior of allocators
3683         https://bugs.webkit.org/show_bug.cgi?id=171944
3684
3685         Reviewed by Filip Pizlo.
3686
3687         Moved the non-Windows implementation of RAMSize() to bmalloc/AvailableMemory.cpp and
3688         called the function availableMemory().
3689
3690         * wtf/RAMSize.cpp:
3691         (WTF::computeRAMSize):
3692
3693 2017-05-12  Claudio Saavedra  <csaavedra@igalia.com>
3694
3695         [WPE] Add MemoryFootprintLinux to build
3696
3697         Unreviewed build fix after r216731.
3698
3699         * wtf/PlatformWPE.cmake:
3700
3701 2017-05-12  Csaba Osztrogonác  <ossy@webkit.org>
3702
3703         Unreviewed trivial JSCOnly buildfix after r216731.
3704         https://bugs.webkit.org/show_bug.cgi?id=171693
3705
3706         * wtf/PlatformJSCOnly.cmake:
3707
3708 2017-05-11  Yusuke Suzuki  <utatane.tea@gmail.com>
3709
3710         [Win] Implement memoryFootprint for Windows
3711         https://bugs.webkit.org/show_bug.cgi?id=171693
3712
3713         Reviewed by Alex Christensen.
3714
3715         This patch implements memoryFootprint for Windows. In Windows, we calculate the size
3716         of private working set. This can be done by enumerating private pages in working set.
3717
3718         And we also split MemoryFootprint.cpp to cocoa, linux, and win versions.
3719
3720         * WTF.xcodeproj/project.pbxproj:
3721         * wtf/CMakeLists.txt:
3722         * wtf/MallocPtr.h:
3723         (WTF::MallocPtr::operator*):
3724         (WTF::MallocPtr::operator->):
3725         * wtf/PlatformGTK.cmake:
3726         * wtf/PlatformJSCOnly.cmake:
3727         * wtf/PlatformMac.cmake:
3728         * wtf/PlatformWin.cmake:
3729         * wtf/cocoa/MemoryFootprintCocoa.cpp: Copied from Source/WTF/wtf/MemoryFootprint.cpp.
3730         (WTF::memoryFootprint):
3731         * wtf/linux/MemoryFootprintLinux.cpp: Renamed from Source/WTF/wtf/MemoryFootprint.cpp.
3732         (WTF::forEachLine):
3733         (WTF::memoryFootprint):
3734         * wtf/win/MemoryFootprintWin.cpp: Added.
3735         (WTF::memoryFootprint):
3736
3737 2017-05-11  Don Olmstead  <don.olmstead@am.sony.com>
3738
3739         [CMake] Add HAVE check for regex.h
3740         https://bugs.webkit.org/show_bug.cgi?id=171950
3741
3742         Reviewed by Michael Catanzaro.
3743
3744         * wtf/Platform.h:
3745
3746 2017-05-11  Chris Dumez  <cdumez@apple.com>
3747
3748         Annotate Ref::ptr() with RETURNS_NONNULL
3749         https://bugs.webkit.org/show_bug.cgi?id=171996
3750
3751         Reviewed by Andreas Kling.
3752
3753         Annotate Ref::ptr() with RETURNS_NONNULL as it can never return null.
3754
3755         * wtf/Ref.h:
3756         (WTF::Ref::ptr): Deleted.
3757
3758 2017-05-11  Joseph Pecoraro  <pecoraro@apple.com>
3759
3760         Remove Vibration API
3761         https://bugs.webkit.org/show_bug.cgi?id=171766
3762
3763         Rubber-stamped by Alexey Proskuryakov.
3764
3765         * wtf/FeatureDefines.h:
3766
3767 2017-05-09  Sam Weinig  <sam@webkit.org>
3768
3769         Remove support for legacy Notifications
3770         https://bugs.webkit.org/show_bug.cgi?id=171487
3771
3772         Reviewed by Jon Lee.
3773
3774         * wtf/FeatureDefines.h:
3775         Remove definition of ENABLE_LEGACY_NOTIFICATIONS.
3776
3777 2017-05-10  Adrian Perez de Castro  <aperez@igalia.com>
3778
3779         Remove some last remnants of the EFL port
3780         https://bugs.webkit.org/show_bug.cgi?id=171922
3781
3782         Reviewed by Antonio Gomes.
3783
3784         The EFL port is no more.
3785
3786         * wtf/PlatformEfl.cmake: Removed.
3787
3788 2017-05-10  Fujii Hironori  <Hironori.Fujii@sony.com>
3789
3790         [Win] StaticStringImpl in HTMLNames.cpp aren't constructed
3791         https://bugs.webkit.org/show_bug.cgi?id=171800
3792
3793         Reviewed by Yusuke Suzuki.
3794
3795         Global variables of StaticStringImpl in HTMLNames.cpp aren't
3796         constructed on Windows since Bug 171586. It seems that
3797         reinterpret_cast prevents constexpr's compile time initialization
3798         in VC++.
3799
3800         * wtf/text/StringImpl.h:
3801         (WTF::StringImplShape::StringImplShape): Added const char* and
3802         const char16_t* members in the union. Do not use reinterpret_cast
3803         in constexpr constructors.
3804
3805 2017-05-09  Mark Lam  <mark.lam@apple.com>
3806
3807         Force StaticStringImpl constructor to use the constexpr versions of StringImplShape constructors.
3808         https://bugs.webkit.org/show_bug.cgi?id=171861
3809
3810         Reviewed by Yusuke Suzuki.
3811
3812         This is strictly necessary for correctness of the StaticStringImpl implementation.
3813         We force the constructor selection by adding an extra dummy argument to the
3814         constexpr versions of the StringImplShape constructors to disambiguate them from
3815         the non-constexpr versions.
3816
3817         * wtf/text/StringImpl.h:
3818         (WTF::StringImplShape::StringImplShape):
3819         (WTF::StringImpl::StaticStringImpl::StaticStringImpl):
3820
3821 2017-05-09  Zan Dobersek  <zdobersek@igalia.com>
3822
3823         Upstream the WPE port
3824         https://bugs.webkit.org/show_bug.cgi?id=171110
3825
3826         Reviewed by Alex Christensen.
3827
3828         * wtf/Platform.h:
3829         * wtf/PlatformWPE.cmake: Added.
3830         * wtf/glib/RunLoopSourcePriority.h:
3831
3832 2017-05-08  Mark Lam  <mark.lam@apple.com>
3833
3834         Speculative Windows build fix after r216428.
3835         https://bugs.webkit.org/show_bug.cgi?id=171776
3836
3837         Not reviewed.
3838
3839         * wtf/StackTrace.h:
3840
3841 2017-05-08  Mark Lam  <mark.lam@apple.com>
3842
3843         Introduce ExceptionScope::assertNoException() and releaseAssertNoException().
3844         https://bugs.webkit.org/show_bug.cgi?id=171776
3845
3846         Reviewed by Keith Miller.
3847
3848         1. Add an option to skip some number of top frames when capturing the StackTrace.
3849         2. Add an option to use an indentation string when dumping the StackTrace.
3850
3851         * wtf/StackTrace.cpp:
3852         (WTF::StackTrace::captureStackTrace):
3853         (WTF::StackTrace::dump):
3854         * wtf/StackTrace.h:
3855
3856 2017-05-05  Yusuke Suzuki  <utatane.tea@gmail.com>
3857
3858         [WTF] Use memoryFootprint for MemoryUsage retrieval in Linux
3859         https://bugs.webkit.org/show_bug.cgi?id=171757
3860
3861         Reviewed by Michael Catanzaro.
3862
3863         This patch leverages memoryFootprint() to retrieve physical footprint in Linux.
3864
3865         * wtf/linux/MemoryPressureHandlerLinux.cpp:
3866         (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
3867
3868 2017-05-05  Don Olmstead  <don.olmstead@am.sony.com>
3869
3870         [WTF] Do not export deleted constructor in StringView
3871         https://bugs.webkit.org/show_bug.cgi?id=171751
3872
3873         Reviewed by Alexey Proskuryakov.
3874
3875         * wtf/text/StringView.h:
3876
3877 2017-05-05  Yusuke Suzuki  <utatane.tea@gmail.com>
3878
3879         [GTK][JSCOnly] Merge MainThread implementations and use generic one
3880         https://bugs.webkit.org/show_bug.cgi?id=171738
3881
3882         Reviewed by Michael Catanzaro.
3883
3884         GLib MainThread implementation is generic enough to be used in JSCOnly.
3885         We move it to generic/ and GTK (GLib ports) and JSCOnly use it.
3886         And we also drop GLib MainThread's isMainThread function because
3887         generic thread ID one is enough.
3888
3889         This patch also cleans up initializing main thread code by using std::call_once.
3890
3891         * wtf/MainThread.cpp:
3892         (WTF::initializeMainThread):
3893         (WTF::isMainThread):
3894         (WTF::initializeMainThreadToProcessMainThread):
3895         (WTF::initializeWebThread):
3896         (WTF::canAccessThreadLocalDataForThread):
3897         (WTF::initializeMainThreadOnce): Deleted.
3898         (WTF::initializeMainThreadToProcessMainThreadOnce): Deleted.
3899         (WTF::initializeWebThreadOnce): Deleted.
3900         * wtf/PlatformGTK.cmake:
3901         * wtf/PlatformJSCOnly.cmake:
3902         * wtf/generic/MainThreadGeneric.cpp:
3903         (WTF::MainThreadDispatcher::MainThreadDispatcher):
3904         (WTF::MainThreadDispatcher::schedule):
3905         (WTF::MainThreadDispatcher::fired):
3906         (WTF::scheduleDispatchFunctionsOnMainThread):
3907         * wtf/glib/MainThreadGLib.cpp: Removed.
3908
3909 2017-05-04  Commit Queue  <commit-queue@webkit.org>
3910
3911         Unreviewed, rolling out r216206.
3912         https://bugs.webkit.org/show_bug.cgi?id=171714
3913
3914         Multiple LayoutTests crashing in Document::page() (Requested
3915         by ap on #webkit).
3916
3917         Reverted changeset:
3918
3919         "Remove support for legacy Notifications"
3920         https://bugs.webkit.org/show_bug.cgi?id=171487
3921         http://trac.webkit.org/changeset/216206
3922
3923 2017-05-04  Don Olmstead  <don.olmstead@am.sony.com>
3924
3925         [Win] Remove redundant macros that are set in the CMake config
3926         https://bugs.webkit.org/show_bug.cgi?id=171571
3927
3928         Reviewed by Brent Fulgham.
3929
3930         * config.h:
3931
3932 2017-05-04  Mark Lam  <mark.lam@apple.com>
3933
3934         NeverDestroyed<String>(ASCIILiteral(...)) is not thread safe.
3935         https://bugs.webkit.org/show_bug.cgi?id=171586
3936         <rdar://problem/31873190>
3937
3938         Reviewed by Yusuke Suzuki.
3939
3940         StaticStringImpl is meant to be thread-safe.  However, it has a bug: it did not
3941         set the s_hashFlagDidReportCost flag.  As a result, if cost() is called on it,
3942         different threads may try to change its flags bits at the same time.  This patch
3943         changes StaticStringImpl to always set the s_hashFlagDidReportCost flag.
3944
3945         Also factored out StringImplShape and made StringImpl and StaticStringImpl extend
3946         it.  This makes it more clear that the 2 are intended to have the same shape.
3947         Note: there is already a static_assert that the 2 have the same size.  This
3948         change also ensures that they both have the same shape, which is a requirement in
3949         order for StaticStringImpl to work.
3950
3951         Introduced the MAKE_STATIC_STRING_IMPL macro as a convenient way to instantiate
3952         StaticStringImpls from literal strings.  This allows us to trivially change
3953
3954             NeverDestroyed<String> myString(ASCIILiteral("myString"));
3955
3956         to ...
3957
3958             NeverDestroyed<String> myString(MAKE_STATIC_STRING_IMPL("myString"));
3959
3960         and by so doing, make it thread-safe.
3961
3962         MAKE_STATIC_STRING_IMPL instantiates a lambda function to create the static
3963         StaticStringImpls.
3964
3965         * wtf/text/StringImpl.h:
3966         (WTF::StringImplShape::StringImplShape):
3967         (WTF::StringImpl::StringImpl):
3968         (WTF::StringImpl::cost):
3969         (WTF::StringImpl::setHash):
3970         (WTF::StringImpl::StaticStringImpl::StaticStringImpl):
3971         (WTF::StringImpl::StaticStringImpl::operator StringImpl&):
3972         * wtf/text/WTFString.h:
3973         (WTF::String::String):
3974         * wtf/text/icu/TextBreakIteratorICU.h:
3975         (WTF::caretRules):
3976
3977 2017-05-04  Sam Weinig  <sam@webkit.org>
3978
3979         Remove support for legacy Notifications
3980         https://bugs.webkit.org/show_bug.cgi?id=171487
3981
3982         Reviewed by Jon Lee.
3983
3984         * wtf/FeatureDefines.h:
3985         Remove definition of ENABLE_LEGACY_NOTIFICATIONS.
3986
3987 2017-05-04  Yusuke Suzuki  <utatane.tea@gmail.com>
3988
3989         [GTK][JSCOnly] Implement memoryFootprint for Linux
3990         https://bugs.webkit.org/show_bug.cgi?id=171680
3991
3992         Reviewed by Carlos Alberto Lopez Perez.
3993
3994         Darwin's phys_footprint returns the amount of dirty anonymous memory in the process.
3995         This patch implements the same thing in Linux by reading /proc/self/smaps.
3996         We sum sizes of private dirty pages in anonymous regions.
3997
3998         * wtf/MemoryFootprint.cpp:
3999         (WTF::forEachLine):
4000         (WTF::memoryFootprint):
4001
4002 2017-05-03  Mark Lam  <mark.lam@apple.com>
4003
4004         Use the CLoop for CPU(ARM64E).
4005         https://bugs.webkit.org/show_bug.cgi?id=171620
4006         <rdar://problem/31973027>
4007
4008         Reviewed by Geoffrey Garen.
4009
4010         * wtf/Platform.h:
4011
4012 2017-05-02  Daniel Bates  <dabates@apple.com>
4013
4014         Fix the build after <https://trac.webkit.org/changeset/216102>
4015         (https://bugs.webkit.org/show_bug.cgi?id=170925)
4016
4017         Export into global scope ASCIICaseInsensitiveStringViewHashTranslator.
4018
4019         Also fix indentation of member functions of ASCIICaseInsensitiveStringViewHashTranslator.
4020
4021         * wtf/text/StringHash.h:
4022
4023 2017-05-02  Daniel Bates  <dabates@apple.com>
4024
4025         Using StringView.split() instead of String.split() in some places
4026         https://bugs.webkit.org/show_bug.cgi?id=170925
4027
4028         Reviewed by Darin Adler and Sam Weinig.
4029
4030         * wtf/HashMap.h: Add HashMap::get() overload that takes a HashTranslator.
4031         * wtf/text/StringHash.h:
4032         (WebCore::ASCIICaseInsensitiveStringViewHashTranslator::hash): Added.
4033         (WebCore::ASCIICaseInsensitiveStringViewHashTranslator::equal): Added.
4034
4035 2017-05-01  Dan Bernstein  <mitz@apple.com>
4036
4037         [Xcode] It’s easy to accidentally install a WTF header outside /usr/local/include/wtf
4038         https://bugs.webkit.org/show_bug.cgi?id=171533
4039
4040         Reviewed by Andy Estes.
4041
4042         * WTF.xcodeproj/project.pbxproj: Removed the WTF target’s Headers build phase. Its existence
4043           was making it easy to accidentally add a header to the target and make it Private, which
4044           would have Xcode install a copy of it right under /usr/local/include, in addition to the
4045           copy installed under /usr/local/include/wtf by the Copy WTF Headers target.
4046           Also got rid of INSTALL_PATH_PREFIX in the script build phase in the Copy WTF Headers
4047           target, because it is being never set anymore.
4048
4049 2017-05-01  Dan Bernstein  <mitz@apple.com>
4050
4051         WTF installs an extra copy of a header outside /usr/local/include/wtf
4052
4053         * WTF.xcodeproj/project.pbxproj: Demoted CPUTime.h from Private to Project.
4054
4055 2017-05-01  Daniel Bates  <dabates@apple.com>
4056
4057         Cleanup: Change ASCIICaseInsensitiveHash from a class to a struct
4058         https://bugs.webkit.org/show_bug.cgi?id=171460
4059
4060         Reviewed by Sam Weinig.
4061
4062         All of the members of ASCIICaseInsensitiveHash have public visibility.
4063         We are underutilizing the purpose of a class - defaults to private
4064         visibility of members. We should change ASCIICaseInsensitiveHash from
4065         a class to a struct, which by definition defaults to public visibility
4066         for members.
4067
4068         * wtf/text/StringHash.h:
4069
4070 2017-04-29  Yusuke Suzuki  <utatane.tea@gmail.com>
4071
4072         Move WebCore CPUTime to WTF and implement it in all the platforms
4073         https://bugs.webkit.org/show_bug.cgi?id=171477
4074
4075         Reviewed by Chris Dumez.
4076
4077         We move WebCore::CPUTime to WTF::CPUTime since it is useful even in JSC
4078         and it does not depend on any external libraries.
4079         And we additionally implement WTF::CPUTime in all the platforms: Windows and Unix.
4080
4081         In CPUTime, instead of holding int64_t, we hold MonotonicTime and Seconds.
4082
4083         * WTF.xcodeproj/project.pbxproj:
4084         * wtf/CMakeLists.txt:
4085         * wtf/CPUTime.cpp: Copied from Source/WebCore/platform/CPUTime.cpp.
4086         (WTF::CPUTime::percentageCPUUsageSince):
4087         * wtf/CPUTime.h: Renamed from Source/WebCore/platform/CPUTime.h.
4088         * wtf/PlatformEfl.cmake:
4089         * wtf/PlatformGTK.cmake:
4090         * wtf/PlatformJSCOnly.cmake:
4091         * wtf/PlatformMac.cmake:
4092         * wtf/PlatformWin.cmake:
4093         * wtf/cocoa/CPUTimeCocoa.mm: Renamed from Source/WebCore/platform/cocoa/CPUTimeCocoa.mm.
4094         (WTF::timeValueToMicroseconds):
4095         (WTF::CPUTime::get):
4096         * wtf/unix/CPUTimeUnix.cpp: Renamed from Source/WebCore/platform/CPUTime.cpp.
4097         (WTF::timevalToSeconds):
4098         (WTF::CPUTime::get):
4099         * wtf/win/CPUTimeWin.cpp: Added.
4100         (WTF::fileTimeToSeconds):
4101         (WTF::CPUTime::get):
4102
4103 2017-04-28  Simon Fraser  <simon.fraser@apple.com>
4104
4105         Add system trace points for Document::updateTouchEventRegions()
4106         https://bugs.webkit.org/show_bug.cgi?id=171470
4107         rdar://problem/31901239
4108
4109         Reviewed by Tim Horton.
4110
4111         Add trace markers for updateTouchEventRegions.
4112
4113         * wtf/SystemTracing.h:
4114
4115 2017-04-28  Daniel Bates  <dabates@apple.com>
4116
4117         Add StringView::toExistingAtomicString()
4118         https://bugs.webkit.org/show_bug.cgi?id=171405
4119
4120         Reviewed by Andreas Kling.
4121
4122         Similar to the reasons for JSString::toExistingAtomicString() we should expose a way to
4123         convert a StringView to an existing atomic string. Looking up an atomic string is more
4124         efficient that creating one, which requires a lookup and memory allocation.
4125
4126         We are not making use of StringView::toExistingAtomicString() now, but will in the patch
4127         for <https://bugs.webkit.org/show_bug.cgi?id=170925>.
4128
4129         * wtf/text/AtomicStringImpl.cpp:
4130         (WTF::AtomicStringImpl::lookUp): Modified to take a const LChar*/UChar*.
4131         (WTF::AtomicStringImpl::lookUpInternal): Renamed to AtomicStringImpl::lookup() to avoid
4132         an extra function call.
4133         * wtf/text/AtomicStringImpl.h:
4134         * wtf/text/StringView.h:
4135         (WTF::StringView::toExistingAtomicString): Added.
4136
4137 2017-04-28  Chris Dumez  <cdumez@apple.com>
4138
4139         Update DOMTokenList.replace() to match the latest DOM specification
4140         https://bugs.webkit.org/show_bug.cgi?id=171388
4141
4142         Reviewed by Alex Christensen.
4143
4144         Add Vector::findMatching() API which takes in a lambda function for convenience.
4145         Add optional startIndex parameter to Vector::removeFirstMatching() / removeAllMatching()
4146         to remove items only after given index.
4147
4148         * wtf/Vector.h:
4149         (WTF::minCapacity>::findMatching):
4150         (WTF::minCapacity>::find):
4151         (WTF::minCapacity>::removeFirstMatching):
4152         (WTF::minCapacity>::removeAllMatching):
4153
4154 2017-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>
4155
4156         Move UUID from WebCore/platform to WTF
4157         https://bugs.webkit.org/show_bug.cgi?id=171372
4158
4159         Reviewed by Michael Catanzaro.
4160
4161         * WTF.xcodeproj/project.pbxproj:
4162         * wtf/CMakeLists.txt:
4163         * wtf/UUID.cpp: Renamed from Source/WebCore/platform/UUID.cpp.
4164         * wtf/UUID.h: Renamed from Source/WebCore/platform/UUID.h.
4165
4166 2017-04-26  Keith Miller  <keith_miller@apple.com>
4167
4168         LocklessBag needs a destructor
4169         https://bugs.webkit.org/show_bug.cgi?id=171334
4170
4171         Reviewed by Mark Lam.
4172
4173         Currently, if the bag is destructed any remaining nodes in the bag will
4174         be leaked.
4175
4176         * wtf/LocklessBag.h:
4177         (WTF::LocklessBag::consumeAll):
4178         (WTF::LocklessBag::~LocklessBag):
4179         * wtf/threads/Signals.cpp:
4180         (WTF::jscSignalHandler):
4181         (WTF::installSignalHandler):
4182
4183 2017-04-26  Don Olmstead  <don.olmstead@am.sony.com>
4184
4185         [ARM] Enable GCC visibility
4186         https://bugs.webkit.org/show_bug.cgi?id=171296
4187
4188         Reviewed by Michael Catanzaro.
4189
4190         * wtf/Platform.h:
4191
4192 2017-04-26  Yusuke Suzuki  <utatane.tea@gmail.com>
4193
4194         sendMessageScoped's signal handler calls LocklessBag::consumeAll, which causes heap deallocation in signal handler and leads deadlock
4195         https://bugs.webkit.org/show_bug.cgi?id=171319
4196
4197         Reviewed by Keith Miller.
4198
4199         In sendMessageScoped, we call LocklessBag<SignalHandler>::consumeAll `thread->threadMessages().consumeAll()`.
4200         In LocklessBag::consumeAll, we call `delete` on Nodes.
4201         The problem is that this is called under the context of signal handler. Thus, when calling this, the original
4202         thread may hold the lock in bmalloc. In that case, this `delete` call attempts to lock the heap lock recursively,
4203         and causes deadlock.
4204
4205         Instead, this patch transfers the LocklessBag's Node to the sender thread. And the sender thread deletes it instead.
4206
4207         * wtf/LocklessBag.h:
4208         (WTF::LocklessBag::consumeAllWithNode):
4209         * wtf/ThreadMessage.cpp:
4210         (WTF::ThreadMessageData::ThreadMessageData):
4211         (WTF::sendMessageScoped):
4212
4213 2017-04-25  Don Olmstead  <don.olmstead@am.sony.com>
4214
4215         [Win] Use Clang's __has_declspec_attribute for export macros
4216         https://bugs.webkit.org/show_bug.cgi?id=171240
4217
4218         Reviewed by Alex Christensen.
4219
4220         * wtf/Compiler.h:
4221         * wtf/ExportMacros.h:
4222         * wtf/Platform.h:
4223
4224 2017-04-25  Keith Miller  <keith_miller@apple.com>
4225
4226         Our signal handler shouldn't print when sigaction succeeds
4227         https://bugs.webkit.org/show_bug.cgi?id=171286
4228
4229         Reviewed by Michael Saboff.
4230
4231         It turns out !result is not the same as !!result.
4232
4233         * wtf/threads/Signals.cpp:
4234         (WTF::jscSignalHandler):
4235
4236 2017-04-25  Myles C. Maxfield  <mmaxfield@apple.com>
4237
4238         Add performance test for FontCache::systemFallbackForCharacters()
4239         https://bugs.webkit.org/show_bug.cgi?id=170842
4240
4241         Reviewed by Tim Horton.
4242
4243         * wtf/unicode/CharacterNames.h:
4244
4245 2017-04-24  Andy VanWagoner  <thetalecrafter@gmail.com>
4246
4247         Clean up ICU headers
4248         https://bugs.webkit.org/show_bug.cgi?id=170997
4249
4250         Reviewed by JF Bastien.
4251
4252         Update all icu headers to 55.1
4253
4254         * icu/LICENSE: Update copyright
4255         * icu/README: Explain ICU headers for OS X better
4256         * icu/unicode/localpointer.h:
4257         (LocalPointer::LocalPointer):
4258         (LocalPointer::adoptInsteadAndCheckErrorCode):
4259         * icu/unicode/platform.h:
4260         * icu/unicode/putil.h:
4261         * icu/unicode/std_string.h:
4262         * icu/unicode/ubrk.h:
4263         * icu/unicode/uchar.h:
4264         * icu/unicode/ucnv.h:
4265         * icu/unicode/ucol.h:
4266         * icu/unicode/uconfig.h:
4267         * icu/unicode/ucurr.h:
4268         * icu/unicode/uloc.h:
4269         * icu/unicode/umachine.h:
4270         * icu/unicode/unistr.h:
4271         (UnicodeString::getArrayStart):
4272         (UnicodeString::UnicodeString):
4273         (UnicodeString::hasShortLength):
4274         (UnicodeString::getShortLength):
4275         (UnicodeString::length):
4276         (UnicodeString::getCapacity):
4277         (UnicodeString::isBogus):
4278         (UnicodeString::isWritable):
4279         (UnicodeString::isBufferWritable):
4280         (UnicodeString::getBuffer):
4281         (UnicodeString::isEmpty):
4282         (UnicodeString::setZeroLength):
4283         (UnicodeString::setShortLength):
4284         (UnicodeString::setLength):
4285         (UnicodeString::setToEmpty):
4286         (UnicodeString::remove):
4287         * icu/unicode/urename.h:
4288         * icu/unicode/uscript.h:
4289         * icu/unicode/uset.h:
4290         * icu/unicode/ustring.h:
4291         * icu/unicode/utf8.h:
4292         * icu/unicode/utypes.h:
4293         * icu/unicode/uvernum.h:
4294
4295 2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>
4296
4297         Unreviewed, fix Windows build after r215715
4298         https://bugs.webkit.org/show_bug.cgi?id=171199
4299
4300         * wtf/StackTrace.h:
4301
4302 2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>
4303
4304         [WTF] Move JSC tools/StackTrace to WTF and unify stack trace dump code
4305         https://bugs.webkit.org/show_bug.cgi?id=171199
4306
4307         Reviewed by Mark Lam.
4308
4309         JSC tools/StackTrace's dump code is almost identical to WTF Assertions'
4310         stack trace dump code. This patch moves tools/StackTrace to WTF and use
4311         it in Assertions. It unifies the two duplicate implementations into one.
4312
4313         * WTF.xcodeproj/project.pbxproj: