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