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