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