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