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