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