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