Move webkit.css to opensource to support resultsdbpy's frontend
[WebKit-https.git] / Source / WTF / ChangeLog
1 2019-07-18  Youenn Fablet  <youenn@apple.com>
2
3         Make sure to set kCTFontFallbackOptionAttribute to kCTFontFallbackOptionSystem for system fonts
4         https://bugs.webkit.org/show_bug.cgi?id=199769
5         <rdar://problem/49390297>
6
7         Reviewed by Myles C. Maxfield.
8
9         * wtf/Platform.h:
10
11 2019-07-17  Christopher Reid  <chris.reid@sony.com>
12
13         Bytecode cache should use FileSystem
14         https://bugs.webkit.org/show_bug.cgi?id=199759
15
16         Reviewed by Yusuke Suzuki.
17
18         * wtf/FileSystem.cpp:
19         * wtf/FileSystem.h:
20         Add support for creating MappedFileData from a preexisting file handle
21         for use with locked files. Also support creating MappedFileData
22         with either private or shared mappings.
23
24         * wtf/UUID.cpp:
25         Avoid ASSERT with returning a LazyNeverDestroyed object that hasn't been created.
26
27         * wtf/glib/FileSystemGlib.cpp:
28         * wtf/win/FileSystemWin.cpp:
29         Add truncateFile implementations.
30
31 2019-07-17  Sam Weinig  <weinig@apple.com>
32
33         Add StringBuilder member function which allows makeString() style variadic argument construction
34         https://bugs.webkit.org/show_bug.cgi?id=198997
35
36         Reviewed by Darin Adler.
37
38         Adds new StringBuilder::flexibleAppend(...) member function which allows passing one or more 
39         string-adaptable (in the sense that there is StringTypeAdapter specialization for the 
40         type) parameters. This re-ususes the variadic template infrastructure in StringConcatenate.h
41         that is used for makeString(...) allowing for improvements in one to benefit the other.
42
43         The advantage of StringBuilder::flexibleAppend(...) over calling StringBuilder::append(...)
44         multiple times (beyond the code sharing with makeString(...) is that it can avoid unnecessary
45         additional re-allocations when the StringBuilder needs to expand it's capacity. It does this
46         by computing the complete required length for all the passed arguments and then ensuring enough
47         capacity is available. It also reduces the allocation overhead versus the anti-pattern of
48         builder.append(makeString(...)).
49
50         Ideally, this member function should eventually just be called StringBuilder::append(...), but
51         the current overload set for StringBuilder::append(...) makes this complicated due to overloads
52         that take two arguments such as StringBuilder::append(const UChar*, unsigned). Going forward, we
53         should rename or remove those overloads and move to a standard interface. 
54
55         * wtf/posix/FileSystemPOSIX.cpp:
56         (WTF::FileSystemImpl::pathByAppendingComponents):
57         Adopt StringBuilder::flexibleAppend, using to combine the append of '/' and component.
58
59         * wtf/text/StringBuilder.cpp:
60         (WTF::StringBuilder::appendUninitialized):
61         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheck):
62         Extract the part of appendUnitialized that doesn't do the overflow check
63         into it's own member function to allow callers that have already done the
64         overflow check to bypass it.
65
66         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForUChar):
67         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForLChar):
68         Added to allow template member function flexibleAppendFromAdapters to call
69         appendUninitializedWithoutOverflowCheck without moving it to the header.
70         
71         * wtf/text/StringBuilder.h:
72         (WTF::StringBuilder::flexibleAppendFromAdapters):
73         (WTF::StringBuilder::flexibleAppend):
74         Modeled on tryMakeStringFromAdapters in StringConcatenate.h, these
75         eagerly compute the required length, expand the buffer and then use
76         the existing string type adaptor accumulation functions used by makeString. 
77
78         * wtf/text/StringConcatenate.h:
79         (WTF::stringTypeAdapterAccumulator):
80         (WTF::tryMakeStringFromAdapters):
81         (WTF::makeStringAccumulator): Deleted.
82         Renames makeStringAccumulator to stringTypeAdapterAccumulator now that it is used
83         by more than just makeString.
84
85 2019-07-17  Commit Queue  <commit-queue@webkit.org>
86
87         Unreviewed, rolling out r247505.
88         https://bugs.webkit.org/show_bug.cgi?id=199871
89
90         "Caused failed ASSERT in stress test" (Requested by creid on
91         #webkit).
92
93         Reverted changeset:
94
95         "Bytecode cache should use FileSystem"
96         https://bugs.webkit.org/show_bug.cgi?id=199759
97         https://trac.webkit.org/changeset/247505
98
99 2019-07-16  Christopher Reid  <chris.reid@sony.com>
100
101         Bytecode cache should use FileSystem
102         https://bugs.webkit.org/show_bug.cgi?id=199759
103
104         Reviewed by Yusuke Suzuki.
105
106         * wtf/FileSystem.cpp:
107         * wtf/FileSystem.h:
108         Add support for creating MappedFileData from a preexisting file handle
109         for use with locked files. Also support creating MappedFileData
110         with either private or shared mappings.
111
112         * wtf/UUID.cpp:
113         Avoid ASSERT with returning a LazyNeverDestroyed object that hasn't been created.
114
115         * wtf/glib/FileSystemGlib.cpp:
116         * wtf/win/FileSystemWin.cpp:
117         Add truncateFile implementations.
118
119 2019-07-16  Myles C. Maxfield  <mmaxfield@apple.com>
120
121         New York font erroneously gets synthetic bold
122         https://bugs.webkit.org/show_bug.cgi?id=199653
123
124         Unreviewed MacCatalyst build fix.
125
126         * wtf/Platform.h:
127
128 2019-07-16  Michael Catanzaro  <mcatanzaro@igalia.com>
129
130         [WPE][GTK] Improvements and fixes in FileSystemGlib.cpp
131         https://bugs.webkit.org/show_bug.cgi?id=199800
132
133         Reviewed by Carlos Garcia Campos.
134
135         Use nullptr.
136
137         Fix a GFileInfo leak in getFileSize.
138
139         Use GRefPtr to clarify ownership of the GFileIOStream in openFile.
140
141         * wtf/glib/FileSystemGlib.cpp:
142         (WTF::FileSystemImpl::getFileSize):
143         (WTF::FileSystemImpl::getVolumeFreeSpace):
144         (WTF::FileSystemImpl::openTemporaryFile):
145         (WTF::FileSystemImpl::openFile):
146         (WTF::FileSystemImpl::seekFile):
147         (WTF::FileSystemImpl::writeToFile):
148         (WTF::FileSystemImpl::readFromFile):
149
150 2019-07-15  Myles C. Maxfield  <mmaxfield@apple.com>
151
152         New York font erroneously gets synthetic bold
153         https://bugs.webkit.org/show_bug.cgi?id=199653
154
155         Unreviewed watchOS build fix.
156
157         * wtf/Platform.h:
158
159 2019-07-15  Commit Queue  <commit-queue@webkit.org>
160
161         Unreviewed, rolling out r247462.
162         https://bugs.webkit.org/show_bug.cgi?id=199816
163
164         completely messed up the patch (Requested by litherum on
165         #webkit).
166
167         Reverted changeset:
168
169         "New York font erroneously gets synthetic bold"
170         https://bugs.webkit.org/show_bug.cgi?id=199653
171         https://trac.webkit.org/changeset/247462
172
173 2019-07-11  Myles C. Maxfield  <mmaxfield@apple.com>
174
175         New York font erroneously gets synthetic bold
176         https://bugs.webkit.org/show_bug.cgi?id=199653
177         <rdar://problem/51692592>
178
179         Reviewed by Simon Fraser.
180
181         * wtf/Platform.h:
182
183 2019-07-15  Brady Eidson  <beidson@apple.com>
184
185         Make WKURLSchemeTask thread safe.
186         <rdar://problem/50471863> and https://bugs.webkit.org/show_bug.cgi?id=199764
187
188         Reviewed by Alex Christensen.
189
190         * wtf/MainThread.cpp:
191         (WTF::callOnMainAndWait):
192         (WTF::callOnMainRunLoopAndWait):
193         (WTF::callOnMainThreadAndWait):
194         * wtf/MainThread.h:
195
196 2019-07-15  Dean Jackson  <dino@apple.com>
197
198         MacCatalyst asserts when command key is raised
199         https://bugs.webkit.org/show_bug.cgi?id=199805
200         <rdar://problem/53120393>
201
202         Reviewed by Tim Horton.
203
204         Add USE_UIKIT_KEYBOARD_ADDITIONS for iOS 13+ and macCatalyst.
205
206         * wtf/FeatureDefines.h:
207
208 2019-07-14  Chris Dumez  <cdumez@apple.com>
209
210         Add threading assertion to WeakPtrFactory::createWeakPtr()
211         https://bugs.webkit.org/show_bug.cgi?id=199639
212
213         Reviewed by Ryosuke Niwa.
214
215         Add threading assertion to WeakPtrFactory::createWeakPtr() to make sure it
216         is called on the same thread where the WeakPtrFactory wad constructed.
217
218         * wtf/WeakPtr.h:
219         (WTF::WeakPtrFactory::WeakPtrFactory):
220         (WTF::WeakPtrFactory::createWeakPtr const):
221
222 2019-07-14  Dean Jackson  <dino@apple.com>
223
224         WebGL not supported on WKWebView on UIKit for Mac
225         https://bugs.webkit.org/show_bug.cgi?id=199785
226         <rdar://problem/52911449>
227
228         Reviewed by Antoine Quint.
229
230         MacCatalyst has Apple Graphics Control, although
231         this area is very messy, see <rdar://53062794>.
232
233         * wtf/Platform.h:
234
235 2019-07-11  Myles C. Maxfield  <mmaxfield@apple.com>
236
237         New York font erroneously gets synthetic bold
238         https://bugs.webkit.org/show_bug.cgi?id=199653
239         <rdar://problem/51692592>
240
241         Reviewed by Simon Fraser.
242
243         * wtf/Platform.h:
244
245 2019-07-11  Pablo Saavedra  <psaavedra@igalia.com>
246
247         [WPE][GTK] Build failure with ENABLE_ACCESSIBILITY=OFF
248         https://bugs.webkit.org/show_bug.cgi?id=199625
249
250         Added ENABLE(ACCESSIBILITY) and replaced HAVE(ACCESSIBILITY)
251         with ENABLE(ACCESSIBILITY) in the code.
252
253         Additionally, the TestRunner code generator now honors the
254         Conditional IDL format.
255
256         Reviewed by Konstantin Tokarev.
257
258         * wtf/FeatureDefines.h:
259         * wtf/Platform.h:
260
261 2019-07-10  Ryan Haddad  <ryanhaddad@apple.com>
262
263         Unreviewed, rolling out r247286.
264
265         Caused TestWTF.WTF.StringOperators to fail on debug bots
266
267         Reverted changeset:
268
269         "Add StringBuilder member function which allows makeString()
270         style variadic argument construction"
271         https://bugs.webkit.org/show_bug.cgi?id=198997
272         https://trac.webkit.org/changeset/247286
273
274 2019-07-09  Michael Catanzaro  <mcatanzaro@igalia.com>
275
276         [WPE][GTK] GUniqueOutPtr::release should return a raw pointer
277         https://bugs.webkit.org/show_bug.cgi?id=199579
278
279         Reviewed by Carlos Garcia Campos.
280
281         GUniqueOutPtr::release should release to a raw pointer, rather than a GUniquePtr. If a
282         GUniquePtr is desired, it's trivial to construct one from the raw pointer, but all existing
283         callsites under Source/ would rather have a raw pointer. Currently they have to call
284         release().release() to get the raw pointer, which is annoying.
285
286         * wtf/glib/GUniquePtr.h:
287         (WTF::GUniqueOutPtr::release):
288
289 2019-07-09  Sam Weinig  <weinig@apple.com>
290
291         Add StringBuilder member function which allows makeString() style variadic argument construction
292         https://bugs.webkit.org/show_bug.cgi?id=198997
293
294         Reviewed by Darin Adler.
295
296         Adds new StringBuilder::flexibleAppend(...) member function which allows passing one or more 
297         string-adaptable (in the sense that there is StringTypeAdapter specialization for the 
298         type) parameters. This re-ususes the variadic template infrastructure in StringConcatenate.h
299         that is used for makeString(...) allowing for improvements in one to benefit the other.
300
301         The advantage of StringBuilder::flexibleAppend(...) over calling StringBuilder::append(...)
302         multiple times (beyond the code sharing with makeString(...) is that it can avoid unnecessary
303         additional re-allocations when the StringBuilder needs to expand it's capacity. It does this
304         by computing the complete required length for all the passed arguments and then ensuring enough
305         capacity is available. It also reduces the allocation overhead versus the anti-pattern of
306         builder.append(makeString(...)).
307
308         Ideally, this member function should eventually just be called StringBuilder::append(...), but
309         the current overload set for StringBuilder::append(...) makes this complicated due to overloads
310         that take two arguments such as StringBuilder::append(const UChar*, unsigned). Going forward, we
311         should rename or remove those overloads and move to a standard interface. 
312
313         * wtf/posix/FileSystemPOSIX.cpp:
314         (WTF::FileSystemImpl::pathByAppendingComponents):
315         Adopt StringBuilder::flexibleAppend, using to combine the append of '/' and component.
316
317         * wtf/text/StringBuilder.cpp:
318         (WTF::StringBuilder::appendUninitialized):
319         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheck):
320         Extract the part of appendUnitialized that doesn't do the overflow check
321         into it's own member function to allow callers that have already done the
322         overflow check to bypass it.
323
324         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForUChar):
325         (WTF::StringBuilder::appendUninitializedWithoutOverflowCheckForLChar):
326         Added to allow template member function flexibleAppendFromAdapters to call
327         appendUninitializedWithoutOverflowCheck without moving it to the header.
328         
329         * wtf/text/StringBuilder.h:
330         (WTF::StringBuilder::flexibleAppendFromAdapters):
331         (WTF::StringBuilder::flexibleAppend):
332         Modeled on tryMakeStringFromAdapters in StringConcatenate.h, these
333         eagerly compute the required length, expand the buffer and then use
334         the existing string type adaptor accumulation functions used by makeString. 
335
336         * wtf/text/StringConcatenate.h:
337         (WTF::stringTypeAdapterAccumulator):
338         (WTF::tryMakeStringFromAdapters):
339         (WTF::makeStringAccumulator): Deleted.
340         Renames makeStringAccumulator to stringTypeAdapterAccumulator now that it is used
341         by more than just makeString.
342
343 2019-07-09  Alex Christensen  <achristensen@webkit.org>
344
345         When parsing an IPv4 address, wait until after deciding it is indeed an IPv4 address before reporting syntax violations
346         https://bugs.webkit.org/show_bug.cgi?id=199628
347
348         Reviewed by Brady Eidson.
349
350         Otherwise, we sometimes report syntax violations on things that are not IPv4 addresses and don't have syntax violations.
351         I added a unit test with one such URL that used to cause an assertion.
352
353         * wtf/URLParser.cpp:
354         (WTF::URLParser::parseIPv4Host):
355
356 2019-07-09  Alex Christensen  <achristensen@webkit.org>
357
358         Remove invalid assertion in URLParser::domainToASCII
359         https://bugs.webkit.org/show_bug.cgi?id=199624
360
361         Reviewed by Brady Eidson.
362
363         When a non-ASCII domain's punycode encoding is longer than 63 characters,
364         the URL is supposed to fail to parse, according to https://www.unicode.org/reports/tr46/#ToASCII
365         We and all other browsers do this.  When uidna_nameToASCII tries to punycode encode such a domain,
366         it can return a number larger than 63.  In this case, processingDetails.errors is UIDNA_ERROR_LABEL_TOO_LONG
367         and we fail to parse as desired and uidna_nameToASCII did not write out of bounds, so it was just the assertion
368         that was wrong.  I added some unit tests that would have hit the assertion and verify that we fail at the correct length.
369
370         * wtf/URLParser.cpp:
371         (WTF::URLParser::domainToASCII):
372
373 2019-07-09  Alex Christensen  <achristensen@webkit.org>
374
375         URLParser should reserialize IPv6 addresses that end with a colon
376         https://bugs.webkit.org/show_bug.cgi?id=199627
377
378         Reviewed by Brady Eidson.
379
380         When an IPv6 address ends in a colon, the colon should be removed which means the
381         serialized output is different than the input, which the URLParser calls a syntax violation.
382         This matches the URL specification, and I added a unit test that used to assert.
383
384         * wtf/URLParser.cpp:
385         (WTF::URLParser::parseIPv6Host):
386
387 2019-07-08  Chris Dumez  <cdumez@apple.com>
388
389         Use WeakHashSet for WebUserContentControllerProxy::m_processes
390         https://bugs.webkit.org/show_bug.cgi?id=199591
391         <rdar://problem/52798721>
392
393         Reviewed by Youenn Fablet.
394
395         Update WeakHashSet::add() to return an AddResult type, similarly to our other containers.
396
397         * wtf/WeakHashSet.h:
398         (WTF::WeakHashSet::add):
399
400 2019-07-08  Christopher Reid  <chris.reid@sony.com>
401
402         Implement MappedFileData for Windows
403         https://bugs.webkit.org/show_bug.cgi?id=198269
404
405         Reviewed by Darin Adler.
406
407         Original patch by Fujii Hironori.
408
409         Add Windows implementations for MappedFileData constructor and destructor.
410
411         * wtf/FileSystem.cpp:
412         * wtf/FileSystem.h:
413         * wtf/win/FileSystemWin.cpp:
414
415 2019-07-08  Chris Dumez  <cdumez@apple.com>
416
417         Add threading assertion to WTF::CompletionHandler
418         https://bugs.webkit.org/show_bug.cgi?id=199516
419
420         Reviewed by Alex Christensen.
421
422         Add threading assertion to WTF::CompletionHandler to try and catch common cases
423         of unsafe usage (completion handler constructed on one thread but called on
424         another).
425
426         * wtf/CompletionHandler.h:
427         (WTF::CompletionHandler<Out):
428
429 2019-07-08  Antoine Quint  <graouts@apple.com>
430
431         [Pointer Events] Enable only on the most recent version of the supported iOS family
432         https://bugs.webkit.org/show_bug.cgi?id=199562
433         <rdar://problem/52766511>
434
435         Reviewed by Dean Jackson.
436
437         We really don't need HAVE_UI_WEB_TOUCH_EVENTS_GESTURE_RECOGNIZER_WITH_ACTIVE_TOUCHES_BY_ID since the UIKit SPI
438         that was added in iOS 13 that it's checking for is really required for all parts of the implementation of Pointer
439         Events, including dispatch of the "pointercancel" event and support for the "touch-action" CSS property.
440
441         * wtf/Platform.h:
442
443 2019-07-05  Ryan Haddad  <ryanhaddad@apple.com>
444
445         Unreviewed, rolling out r247115.
446
447         Breaks lldbWebKitTester (and by extension, test-webkitpy)
448
449         Reverted changeset:
450
451         "[WHLSL] Standard library is too big to directly include in
452         WebCore"
453         https://bugs.webkit.org/show_bug.cgi?id=198186
454         https://trac.webkit.org/changeset/247115
455
456 2019-07-03  Jonathan Bedard  <jbedard@apple.com>
457
458         [Catalina] Enable WebKit build
459         https://bugs.webkit.org/show_bug.cgi?id=199209
460
461         Reviewed by Darin Adler.
462
463         * wtf/spi/cocoa/SecuritySPI.h: Declare SecTrustedApplicationCreateFromPath(...).
464
465 2019-07-03  Keith Miller  <keith_miller@apple.com>
466
467         PACCage should first cage leaving PAC bits intact then authenticate
468         https://bugs.webkit.org/show_bug.cgi?id=199372
469
470         Reviewed by Saam Barati.
471
472         * wtf/CagedPtr.h:
473         (WTF::CagedPtr::get const):
474         (WTF::CagedPtr::getMayBeNull const):
475         (WTF::CagedPtr::mergePointers):
476
477 2019-07-03  Ryan Haddad  <ryanhaddad@apple.com>
478
479         Unreviewed, rolling out r246616.
480
481         Caused http/tests/inspector/network/har/har-page.html to fail
482         on Catalina.
483
484         Reverted changeset:
485
486         "Web Inspector: Network: replace CFNetwork SPI with new API
487         where able"
488         https://bugs.webkit.org/show_bug.cgi?id=198762
489         https://trac.webkit.org/changeset/246616
490
491 2019-07-02  Commit Queue  <commit-queue@webkit.org>
492
493         Unreviewed, rolling out r247041.
494         https://bugs.webkit.org/show_bug.cgi?id=199425
495
496         broke some iOS arm64e tests (Requested by keith_miller on
497         #webkit).
498
499         Reverted changeset:
500
501         "PACCage should first cage leaving PAC bits intact then
502         authenticate"
503         https://bugs.webkit.org/show_bug.cgi?id=199372
504         https://trac.webkit.org/changeset/247041
505
506 2019-07-02  Chris Dumez  <cdumez@apple.com>
507
508         ThreadSafeRefCounted<DestructionThread::Main> is not safe to use in the UIProcess
509         https://bugs.webkit.org/show_bug.cgi?id=199420
510         <rdar://problem/52289717>
511
512         Reviewed by Ryosuke Niwa.
513
514         * wtf/MainThread.cpp:
515         (WTF::isMainRunLoop):
516         (WTF::callOnMainRunLoop):
517         * wtf/MainThread.h:
518         Add some function to MainThread.h to be used by ThreadSafeRefCounted to interact with the
519         main RunLoop. This is used to avoid a circular dependency between RunLoop (which is
520         ThreadSafeRefCounted) and ThreadSafeReCounted.
521
522         * wtf/ThreadSafeRefCounted.h:
523         (WTF::ThreadSafeRefCounted::deref const):
524         Add a new DestructionThread::MainRunLoop enum value to be used by classes that need to
525         be destroyed on the main RunLoop rather than the main thread (which may be different
526         when WK1 is invoved)
527
528 2019-07-02  Robin Morisset  <rmorisset@apple.com>
529
530         [WHLSL] the initializer in VariableDeclaration should be a std::unique_ptr, not Optional<UniqueRef<..>>
531         https://bugs.webkit.org/show_bug.cgi?id=199389
532
533         Reviewed by Sam Weinig.
534
535         * wtf/UniqueRef.h:
536         (WTF::UniqueRef::moveToUniquePtr): Added.
537
538 2019-07-02  Keith Miller  <keith_miller@apple.com>
539
540         PACCage should first cage leaving PAC bits intact then authenticate
541         https://bugs.webkit.org/show_bug.cgi?id=199372
542
543         Reviewed by Saam Barati.
544
545         * wtf/CagedPtr.h:
546         (WTF::CagedPtr::get const):
547         (WTF::CagedPtr::getMayBeNull const):
548         (WTF::CagedPtr::mergePointers):
549
550 2019-07-01  Philippe Normand  <pnormand@igalia.com>
551
552         [GStreamer] Cannot play Bert's Bytes radio stream from http://radio.dos.nl/
553         https://bugs.webkit.org/show_bug.cgi?id=198376
554
555         Reviewed by Xabier Rodriguez-Calvar.
556
557         * wtf/glib/GLibUtilities.h:
558         (enumToString): Utility function to get a string representation of of a GLib enum.
559
560 2019-06-22  Darin Adler  <darin@apple.com>
561
562         Streamline some string code, focusing on functions that were using substringSharingImpl
563         https://bugs.webkit.org/show_bug.cgi?id=198898
564
565         Reviewed by Daniel Bates.
566
567         * wtf/URLHelpers.cpp:
568         (WTF::URLHelpers::applyHostNameFunctionToURLString): Change code using
569         substringSharingImpl so it could call String::find to call StringView::contains
570         instead. Also rewrote lambdas to be simpler and likely more efficient.
571         Rewrote another case using substringSharingImpl so it could call String::find
572         to call StringView::find instead.
573
574         * wtf/text/StringView.cpp:
575         (WTF::StringView::startsWith const): Added.
576
577         * wtf/text/StringView.h: Tweaked style a bit, and added an overload of
578         StringView::contains that takes a CodeUnitMatchFunction and an overload
579         of startsWith that cakes a UChar.
580
581 2019-06-28  Konstantin Tokarev  <annulen@yandex.ru>
582
583         Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733
584         https://bugs.webkit.org/show_bug.cgi?id=199317
585
586         Reviewed by Michael Catanzaro.
587
588         While IconDatabase and all code using it was removed,
589         ENABLE_ICONDATABASE still exists as build option and C++ macro.
590
591         * wtf/FeatureDefines.h:
592
593 2019-06-27  Konstantin Tokarev  <annulen@yandex.ru>
594
595         Avoid using WTF::Function for passing local function pointers and closures in URLHelpers.cpp
596         https://bugs.webkit.org/show_bug.cgi?id=199271
597
598         Reviewed by Yusuke Suzuki.
599
600         WTF::Function allocates memory on heap, which is totally redundant in this
601         case.
602
603         * wtf/URLHelpers.cpp:
604         (WTF::URLHelpers::isSecondLevelDomainNameAllowedByTLDRules):
605
606 2019-06-27  Timothy Hatcher  <timothy@apple.com>
607
608         Move WebKitLegacy off of a couple AppKit ivars.
609         https://bugs.webkit.org/show_bug.cgi?id=199279
610         rdar://problem/34983438
611
612         Reviewed by Tim Horton.
613
614         * wtf/Platform.h: Added HAVE_SUBVIEWS_IVAR_SPI.
615
616 2019-06-27  Beth Dakin  <bdakin@apple.com>
617
618         Upstream use of MACCATALYST
619         https://bugs.webkit.org/show_bug.cgi?id=199245
620         rdar://problem/51687723
621
622         Reviewed by Tim Horton.
623
624         * Configurations/SDKVariant.xcconfig:
625         * wtf/FeatureDefines.h:
626         * wtf/Platform.h:
627
628 2019-06-27  Don Olmstead  <don.olmstead@sony.com>
629
630         [FTW] Build JavaScriptCore
631         https://bugs.webkit.org/show_bug.cgi?id=199254
632
633         Reviewed by Brent Fulgham.
634
635         * wtf/PlatformFTW.cmake: Added.
636
637 2019-06-27  Fujii Hironori  <Hironori.Fujii@sony.com>
638
639         [CMake] Bump cmake_minimum_required version to 3.10
640         https://bugs.webkit.org/show_bug.cgi?id=199181
641
642         Reviewed by Don Olmstead.
643
644         * CMakeLists.txt:
645
646 2019-06-26  Konstantin Tokarev  <annulen@yandex.ru>
647
648         Remove unneeded #include <wtf/glib/GRefPtr.h>
649         https://bugs.webkit.org/show_bug.cgi?id=199228
650
651         Reviewed by Michael Catanzaro.
652
653         * wtf/MemoryPressureHandler.h:
654
655 2019-06-26  Myles C. Maxfield  <mmaxfield@apple.com>
656
657         REGRESSION: ( r246394 ) webgpu/whlsl-buffer-fragment.html and webgpu/whlsl-buffer-vertex.html are failing
658         https://bugs.webkit.org/show_bug.cgi?id=199012
659
660         Reviewed by Saam Barati.
661
662         * wtf/Platform.h:
663
664 2019-06-25  Keith Miller  <keith_miller@apple.com>
665
666         CagedPtr doesn't merge PAC bits back into the resulting caged pointer.
667         https://bugs.webkit.org/show_bug.cgi?id=199214
668
669         Reviewed by Yusuke Suzuki.
670
671         The current code means that caging will just strip the any failed
672         authentication bits. Adding this code doesn't appear to be a
673         regression on iPhone Xs.
674
675         * wtf/CagedPtr.h:
676         (WTF::CagedPtr::get const):
677         (WTF::CagedPtr::getMayBeNull const):
678         (WTF::CagedPtr::getUnsafe const):
679         (WTF::CagedPtr::mergePointers):
680
681 2019-06-25  Sam Weinig  <weinig@apple.com>
682
683         Experiment with simple structured bindings use
684         https://bugs.webkit.org/show_bug.cgi?id=198905
685
686         Reviewed by Darin Adler.
687
688         * wtf/URLHelpers.cpp:
689         (WTF::URLHelpers::mapHostNames):
690         Simplify code using c++ structured bindings (https://en.cppreference.com/w/cpp/language/structured_binding)
691         to see if all the platforms will work with it.
692
693 2019-06-25  Adam Barth  <abarth@webkit.org>
694
695         [fuchsia] Update to newer zx_clock_get syscall
696         https://bugs.webkit.org/show_bug.cgi?id=199191
697
698         Reviewed by Sam Weinig.
699
700         Fuchsia has changed the zx_clock_get syscall to return the clock value
701         via an out parameter rather than via its return value. This change
702         makes zx_clock_get consistent with all the other syscalls.
703
704         This patch updates our use of zx_clock_get to use the new syscall. The
705         old syscall is no longer supported by Fuchsia.
706
707         * wtf/fuchsia/CPUTimeFuchsia.cpp:
708         (WTF::CPUTime::get): Switch to using the out parameter.
709         (WTF::CPUTime::forCurrentThread): Switch to using the out parameter.
710
711 2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>
712
713         Fully rename WebKitGTK+ -> WebKitGTK everywhere
714         https://bugs.webkit.org/show_bug.cgi?id=199159
715
716         Reviewed by Carlos Garcia Campos.
717
718         * wtf/URLParser.cpp:
719         (WTF::URLParser::internationalDomainNameTranscoder):
720
721 2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>
722
723         Require GCC 7
724         https://bugs.webkit.org/show_bug.cgi?id=198914
725
726         Reviewed by Darin Adler.
727
728         Remove now-stale GCC version check.
729
730         * wtf/Compiler.h:
731
732 2019-06-23  Simon Fraser  <simon.fraser@apple.com>
733
734         Add OverflowScrollProxyNodes to the scrolling tree
735         https://bugs.webkit.org/show_bug.cgi?id=199132
736
737         Reviewed by Antti Koivisto.
738         
739         Setting indent is useful if you want to make a new stream with the indent of an
740         existing stream.
741
742         * wtf/text/TextStream.h:
743         (WTF::TextStream::setIndent):
744
745 2019-06-20  Fujii Hironori  <Hironori.Fujii@sony.com>
746
747         Try to use C++14 std::enable_if_t in CheckedArithmetic.h again
748         https://bugs.webkit.org/show_bug.cgi?id=199099
749
750         Reviewed by Ross Kirsling.
751
752         r242235 changed CheckedArithmetic to not use C++14. Let's try
753         C++14 again.
754
755         * wtf/CheckedArithmetic.h: Use C++14 std::make_unsigned_t and std::enable_if_t.
756
757 2019-06-18  Darin Adler  <darin@apple.com>
758
759         Tidy up the remaining bits of the AtomicString to AtomString rename
760         https://bugs.webkit.org/show_bug.cgi?id=198990
761
762         Reviewed by Michael Catanzaro.
763
764         * wtf/text/AtomString.cpp: Fix a comment.
765         * wtf/text/AtomString.h: Tweak formatting a bit. Use nullptr instead of 0.
766         Removed "using AtomicString = AtomString".
767         * wtf/text/AtomStringImpl.cpp:
768         (WTF::CStringTranslator::translate): Use setIsAtom instead of setIsAtomic.
769         (WTF::UCharBufferTranslator::translate): Ditto.
770         (WTF::HashAndUTF8CharactersTranslator::translate): Ditto.
771         (WTF::SubstringTranslator::translate): Ditto.
772         (WTF::LCharBufferTranslator::translate): Ditto.
773         (WTF::BufferFromStaticDataTranslator::translate): Ditto.
774         (WTF::AtomStringImpl::addSlowCase): Ditto.
775         (WTF::AtomStringImpl::lookUpSlowCase): Updated assertion message.
776
777         * wtf/text/AtomStringImpl.h: Tweaked the implementation of add.
778         Updated comments to say AtomString.
779
780         * wtf/text/AtomStringTable.cpp:
781         (WTF::AtomStringTable::~AtomStringTable): Use setIsAtom.
782
783         * wtf/text/StringImpl.h: Updated name of StringAtomic and
784         s_hashFlagStringKindIsAtom. Renamed to flagIsAtom and setIsAtom.
785
786         * wtf/text/WTFString.cpp:
787         (WTF::String::isSafeToSendToAnotherThread const): Updated comment.
788
789 2019-06-20  Carlos Garcia Campos  <cgarcia@igalia.com>
790
791         [GTK] Remove support for GTK2 plugins
792         https://bugs.webkit.org/show_bug.cgi?id=199065
793
794         Reviewed by Sergio Villar Senin.
795
796         * wtf/Platform.h:
797         * wtf/glib/GTypedefs.h:
798
799 2019-06-19  Yusuke Suzuki  <ysuzuki@apple.com>
800
801         [bmalloc] IsoHeap's initialization is racy with IsoHeap::isInitialized
802         https://bugs.webkit.org/show_bug.cgi?id=199053
803
804         Reviewed by Saam Barati.
805
806         Add constexpr static functions to generate pseudo random numbers from __LINE__.
807
808         * wtf/WeakRandom.h:
809         (WTF::WeakRandom::nextState):
810         (WTF::WeakRandom::generate):
811         (WTF::WeakRandom::advance):
812
813 2019-06-19  Fujii Hironori  <Hironori.Fujii@sony.com>
814
815         Add WTF::crossThreadCopy(T&&) to utilize String::isolatedCopy() &&
816         https://bugs.webkit.org/show_bug.cgi?id=198957
817
818         Reviewed by Alex Christensen.
819
820         &&-qualified String::isolatedCopy() has a optimization path which
821         does just WTFMove if it isSafeToSendToAnotherThread which means
822         the object hasOneRef.
823
824         However, WTF::crossThreadCopy was using only &-qualified
825         isolatedCopy. To use the optimization, added
826         WTF::crossThreadCopy(T&&) overloading.
827
828         * wtf/CrossThreadCopier.h:
829         (WTF::crossThreadCopy): Added a overload of (T&&).
830         * wtf/CrossThreadTask.h:
831         (WTF::createCrossThreadTask): Removed explicit template arguments of crossThreadCopy.
832
833 2019-06-19  Devin Rousso  <drousso@apple.com>
834
835         Web Inspector: Network: replace CFNetwork SPI with new API where able
836         https://bugs.webkit.org/show_bug.cgi?id=198762
837
838         Reviewed by Timothy Hatcher.
839
840         * wtf/Platform.h:
841
842 2019-06-19  Alex Christensen  <achristensen@webkit.org>
843
844         Add a unit test for client certificate authentication
845         https://bugs.webkit.org/show_bug.cgi?id=197800
846
847         Reviewed by Youenn Fablet.
848
849         * wtf/spi/cocoa/SecuritySPI.h:
850         Move declarations from ArgumentCodersCF.cpp so they can be shared.
851
852 2019-06-19  Adrian Perez de Castro  <aperez@igalia.com>
853
854         [WPE][GTK] Fix build with unified sources disabled
855         https://bugs.webkit.org/show_bug.cgi?id=198752
856
857         Reviewed by Michael Catanzaro.
858
859         * wtf/text/StringBuilder.h: Add missing include of StringConcatenateNumbers.h
860
861 2019-06-19  Zan Dobersek  <zdobersek@igalia.com>
862
863         USE_ANGLE macro can be evaluated without being defined
864         https://bugs.webkit.org/show_bug.cgi?id=198991
865
866         Reviewed by Carlos Garcia Campos.
867
868         * wtf/Platform.h: On platforms not yet defining USE_ANGLE, the
869         incompatibility check with some other flags leads to the macro being
870         evaluated even when it was not defined, producing compiler warnings.
871         To avoid this, the macro should be defined to 0 before the check in
872         case it was not defined already.
873
874 2019-06-18  Dean Jackson  <dino@apple.com>
875
876         UIContextMenuInteraction implementation for WKContentView
877         https://bugs.webkit.org/show_bug.cgi?id=198986
878         <rdar://problem/51875189>
879
880         Reviewed by Andy Estes.
881
882         Add USE_UICONTEXTMENU for iOS 13+.
883
884         * wtf/Platform.h:
885
886 2019-06-18  Kenneth Russell  <kbr@chromium.org>
887
888         Add preliminary ANGLE backend to WebCore
889         https://bugs.webkit.org/show_bug.cgi?id=197755
890
891         Reviewed by Dean Jackson.
892
893         Add a USE_ANGLE definition to wtf/Platform.h (currently disabled)
894         which, when enabled, uses ANGLE instead of the OpenGL or OpenGL ES
895         backend.
896
897         * wtf/Platform.h:
898
899 2019-06-17  Jiewen Tan  <jiewen_tan@apple.com>
900
901         Move SOAuthorization from WebKitAdditions to WebKit
902         https://bugs.webkit.org/show_bug.cgi?id=198874
903         <rdar://problem/47573431>
904
905         Reviewed by Brent Fulgham.
906
907         * wtf/Platform.h:
908         Adds a feature flag to detect AppSSO framework.
909
910 2019-06-17  Ryan Haddad  <ryanhaddad@apple.com>
911
912         Unreviewed, rolling out r246501.
913
914         Breaks Apple internal builds.
915
916         Reverted changeset:
917
918         "Support using ANGLE as the backend for the WebGL
919         implementation"
920         https://bugs.webkit.org/show_bug.cgi?id=197755
921         https://trac.webkit.org/changeset/246501
922
923 2019-06-17  Kenneth Russell  <kbr@chromium.org>
924
925         Support using ANGLE as the backend for the WebGL implementation
926         https://bugs.webkit.org/show_bug.cgi?id=197755
927
928         Reviewed by Dean Jackson.
929
930         Add a USE_ANGLE definition to wtf/Platform.h (currently disabled)
931         which, when enabled, uses ANGLE instead of the OpenGL or OpenGL ES
932         backend.
933
934         * wtf/Platform.h:
935
936 2019-06-16  Darin Adler  <darin@apple.com>
937
938         Rename AtomicString to AtomString
939         https://bugs.webkit.org/show_bug.cgi?id=195276
940
941         Reviewed by Michael Catanzaro.
942
943         * many files: Let do-webcore-rename do the renaming.
944
945         * wtf/text/AtomString.h: After renaming, added AtomicString as a synonym for
946         now; helps smooth things over with a tiny bit of Apple internal software so
947         we don't have to do this all at once. Can remove it soon.
948
949 2019-06-16  Eric Carlson  <eric.carlson@apple.com>
950
951         [MediaStream] Avoid roundoff error when setting AVCapture min/max frame rate
952         https://bugs.webkit.org/show_bug.cgi?id=198875
953         <rdar://problem/51768374>
954
955         Reviewed by Youenn Fablet.
956
957         * wtf/MediaTime.h:
958         (WTF::LogArgument<MediaTime>::toString):
959         (WTF::LogArgument<MediaTimeRange>::toString):
960
961 2019-06-12  Antoine Quint  <graouts@apple.com>
962
963         Show the web page URL when sharing an AR model
964         https://bugs.webkit.org/show_bug.cgi?id=198812
965         <rdar://problem/48689498>
966
967         Reviewed by Dean Jackson.
968
969         * wtf/Platform.h:
970
971 2019-06-12  Youenn Fablet  <youenn@apple.com>
972
973         Use NSURLSession for WebSocket
974         https://bugs.webkit.org/show_bug.cgi?id=198568
975
976         Reviewed by Geoffrey Garen.
977
978         * wtf/Platform.h:
979         Introduce compile flag for WebSocket NSURLSession
980
981 2019-06-12  Commit Queue  <commit-queue@webkit.org>
982
983         Unreviewed, rolling out r246322.
984         https://bugs.webkit.org/show_bug.cgi?id=198796
985
986         "It's a huge page load regression on iOS" (Requested by
987         saamyjoon on #webkit).
988
989         Reverted changeset:
990
991         "Roll out PAC cage"
992         https://bugs.webkit.org/show_bug.cgi?id=198726
993         https://trac.webkit.org/changeset/246322
994
995 2019-06-10  Simon Fraser  <simon.fraser@apple.com>
996
997         Add logging for UI-side compositing hit-testing
998         https://bugs.webkit.org/show_bug.cgi?id=198739
999
1000         Reviewed by Antti Koivisto.
1001
1002         Make it possible to output an Objective-C object to TextStream, which will
1003         log its -description.
1004
1005         Also add a template for OptionSet<> printing.
1006
1007         * WTF.xcodeproj/project.pbxproj:
1008         * wtf/text/TextStream.h:
1009         (WTF::operator<<):
1010         * wtf/text/cocoa/TextStreamCocoa.mm: Added.
1011         (WTF::TextStream::operator<<):
1012
1013 2019-06-11  Saam Barati  <sbarati@apple.com>
1014
1015         Roll out PAC cage
1016         https://bugs.webkit.org/show_bug.cgi?id=198726
1017
1018         Reviewed by Keith Miller.
1019
1020         * WTF.xcodeproj/project.pbxproj:
1021         * wtf/CMakeLists.txt:
1022         * wtf/CagedPtr.h:
1023         (WTF::CagedPtr::CagedPtr):
1024         (WTF::CagedPtr::get const):
1025         (WTF::CagedPtr::getMayBeNull const):
1026         (WTF::CagedPtr::operator=):
1027         (WTF::CagedPtr::operator== const):
1028         (WTF::CagedPtr::operator!= const):
1029         (WTF::CagedPtr::operator bool const):
1030         (WTF::CagedPtr::operator* const):
1031         (WTF::CagedPtr::operator-> const):
1032         (WTF::CagedPtr::operator[] const):
1033         (WTF::CagedPtr::getUnsafe const): Deleted.
1034         (WTF::CagedPtr::at const): Deleted.
1035         (WTF::CagedPtr::recage): Deleted.
1036         * wtf/CagedUniquePtr.h:
1037         (WTF::CagedUniquePtr::CagedUniquePtr):
1038         (WTF::CagedUniquePtr::create):
1039         (WTF::CagedUniquePtr::operator=):
1040         (WTF::CagedUniquePtr::~CagedUniquePtr):
1041         (WTF::CagedUniquePtr::destroy):
1042         * wtf/Gigacage.h:
1043         (Gigacage::caged):
1044         (Gigacage::cagedMayBeNull): Deleted.
1045         * wtf/PtrTag.h:
1046         (WTF::tagArrayPtr): Deleted.
1047         (WTF::untagArrayPtr): Deleted.
1048         (WTF::removeArrayPtrTag): Deleted.
1049         (WTF::retagArrayPtr): Deleted.
1050         * wtf/TaggedArrayStoragePtr.h:
1051         (WTF::TaggedArrayStoragePtr::TaggedArrayStoragePtr): Deleted.
1052         (WTF::TaggedArrayStoragePtr::get const): Deleted.
1053         (WTF::TaggedArrayStoragePtr::getUnsafe const): Deleted.
1054         (WTF::TaggedArrayStoragePtr::resize): Deleted.
1055         (WTF::TaggedArrayStoragePtr::operator bool const): Deleted.
1056
1057 2019-06-10  Andy Estes  <aestes@apple.com>
1058
1059         [iOS] Use PDFKit SPI for taking snapshots when the hosting app is not entitled for global capture
1060         https://bugs.webkit.org/show_bug.cgi?id=198731
1061         <rdar://problem/46215174>
1062
1063         Reviewed by Tim Horton.
1064
1065         * wtf/FeatureDefines.h:
1066
1067 2019-06-10  Sam Weinig  <weinig@apple.com>
1068
1069         Remove Dashboard support
1070         https://bugs.webkit.org/show_bug.cgi?id=198615
1071
1072         Reviewed by Ryosuke Niwa.
1073
1074         * wtf/FeatureDefines.h:
1075
1076 2019-06-10  Timothy Hatcher  <timothy@apple.com>
1077
1078         Integrate dark mode support for iOS.
1079         https://bugs.webkit.org/show_bug.cgi?id=198687
1080         rdar://problem/51545643
1081
1082         Reviewed by Tim Horton.
1083
1084         * wtf/Platform.h:
1085
1086 2019-06-08  Andy Estes  <aestes@apple.com>
1087
1088         [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests
1089         https://bugs.webkit.org/show_bug.cgi?id=198690
1090         <rdar://problem/48041803>
1091
1092         Reviewed by Tim Horton.
1093
1094         * wtf/FeatureDefines.h: Defined HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER, and cleaned up some
1095         other PassKit HAVEs.
1096
1097 2019-06-06  Caio Lima  <ticaiolima@gmail.com>
1098
1099         [JSCOnly] JSCOnly port is not building on macOS
1100         https://bugs.webkit.org/show_bug.cgi?id=198563
1101
1102         Reviewed by Don Olmstead.
1103
1104         We are adding `<mach/vm_types.h>` to fix build issues when compiling
1105         JSCOnly port on macOS.
1106
1107         * wtf/WTFAssertions.cpp:
1108
1109 2019-06-03  Commit Queue  <commit-queue@webkit.org>
1110
1111         Unreviewed, rolling out r246022.
1112         https://bugs.webkit.org/show_bug.cgi?id=198486
1113
1114         Causing Internal build failures and JSC test failures
1115         (Requested by ShawnRoberts on #webkit).
1116
1117         Reverted changeset:
1118
1119         "Reenable Gigacage on ARM64."
1120         https://bugs.webkit.org/show_bug.cgi?id=198453
1121         https://trac.webkit.org/changeset/246022
1122
1123 2019-06-03  Darin Adler  <darin@apple.com>
1124
1125         Finish cleanup of String::number for floating point
1126         https://bugs.webkit.org/show_bug.cgi?id=198471
1127
1128         Reviewed by Yusuke Suzuki.
1129
1130         * wtf/JSONValues.cpp:
1131         (WTF::JSONImpl::Value::writeJSON const): Use appendNumber instead of
1132         appendECMAScriptNumber, since that's now the default.
1133
1134         * wtf/text/StringBuilder.cpp:
1135         (WTF::StringBuilder::appendNumber): Renamed from appendShortestFormNumber.
1136         * wtf/text/StringBuilder.h: Removed appendShortestFormNumber and
1137         appendECMAScriptNumber, replacing both with overload of appendNumber.
1138
1139         * wtf/text/WTFString.cpp:
1140         (WTF::String::number): Renamed from numberToStringShortest.
1141         * wtf/text/WTFString.h: Removed numberToStringShortest and
1142         numberToStringECMAScript, replacing both with overload of number.
1143
1144 2019-06-02  Keith Miller  <keith_miller@apple.com>
1145
1146         Reenable Gigacage on ARM64.
1147         https://bugs.webkit.org/show_bug.cgi?id=198453
1148
1149         Reviewed by Filip Pizlo.
1150
1151         * wtf/CagedPtr.h:
1152         (WTF::CagedPtr::authenticatingLoad):
1153         (WTF::CagedPtr::get const):
1154         (WTF::CagedPtr::getMayBeNull const):
1155
1156 2019-05-31  Alex Christensen  <achristensen@webkit.org>
1157
1158         URLParser::parseIPv6Host should properly parse 0's around compression
1159         https://bugs.webkit.org/show_bug.cgi?id=198424
1160
1161         Reviewed by Tim Horton.
1162
1163         * wtf/URLParser.cpp:
1164         (WTF::URLParser::parseIPv6Host):
1165
1166 2019-05-31  Alex Christensen  <achristensen@webkit.org>
1167
1168         URLParser::parseHostAndPort should not allow non-port characters after an ipv6 host
1169         https://bugs.webkit.org/show_bug.cgi?id=198428
1170         <rdar://problem/51209196>
1171
1172         Reviewed by Tim Horton.
1173
1174         This matches Chrome and Firefox.
1175
1176         * wtf/URLParser.cpp:
1177         (WTF::URLParser::parseHostAndPort):
1178
1179 2019-05-31  Tim Horton  <timothy_horton@apple.com>
1180
1181         Optionally respect device management restrictions when loading from the network
1182         https://bugs.webkit.org/show_bug.cgi?id=198318
1183         <rdar://problem/44263806>
1184
1185         Reviewed by Alex Christensen.
1186
1187         * wtf/Platform.h:
1188         Add a HAVE flag for DeviceManagement.framework.
1189         It does exist in the simulator, but does not function; pretend it doesn't exist.
1190
1191 2019-05-31  Geoffrey Garen  <ggaren@apple.com>
1192
1193         Some WeakPtr cleanup
1194         https://bugs.webkit.org/show_bug.cgi?id=198390
1195
1196         Reviewed by Chris Dumez.
1197
1198         * wtf/WeakHashSet.h:
1199         (WTF::HashTraits<Ref<WeakPtrImpl>>::isReleasedWeakValue):
1200         (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator):
1201         Updated for rename to WeakPtrImpl.
1202
1203         (WTF::WeakHashSet::WeakHashSetConstIterator::get const): Updated for new
1204         get() interface. Also, switched to iterator operator* to help clarify
1205         the double dereference here.
1206
1207         (WTF::WeakHashSet::add):
1208         (WTF::WeakHashSet::remove):
1209         (WTF::WeakHashSet::contains const):
1210         (WTF::WeakHashSet::computeSize const):
1211         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Deleted.
1212         Updated for rename to WeakPtrImpl.
1213
1214         * wtf/WeakPtr.h:
1215         (WTF::WeakPtrImpl::create):
1216         (WTF::WeakPtrImpl::~WeakPtrImpl): Renamed WeakReference to WeakPtrImpl.
1217         Now we don't need a comment explaining that this class is the backing
1218         implementation of WeakPtr.
1219
1220         (WTF::WeakPtrImpl::get): Return the pointer type we stored, rather than
1221         the pointer type requested by our client. It's a little too surprising
1222         for a field to store one pointer type and load another.
1223
1224         (WTF::WeakPtrImpl::WeakPtrImpl): Fixed a theoretical type safety bug.
1225         Make sure to store T::WeakValueType* instead of T*, since they might
1226         not be the same pointer value. (In practice, T and T::WeakValueType*
1227         are always the same type in this constructor because WeakPtrFactory
1228         makes them so, but it's best not to depend on implementation details
1229         across classes.)
1230
1231         (WTF::WeakPtr::get const): Updated for new get() interface.
1232
1233         (WTF::WeakPtr::operator bool const):
1234         (WTF::WeakPtr::operator=):
1235         (WTF::WeakPtr::clear):
1236         (WTF::WeakPtr::WeakPtr): Updated for WeakPtrImpl rename.
1237
1238         (WTF::WeakPtrFactory::~WeakPtrFactory): Updated for WeakPtrImpl rename.
1239
1240         (WTF::WeakPtrFactory::createWeakPtr const): ASSERT that the passed-in
1241         pointer is equal to the stored pointer. As a space optimization, we
1242         require our client to remind us what we point to each time a weak
1243         pointer is created -- but nothing guarantees that our client will do
1244         this correctly.
1245
1246         (WTF::WeakPtrFactory::revokeAll): Updated for WeakPtrImpl rename.
1247
1248         (WTF::CanMakeWeakPtr::weakPtrFactory const):
1249         (WTF::CanMakeWeakPtr::weakPtrFactory): Use idiomatic accessor naming.
1250
1251         (WTF::weak_ptr_impl_cast): Fixed a theoretical type safety bug.
1252         Previously, if Base and Derived both inherited CanMakeWeakPtr, and
1253         you casted WeakPtr<Base> to WeakPtr<Derived> (or vice versa), and
1254         casting Base <-> Derived required pointer fixup, the previous
1255         compile-time check would accept the cast, even though the stored pointer
1256         would be wrong.
1257
1258         (WTF::WeakPtr<T>::WeakPtr):
1259         (WTF::=):
1260         (WTF::makeWeakPtr):
1261         (WTF::WeakReference::create): Deleted.
1262         (WTF::WeakReference::~WeakReference): Deleted.
1263         (WTF::WeakReference::get const): Deleted.
1264         (WTF::WeakReference::operator bool const): Deleted.
1265         (WTF::WeakReference::clear): Deleted.
1266         (WTF::WeakReference::WeakReference): Deleted.
1267         (WTF::weak_reference_cast): Deleted. Updated for rename to WeakPtrImpl.
1268
1269         Don't export WeakPtrImpl because it's an implmenetation detail and
1270         it shouldn't be easy to use outside WTF.
1271
1272 2019-05-31  Don Olmstead  <don.olmstead@sony.com>
1273
1274         [CMake] Add WebKit::WTF target
1275         https://bugs.webkit.org/show_bug.cgi?id=198400
1276
1277         Reviewed by Konstantin Tokarev.
1278
1279         Create the WebKit::WTF target and use that to propagate headers. Use
1280         WEBKIT_COPY_FILES instead of WEBKIT_MAKE_FORWARDING_HEADERS.
1281
1282         * wtf/CMakeLists.txt:
1283
1284 2019-05-30  Saam Barati  <sbarati@apple.com>
1285
1286         [WHLSL] Enforce variable lifetimes
1287         https://bugs.webkit.org/show_bug.cgi?id=195794
1288         <rdar://problem/50746293>
1289
1290         Reviewed by Myles C. Maxfield.
1291
1292         * wtf/PrintStream.h:
1293
1294 2019-05-30  Keith Rollin  <krollin@apple.com>
1295
1296         Fix yet more deprecated uses of -[UIApplication interfaceOrientation]
1297         https://bugs.webkit.org/show_bug.cgi?id=198381
1298         <rdar://problem/51265846>
1299
1300         Reviewed by Wenson Hsieh.
1301
1302         r245267, r245272, and r245874 fixed many instances of this issue; this
1303         change fixes the issue for tvOS.
1304
1305         * wtf/FeatureDefines.h:
1306
1307 2019-05-29  David Kilzer  <ddkilzer@apple.com>
1308
1309         Clean up a few #include statements in WTF
1310         <https://webkit.org/b/198351>
1311
1312         Reviewed by Alex Christensen.
1313
1314         * benchmarks/HashSetDFGReplay.cpp:
1315         - Add missing "config.h" include.
1316         * wtf/ParallelJobsGeneric.cpp:
1317         - Replace include of ParallelJobs.h with
1318           ParallelJobsGeneric.h.
1319         * wtf/StackBounds.cpp:
1320         - Fix include ordering of StackBounds.h.
1321
1322 2019-05-29  Keith Rollin  <krollin@apple.com>
1323
1324         Followup to r245267 and r245272: fix even more deprecated uses of -[UIApplication interfaceOrientation]
1325         https://bugs.webkit.org/show_bug.cgi?id=198348
1326         <rdar://problem/51234077>
1327
1328         Reviewed by Wenson Hsieh.
1329
1330         r245267 and r245272 fixed many instances of this issue; this change
1331         fixes the issue for watchOS.
1332
1333         * wtf/FeatureDefines.h:
1334
1335 2019-05-29  David Kilzer  <ddkilzer@apple.com>
1336
1337         IndexedDatabase Server thread in com.apple.WebKit.Networking process leaks objects into an autoreleasePool that's never cleared
1338         <https://webkit.org/b/198346>
1339         <rdar://problem/50895658>
1340
1341         Reviewed by Brent Fulgham.
1342
1343         * wtf/CrossThreadTaskHandler.cpp:
1344         (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
1345         - Add optional second argument to enable use of an
1346           AutodrainedPool when running the runloop.
1347         (WTF::CrossThreadTaskHandler::taskRunLoop):
1348         - Create an AutodrainedPool if requested when
1349           CrossThreadTaskHandler was created.
1350         * wtf/CrossThreadTaskHandler.h:
1351         (WTF::CrossThreadTaskHandler::AutodrainedPoolForRunLoop):
1352         - Add enum class for enabling an AutodrainedPool for
1353           CrossThreadTaskHandler::taskRunLoop().
1354         (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
1355         - Add optional second argument to enable use of an
1356           AutodrainedPool when running the runloop.
1357
1358 2019-05-29  Geoffrey Garen  <ggaren@apple.com>
1359
1360         WeakPtr breaks vtables when upcasting to base classes
1361         https://bugs.webkit.org/show_bug.cgi?id=188799
1362
1363         Reviewed by Youenn Fablet.
1364
1365         This patch switches from reinterpret_cast to static_cast when loading
1366         from WeakReference storage.
1367
1368         We know which type to cast *to* because it's specified by the type of
1369         the calling WeakPtr.
1370
1371         We know which type to cast *from* because it's specified by a typedef
1372         in CanMakeWeakPtr.
1373
1374         (Our convention is that we store a pointer to the class that derives
1375         from CanMakeWeakPtr. We cast from that pointer to derived pointers when
1376         we get(). This means that #include of the derived type header is now
1377         required in order to get() the pointer.)
1378
1379         * wtf/WeakHashSet.h:
1380         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Definition
1381         is now eagerly required because WeakReference is not a template anymore.
1382
1383         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
1384         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
1385         (WTF::WeakHashSet::remove):
1386         (WTF::WeakHashSet::contains const):
1387         (WTF::WeakHashSet::computesEmpty const):
1388         (WTF::WeakHashSet::hasNullReferences const):
1389         (WTF::WeakHashSet::computeSize const):
1390         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue): Deleted.
1391         Updated for new WeakReference get() API.
1392
1393         * wtf/WeakPtr.h: Use a macro for TestAPI support. We can't use template
1394         specialization because WeakReference is not a class template anymore.
1395         (Or maybe we could have kept it working with a dummy template argument?
1396         Felt weird, so I switched.)
1397
1398         (WTF::WeakReference::create):
1399         (WTF::WeakReference::~WeakReference):
1400         (WTF::WeakReference::get const):
1401         (WTF::WeakReference::operator bool const):
1402         (WTF::WeakReference::WeakReference): WeakReference is just a void* now.
1403         It's the caller's responsibility, when creating and getting, to use
1404         a consistent storage type. We ensure a canonical storage type using a
1405         typedef inside CanMakeWeakPtr.
1406
1407         (WTF::WeakPtr::WeakPtr):
1408         (WTF::WeakPtr::get const):
1409         (WTF::WeakPtr::operator bool const):
1410         (WTF::WeakPtr::operator-> const):
1411         (WTF::WeakPtr::operator* const): Adopted new WeakReference API.
1412
1413         (WTF::WeakPtrFactory::createWeakPtr const): No need for reinterpret_cast.
1414
1415         (WTF::weak_reference_cast): This isn't required for correctness, but it's
1416         nice to show a complier error at WeakPtr construction sites when you know
1417         that the types won't work. Otherwise, you get compiler errors at
1418         dereference sites, which are slightly more mysterious ways of saying that
1419         you constructed your WeakPtr incorrectly.
1420
1421         (WTF::WeakPtr<T>::WeakPtr):
1422         (WTF::=):
1423         (WTF::makeWeakPtr):
1424         (WTF::weak_reference_upcast): Deleted.
1425         (WTF::weak_reference_downcast): Deleted.
1426
1427 2019-05-29  Ryan Haddad  <ryanhaddad@apple.com>
1428
1429         Unreviewed, rolling out r245857.
1430
1431         Breaks internal builds.
1432
1433         Reverted changeset:
1434
1435         "WeakPtr breaks vtables when upcasting to base classes"
1436         https://bugs.webkit.org/show_bug.cgi?id=188799
1437         https://trac.webkit.org/changeset/245857
1438
1439 2019-05-28  Geoffrey Garen  <ggaren@apple.com>
1440
1441         WeakPtr breaks vtables when upcasting to base classes
1442         https://bugs.webkit.org/show_bug.cgi?id=188799
1443
1444         Reviewed by Youenn Fablet.
1445
1446         This patch switches from reinterpret_cast to static_cast when loading
1447         from WeakReference storage.
1448
1449         We know which type to cast *to* because it's specified by the type of
1450         the calling WeakPtr.
1451
1452         We know which type to cast *from* because it's specified by a typedef
1453         in CanMakeWeakPtr.
1454
1455         (Our convention is that we store a pointer to the class that derives
1456         from CanMakeWeakPtr. We cast from that pointer to derived pointers when
1457         we get(). This means that #include of the derived type header is now
1458         required in order to get() the pointer.)
1459
1460         * wtf/WeakHashSet.h:
1461         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Definition
1462         is now eagerly required because WeakReference is not a template anymore.
1463
1464         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
1465         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
1466         (WTF::WeakHashSet::remove):
1467         (WTF::WeakHashSet::contains const):
1468         (WTF::WeakHashSet::computesEmpty const):
1469         (WTF::WeakHashSet::hasNullReferences const):
1470         (WTF::WeakHashSet::computeSize const):
1471         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue): Deleted.
1472         Updated for new WeakReference get() API.
1473
1474         * wtf/WeakPtr.h: Use a macro for TestAPI support. We can't use template
1475         specialization because WeakReference is not a class template anymore.
1476         (Or maybe we could have kept it working with a dummy template argument?
1477         Felt weird, so I switched.)
1478
1479         (WTF::WeakReference::create):
1480         (WTF::WeakReference::~WeakReference):
1481         (WTF::WeakReference::get const):
1482         (WTF::WeakReference::operator bool const):
1483         (WTF::WeakReference::WeakReference): WeakReference is just a void* now.
1484         It's the caller's responsibility, when creating and getting, to use
1485         a consistent storage type. We ensure a canonical storage type using a
1486         typedef inside CanMakeWeakPtr.
1487
1488         (WTF::WeakPtr::WeakPtr):
1489         (WTF::WeakPtr::get const):
1490         (WTF::WeakPtr::operator bool const):
1491         (WTF::WeakPtr::operator-> const):
1492         (WTF::WeakPtr::operator* const): Adopted new WeakReference API.
1493
1494         (WTF::WeakPtrFactory::createWeakPtr const): No need for reinterpret_cast.
1495
1496         (WTF::weak_reference_cast): This isn't required for correctness, but it's
1497         nice to show a complier error at WeakPtr construction sites when you know
1498         that the types won't work. Otherwise, you get compiler errors at
1499         dereference sites, which are slightly more mysterious ways of saying that
1500         you constructed your WeakPtr incorrectly.
1501
1502         (WTF::WeakPtr<T>::WeakPtr):
1503         (WTF::=):
1504         (WTF::makeWeakPtr):
1505         (WTF::weak_reference_upcast): Deleted.
1506         (WTF::weak_reference_downcast): Deleted.
1507
1508 2019-05-27  Chris Dumez  <cdumez@apple.com>
1509
1510         Use a strongly-typed identifier for pages
1511         https://bugs.webkit.org/show_bug.cgi?id=198206
1512
1513         Reviewed by Youenn Fablet.
1514
1515         * wtf/ObjectIdentifier.h:
1516         (WTF::operator<<):
1517
1518 2019-05-23  Don Olmstead  <don.olmstead@sony.com>
1519
1520         [CMake] Use target oriented design for bmalloc
1521         https://bugs.webkit.org/show_bug.cgi?id=198046
1522
1523         Reviewed by Konstantin Tokarev.
1524
1525         Use WebKit::bmalloc target.
1526
1527         * wtf/CMakeLists.txt:
1528
1529 2019-05-23  Ross Kirsling  <ross.kirsling@sony.com>
1530
1531         [PlayStation] Implement platformUserPreferredLanguages.
1532         https://bugs.webkit.org/show_bug.cgi?id=198149
1533
1534         Reviewed by Fujii Hironori.
1535
1536         * wtf/PlatformPlayStation.cmake:
1537         * wtf/playstation/LanguagePlayStation.cpp: Added.
1538         (WTF::platformUserPreferredLanguages):
1539
1540 2019-05-22  Myles C. Maxfield  <mmaxfield@apple.com>
1541
1542         font-optical-sizing applies the wrong variation value
1543         https://bugs.webkit.org/show_bug.cgi?id=197528
1544         <rdar://problem/50152854>
1545
1546         Reviewed by Antti Koivisto.
1547
1548         * wtf/Platform.h:
1549
1550 2019-05-22  Ryan Haddad  <ryanhaddad@apple.com>
1551
1552         Unreviewed, rolling out r245598.
1553
1554         Breaks watchOS build.
1555
1556         Reverted changeset:
1557
1558         "font-optical-sizing applies the wrong variation value"
1559         https://bugs.webkit.org/show_bug.cgi?id=197528
1560         https://trac.webkit.org/changeset/245598
1561
1562 2019-05-21  Ross Kirsling  <ross.kirsling@sony.com>
1563
1564         [PlayStation] Don't call fcntl.
1565         https://bugs.webkit.org/show_bug.cgi?id=197961
1566
1567         Reviewed by Fujii Hironori.
1568
1569         * wtf/PlatformGTK.cmake:
1570         * wtf/PlatformJSCOnly.cmake:
1571         * wtf/PlatformPlayStation.cmake:
1572         * wtf/PlatformWPE.cmake:
1573         * wtf/UniStdExtras.h:
1574         * wtf/playstation/UniStdExtrasPlayStation.cpp: Added.
1575         (WTF::setCloseOnExec):
1576         (WTF::dupCloseOnExec):
1577         (WTF::setNonBlock):
1578         * wtf/unix/UniStdExtrasUnix.cpp: Renamed from Source/WTF/wtf/UniStdExtras.cpp.
1579         (WTF::setNonBlock):
1580         Move UniStdExtras to unix/, add a PlayStation version that doesn't use fcntl, add an abstraction for O_NONBLOCK.
1581
1582 2019-05-20  Tadeu Zagallo  <tzagallo@apple.com>
1583
1584         Only cache bytecode for API clients in data vaults
1585         https://bugs.webkit.org/show_bug.cgi?id=197898
1586
1587         Reviewed by Keith Miller.
1588
1589         Add SPI to check if a filesystem path is restricted as a data vault.
1590
1591         * WTF.xcodeproj/project.pbxproj:
1592         * wtf/spi/darwin/DataVaultSPI.h: Added.
1593
1594 2019-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>
1595
1596         [GLIB] Repeating timer is not stopped when stop is called from the callback
1597         https://bugs.webkit.org/show_bug.cgi?id=197986
1598
1599         Reviewed by Michael Catanzaro.
1600
1601         In case of repeating timers we always update the ready time to fire interval after the user callback is called.
1602
1603         * wtf/glib/RunLoopGLib.cpp:
1604         (WTF::RunLoop::TimerBase::stop): Reset m_fireInterval and m_isRepeating.
1605
1606 2019-05-19  Darin Adler  <darin@apple.com>
1607
1608         Change String::number to use "shortest" instead of "fixed precision 6 digits"
1609         https://bugs.webkit.org/show_bug.cgi?id=178319
1610
1611         Reviewed by Sam Weinig.
1612
1613         * wtf/text/StringBuilder.h: Delete appendNumber for floating point and
1614         appendECMAScriptNumber for single-precision.
1615
1616         * wtf/text/WTFString.h: Delete String::number for floating point and
1617         numberToStringECMAScript for single-precision.
1618
1619 2019-05-18  Tadeu Zagallo  <tzagallo@apple.com>
1620
1621         Add extra information to dumpJITMemory
1622         https://bugs.webkit.org/show_bug.cgi?id=197998
1623
1624         Reviewed by Saam Barati.
1625
1626         Add a new trace point code for JSC::dumpJITMemory
1627
1628         * wtf/SystemTracing.h:
1629
1630 2019-05-17  Don Olmstead  <don.olmstead@sony.com>
1631
1632         [CMake] Use builtin FindICU
1633         https://bugs.webkit.org/show_bug.cgi?id=197934
1634
1635         Reviewed by Michael Catanzaro.
1636
1637         Remove uses of ICU_INCLUDE_DIRS and ICU_LIBRARIES. Use ICU:: targets which end
1638         up propagating to all consumers of WTF.
1639
1640         * wtf/CMakeLists.txt:
1641         * wtf/PlatformPlayStation.cmake:
1642
1643 2019-05-17  Commit Queue  <commit-queue@webkit.org>
1644
1645         Unreviewed, rolling out r245418.
1646         https://bugs.webkit.org/show_bug.cgi?id=197989
1647
1648         New API test causing crashes on Mojave testers (Requested by
1649         ShawnRoberts on #webkit).
1650
1651         Reverted changeset:
1652
1653         "Add a unit test for client certificate authentication"
1654         https://bugs.webkit.org/show_bug.cgi?id=197800
1655         https://trac.webkit.org/changeset/245418
1656
1657 2019-05-16  Keith Miller  <keith_miller@apple.com>
1658
1659         Wasm should cage the memory base pointers in structs
1660         https://bugs.webkit.org/show_bug.cgi?id=197620
1661
1662         Reviewed by Saam Barati.
1663
1664         Rename reauthenticate to recage.
1665
1666         * wtf/CagedPtr.h:
1667         (WTF::CagedPtr::recage):
1668         (WTF::CagedPtr::reauthenticate): Deleted.
1669
1670 2019-05-16  Alex Christensen  <achristensen@webkit.org>
1671
1672         Add a unit test for client certificate authentication
1673         https://bugs.webkit.org/show_bug.cgi?id=197800
1674
1675         Reviewed by Youenn Fablet.
1676
1677         * wtf/spi/cocoa/SecuritySPI.h:
1678         Move declarations from ArgumentCodersCF.cpp so they can be shared.
1679
1680 2019-05-16  Eike Rathke  <erack@redhat.com>
1681
1682         Fix memcpy() call for big endian
1683         https://bugs.webkit.org/show_bug.cgi?id=197945
1684
1685         Reviewed by Michael Catanzaro.
1686
1687         * wtf/Packed.h:
1688         (WTF::alignof):
1689
1690 2019-05-15  Ross Kirsling  <ross.kirsling@sony.com>
1691
1692         [PlayStation] WTFCrash should preserve register state.
1693         https://bugs.webkit.org/show_bug.cgi?id=197932
1694
1695         Reviewed by Don Olmstead.
1696
1697         * wtf/Assertions.cpp:
1698         * wtf/Assertions.h:
1699         Let r196397 apply to PlayStation port as well.
1700
1701 2019-05-15  Simon Fraser  <simon.fraser@apple.com>
1702
1703         Make LOG_WITH_STREAM more efficient
1704         https://bugs.webkit.org/show_bug.cgi?id=197905
1705
1706         Reviewed by Alex Christensen.
1707
1708         Add a streamable repeat() class that can be used to output a series of characters.
1709         This is useful for indenting output.
1710
1711         * wtf/text/TextStream.h:
1712         (WTF::TextStream::repeat::repeat):
1713         (WTF::TextStream::operator<<):
1714
1715 2019-05-15  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>
1716
1717         compilation failure with clang 9
1718         https://bugs.webkit.org/show_bug.cgi?id=197911
1719
1720         Reviewed by Alex Christensen.
1721
1722         Use std namespace for nullptr_t in tagArrayPtr templates.
1723
1724         * wtf/PtrTag.h:
1725         (WTF::tagArrayPtr):
1726
1727 2019-05-14  Commit Queue  <commit-queue@webkit.org>
1728
1729         Unreviewed, rolling out r245281.
1730         https://bugs.webkit.org/show_bug.cgi?id=197887
1731
1732         Broke API Test TestWebKitAPI.Challenge.ClientCertificate
1733         (Requested by aakashjain on #webkit).
1734
1735         Reverted changeset:
1736
1737         "Add a unit test for client certificate authentication"
1738         https://bugs.webkit.org/show_bug.cgi?id=197800
1739         https://trac.webkit.org/changeset/245281
1740
1741 2019-05-14  Alex Christensen  <achristensen@webkit.org>
1742
1743         Add a unit test for client certificate authentication
1744         https://bugs.webkit.org/show_bug.cgi?id=197800
1745
1746         Reviewed by Youenn Fablet.
1747
1748         * wtf/spi/cocoa/SecuritySPI.h:
1749         Move declarations from ArgumentCodersCF.cpp so they can be shared.
1750
1751 2019-05-13  Robin Morisset  <rmorisset@apple.com>
1752
1753         IndexSet::isEmpty should use BitVector::isEmpty() instead of size()
1754         https://bugs.webkit.org/show_bug.cgi?id=197857
1755
1756         Reviewed by Darin Adler.
1757
1758         * wtf/IndexSet.h:
1759         (WTF::IndexSet::isEmpty const):
1760
1761 2019-05-13  Youenn Fablet  <youenn@apple.com>
1762
1763         [Mac] Use realpath for dlopen_preflight
1764         https://bugs.webkit.org/show_bug.cgi?id=197803
1765
1766         Reviewed by Eric Carlson.
1767
1768         * wtf/cocoa/SoftLinking.h:
1769
1770 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1771
1772         Unreviewed, wrokaround for MACH_VM_MAX_ADDRESS in ARM32_64
1773         https://bugs.webkit.org/show_bug.cgi?id=197730
1774
1775         Interestingly, MACH_VM_MAX_ADDRESS is larger than 32bit in ARM32_64, I think this is a bug.
1776         But for now, we workaround for this case by using `CPU(ADDRESS64)`.
1777
1778         * wtf/WTFAssertions.cpp:
1779
1780 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1781
1782         [WTF] Remove Threading workaround for support libraries in Windows
1783         https://bugs.webkit.org/show_bug.cgi?id=197350
1784
1785         Reviewed by Darin Adler.
1786
1787         We kept old APIs for some support libraries at 2017. This patch removes them.
1788
1789         * wtf/Threading.h:
1790         * wtf/win/ThreadingWin.cpp:
1791         (WTF::createThread): Deleted.
1792         (WTF::waitForThreadCompletion): Deleted.
1793
1794 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1795
1796         [WTF] Simplify GCThread and CompilationThread flags by adding them to WTF::Thread
1797         https://bugs.webkit.org/show_bug.cgi?id=197146
1798
1799         Reviewed by Saam Barati.
1800
1801         Since GCThread and CompilationThread flags exist in WTF, we put these flags into WTF::Thread directly instead of holding them in ThreadSpecific<>.
1802         And this patch removes dependency from Threading.h to ThreadSpecific.h. ThreadSpecific.h's OS threading primitives are moved to ThreadingPrimitives.h,
1803         and Threading.h relies on it instead.
1804
1805         * wtf/CompilationThread.cpp:
1806         (WTF::isCompilationThread):
1807         (WTF::initializeCompilationThreads): Deleted.
1808         (WTF::exchangeIsCompilationThread): Deleted.
1809         * wtf/CompilationThread.h:
1810         (WTF::CompilationScope::CompilationScope):
1811         (WTF::CompilationScope::~CompilationScope):
1812         (WTF::CompilationScope::leaveEarly):
1813         * wtf/MainThread.cpp:
1814         (WTF::initializeMainThread):
1815         (WTF::initializeMainThreadToProcessMainThread):
1816         (WTF::isMainThreadOrGCThread):
1817         (WTF::initializeGCThreads): Deleted.
1818         (WTF::registerGCThread): Deleted.
1819         (WTF::mayBeGCThread): Deleted.
1820         * wtf/MainThread.h:
1821         * wtf/ThreadSpecific.h:
1822         (WTF::canBeGCThread>::ThreadSpecific):
1823         (WTF::canBeGCThread>::set):
1824         (WTF::threadSpecificKeyCreate): Deleted.
1825         (WTF::threadSpecificKeyDelete): Deleted.
1826         (WTF::threadSpecificSet): Deleted.
1827         (WTF::threadSpecificGet): Deleted.
1828         * wtf/Threading.cpp:
1829         (WTF::Thread::exchangeIsCompilationThread):
1830         (WTF::Thread::registerGCThread):
1831         (WTF::Thread::mayBeGCThread):
1832         * wtf/Threading.h:
1833         (WTF::Thread::isCompilationThread const):
1834         (WTF::Thread::gcThreadType const):
1835         (WTF::Thread::joinableState const):
1836         (WTF::Thread::hasExited const):
1837         (WTF::Thread::Thread):
1838         (WTF::Thread::joinableState): Deleted.
1839         (WTF::Thread::hasExited): Deleted.
1840         * wtf/ThreadingPrimitives.h:
1841         (WTF::threadSpecificKeyCreate):
1842         (WTF::threadSpecificKeyDelete):
1843         (WTF::threadSpecificSet):
1844         (WTF::threadSpecificGet):
1845         * wtf/win/ThreadSpecificWin.cpp:
1846         (WTF::flsKeys):
1847
1848 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1849
1850         Unreviewed, follow-up after r245214
1851         https://bugs.webkit.org/show_bug.cgi?id=197730
1852
1853         Suggested by Sam. We should have static_assert with MACH_VM_MAX_ADDRESS.
1854
1855         * wtf/WTFAssertions.cpp:
1856
1857 2019-05-13  Youenn Fablet  <youenn@apple.com>
1858
1859         Use kDNSServiceFlagsKnownUnique for DNSServiceRegisterRecord only on platforms supporting it
1860         https://bugs.webkit.org/show_bug.cgi?id=197802
1861
1862         Reviewed by Eric Carlson.
1863
1864         * wtf/Platform.h:
1865
1866 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1867
1868         [JSC] Compress miscelaneous JIT related data structures with Packed<>
1869         https://bugs.webkit.org/show_bug.cgi?id=197830
1870
1871         Reviewed by Saam Barati.
1872
1873         * wtf/Packed.h:
1874         (WTF::alignof):
1875
1876 2019-05-13  Michael Catanzaro  <mcatanzaro@igalia.com>
1877
1878         Unreviewed, fix unused variable warnings in release builds
1879
1880         * wtf/URLHelpers.cpp:
1881         (WTF::URLHelpers::escapeUnsafeCharacters):
1882
1883 2019-05-12  Yusuke Suzuki  <ysuzuki@apple.com>
1884
1885         [JSC] Compress Watchpoint size by using enum type and Packed<> data structure
1886         https://bugs.webkit.org/show_bug.cgi?id=197730
1887
1888         Reviewed by Filip Pizlo.
1889
1890         This patch introduces a new data structures, WTF::Packed, WTF::PackedPtr, and WTF::PackedAlignedPtr.
1891
1892         - WTF::Packed
1893
1894             WTF::Packed is data storage. We can read and write trivial (in C++ term [1]) data to this storage. The difference to
1895             the usual storage is that the alignment of this storage is always 1. We access the underlying data by using unalignedLoad/unalignedStore.
1896             This class offers alignment = 1 data structure instead of missing the following characteristics.
1897
1898                 1. Load / Store are non atomic even if the data size is within a pointer width. We should not use this for a member which can be accessed
1899                    in a racy way. (e.g. fields accessed optimistically from the concurrent compilers).
1900
1901                 2. We cannot take reference / pointer to the underlying storage since they are unaligned.
1902
1903                 3. Access to this storage is unaligned access. The code is using memcpy, and the compiler will convert to an appropriate unaligned access
1904                    in certain architectures (x86_64 / ARM64). It could be slow. So use it for non performance sensitive & memory sensitive places.
1905
1906         - WTF::PackedPtr
1907
1908             WTF::PackedPtr is a specialization of WTF::Packed<T*>. And it is basically WTF::PackedAlignedPtr with alignment = 1. We further compact
1909             the pointer by leveraging the platform specific knowledge. In 64bit architectures, the effective width of pointers are less than 64 bit.
1910             In x86_64, it is 48 bits. And Darwin ARM64 is further smaller, 36 bits. This information allows us to compact the pointer to 6 bytes in
1911             x86_64 and 5 bytes in Darwin ARM64.
1912
1913         - WTF::PackedAlignedPtr
1914
1915             WTF::PackedAlignedPtr is the WTF::PackedPtr with alignment information of the T. If we use this alignment information, we could reduce the
1916             size of packed pointer further in some cases. For example, since we guarantee that JSCells are 16 byte aligned, low 4 bits are empty. Leveraging
1917             this information in Darwin ARM64 platform allows us to make packed JSCell pointer 4 bytes (36 - 4 bits). We do not use passed alignment
1918             information if it is not profitable.
1919
1920         We also have PackedPtrTraits. This is new PtrTraits and use it for various data structures such as Bag<>.
1921
1922         [1]: https://en.cppreference.com/w/cpp/types/is_trivial
1923
1924         * WTF.xcodeproj/project.pbxproj:
1925         * wtf/Bag.h:
1926         (WTF::Bag::clear):
1927         (WTF::Bag::iterator::operator++):
1928         * wtf/CMakeLists.txt:
1929         * wtf/DumbPtrTraits.h:
1930         * wtf/DumbValueTraits.h:
1931         * wtf/MathExtras.h:
1932         (WTF::clzConstexpr):
1933         (WTF::clz):
1934         (WTF::ctzConstexpr):
1935         (WTF::ctz):
1936         (WTF::getLSBSetConstexpr):
1937         (WTF::getMSBSetConstexpr):
1938         * wtf/Packed.h: Added.
1939         (WTF::Packed::Packed):
1940         (WTF::Packed::get const):
1941         (WTF::Packed::set):
1942         (WTF::Packed::operator=):
1943         (WTF::Packed::exchange):
1944         (WTF::Packed::swap):
1945         (WTF::alignof):
1946         (WTF::PackedPtrTraits::exchange):
1947         (WTF::PackedPtrTraits::swap):
1948         (WTF::PackedPtrTraits::unwrap):
1949         * wtf/Platform.h:
1950         * wtf/SentinelLinkedList.h:
1951         (WTF::BasicRawSentinelNode::BasicRawSentinelNode):
1952         (WTF::BasicRawSentinelNode::prev):
1953         (WTF::BasicRawSentinelNode::next):
1954         (WTF::PtrTraits>::remove):
1955         (WTF::PtrTraits>::prepend):
1956         (WTF::PtrTraits>::append):
1957         (WTF::RawNode>::SentinelLinkedList):
1958         (WTF::RawNode>::remove):
1959         (WTF::BasicRawSentinelNode<T>::remove): Deleted.
1960         (WTF::BasicRawSentinelNode<T>::prepend): Deleted.
1961         (WTF::BasicRawSentinelNode<T>::append): Deleted.
1962         * wtf/StdLibExtras.h:
1963         (WTF::roundUpToMultipleOfImpl):
1964         (WTF::roundUpToMultipleOfImpl0): Deleted.
1965         * wtf/UnalignedAccess.h:
1966         (WTF::unalignedLoad):
1967         (WTF::unalignedStore):
1968
1969 2019-05-10  Saam barati  <sbarati@apple.com>
1970
1971         Bag's move operator= leaks memory
1972         https://bugs.webkit.org/show_bug.cgi?id=197757
1973
1974         Reviewed by Keith Miller.
1975
1976         It was unused. So I'm just removing it. We can implement it properly
1977         if we ever need it.
1978
1979         * wtf/Bag.h:
1980         (WTF::Bag::operator=): Deleted.
1981
1982 2019-05-10  Fujii Hironori  <Hironori.Fujii@sony.com>
1983
1984         [WinCairo] storage/indexeddb tests are timing out
1985         https://bugs.webkit.org/show_bug.cgi?id=196289
1986
1987         Reviewed by Alex Christensen.
1988
1989         * wtf/FileSystem.h: Added hardLink.
1990         * wtf/glib/FileSystemGlib.cpp:
1991         (WTF::FileSystemImpl::hardLink):
1992         (WTF::FileSystemImpl::hardLinkOrCopyFile):
1993         * wtf/posix/FileSystemPOSIX.cpp:
1994         (WTF::FileSystemImpl::hardLink):
1995         (WTF::FileSystemImpl::hardLinkOrCopyFile):
1996         * wtf/win/FileSystemWin.cpp:
1997         (WTF::FileSystemImpl::hardLink):
1998         (WTF::FileSystemImpl::hardLinkOrCopyFile):
1999         Added hardLink. Let hardLinkOrCopyFile use the hardLink.
2000
2001 2019-05-10  Yusuke Suzuki  <ysuzuki@apple.com>
2002
2003         [WTF] Remove "private:" from Noncopyable and Nonmovable macros
2004         https://bugs.webkit.org/show_bug.cgi?id=197767
2005
2006         Reviewed by Saam Barati.
2007
2008         We no longer need "private:".
2009
2010         * wtf/Noncopyable.h:
2011         * wtf/Nonmovable.h:
2012
2013 2019-05-08  Zan Dobersek  <zdobersek@igalia.com>
2014
2015         [GLib] Rework WPE RunLoopSourcePriority values
2016         https://bugs.webkit.org/show_bug.cgi?id=197167
2017
2018         Reviewed by Carlos Garcia Campos.
2019
2020         The GLib priorities for the WPE port were initially aligned on the -70
2021         value, theory being that this would help avoid any default-priority
2022         GSources spawned in different dependency libraries affecting our
2023         scheduling. Today it seems that extra caution might not be really
2024         necessary.
2025
2026         This change aligns the base priority value with GLib's default priority
2027         value of 0. We maintain the relativity of priority values by effectively
2028         increasing each priority by 70.
2029
2030         * wtf/glib/RunLoopSourcePriority.h:
2031
2032 2019-05-08  Alex Christensen  <achristensen@webkit.org>
2033
2034         Add SPI to set HSTS storage directory
2035         https://bugs.webkit.org/show_bug.cgi?id=197259
2036
2037         Reviewed by Brady Eidson.
2038
2039         * wtf/Platform.h:
2040
2041 2019-05-08  Keith Miller  <keith_miller@apple.com>
2042
2043         Remove Gigacage from arm64 and use PAC for arm64e instead
2044         https://bugs.webkit.org/show_bug.cgi?id=197110
2045
2046         Reviewed by Saam Barati.
2047
2048         This patch changes the Gigacage to use PAC on arm64e. As part of
2049         this process all platforms must provide their length when
2050         materializing the caged pointer. Since it would be somewhat
2051         confusing to have two parameters for an operator [] those methods
2052         have been removed. Lastly, this patch removes the specializations
2053         for void* caged pointers, instead opting to use enable_if on the
2054         methods that would normally fail on void* e.g. anything that
2055         returns a T&.
2056
2057         * WTF.xcodeproj/project.pbxproj:
2058         * wtf/CMakeLists.txt:
2059         * wtf/CagedPtr.h:
2060         (WTF::CagedPtr::CagedPtr):
2061         (WTF::CagedPtr::get const):
2062         (WTF::CagedPtr::getMayBeNull const):
2063         (WTF::CagedPtr::getUnsafe const):
2064         (WTF::CagedPtr::at const):
2065         (WTF::CagedPtr::reauthenticate):
2066         (WTF::CagedPtr::operator=):
2067         (WTF::CagedPtr::operator== const):
2068         (WTF::CagedPtr::operator bool const):
2069         (WTF::CagedPtr::operator* const): Deleted.
2070         (WTF::CagedPtr::operator-> const): Deleted.
2071         (WTF::CagedPtr::operator[] const): Deleted.
2072         (): Deleted.
2073         * wtf/CagedUniquePtr.h:
2074         (WTF::CagedUniquePtr::CagedUniquePtr):
2075         (WTF::CagedUniquePtr::create):
2076         (WTF::CagedUniquePtr::~CagedUniquePtr):
2077         (WTF::CagedUniquePtr::destroy):
2078         (): Deleted.
2079         * wtf/Gigacage.h:
2080         (Gigacage::cagedMayBeNull):
2081         * wtf/PtrTag.h:
2082         (WTF::tagArrayPtr):
2083         (WTF::untagArrayPtr):
2084         (WTF::removeArrayPtrTag):
2085         (WTF::retagArrayPtr):
2086         * wtf/TaggedArrayStoragePtr.h: Copied from Source/JavaScriptCore/runtime/ArrayBufferView.cpp.
2087         (WTF::TaggedArrayStoragePtr::TaggedArrayStoragePtr):
2088         (WTF::TaggedArrayStoragePtr::get const):
2089         (WTF::TaggedArrayStoragePtr::getUnsafe const):
2090         (WTF::TaggedArrayStoragePtr::resize):
2091         (WTF::TaggedArrayStoragePtr::operator bool const):
2092
2093 2019-05-08  Robin Morisset  <rmorisset@apple.com>
2094
2095         WTF::TimingScope should show the total duration and not just the mean
2096         https://bugs.webkit.org/show_bug.cgi?id=197672
2097
2098         Reviewed by Alex Christensen.
2099
2100         * wtf/TimingScope.cpp:
2101         (WTF::TimingScope::scopeDidEnd):
2102
2103 2019-05-07  Yusuke Suzuki  <ysuzuki@apple.com>
2104
2105         [JSC] LLIntPrototypeLoadAdaptiveStructureWatchpoint does not require Bag<>
2106         https://bugs.webkit.org/show_bug.cgi?id=197645
2107
2108         Reviewed by Saam Barati.
2109
2110         * WTF.xcodeproj/project.pbxproj:
2111         * wtf/CMakeLists.txt:
2112         * wtf/Nonmovable.h: Copied from Source/JavaScriptCore/bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.h.
2113         * wtf/Vector.h:
2114         (WTF::minCapacity>::uncheckedConstructAndAppend):
2115
2116 2019-05-07  Eric Carlson  <eric.carlson@apple.com>
2117
2118         Define media buffering policy
2119         https://bugs.webkit.org/show_bug.cgi?id=196979
2120         <rdar://problem/28383861>
2121
2122         Reviewed by Jer Noble.
2123
2124         * wtf/Platform.h:
2125
2126 2019-05-07  Robin Morisset  <rmorisset@apple.com>
2127
2128         WTF::BitVector should have an isEmpty() method
2129         https://bugs.webkit.org/show_bug.cgi?id=197637
2130
2131         Reviewed by Keith Miller.
2132
2133         * wtf/BitVector.cpp:
2134         (WTF::BitVector::isEmptySlow const):
2135         * wtf/BitVector.h:
2136         (WTF::BitVector::isEmpty const):
2137
2138 2019-05-07  Brent Fulgham  <bfulgham@apple.com>
2139
2140         Correct JSON parser to address unterminated escape character
2141         https://bugs.webkit.org/show_bug.cgi?id=197582
2142         <rdar://problem/50459177>
2143
2144         Reviewed by Alex Christensen.
2145
2146         Correct JSON parser code to properly deal with unterminated escape
2147         characters.
2148
2149         * wtf/JSONValues.cpp:
2150         (WTF::JSONImpl::decodeString):
2151         (WTF::JSONImpl::parseStringToken):
2152
2153 2019-05-07  Alex Christensen  <achristensen@webkit.org>
2154
2155         Add a release assertion that Functions can only be constructed from non-null CompletionHandlers
2156         https://bugs.webkit.org/show_bug.cgi?id=197641
2157
2158         Reviewed by Chris Dumez.
2159
2160         This will help us find the cause of rdar://problem/48679972 by seeing the crash when the Function is dispatched,
2161         not when it's called with no interesting stack trace.  I manually verified this assertion is hit in such a case.
2162         We should also have no legitimate use of creating a Function out of a null CompletionHandler then never calling it.
2163
2164         * wtf/CompletionHandler.h:
2165         (WTF::Detail::CallableWrapper<CompletionHandler<Out):
2166         * wtf/Function.h:
2167         (WTF::Detail::CallableWrapperBase::~CallableWrapperBase):
2168         (WTF::Detail::CallableWrapper::CallableWrapper):
2169         (WTF::Function<Out):
2170
2171 2019-05-06  Christopher Reid  <chris.reid@sony.com>
2172
2173         [JSC] Respect already defined USE_LLINT_EMBEDDED_OPCODE_ID compiler variable.
2174         https://bugs.webkit.org/show_bug.cgi?id=197633
2175
2176         Reviewed by Don Olmstead.
2177
2178         When the variable `USE_LLINT_EMBEDDED_OPCODE_ID` is defined, stop defining
2179         its value with platform default one.
2180
2181         * wtf/Platform.h:
2182
2183 2019-05-03  Sihui Liu  <sihui_liu@apple.com>
2184
2185         Add assertion to check whether shm files have maximum FileProtection of CompleteUnlessOpen
2186         https://bugs.webkit.org/show_bug.cgi?id=197390
2187         <rdar://problem/42685773>
2188
2189         Reviewed by Geoffrey Garen.
2190
2191         * wtf/FileSystem.cpp:
2192         (WTF::FileSystemImpl::isSafeToUseMemoryMapForPath):
2193         (WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):
2194         * wtf/FileSystem.h:
2195         * wtf/cocoa/FileSystemCocoa.mm:
2196         (WTF::FileSystemImpl::isSafeToUseMemoryMapForPath):
2197         (WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):
2198
2199 2019-05-03  Commit Queue  <commit-queue@webkit.org>
2200
2201         Unreviewed, rolling out r244881.
2202         https://bugs.webkit.org/show_bug.cgi?id=197559
2203
2204         Breaks compilation of jsconly on linux, breaking compilation
2205         for jsc-i386-ews, jsc-mips-ews and jsc-armv7-ews (Requested by
2206         guijemont on #webkit).
2207
2208         Reverted changeset:
2209
2210         "[CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into
2211         WEBKIT_COPY_FILES"
2212         https://bugs.webkit.org/show_bug.cgi?id=197174
2213         https://trac.webkit.org/changeset/244881
2214
2215 2019-05-02  Alex Christensen  <achristensen@webkit.org>
2216
2217         Mark U+01C0 as a homograph of U+006C
2218         https://bugs.webkit.org/show_bug.cgi?id=197526
2219         <rdar://problem/50301904>
2220
2221         Reviewed by Tim Horton.
2222
2223         * wtf/URLHelpers.cpp:
2224         (WTF::URLHelpers::isLookalikeCharacter):
2225
2226 2019-05-02  Don Olmstead  <don.olmstead@sony.com>
2227
2228         [CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into WEBKIT_COPY_FILES
2229         https://bugs.webkit.org/show_bug.cgi?id=197174
2230
2231         Reviewed by Alex Christensen.
2232
2233         Replace WEBKIT_MAKE_FORWARDING_HEADERS with WEBKIT_COPY_FILES.
2234
2235         * wtf/CMakeLists.txt:
2236
2237 2019-05-01  Darin Adler  <darin@apple.com>
2238
2239         WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
2240         https://bugs.webkit.org/show_bug.cgi?id=195535
2241
2242         Reviewed by Alexey Proskuryakov.
2243
2244         * wtf/text/AtomicString.cpp:
2245         (WTF::AtomicString::fromUTF8Internal): Added code to compute string length when the
2246         end is nullptr; this behavior used to be implemented inside the
2247         calculateStringHashAndLengthFromUTF8MaskingTop8Bits function.
2248
2249         * wtf/text/AtomicStringImpl.cpp:
2250         (WTF::HashAndUTF8CharactersTranslator::translate): Updated for change to
2251         convertUTF8ToUTF16.
2252
2253         * wtf/text/AtomicStringImpl.h: Took the WTF_EXPORT_PRIVATE off of the
2254         AtomicStringImpl::addUTF8 function. This is used only inside a non-inlined function in
2255         the AtomicString class and its behavior changed subtly in this patch; it's helpful
2256         to document that it's not exported.
2257
2258         * wtf/text/StringImpl.cpp:
2259         (WTF::StringImpl::utf8Impl): Don't pass "true" for strictness to convertUTF16ToUTF8
2260         since strict is the default. Also updated for changes to ConversionResult.
2261         (WTF::StringImpl::utf8ForCharacters): Updated for change to convertLatin1ToUTF8.
2262         (WTF::StringImpl::tryGetUtf8ForRange const): Ditto.
2263
2264         * wtf/text/StringView.cpp: Removed uneeded include of UTF8Conversion.h.
2265
2266         * wtf/text/WTFString.cpp:
2267         (WTF::String::fromUTF8): Updated for change to convertUTF8ToUTF16.
2268
2269         * wtf/unicode/UTF8Conversion.cpp:
2270         (WTF::Unicode::inlineUTF8SequenceLengthNonASCII): Deleted.
2271         (WTF::Unicode::inlineUTF8SequenceLength): Deleted.
2272         (WTF::Unicode::UTF8SequenceLength): Deleted.
2273         (WTF::Unicode::decodeUTF8Sequence): Deleted.
2274         (WTF::Unicode::convertLatin1ToUTF8): Use U8_APPEND, enabling us to remove
2275         almost everything in the function. Also changed resturn value to be a boolean
2276         to indicate success since there is only one possible failure (target exhausted).
2277         There is room for further simplification, since most callers have lengths rather
2278         than end pointers for the source buffer, and all but one caller supplies a buffer
2279         size known to be sufficient, so those don't need a return value, nor do they need
2280         to pass an end of buffer pointer.
2281         (WTF::Unicode::convertUTF16ToUTF8): Use U_IS_LEAD, U_IS_TRAIL,
2282         U16_GET_SUPPLEMENTARY, U_IS_SURROGATE, and U8_APPEND. Also changed behavior
2283         for non-strict mode so that unpaired surrogates will be turned into the
2284         replacement character instead of invalid UTF-8 sequences, because U8_APPEND
2285         won't create an invalid UTF-8 sequence, and because we don't need to do that
2286         for any good reason at any call site.
2287         (WTF::Unicode::isLegalUTF8): Deleted.
2288         (WTF::Unicode::readUTF8Sequence): Deleted.
2289         (WTF::Unicode::convertUTF8ToUTF16): Use U8_NEXT instead of
2290         inlineUTF8SequenceLength, isLegalUTF8, and readUTF8Sequence. Use
2291         U16_APPEND instead of lots of code that does the same thing. There is
2292         room for further simplification since most callers don't need the "all ASCII"
2293         feature and could probably pass the arguments in a more natural way.
2294         (WTF::Unicode::calculateStringHashAndLengthFromUTF8MaskingTop8Bits):
2295         Use U8_NEXT instead of isLegalUTF8, readUTF8Sequence, and various
2296         error handling checks for things that are handled by U8_NEXT. Also removed
2297         support for passing nullptr for end to specify a null-terminated string.
2298         (WTF::Unicode::equalUTF16WithUTF8): Ditto.
2299
2300         * wtf/unicode/UTF8Conversion.h: Removed UTF8SequenceLength and
2301         decodeUTF8Sequence. Changed the ConversionResult to match WebKit coding
2302         style, with an eye toward perhaps removing it in the future. Changed
2303         the convertUTF8ToUTF16 return value to a boolean and removed the "strict"
2304         argument since no caller was passing false. Changed the convertLatin1ToUTF8
2305         return value to a boolean. Tweaked comments.
2306
2307 2019-05-01  Shawn Roberts  <sroberts@apple.com>
2308
2309         Unreviewed, rolling out r244821.
2310
2311         Causing
2312
2313         Reverted changeset:
2314
2315         "WebKit has too much of its own UTF-8 code and should rely
2316         more on ICU's UTF-8 support"
2317         https://bugs.webkit.org/show_bug.cgi?id=195535
2318         https://trac.webkit.org/changeset/244821
2319
2320 2019-05-01  Shawn Roberts  <sroberts@apple.com>
2321
2322         Unreviewed, rolling out r244822.
2323
2324         Causing 4 Test262 failures on JSC Release and Debug
2325
2326         Reverted changeset:
2327
2328         https://trac.webkit.org/changeset/244822 https://trac.webkit.org/changeset/244821
2329
2330 2019-04-29  Darin Adler  <darin@apple.com>
2331
2332         WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
2333         https://bugs.webkit.org/show_bug.cgi?id=195535
2334
2335         Reviewed by Alexey Proskuryakov.
2336
2337         * wtf/text/AtomicString.cpp:
2338         (WTF::AtomicString::fromUTF8Internal): Added code to compute string length when the
2339         end is nullptr; this behavior used to be implemented inside the
2340         calculateStringHashAndLengthFromUTF8MaskingTop8Bits function.
2341
2342         * wtf/text/AtomicStringImpl.cpp:
2343         (WTF::HashAndUTF8CharactersTranslator::translate): Updated for change to
2344         convertUTF8ToUTF16.
2345
2346         * wtf/text/AtomicStringImpl.h: Took the WTF_EXPORT_PRIVATE off of the
2347         AtomicStringImpl::addUTF8 function. This is used only inside a non-inlined function in
2348         the AtomicString class and its behavior changed subtly in this patch; it's helpful
2349         to document that it's not exported.
2350
2351         * wtf/text/StringImpl.cpp:
2352         (WTF::StringImpl::utf8Impl): Don't pass "true" for strictness to convertUTF16ToUTF8
2353         since strict is the default. Also updated for changes to ConversionResult.
2354         (WTF::StringImpl::utf8ForCharacters): Updated for change to convertLatin1ToUTF8.
2355         (WTF::StringImpl::tryGetUtf8ForRange const): Ditto.
2356
2357         * wtf/text/StringView.cpp: Removed uneeded include of UTF8Conversion.h.
2358
2359         * wtf/text/WTFString.cpp:
2360         (WTF::String::fromUTF8): Updated for change to convertUTF8ToUTF16.
2361
2362         * wtf/unicode/UTF8Conversion.cpp:
2363         (WTF::Unicode::inlineUTF8SequenceLengthNonASCII): Deleted.
2364         (WTF::Unicode::inlineUTF8SequenceLength): Deleted.
2365         (WTF::Unicode::UTF8SequenceLength): Deleted.
2366         (WTF::Unicode::decodeUTF8Sequence): Deleted.
2367         (WTF::Unicode::convertLatin1ToUTF8): Use U8_APPEND, enabling us to remove
2368         almost everything in the function. Also changed resturn value to be a boolean
2369         to indicate success since there is only one possible failure (target exhausted).
2370         There is room for further simplification, since most callers have lengths rather
2371         than end pointers for the source buffer, and all but one caller supplies a buffer
2372         size known to be sufficient, so those don't need a return value, nor do they need
2373         to pass an end of buffer pointer.
2374         (WTF::Unicode::convertUTF16ToUTF8): Use U_IS_LEAD, U_IS_TRAIL,
2375         U16_GET_SUPPLEMENTARY, U_IS_SURROGATE, and U8_APPEND. Also changed behavior
2376         for non-strict mode so that unpaired surrogates will be turned into the
2377         replacement character instead of invalid UTF-8 sequences, because U8_APPEND
2378         won't create an invalid UTF-8 sequence, and because we don't need to do that
2379         for any good reason at any call site.
2380         (WTF::Unicode::isLegalUTF8): Deleted.
2381         (WTF::Unicode::readUTF8Sequence): Deleted.
2382         (WTF::Unicode::convertUTF8ToUTF16): Use U8_NEXT instead of
2383         inlineUTF8SequenceLength, isLegalUTF8, and readUTF8Sequence. Use
2384         U16_APPEND instead of lots of code that does the same thing. There is
2385         room for further simplification since most callers don't need the "all ASCII"
2386         feature and could probably pass the arguments in a more natural way.
2387         (WTF::Unicode::calculateStringHashAndLengthFromUTF8MaskingTop8Bits):
2388         Use U8_NEXT instead of isLegalUTF8, readUTF8Sequence, and various
2389         error handling checks for things that are handled by U8_NEXT. Also removed
2390         support for passing nullptr for end to specify a null-terminated string.
2391         (WTF::Unicode::equalUTF16WithUTF8): Ditto.
2392
2393         * wtf/unicode/UTF8Conversion.h: Removed UTF8SequenceLength and
2394         decodeUTF8Sequence. Changed the ConversionResult to match WebKit coding
2395         style, with an eye toward perhaps removing it in the future. Changed
2396         the convertUTF8ToUTF16 return value to a boolean and removed the "strict"
2397         argument since no caller was passing false. Changed the convertLatin1ToUTF8
2398         return value to a boolean. Tweaked comments.
2399
2400 2019-04-30  John Wilander  <wilander@apple.com>
2401
2402         Add logging of Ad Click Attribution errors and events to a dedicated channel
2403         https://bugs.webkit.org/show_bug.cgi?id=197332
2404         <rdar://problem/49918800>
2405
2406         Reviewed by Youenn Fablet.
2407
2408         Added missing RELEASE_LOG_INFO and RELEASE_LOG_INFO_IF dummies
2409         for RELEASE_LOG_DISABLED.
2410
2411         * wtf/Assertions.h:
2412
2413 2019-04-30  Youenn Fablet  <youenn@apple.com>
2414
2415         Make Document audio producers use WeakPtr
2416         https://bugs.webkit.org/show_bug.cgi?id=197382
2417
2418         Reviewed by Eric Carlson.
2419
2420         * wtf/WeakHashSet.h:
2421         (WTF::WeakHashSet::hasNullReferences const):
2422
2423 2019-04-30  Commit Queue  <commit-queue@webkit.org>
2424
2425         Unreviewed, rolling out r244773.
2426         https://bugs.webkit.org/show_bug.cgi?id=197436
2427
2428         Causing assertion failures on debug queues (Requested by
2429         ShawnRoberts on #webkit).
2430
2431         Reverted changeset:
2432
2433         "Make Document audio producers use WeakPtr"
2434         https://bugs.webkit.org/show_bug.cgi?id=197382
2435         https://trac.webkit.org/changeset/244773
2436
2437 2019-04-30  Youenn Fablet  <youenn@apple.com>
2438
2439         Make Document audio producers use WeakPtr
2440         https://bugs.webkit.org/show_bug.cgi?id=197382
2441
2442         Reviewed by Eric Carlson.
2443
2444         * wtf/WeakHashSet.h:
2445         (WTF::WeakHashSet::hasNullReferences const):
2446
2447 2019-04-29  Alex Christensen  <achristensen@webkit.org>
2448
2449         <rdar://problem/50299396> Fix internal High Sierra build
2450         https://bugs.webkit.org/show_bug.cgi?id=197388
2451
2452         * Configurations/Base.xcconfig:
2453
2454 2019-04-29  Yusuke Suzuki  <ysuzuki@apple.com>
2455
2456         JITStubRoutineSet wastes 180KB of HashTable capacity on can.com
2457         https://bugs.webkit.org/show_bug.cgi?id=186732
2458
2459         Reviewed by Saam Barati.
2460
2461         * wtf/Range.h:
2462         (WTF::Range::contains const):
2463
2464 2019-04-29  Basuke Suzuki  <Basuke.Suzuki@sony.com>
2465
2466         [Win] Add flag to enable version information stamping and disable by default.
2467         https://bugs.webkit.org/show_bug.cgi?id=197249
2468         <rdar://problem/50224412>
2469
2470         Reviewed by Ross Kirsling.
2471
2472         This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
2473         Then enable it by default on AppleWin.
2474
2475         * wtf/CMakeLists.txt:
2476
2477 2019-04-26  Don Olmstead  <don.olmstead@sony.com>
2478
2479         Add WTF::findIgnoringASCIICaseWithoutLength to replace strcasestr
2480         https://bugs.webkit.org/show_bug.cgi?id=197291
2481
2482         Reviewed by Konstantin Tokarev.
2483
2484         Adds an implementation of strcasestr within WTF.
2485
2486         * wtf/text/StringCommon.h:
2487         (WTF::findIgnoringASCIICaseWithoutLength):
2488
2489 2019-04-26  Sihui Liu  <sihui_liu@apple.com>
2490
2491         Stop IDB transactions to release locked database files when network process is ready to suspend
2492         https://bugs.webkit.org/show_bug.cgi?id=196372
2493         <rdar://problem/48930116>
2494
2495         Reviewed by Brady Eidson.
2496
2497         Provide a method to suspend the thread and block main thread until the thread is suspended.
2498
2499         * wtf/CrossThreadTaskHandler.cpp:
2500         (WTF::CrossThreadTaskHandler::taskRunLoop):
2501         (WTF::CrossThreadTaskHandler::suspendAndWait):
2502         (WTF::CrossThreadTaskHandler::resume):
2503         * wtf/CrossThreadTaskHandler.h:
2504
2505 2019-04-25  Fujii Hironori  <Hironori.Fujii@sony.com>
2506
2507         Unreviewed, rolling out r244669.
2508
2509         Windows ports can't clean build.
2510
2511         Reverted changeset:
2512
2513         "[Win] Add flag to enable version information stamping and
2514         disable by default."
2515         https://bugs.webkit.org/show_bug.cgi?id=197249
2516         https://trac.webkit.org/changeset/244669
2517
2518 2019-04-25  Basuke Suzuki  <Basuke.Suzuki@sony.com>
2519
2520         [Win] Add flag to enable version information stamping and disable by default.
2521         https://bugs.webkit.org/show_bug.cgi?id=197249
2522
2523         Reviewed by Ross Kirsling.
2524
2525         This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
2526         Then enable it by default on AppleWin.
2527
2528         * wtf/CMakeLists.txt:
2529
2530 2019-04-25  Timothy Hatcher  <timothy@apple.com>
2531
2532         Disable date and time inputs on iOSMac.
2533         https://bugs.webkit.org/show_bug.cgi?id=197287
2534         rdar://problem/46794376
2535
2536         Reviewed by Wenson Hsieh.
2537
2538         * wtf/FeatureDefines.h:
2539
2540 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2541
2542         Fix High Sierra build after r244653
2543         https://bugs.webkit.org/show_bug.cgi?id=197131
2544
2545         * wtf/StdLibExtras.h:
2546         High Sierra thinks __cplusplus is 201406 even when using C++17.
2547         Removing the __cplusplus check resolves the build failure on High Sierra.
2548         We can clean up StdLibExtras more later.
2549
2550 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2551
2552         Start using C++17
2553         https://bugs.webkit.org/show_bug.cgi?id=197131
2554
2555         Reviewed by Darin Adler.
2556
2557         * Configurations/Base.xcconfig:
2558         * wtf/CMakeLists.txt:
2559         * wtf/Variant.h:
2560         (WTF::switchOn):
2561
2562 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2563
2564         Remove DeprecatedOptional
2565         https://bugs.webkit.org/show_bug.cgi?id=197161
2566
2567         Reviewed by Darin Adler.
2568
2569         * WTF.xcodeproj/project.pbxproj:
2570         * wtf/CMakeLists.txt:
2571         * wtf/DeprecatedOptional.h: Removed.
2572
2573 2019-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>
2574
2575         [GTK] Hardcoded text color in input fields
2576         https://bugs.webkit.org/show_bug.cgi?id=126907
2577
2578         Reviewed by Michael Catanzaro.
2579
2580         Define HAVE_OS_DARK_MODE_SUPPORT for GTK port.
2581
2582         * wtf/Platform.h:
2583
2584 2019-04-24  Tim Horton  <timothy_horton@apple.com>
2585
2586         Clean up WKActionSheetAssistant's use of LaunchServices
2587         https://bugs.webkit.org/show_bug.cgi?id=194645
2588         <rdar://problem/47707952>
2589
2590         Reviewed by Andy Estes.
2591
2592         * wtf/Platform.h:
2593
2594 2019-04-24  chris fleizach  <cfleizach@apple.com>
2595
2596         AX: Remove deprecated Accessibility Object Model events
2597         https://bugs.webkit.org/show_bug.cgi?id=197073
2598         <rdar://problem/50027819>
2599
2600         Reviewed by Ryosuke Niwa.
2601
2602         * wtf/Platform.h:
2603
2604 2019-04-23  Commit Queue  <commit-queue@webkit.org>
2605
2606         Unreviewed, rolling out r244558.
2607         https://bugs.webkit.org/show_bug.cgi?id=197219
2608
2609         Causing crashes on iOS Sim Release and Debug (Requested by
2610         ShawnRoberts on #webkit).
2611
2612         Reverted changeset:
2613
2614         "Remove DeprecatedOptional"
2615         https://bugs.webkit.org/show_bug.cgi?id=197161
2616         https://trac.webkit.org/changeset/244558
2617
2618 2019-04-23  Alex Christensen  <achristensen@webkit.org>
2619
2620         Remove DeprecatedOptional
2621         https://bugs.webkit.org/show_bug.cgi?id=197161
2622
2623         Reviewed by Darin Adler.
2624
2625         This was added in r209326 to be compatible with a shipping version of Safari.
2626         We have released several versions of Safari since then, so do what the comments say and remove it.
2627         The existence of this std::optional makes migrating to C++17 harder, and there's no reason to keep it.
2628
2629         * WTF.xcodeproj/project.pbxproj:
2630         * wtf/CMakeLists.txt:
2631         * wtf/DeprecatedOptional.h: Removed.
2632
2633 2019-04-21  Zan Dobersek  <zdobersek@igalia.com>
2634
2635         [WTF] Generic memoryFootprint() implementation should use bmalloc on Linux
2636         https://bugs.webkit.org/show_bug.cgi?id=196963
2637
2638         Reviewed by Don Olmstead.
2639
2640         Have the generic memoryFootprint() implementation use bmalloc's
2641         memoryFootprint() API on Linux, whenever the system malloc option is
2642         not enabled. Limitation to Linux platforms is due to the bmalloc
2643         implementation being limited to those configurations (excluding iOS
2644         which doesn't use MemoryFootprintGeneric.cpp).
2645
2646         * wtf/PlatformWPE.cmake: Switch to building MemoryFootprintGeneric.cpp.
2647         * wtf/generic/MemoryFootprintGeneric.cpp:
2648         (WTF::memoryFootprint):
2649
2650 2019-04-19  Ryosuke Niwa  <rniwa@webkit.org>
2651
2652         HashTable::removeIf always shrinks the hash table by half even if there is nothing left
2653         https://bugs.webkit.org/show_bug.cgi?id=196681
2654         <rdar://problem/49917764>
2655
2656         Reviewed by Darin Adler.
2657
2658         Address Darin's comments by removing the explicit type from std::max.
2659
2660         * wtf/HashTable.h:
2661         (WTF::KeyTraits>::computeBestTableSize):
2662         (WTF::KeyTraits>::shrinkToBestSize):
2663
2664 2019-04-18  Chris Dumez  <cdumez@apple.com>
2665
2666         [iOS] Improve detection of when web views go to background / foreground
2667         https://bugs.webkit.org/show_bug.cgi?id=197035
2668         <rdar://problem/45281182>
2669
2670         Reviewed by Tim Horton.
2671
2672         Add build time flag.
2673
2674         * wtf/FeatureDefines.h:
2675
2676 2019-04-18  Jer Noble  <jer.noble@apple.com>
2677
2678         Add support for parsing FairPlayStreaming PSSH boxes.
2679         https://bugs.webkit.org/show_bug.cgi?id=197064
2680
2681         Reviewed by Eric Carlson.
2682
2683         * wtf/Platform.h:
2684
2685 2019-04-18  Yusuke Suzuki  <ysuzuki@apple.com>
2686
2687         [WTF] StringBuilder should set correct m_is8Bit flag when merging
2688         https://bugs.webkit.org/show_bug.cgi?id=197053
2689
2690         Reviewed by Saam Barati.
2691
2692         When appending StringBuilder to the other StringBuilder, we have a path that does not set m_is8Bit flag correctly.
2693         This patch correctly sets this flag. And we also change 0 to nullptr when we are using 0 as a pointer.
2694
2695         * wtf/text/StringBuilder.cpp:
2696         (WTF::StringBuilder::reserveCapacity):
2697         (WTF::StringBuilder::appendUninitializedSlow):
2698         (WTF::StringBuilder::append):
2699         * wtf/text/StringBuilder.h:
2700         (WTF::StringBuilder::append):
2701         (WTF::StringBuilder::characters8 const):
2702         (WTF::StringBuilder::characters16 const):
2703         (WTF::StringBuilder::clear):
2704
2705 2019-04-17  Tim Horton  <timothy_horton@apple.com>
2706
2707         Adopt different scroll view flashing SPI
2708         https://bugs.webkit.org/show_bug.cgi?id=197043
2709         <rdar://problem/49996476>
2710
2711         Reviewed by Wenson Hsieh.
2712
2713         * wtf/Platform.h:
2714
2715 2019-04-17  Jer Noble  <jer.noble@apple.com>
2716
2717         Enable HAVE_AVFOUNDATION_VIDEO_OUTPUT on PLATFORM(IOSMAC)
2718         https://bugs.webkit.org/show_bug.cgi?id=196994
2719         <rdar://problem/44158331>
2720
2721         Reviewed by Alex Christensen.
2722
2723         * wtf/Platform.h:
2724
2725 2019-04-16  Stephan Szabo  <stephan.szabo@sony.com>
2726
2727         [PlayStation] Update port for system library changes
2728         https://bugs.webkit.org/show_bug.cgi?id=196978
2729
2730         Reviewed by Ross Kirsling.
2731
2732         * wtf/PlatformPlayStation.cmake:
2733         Remove reference to deleted system library
2734
2735 2019-04-16  Jer Noble  <jer.noble@apple.com>
2736
2737         Enable HAVE_AVKIT on PLATFORM(IOSMAC)
2738         https://bugs.webkit.org/show_bug.cgi?id=196987
2739
2740         Reviewed by Tim Horton.
2741
2742         * wtf/Platform.h:
2743
2744 2019-04-16  Robin Morisset  <rmorisset@apple.com>
2745
2746         [WTF] holdLock should be marked WARN_UNUSED_RETURN
2747         https://bugs.webkit.org/show_bug.cgi?id=196922
2748
2749         Reviewed by Keith Miller.
2750
2751         * wtf/Locker.h:
2752
2753 2019-04-16  Don Olmstead  <don.olmstead@sony.com>
2754
2755         [CMake] Set WTF_SCRIPTS_DIR
2756         https://bugs.webkit.org/show_bug.cgi?id=196917
2757
2758         Reviewed by Konstantin Tokarev.
2759
2760         Use WTF_SCRIPTS_DIR for copying the unified sources script.
2761
2762         * wtf/CMakeLists.txt:
2763
2764 2019-04-15  Myles C. Maxfield  <mmaxfield@apple.com>
2765
2766         [Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui
2767         https://bugs.webkit.org/show_bug.cgi?id=196846
2768         <rdar://problem/49499971>
2769
2770         Reviewed by Simon Fraser and Darin Adler.
2771
2772         * wtf/RetainPtr.h:
2773         (WTF::safeCFEqual):
2774         (WTF::safeCFHash):
2775
2776 2019-04-12  Ryosuke Niwa  <rniwa@webkit.org>
2777
2778         HashTable::removeIf always shrinks the hash table by half even if there is nothing left
2779         https://bugs.webkit.org/show_bug.cgi?id=196681
2780
2781         Reviewed by Darin Adler.
2782
2783         Made HashTable::removeIf shrink to the "best size", which is the least power of two bigger
2784         than twice the key count as already used in the copy constructor.
2785
2786         * wtf/HashTable.h:
2787         (WTF::HashTable::computeBestTableSize): Extracted from the copy constructor.
2788         (WTF::HashTable::shrinkToBestSize): Added.
2789         (WTF::HashTable::removeIf): Use shrinkToBestSize instead of shrink.
2790         (WTF::HashTable::HashTable):
2791
2792 2019-04-12  Eric Carlson  <eric.carlson@apple.com>
2793
2794         Update AudioSession route sharing policy
2795         https://bugs.webkit.org/show_bug.cgi?id=196776
2796         <rdar://problem/46501611>
2797
2798         Reviewed by Jer Noble.
2799
2800         * wtf/Platform.h: Define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO.
2801
2802 2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>
2803
2804         requestAnimationFrame should execute before the next frame
2805         https://bugs.webkit.org/show_bug.cgi?id=177484
2806
2807         Reviewed by Simon Fraser.
2808
2809         Add trace points for the page RenderingUpdate.
2810
2811         * wtf/SystemTracing.h:
2812
2813 2019-04-10  Claudio Saavedra  <csaavedra@igalia.com>
2814
2815         Do not generate empty unified sources when unified builds are disabled
2816         https://bugs.webkit.org/show_bug.cgi?id=196767
2817
2818         Reviewed by Konstantin Tokarev.
2819
2820         If unified builds are disabled, the ruby script to generate them
2821         is still used to list the sources that need to be
2822         compiled. Currently, the script always generates bundled unified
2823         sources, even if it's being used just to list all the sources. So
2824         when the unified builds are disabled and no files are going to be
2825         bundled, the script generates one empty file per bundle manager
2826         (that is, one C++ and one ObjectiveC), that gets added to the
2827         sources to be compiled.
2828
2829         * Scripts/generate-unified-source-bundles.rb: Only go through the
2830         bundle managers file generation when not running in
2831         PrintAllSources mode, to avoid generating empty bundle files.
2832
2833 2019-04-10  Enrique Ocaña González  <eocanha@igalia.com>
2834
2835         [WPE] Avoid async IO starving timers
2836         https://bugs.webkit.org/show_bug.cgi?id=196733
2837
2838         Reviewed by Carlos Garcia Campos.
2839
2840         If AsyncIONetwork and DiskCacheRead priorities are higher than
2841         MainThreadSharedTimer the timers get starved. This causes the NetworkProcess
2842         to accumulate MB of data instead of handing it down to the WebProcess (done
2843         using a Timer). This eventually causes an Out Of Memory kill on the
2844         NetworkProcess on some embedded platforms with low memory limits.
2845
2846         This patch levels the three priorities to the same value, while still leaving
2847         DiskCacheWrite with less priority than DiskCacheRead.
2848
2849         * wtf/glib/RunLoopSourcePriority.h: Changed RunLoopSourcePriority values for WPE.
2850
2851 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
2852
2853         [CMake] WTF derived sources should only be referenced inside WTF
2854         https://bugs.webkit.org/show_bug.cgi?id=196706
2855
2856         Reviewed by Konstantin Tokarev.
2857
2858         Use ${WTF_DERIVED_SOURCES_DIR} instead of ${DERIVED_SOURCES_DIR} within WTF.
2859
2860         * wtf/CMakeLists.txt:
2861         * wtf/PlatformJSCOnly.cmake:
2862         * wtf/PlatformMac.cmake:
2863
2864 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
2865
2866         [CMake] Apple builds should use ICU_INCLUDE_DIRS
2867         https://bugs.webkit.org/show_bug.cgi?id=196720
2868
2869         Reviewed by Konstantin Tokarev.
2870
2871         Copy ICU headers for Apple builds into ICU_INCLUDE_DIRS.
2872
2873         * CMakeLists.txt:
2874         * wtf/PlatformMac.cmake:
2875
2876 2019-04-08  Don Olmstead  <don.olmstead@sony.com>
2877
2878         [CMake][WinCairo] Separate copied headers into different directories
2879         https://bugs.webkit.org/show_bug.cgi?id=196655
2880
2881         Reviewed by Michael Catanzaro.
2882
2883         * wtf/CMakeLists.txt:
2884
2885 2019-04-08  Guillaume Emont  <guijemont@igalia.com>
2886
2887         Enable DFG on MIPS
2888         https://bugs.webkit.org/show_bug.cgi?id=196689
2889
2890         Reviewed by Žan Doberšek.
2891
2892         Since the bytecode change, we enabled the baseline JIT on mips in
2893         r240432, but DFG is still missing. With this change, all tests are
2894         passing on a ci20 board.
2895
2896         * wtf/Platform.h: Enable DFG on MIPS by default.
2897
2898 2019-04-06  Ryosuke Niwa  <rniwa@webkit.org>
2899
2900         Added tests for WeakHashSet::computesEmpty and WeakHashSet::computeSize
2901         https://bugs.webkit.org/show_bug.cgi?id=196669
2902
2903         Reviewed by Geoffrey Garen.
2904
2905         Removed the superflous type names from forward declarations, and made WeakHashSet::add
2906         take a const object to match other container types in WTF.
2907
2908         * wtf/WeakHashSet.h:
2909         (WTF::WeakHashSet::add):
2910         * wtf/WeakPtr.h:
2911
2912 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
2913
2914         Make WeakPtr<Element> possible and deploy it in form associated elements code
2915         https://bugs.webkit.org/show_bug.cgi?id=196626
2916
2917         Reviewed by Antti Koivisto.
2918
2919         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
2920         a subclass type U of a type T used to define WeakReference<T>.
2921
2922         Also added computesEmpty, which is slightly more efficient than computeSize
2923         when m_set is either empty or when there are non-released weak references in the set.
2924
2925         * wtf/WeakHashSet.h:
2926         (WTF::WeakHashSet::remove):
2927         (WTF::WeakHashSet::contains const):
2928         (WTF::WeakHashSet::computesEmpty const): Added.
2929         * wtf/WeakPtr.h: Added an explicit forward declaration of WeakHashSet to avoid
2930         build failures in GTK+ and WPE ports.
2931
2932 2019-04-05  Eric Carlson  <eric.carlson@apple.com>
2933
2934         Remove AUDIO_TOOLBOX_AUDIO_SESSION
2935         https://bugs.webkit.org/show_bug.cgi?id=196653
2936         <rdar://problem/49652098>
2937
2938         Reviewed by Jer Noble.
2939
2940         * wtf/Platform.h:
2941
2942 2019-04-05  Michael Catanzaro  <mcatanzaro@igalia.com>
2943
2944         Unreviewed manual rollout of r243929
2945         https://bugs.webkit.org/show_bug.cgi?id=196626
2946
2947         * wtf/WeakHashSet.h:
2948         (WTF::WeakHashSet::remove):
2949         (WTF::WeakHashSet::contains const):
2950         (WTF::WeakHashSet::computesEmpty const): Deleted.
2951
2952 2019-04-05  Commit Queue  <commit-queue@webkit.org>
2953
2954         Unreviewed, rolling out r243833.
2955         https://bugs.webkit.org/show_bug.cgi?id=196645
2956
2957         This change breaks build of WPE and GTK ports (Requested by
2958         annulen on #webkit).
2959
2960         Reverted changeset:
2961
2962         "[CMake][WTF] Mirror XCode header directories"
2963         https://bugs.webkit.org/show_bug.cgi?id=191662
2964         https://trac.webkit.org/changeset/243833
2965
2966 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
2967
2968         Make WeakPtr<Element> possible and deploy it in form associated elements code
2969         https://bugs.webkit.org/show_bug.cgi?id=196626
2970
2971         Reviewed by Antti Koivisto.
2972
2973         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
2974         a subclass type U of a type T used to define WeakReference<T>.
2975
2976         Also added computesEmpty, which is slightly more efficient than computeSize
2977         when m_set is either empty or when there are non-released weak references in the set.
2978
2979         * wtf/WeakHashSet.h:
2980         (WTF::WeakHashSet::remove):
2981         (WTF::WeakHashSet::contains const):
2982         (WTF::WeakHashSet::computesEmpty const): Added.
2983
2984 2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>
2985
2986         [WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
2987         https://bugs.webkit.org/show_bug.cgi?id=196475
2988
2989         Reviewed by Saam Barati.
2990
2991         * wtf/ForbidHeapAllocation.h:
2992         * wtf/IsoMalloc.h:
2993         * wtf/IsoMallocInlines.h:
2994
2995 2019-04-03  Don Olmstead  <don.olmstead@sony.com>
2996
2997         [CMake][WTF] Mirror XCode header directories
2998         https://bugs.webkit.org/show_bug.cgi?id=191662
2999
3000         Reviewed by Konstantin Tokarev.
3001
3002         Rename WTF forwarding header target to WTFFramework and update the install location
3003         to WTF_FRAMEWORK_HEADERS_DIR.
3004
3005         * wtf/CMakeLists.txt:
3006
3007 2019-04-03  Joseph Pecoraro  <pecoraro@apple.com>
3008
3009         Web Inspector: Remote Inspector indicate callback should always happen on the main thread
3010         https://bugs.webkit.org/show_bug.cgi?id=196513
3011         <rdar://problem/49498284>
3012
3013         Reviewed by Devin Rousso.
3014
3015         * wtf/MainThread.h:
3016         * wtf/cocoa/MainThreadCocoa.mm:
3017         (WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):
3018         * wtf/ios/WebCoreThread.cpp:
3019         * wtf/ios/WebCoreThread.h:
3020
3021 2019-04-02  Keith Rollin  <krollin@apple.com>
3022
3023         Inhibit CFNetwork logging in private sessions
3024         https://bugs.webkit.org/show_bug.cgi?id=196268
3025         <rdar://problem/48210793>
3026
3027         Fix a conditional in Platform.h where IOS should have been used
3028         instead of IOS_FAMILY. The latter happened to work, but we really want
3029         to be using the proper symbol here.
3030
3031         Reviewed by Alexey Proskuryakov.
3032
3033         * wtf/Platform.h:
3034
3035 2019-04-01  Michael Catanzaro  <mcatanzaro@igalia.com>
3036
3037         Stop trying to support building JSC with clang 3.8
3038         https://bugs.webkit.org/show_bug.cgi?id=195947
3039         <rdar://problem/49069219>
3040
3041         Reviewed by Darin Adler.
3042
3043         It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
3044         don't know how much effort it would be to make JSC work again, and it's making the code
3045         worse. Remove my hacks to support clang 3.8 from WTF.
3046
3047         * wtf/MetaAllocator.cpp:
3048         (WTF::MetaAllocator::allocate):
3049         * wtf/text/StringConcatenate.h:
3050         (WTF::tryMakeStringFromAdapters):
3051
3052 2019-03-31  Yusuke Suzuki  <ysuzuki@apple.com>
3053
3054         [JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
3055         https://bugs.webkit.org/show_bug.cgi?id=196160
3056
3057         Reviewed by Saam Barati.
3058
3059         * wtf/FastMalloc.h:
3060         (WTF::FastMalloc::tryRealloc):
3061         * wtf/Gigacage.cpp:
3062         (Gigacage::tryRealloc):
3063         * wtf/Gigacage.h:
3064
3065 2019-03-31  Andy Estes  <aestes@apple.com>
3066
3067         [iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
3068         https://bugs.webkit.org/show_bug.cgi?id=196433
3069         <rdar://problem/49293305>
3070
3071         Reviewed by Tim Horton.
3072
3073         * wtf/NeverDestroyed.h:
3074         (WTF::NeverDestroyed::operator->):
3075         (WTF::NeverDestroyed::operator-> const):
3076
3077 2019-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
3078
3079         Unreviewed build fix.
3080
3081         * wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.
3082
3083 2019-03-28  Saam Barati  <sbarati@apple.com>
3084
3085         BackwardsGraph needs to consider back edges as the backward's root successor
3086         https://bugs.webkit.org/show_bug.cgi?id=195991
3087
3088         Reviewed by Filip Pizlo.
3089
3090         Previously, our backwards graph analysis was slightly wrong. The idea of
3091         backwards graph is that the root of the graph has edges to terminals in
3092         the original graph. And then the original directed edges in the graph are flipped.
3093         
3094         However, we weren't considering loops as a form of terminality. For example,
3095         we wouldn't consider an infinite loop as a terminal. So there were no edges
3096         from the root to a node in the infinite loop. This lead us to make mistakes
3097         when we used backwards dominators to compute control flow equivalence.
3098         
3099         This is better understood in an example:
3100         
3101         ```
3102         preheader:
3103         while (1) {
3104             if (!isCell(v))
3105                 continue;
3106             load structure ID
3107             if (cond)
3108                continue;
3109             return
3110         }
3111         ```
3112         
3113         In the previous version of this algorithm, the only edge from the backwards
3114         root would be to the block containing the return. This would lead us to
3115         believe that the loading of the structureID backwards dominates the preheader,
3116         leading us to believe it's control flow equivalent to preheader. This is
3117         obviously wrong, since we can loop forever if "v" isn't a cell.
3118         
3119         The solution here is to treat any backedge in the graph as a "terminal" node.
3120         Since a backedge implies the existence of a loop.
3121         
3122         In the above example, the backwards root now has an edge to both blocks with
3123         "continue". This prevents us from falsely claiming that the return is control
3124         flow equivalent with the preheader.
3125         
3126         This patch uses DFS spanning trees to compute back edges. An edge
3127         u->v is a back edge when u is a descendent of v in the DFS spanning
3128         tree of the Graph.
3129
3130         * WTF.xcodeproj/project.pbxproj:
3131         * wtf/BackwardsGraph.h:
3132         (WTF::BackwardsGraph::BackwardsGraph):
3133         * wtf/SpanningTree.h: Added.
3134         (SpanningTree::SpanningTree):
3135         (SpanningTree::isDescendent):
3136
3137 2019-03-28  Tim Horton  <timothy_horton@apple.com>
3138
3139         Un-fix the build
3140
3141         * wtf/Platform.h:
3142         It is no longer necessary to exclude this from PLATFORM(IOSMAC).
3143
3144 2019-03-27  Per Arne Vollan  <pvollan@apple.com>
3145
3146         Layout Test js/math-clz32.html is failing
3147         https://bugs.webkit.org/show_bug.cgi?id=196209
3148
3149         Reviewed by Ross Kirsling.
3150
3151         Use the correct number of loop iterations when counting leading zeros. Also, the
3152         count was off by one for the Win64 case.
3153
3154         * wtf/MathExtras.h:
3155         (WTF::clz):
3156
3157 2019-03-26  Keith Rollin  <krollin@apple.com>
3158
3159         Inhibit CFNetwork logging in private sessions
3160         https://bugs.webkit.org/show_bug.cgi?id=196268
3161         <rdar://problem/48210793>
3162
3163         Reviewed by Alex Christensen.
3164
3165         Before performing any logging, the NetworkProcess checks to see if
3166         it's performing an operation associated with a private (ephemeral)
3167         browsing session. If so, it skips the logging. However, networking
3168         layers below the NetworkProcess don't know about private browsing, so
3169         they would still perform their own logging. CFNetwork now has a flag
3170         that lets us control that, so set it to False if private browsing.
3171
3172         * wtf/Platform.h:
3173
3174 2019-03-25  Alex Christensen  <achristensen@webkit.org>
3175
3176         Expected shouldn't assume its contained types are copyable
3177         https://bugs.webkit.org/show_bug.cgi?id=195986
3178
3179         Reviewed by JF Bastien.
3180
3181         * wtf/Expected.h:
3182         (std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base):
3183         (std::experimental::fundamentals_v3::operator==):
3184         (std::experimental::fundamentals_v3::operator!=):
3185         * wtf/Unexpected.h:
3186         (std::experimental::fundamentals_v3::unexpected::unexpected):
3187
3188 2019-03-24  Keith Miller  <keith_miller@apple.com>
3189
3190         Unreviewed, forgot to refactor variable name for windows build in
3191         r243418.
3192
3193         * wtf/MathExtras.h:
3194         (WTF::clz):
3195         (WTF::ctz):
3196
3197 2019-03-24  Andy Estes  <aestes@apple.com>
3198
3199         [watchOS] Remove unused Proximity Networking code
3200         https://bugs.webkit.org/show_bug.cgi?id=196188
3201
3202         Reviewed by Tim Horton.
3203
3204         * wtf/FeatureDefines.h:
3205
3206 2019-03-23  Keith Miller  <keith_miller@apple.com>
3207
3208         Refactor clz/ctz and fix getLSBSet.
3209         https://bugs.webkit.org/show_bug.cgi?id=196162
3210
3211         Reviewed by Saam Barati.
3212
3213         This patch makes clz32/64 and ctz32 generic so they work on any
3214         numeric type. Since these methods work on any type we don't need
3215         to have a separate implementation of getLSBSet, which also
3216         happened to be getMSBSet. This patch also adds getMSBSet as there
3217         may be users who want that in the future.
3218
3219         * wtf/MathExtras.h:
3220         (WTF::clz):
3221         (WTF::ctz):
3222         (WTF::getLSBSet):
3223         (WTF::getMSBSet):
3224         (getLSBSet): Deleted.
3225         (WTF::clz32): Deleted.
3226         (WTF::clz64): Deleted.
3227         (WTF::ctz32): Deleted.
3228
3229 2019-03-22  Keith Rollin  <krollin@apple.com>
3230
3231         Enable ThinLTO support in Production builds
3232         https://bugs.webkit.org/show_bug.cgi?id=190758
3233         <rdar://problem/45413233>
3234
3235         Reviewed by Daniel Bates.
3236
3237         Enable building with Thin LTO in Production when using Xcode 10.2 or
3238         later. This change results in a 1.45% progression in PLT5. Full
3239         Production build times increase about 2-3%. Incremental build times
3240         are more severely affected, and so LTO is not enabled for local
3241         engineering builds.
3242
3243         LTO is enabled only on macOS for now, until rdar://problem/49013399,
3244         which affects ARM builds, is fixed.
3245
3246         To change the LTO setting when building locally:
3247
3248         - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
3249           command line.
3250         - If building with `build-webkit`, specify --lto-mode={none,thin,full}
3251           on the command line.
3252         - If building with `build-root`, specify --lto={none,thin,full} on the
3253           command line.
3254         - If building with Xcode, create a LocalOverrides.xcconfig file at the
3255           top level of your repository directory (if needed) and define
3256           WK_LTO_MODE to full, thin, or none.
3257
3258         * Configurations/Base.xcconfig:
3259
3260 2019-03-22  Tim Horton  <timothy_horton@apple.com>
3261
3262         Fix the build after r243354
3263
3264         * wtf/Platform.h:
3265
3266 2019-03-22  Tim Horton  <timothy_horton@apple.com>
3267
3268         Fix the build after r243354
3269         https://bugs.webkit.org/show_bug.cgi?id=196138
3270         <rdar://problem/49145951>
3271
3272         * wtf/Platform.h:
3273
3274 2019-03-21  Eric Carlson  <eric.carlson@apple.com>
3275
3276         Add UI process WebRTC runtime logging.
3277         https://bugs.webkit.org/show_bug.cgi?id=196020
3278         <rdar://problem/49071443>
3279
3280         Reviewed by Youenn Fablet.
3281
3282         * wtf/Logger.h:
3283         (WTF::LogArgument::toString): Add long long and unsigned long long variants.
3284
3285 2019-03-20  Simon Fraser  <simon.fraser@apple.com>
3286
3287         Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
3288         https://bugs.webkit.org/show_bug.cgi?id=196049
3289
3290         Reviewed by Tim Horton.
3291
3292         This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
3293         overflow scrolling in general, so rename it.
3294
3295         * wtf/FeatureDefines.h:
3296
3297 2019-03-20  Mark Lam  <mark.lam@apple.com>
3298
3299         Open source arm64e code.
3300         https://bugs.webkit.org/show_bug.cgi?id=196012
3301         <rdar://problem/49066237>
3302
3303         Reviewed by Keith Miller.
3304
3305         * WTF.xcodeproj/project.pbxproj:
3306         * wtf/BlockPtr.h:
3307         * wtf/Platform.h:
3308         * wtf/PlatformRegisters.cpp: Added.
3309         (WTF::threadStateLRInternal):
3310         (WTF::threadStatePCInternal):
3311         * wtf/PlatformRegisters.h:
3312         * wtf/PointerPreparations.h:
3313         * wtf/PtrTag.cpp: Added.
3314         (WTF::tagForPtr):
3315         (WTF::ptrTagName):
3316         (WTF::registerPtrTagLookup):
3317         (WTF::reportBadTag):
3318         * wtf/PtrTag.h:
3319         (WTF::removeCodePtrTag):
3320         (WTF::tagCodePtrImpl):
3321         (WTF::tagCodePtr):
3322         (WTF::untagCodePtrImplHelper):
3323         (WTF::untagCodePtrImpl):
3324         (WTF::untagCodePtr):
3325         (WTF::retagCodePtrImplHelper):
3326         (WTF::retagCodePtrImpl):
3327         (WTF::retagCodePtr):
3328         (WTF::tagCFunctionPtrImpl):
3329         (WTF::tagCFunctionPtr):
3330         (WTF::untagCFunctionPtrImpl):
3331         (WTF::untagCFunctionPtr):
3332         (WTF::tagInt):
3333         (WTF::assertIsCFunctionPtr):
3334         (WTF::assertIsNullOrCFunctionPtr):
3335         (WTF::assertIsNotTagged):
3336         (WTF::assertIsTagged):
3337         (WTF::assertIsNullOrTagged):
3338         (WTF::isTaggedWith):
3339         (WTF::assertIsTaggedWith):
3340         (WTF::assertIsNullOrTaggedWith):
3341         (WTF::usesPointerTagging):
3342         (WTF::registerPtrTagLookup):
3343         (WTF::reportBadTag):
3344         (WTF::tagForPtr): Deleted.
3345
3346 2019-03-20  Keith Rollin  <krollin@apple.com>
3347
3348         Update checks that determine if WebKit is system WebKit
3349         https://bugs.webkit.org/show_bug.cgi?id=195756
3350
3351         Reviewed by Alexey Proskuryakov.
3352
3353         The system WebKit can be installed in additional locations, so check
3354         for and allow those, too.
3355
3356         * wtf/Platform.h:
3357
3358 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
3359
3360         Unreviewed, further attempt to fix clang 3.8 build
3361         https://bugs.webkit.org/show_bug.cgi?id=195947
3362
3363         * wtf/MetaAllocator.cpp:
3364         (WTF::MetaAllocator::allocate):
3365
3366 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
3367
3368         REGRESSION(r243115) breaks build for clang 3.8
3369         https://bugs.webkit.org/show_bug.cgi?id=195947
3370
3371         Reviewed by Chris Dumez.
3372
3373         * wtf/text/StringConcatenate.h:
3374         (WTF::tryMakeStringFromAdapters):
3375
3376 2019-03-20  Tim Horton  <timothy_horton@apple.com>
3377
3378         Add an platform-driven spell-checking mechanism
3379         https://bugs.webkit.org/show_bug.cgi?id=195795
3380
3381         Reviewed by Ryosuke Niwa.
3382
3383         * wtf/Platform.h:
3384         Add an ENABLE flag.
3385
3386 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
3387
3388         Build cleanly with GCC 9
3389         https://bugs.webkit.org/show_bug.cgi?id=195920
3390
3391         Reviewed by Chris Dumez.
3392
3393         WebKit triggers three new GCC 9 warnings:
3394
3395         """
3396         -Wdeprecated-copy, implied by -Wextra, warns about the C++11 deprecation of implicitly
3397         declared copy constructor and assignment operator if one of them is user-provided.
3398         """
3399
3400         Solution is to either add a copy constructor or copy assignment operator, if required, or
3401         else remove one if it is redundant.
3402
3403         """
3404         -Wredundant-move, implied by -Wextra, warns about redundant calls to std::move.
3405         -Wpessimizing-move, implied by -Wall, warns when a call to std::move prevents copy elision.
3406         """
3407
3408         These account for most of this patch. Solution is to just remove the bad WTFMove().
3409
3410         Additionally, -Wclass-memaccess has been enhanced to catch a few cases that GCC 8 didn't.
3411         These are solved by casting nontrivial types to void* before using memcpy. (Of course, it
3412         would be safer to not use memcpy on nontrivial types, but that's too complex for this
3413         patch. Searching for memcpy used with static_cast<void*> will reveal other cases to fix.)
3414
3415         * wtf/CheckedArithmetic.h:
3416         (WTF::Checked::Checked):
3417         * wtf/MetaAllocator.cpp:
3418         (WTF::MetaAllocator::allocate):
3419         * wtf/URLParser.cpp:
3420         (WTF::CodePointIterator::operator!= const):
3421         (WTF::CodePointIterator::operator=): Deleted.
3422         * wtf/text/StringView.h:
3423         (WTF::StringView::CodePoints::Iterator::operator=): Deleted.
3424
3425 2019-03-19  Alex Christensen  <achristensen@webkit.org>
3426
3427         Make WTFLogChannelState and WTFLogLevel enum classes
3428         https://bugs.webkit.org/show_bug.cgi?id=195904
3429
3430         Reviewed by Eric Carlson.
3431
3432         * wtf/Assertions.cpp:
3433         * wtf/Assertions.h:
3434         * wtf/Logger.h:
3435         (WTF::Logger::logAlways const):
3436         (WTF::Logger::error const):
3437         (WTF::Logger::warning const):
3438         (WTF::Logger::info const):
3439         (WTF::Logger::debug const):
3440         (WTF::Logger::willLog const):
3441         (WTF::Logger::log):
3442         * wtf/MemoryPressureHandler.cpp:
3443         * wtf/RefCountedLeakCounter.cpp:
3444
3445 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
3446
3447         Unreviewed, rolling out r243132.
3448
3449         Broke GTK build
3450
3451         Reverted changeset:
3452
3453         "Make WTFLogChannelState and WTFLogLevel enum classes"
3454         https://bugs.webkit.org/show_bug.cgi?id=195904
3455         https://trac.webkit.org/changeset/243132
3456
3457 2019-03-18  Alex Christensen  <achristensen@webkit.org>
3458
3459         Make WTFLogChannelState and WTFLogLevel enum classes
3460         https://bugs.webkit.org/show_bug.cgi?id=195904
3461
3462         Reviewed by Eric Carlson.
3463
3464         * wtf/Assertions.cpp:
3465         * wtf/Assertions.h:
3466         * wtf/Logger.h:
3467         (WTF::Logger::logAlways const):
3468         (WTF::Logger::error const):
3469         (WTF::Logger::warning const):
3470         (WTF::Logger::info const):
3471         (WTF::Logger::debug const):
3472         (WTF::Logger::willLog const):
3473         (WTF::Logger::log):
3474         * wtf/MemoryPressureHandler.cpp:
3475         * wtf/RefCountedLeakCounter.cpp:
3476
3477 2019-03-18  Darin Adler  <darin@apple.com>
3478
3479         Cut down on use of StringBuffer, possibly leading toward removing it entirely
3480         https://bugs.webkit.org/show_bug.cgi?id=195870
3481
3482         Reviewed by Daniel Bates.
3483
3484         * wtf/URL.cpp: Remove a now-inaccurate comment mentioning StringBuffer.
3485
3486         * wtf/text/StringView.cpp:
3487         (WTF::convertASCIICase): Use createUninitialized instead of StringBuffer.
3488
3489 2019-03-18  Xan Lopez  <xan@igalia.com>
3490
3491         [WTF] Remove redundant std::move in StringConcatenate
3492         https://bugs.webkit.org/show_bug.cgi?id=195798
3493
3494         Reviewed by Darin Adler.
3495
3496         Remove redundant calls to WTFMove in return values for this
3497         method. C++ will already do an implicit move here since we are
3498         returning a local value where copy/move elision is not applicable.
3499
3500         * wtf/text/StringConcatenate.h:
3501         (WTF::tryMakeStringFromAdapters):
3502
3503 2019-03-16  Darin Adler  <darin@apple.com>
3504
3505         Improve normalization code, including moving from unorm.h to unorm2.h
3506         https://bugs.webkit.org/show_bug.cgi?id=195330
3507
3508         Reviewed by Michael Catanzaro.
3509
3510         * wtf/URLHelpers.cpp: Removed unneeded include of unorm.h since the
3511         normalization code is now in StringView.cpp.
3512         (WTF::URLHelpers::escapeUnsafeCharacters): Renamed from
3513         createStringWithEscapedUnsafeCharacters since it now only creates
3514         a new string if one is needed. Use unsigned for string lengths, since
3515         that's what WTF::String uses, not size_t. Added a first loop so that
3516         we can return the string unmodified if no lookalike characters are
3517         found. Removed unnecessary round trip from UTF-16 and then back in
3518         the case where the character is not a lookalike.
3519         (WTF::URLHelpers::toNormalizationFormC): Deleted. Moved this logic
3520         into the WTF::normalizedNFC function in StringView.cpp.
3521         (WTF::URLHelpers::userVisibleURL): Call escapeUnsafeCharacters and
3522         normalizedNFC. The normalizedNFC function is better in multiple ways,
3523         but primarily it handles 8-bit strings and other already-normalized
3524         strings much more efficiently.
3525
3526         * wtf/text/StringView.cpp:
3527         (WTF::normalizedNFC): Added. This has two overloads. One is for when
3528         we already have a String, and want to re-use it if no normalization
3529         is needed, and another is when we only have a StringView, and may need
3530         to allocate a String to hold the result. Includes a fast special case
3531         for 8-bit and already-normalized strings, and uses the same strategy
3532         that JSC::normalize was already using: calls unorm2_normalize twice,
3533         first just to determine the length.
3534
3535         * wtf/text/StringView.h: Added normalizedNFC, which can be called with
3536         either a StringView or a String. Also moved StringViewWithUnderlyingString
3537         here from JSString.h, here for use as the return value of normalizedNFC;
3538         it is used for a similar purpose in the JavaScriptCore rope implementation.
3539         Also removed an inaccurate comment.
3540
3541 2019-03-16  Diego Pino Garcia  <dpino@igalia.com>
3542
3543         [GTK] [WPE] Fix compilation errors due to undefined ALWAYS_LOG_IF
3544         https://bugs.webkit.org/show_bug.cgi?id=195850
3545
3546         Unreviewed build fix after r243033. 
3547
3548         * wtf/LoggerHelper.h:
3549
3550 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
3551
3552         [iOS] Block the accessibility server when accessibility is not enabled.
3553         https://bugs.webkit.org/show_bug.cgi?id=195342
3554
3555         Reviewed by Brent Fulgham.
3556
3557         Add SPI to issue a mach extension to a process by pid. Also, add a macro for
3558         the availability of this SPI.
3559
3560         * wtf/Platform.h:
3561         * wtf/spi/darwin/SandboxSPI.h:
3562
3563 2019-03-15  Eric Carlson  <eric.carlson@apple.com>
3564
3565         Add media stream release logging
3566         https://bugs.webkit.org/show_bug.cgi?id=195823
3567
3568         Reviewed by Youenn Fablet.
3569
3570         * wtf/LoggerHelper.h: Add LOG_IF variants that check a condition before logging.
3571
3572 2019-03-15  Truitt Savell  <tsavell@apple.com>
3573
3574         Unreviewed, rolling out r243008.
3575
3576         This revision broke High Sierra builders
3577
3578         Reverted changeset:
3579
3580         "[iOS] Block the accessibility server when accessibility is
3581         not enabled."
3582         https://bugs.webkit.org/show_bug.cgi?id=195342
3583         https://trac.webkit.org/changeset/243008
3584
3585 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
3586
3587         [iOS] Block the accessibility server when accessibility is not enabled.
3588         https://bugs.webkit.org/show_bug.cgi?id=195342
3589
3590         Reviewed by Brent Fulgham.
3591
3592         Add SPI to issue a mach extension to a process by pid.
3593
3594         * wtf/spi/darwin/SandboxSPI.h:
3595
3596 2019-03-13  Sam Weinig  <sam@webkit.org>
3597
3598         Add utility function to allow easy reverse range-based iteration of a container
3599         https://bugs.webkit.org/show_bug.cgi?id=195542
3600
3601         Reviewed by Antti Koivisto.
3602
3603         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
3604         works with any container that is compatible with std::rbegin() and std::rend(). It is
3605         expected to be used in conjunction with range-based for-loops like so:
3606
3607         for (auto& value : WTF::makeReversedRange(myContainer)) 
3608             ...
3609
3610         * wtf/IteratorRange.h:
3611         (WTF::makeReversedRange):
3612
3613 2019-03-13  Keith Rollin  <krollin@apple.com>
3614
3615         Add support for new StagedFrameworks layout
3616         https://bugs.webkit.org/show_bug.cgi?id=195543
3617
3618         Reviewed by Alexey Proskuryakov.
3619
3620         Opportunistic cleanup: remove unused JAVASCRIPTCORE_FRAMEWORKS_DIR
3621         variable.
3622
3623         * Configurations/Base.xcconfig:
3624
3625 2019-03-13  Dominik Infuehr  <dinfuehr@igalia.com>
3626
3627         String overflow when using StringBuilder in JSC::createError
3628         https://bugs.webkit.org/show_bug.cgi?id=194957
3629
3630         Reviewed by Mark Lam.
3631
3632         When calculating the new capacity of a StringBuilder object,
3633         use a limit of MaxLength instead of MaxLength+1.  Allocating
3634         a string of size MaxLength+1 always fails. This means that expanding
3635         a StringBuilder only worked when the newly doubled capacity is less or
3636         equal to MaxLength.
3637
3638         * wtf/text/StringBuilder.cpp:
3639
3640 2019-03-13  Chris Dumez  <cdumez@apple.com>
3641
3642         Better build fix after r242901.
3643
3644         Reviewed by Jer Noble.
3645
3646         * wtf/Logger.h:
3647         (WTF::LogArgument::toString):
3648
3649 2019-03-13  Jer Noble  <jer.noble@apple.com>
3650
3651         Add AggregateLogger, a Logger specialization for singleton classes.
3652         https://bugs.webkit.org/show_bug.cgi?id=195644
3653
3654         Reviewed by Eric Carlson.
3655
3656         Add a new class, AggregateLogger, which will log messages to each of its aggregated loggers.
3657
3658         Drive-by fixes: allow "const void*" to be directly logged by converting the pointer to a hex string.
3659
3660         * WTF.xcodeproj/project.pbxproj:
3661         * wtf/AggregateLogger.h: Added.
3662         (WTF::AggregateLogger::create):
3663         (WTF::AggregateLogger::addLogger):
3664         (WTF::AggregateLogger::removeLogger):
3665         (WTF::AggregateLogger::logAlways const):
3666         (WTF::AggregateLogger::error const):
3667         (WTF::AggregateLogger::warning const):
3668         (WTF::AggregateLogger::info const):
3669         (WTF::AggregateLogger::debug const):
3670         (WTF::AggregateLogger::willLog const):
3671         (WTF::AggregateLogger::AggregateLogger):
3672         (WTF::AggregateLogger::log const):
3673         * wtf/CMakeLists.h:
3674         * wtf/Logger.cpp:
3675         (WTF::>::toString):
3676         * wtf/Logger.h:
3677
3678 2019-03-12  Commit Queue  <commit-queue@webkit.org>
3679
3680         Unreviewed, rolling out r242747.
3681         https://bugs.webkit.org/show_bug.cgi?id=195641
3682
3683         Performance measurement is difficult in this period, rolling
3684         out it and rolling in later to isolate it from the other
3685         sensitive patches (Requested by yusukesuzuki on #webkit).
3686
3687         Reverted changeset:
3688
3689         "[JSC] Make StaticStringImpl & StaticSymbolImpl actually
3690         static"
3691         https://bugs.webkit.org/show_bug.cgi?id=194212
3692         https://trac.webkit.org/changeset/242747
3693
3694 2019-03-12  Robin Morisset  <rmorisset@apple.com>
3695
3696         A lot more classes have padding that can be reduced by reordering their fields
3697         https://bugs.webkit.org/show_bug.cgi?id=195579
3698
3699         Reviewed by Mark Lam.
3700
3701         * wtf/CrossThreadQueue.h:
3702         * wtf/Logger.h:
3703         * wtf/MemoryPressureHandler.h:
3704         * wtf/MetaAllocator.h:
3705         * wtf/Threading.cpp:
3706
3707 2019-03-11  Alex Christensen  <achristensen@webkit.org>
3708
3709         WTF::Expected should use std::addressof instead of operator&
3710         https://bugs.webkit.org/show_bug.cgi?id=195604
3711
3712         Reviewed by Myles Maxfield.
3713
3714         The latter was causing problems with types that do tricky things with constructors and operator&,
3715         specifically UniqueRef but I made a reduced test case.  When it used operator&, it would get the contained
3716         type and call the constructor that takes a contained type instead of the move constructor.
3717
3718         * wtf/Expected.h:
3719         (std::experimental::fundamentals_v3::__expected_detail::base::base):
3720         (std::experimental::fundamentals_v3::expected::swap):
3721
3722 2019-03-11  Ross Kirsling  <ross.kirsling@sony.com>
3723
3724         Add Optional to Forward.h.
3725         https://bugs.webkit.org/show_bug.cgi?id=195586
3726
3727         Reviewed by Darin Adler.
3728
3729         * wtf/Forward.h:
3730         Add forward declaration for Optional.
3731
3732         * wtf/CPUTime.h:
3733         * wtf/Expected.h:
3734         * wtf/MainThread.h:
3735         * wtf/MemoryFootprint.h:
3736         * wtf/URLHelpers.cpp:
3737         * wtf/URLHelpers.h:
3738         * wtf/cocoa/CPUTimeCocoa.cpp:
3739         * wtf/fuchsia/CPUTimeFuchsia.cpp:
3740         * wtf/unix/CPUTimeUnix.cpp:
3741         * wtf/win/CPUTimeWin.cpp:
3742         Remove unnecessary includes from headers.
3743
3744 2019-03-11  Andy Estes  <aestes@apple.com>
3745
3746         [Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
3747         https://bugs.webkit.org/show_bug.cgi?id=195530
3748         <rdar://problem/48747164>
3749
3750         Reviewed by Alex Christensen.
3751
3752         * wtf/FeatureDefines.h: Defined ENABLE_APPLE_PAY_REMOTE_UI.
3753
3754 2019-03-11  Yusuke Suzuki  <ysuzuki@apple.com>
3755
3756         [JSC] Make StaticStringImpl & StaticSymbolImpl actually static
3757         https://bugs.webkit.org/show_bug.cgi?id=194212
3758
3759         Reviewed by Mark Lam.
3760
3761         Avoid mutation onto refcounts if `isStatic()` returns true so that the content of StaticStringImpl never gets modified.
3762
3763         * wtf/text/StringImpl.h:
3764         (WTF::StringImpl::ref):
3765         (WTF::StringImpl::deref):
3766
3767 2019-03-11  Sihui Liu  <sihui_liu@apple.com>
3768
3769         Crash under WebCore::IDBDatabase::connectionToServerLost
3770         https://bugs.webkit.org/show_bug.cgi?id=195563
3771         <rdar://problem/37193655>
3772
3773         CrossThreadTask should protect callee if it is ThreadSafeRefCounted.
3774
3775         Reviewed by Geoffrey Garen.
3776
3777         * wtf/CrossThreadTask.h:
3778         (WTF::createCrossThreadTask):
3779
3780 2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>
3781
3782         Unreviewed, rolling out r242688, r242643, r242624.
3783
3784         Caused multiple layout test failures and crashes on iOS and macOS.
3785
3786         Reverted changeset:
3787
3788         "requestAnimationFrame should execute before the next frame"
3789         https://bugs.webkit.org/show_bug.cgi?id=177484
3790         https://trac.webkit.org/changeset/242624/webkit
3791
3792         * wtf/SystemTracing.h:
3793
3794 2019-03-11  Darin Adler  <darin@apple.com>
3795
3796         Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior
3797         https://bugs.webkit.org/show_bug.cgi?id=195533
3798
3799         Reviewed by Brent Fulgham.
3800
3801         Soon, we will change String::number and StringBuilder::appendNumber for floating
3802         point to use "shortest form" serialization instead of the current default, which is
3803         "6-digit fixed precision stripping trailing zeros". To prepare to do this safely
3804         without accidentally changing any behavior, changing callers to call the explicit
3805         versions. Later, we may want to return and change many of them to use shortest form
3806         instead, but that may require rebaselining tests, and in some extreme cases, getting
3807         rid of flawed logic that converts between different single and double precision
3808         floating point; such problems may be hidden by fixed precision serialization.
3809
3810         Since "shortest form" is already the behavior for AtomicString::number and
3811         for makeString, no changes required for clients of either of those.
3812
3813         * wtf/Logger.h:
3814         (WTF::LogArgument::toString): Use numberToStringFixedPrecision.
3815         * wtf/MediaTime.cpp:
3816         (WTF::MediaTime::toString const): Use appendFixedPrecisionNumber.
3817         * wtf/text/ValueToString.h:
3818         (WTF::ValueToString<float>::string): Use numberToStringFixedPrecision.
3819         (WTF::ValueToString<double>::string): Ditto.
3820
3821 2019-03-11  Truitt Savell  <tsavell@apple.com>
3822
3823         Unreviewed, rolling out r242702.
3824
3825         Broke High Sierra builders.
3826
3827         Reverted changeset:
3828
3829         "Add utility function to allow easy reverse range-based
3830         iteration of a container"
3831         https://bugs.webkit.org/show_bug.cgi?id=195542
3832         https://trac.webkit.org/changeset/242702
3833
3834 2019-03-11  Sam Weinig  <sam@webkit.org>
3835
3836         Add utility function to allow easy reverse range-based iteration of a container
3837         https://bugs.webkit.org/show_bug.cgi?id=195542
3838
3839         Reviewed by Antti Koivisto.
3840
3841         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
3842         works with any container that is compatible with std::rbegin() and std::rend(). It is
3843         expected to be used in conjunction with range-based for-loops like so:
3844
3845         for (auto& value : WTF::makeReversedRange(myContainer)) 
3846             ...
3847
3848         * wtf/IteratorRange.h:
3849         (WTF::makeReversedRange):
3850
3851 2019-03-10  Yusuke Suzuki <utatane.tea@gmail.com> and Fujii Hironori  <Hironori.Fujii@sony.com>
3852
3853         [WTF] Align assumption in RunLoopWin to the other platform's RunLoop
3854         https://bugs.webkit.org/show_bug.cgi?id=181151
3855
3856         Reviewed by Don Olmstead.
3857
3858         This patch fixes RunLoop in Windows to align it to the implementations in the other platforms
3859         to use RunLoop more aggressively.
3860
3861         * wtf/RunLoop.h:
3862         (WTF::RunLoop::Timer::Timer):
3863         * wtf/win/MainThreadWin.cpp:
3864         (initializeMainThreadPlatform): Call RunLoop::registerRunLoopMessageWindowClass.
3865         * wtf/win/RunLoopWin.cpp:
3866         (WTF::RunLoop::wndProc):
3867         (WTF::RunLoop::iterate):
3868         (WTF::RunLoop::stop):
3869         PostQuitMessage is only available in the RunLoop's thread. We should post a message and call
3870         it inside this task.
3871
3872         (WTF::RunLoop::registerRunLoopMessageWindowClass):
3873         Changed the return type from bool to void, and added RELEASE_ASSERT to check the return value of RegisterClass.
3874
3875         (WTF::RunLoop::~RunLoop):
3876         When the RunLoop's thread is freed, its associated window is freed. We do not need to do here.
3877
3878         (WTF::RunLoop::TimerBase::timerFired):
3879         (WTF::RunLoop::TimerBase::TimerBase):
3880         (WTF::RunLoop::TimerBase::start):
3881         (WTF::RunLoop::TimerBase::stop):
3882         (WTF::RunLoop::TimerBase::isActive const):
3883         (WTF::RunLoop::TimerBase::secondsUntilFire const):
3884         (WTF::generateTimerID): Deleted.
3885         We can use TimerBase's pointer as ID since it is uintptr_t.
3886
3887 2019-03-07  Said Abou-Hallawa  <sabouhallawa@apple.com>
3888
3889         requestAnimationFrame should execute before the next frame
3890         https://bugs.webkit.org/show_bug.cgi?id=177484
3891
3892         Reviewed by Simon Fraser.
3893
3894         Add trace points for the page RenderingUpdate.
3895
3896         * wtf/SystemTracing.h:
3897
3898 2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>
3899
3900         [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
3901         https://bugs.webkit.org/show_bug.cgi?id=195346
3902
3903         Reviewed by Fujii Hironori.
3904
3905         * wtf/PlatformWin.cmake:
3906         * wtf/text/AtomicString.h:
3907         (WTF::AtomicString::AtomicString):
3908         * wtf/text/WTFString.h:
3909         (WTF::String::String):
3910         * wtf/text/win/StringWin.cpp: Added.
3911         (WTF::String::wideCharacters const): Renamed from WTF::stringToNullTerminatedWChar.
3912         * wtf/text/win/WCharStringExtras.h:
3913         (WTF::ucharFrom):
3914         (WTF::wcharFrom):
3915         (WTF::stringToNullTerminatedWChar): Deleted.
3916         (WTF::wcharToString): Deleted.
3917         (WTF::nullTerminatedWCharToString): Deleted.
3918         Add static_assert-guarded reinterpret_cast wrappers for going between UChar* and wchar_t*.
3919         Move existing to/from-String helpers into the String (and AtomicString) class(es).
3920
3921         * wtf/win/FileSystemWin.cpp:
3922         (WTF::FileSystemImpl::getFindData):
3923         (WTF::FileSystemImpl::getFinalPathName):
3924         (WTF::FileSystemImpl::createSymbolicLink):
3925         (WTF::FileSystemImpl::deleteFile):
3926         (WTF::FileSystemImpl::deleteEmptyDirectory):
3927         (WTF::FileSystemImpl::moveFile):
3928         (WTF::FileSystemImpl::pathByAppendingComponent):
3929         (WTF::FileSystemImpl::fileSystemRepresentation):
3930         (WTF::FileSystemImpl::makeAllDirectories):
3931         (WTF::FileSystemImpl::pathGetFileName):
3932         (WTF::FileSystemImpl::storageDirectory):
3933         (WTF::FileSystemImpl::generateTemporaryPath):
3934         (WTF::FileSystemImpl::openTemporaryFile):
3935         (WTF::FileSystemImpl::openFile):
3936         (WTF::FileSystemImpl::hardLinkOrCopyFile):
3937         (WTF::FileSystemImpl::deleteNonEmptyDirectory):
3938         * wtf/win/LanguageWin.cpp:
3939         (WTF::localeInfo):
3940         * wtf/win/PathWalker.cpp:
3941         (WTF::PathWalker::PathWalker):
3942         Use wchar helpers as needed.
3943
3944 2019-02-28  Ryosuke Niwa  <rniwa@webkit.org>
3945
3946         Add WeakHashSet
3947         https://bugs.webkit.org/show_bug.cgi?id=195152
3948
3949         Reviewed by Antti Koivisto.
3950
3951         Added WeakHashSet which is a HashSet of WeakPtr. When the object pointed by WeakPtr is deleted,
3952         WeakHashSet treats the key to be no longer in the set. That is, WeakHashSet::contains returns false
3953         and const_iterator skips such a WeakPtr in the set.
3954
3955         We decided not to make HashSet<WeahPtr<T>> work because it involves weird semantics such as making
3956         find(X) delete the table entry as remove(find(X)) would be a no-op otherwise as find(X) would return
3957         necessarily need to return HashSet<WeakPtr<T>>::end().
3958
3959         Furthermore, we cannot determine the true size of this set in O(1) because the objected pointed by
3960         some of WeakPtr in the set may have already been deleted. This has implications that we can't have
3961         size(), isEmpty(), random(), etc... as O(1) operation.
3962
3963         WeakHashSet is implemented as HashSet<WeakReference<T>>. HashTable::rehash has been updated to delete
3964         WeakReference<T>'s whose m_ptr has become null, and HashTable::expand first deletes any such entry
3965         before deciding an actual expansion is needed. This is accomplished via newly added hash trait,
3966         hasIsReleasedWeakValueFunction, and HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue which
3967         returns true for when WeakReference<T> pointed by Ref<WeakReference<T>> has null m_ptr, not to be
3968         confused with Ref<WeakReference<T>> itself pointing to a null WeakReference<T>.
3969
3970         * WTF.xcodeproj/project.pbxproj:
3971         * wtf/CMakeLists.txt:
3972         * wtf/Forward.h:
3973         * wtf/HashSet.h:
3974         (WTF::HashSet<T, U, V>::checkConsistency const): Added.
3975         * wtf/HashTable.h:
3976         (WTF::HashTable::isReleasedWeakBucket): Added.
3977         (WTF::HashTable::expand): Delete WeakReference<T> with null m_ptr first. This updates m_keyCount
3978         and may make mustRehashInPlace() return true.
3979         (WTF::HashTable::deleteReleasedWeakBuckets): Added.
3980         (WTF::HashTable::rehash): Delete WeakReference<T> with null m_ptr. Also refactored the code a bit
3981         to avoid keep repeating oldTable[i].
3982         * wtf/HashTraits.h:
3983         (WTF::HashTraits<T>::isHashTraitsReleasedWeakValue): Added.
3984         (WTF::RefHashTraits<T>): Extracted from HashTraits<Ref<P>> to share code with
3985         HashTraits<Ref<WeakReference<T>>>.
3986         (WTF::HashTraitsReleasedWeakValueChecker<Traits, hasIsReleasedWeakValueFunction>): Added.
3987         (WTF::isHashTraitsReleasedWeakValue<Traits, hasIsReleasedWeakValueFunction>): Added.
3988         * wtf/WeakHashSet.h: Added.
3989         (WTF::WeakHashSet): Added.
3990         (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator):
3991         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
3992         (WTF::WeakHashSet::WeakHashSetConstIterator::operator* const):
3993         (WTF::WeakHashSet::WeakHashSetConstIterator::operator-> const):
3994         (WTF::WeakHashSet::WeakHashSetConstIterator::operator++):
3995         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
3996         (WTF::WeakHashSet::WeakHashSetConstIterator::operator== const):
3997         (WTF::WeakHashSet::WeakHashSetConstIterator::operator!= const):
3998         (WTF::WeakHashSet::WeakHashSet):
3999         (WTF::WeakHashSet::begin const):
4000         (WTF::WeakHashSet::end const):
4001         (WTF::WeakHashSet::add):
4002         (WTF::WeakHashSet::remove):
4003         (WTF::WeakHashSet::contains const):
4004         (WTF::WeakHashSet::capacity const):
4005         (WTF::WeakHashSet::computeSize const): Deletes any WeakReference<T> with null m_ptr first.
4006         (WTF::WeakHashSet::checkConsistency const):
4007         (WTF::HashTraits<Ref<WeakReference<T>>>): Added. This hash traits triggers the new code in HashTable's
4008         expand and rehash methods to delete WeakReference<T> with null m_ptr.
4009         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue):
4010         * wtf/WeakPtr.h:
4011         (WTF::WeakReference::~WeakReference): Added so that we can keep track the number of live WeakReference
4012         in API tests by template specializations.
4013
4014 2019-03-03  Darin Adler  <darin@apple.com>
4015
4016         Prepare to improve handling of conversion of float to strings
4017         https://bugs.webkit.org/show_bug.cgi?id=195262
4018
4019         Reviewed by Daniel Bates.
4020
4021         * wtf/dtoa.cpp:
4022         (WTF::truncateTrailingZeros): Renamed from
4023         formatStringTruncatingTrailingZerosIfNeeded and removed the calls
4024         to double_conversion::StringBuilder::Finalizer, since the caller
4025         already does that.
4026         (WTF::numberToFixedPrecisionString): Added an overload for float
4027         and updated to use the new truncateTrailingZeros.
4028         (WTF::numberToFixedWidthString): Added an overload for float.
4029
4030         * wtf/text/AtomicString.cpp:
4031         (WTF::AtomicString::number): Added float overload. This is a
4032         behavior change, but in all cases for the better. The old behavior
4033         was to convert to double first and then do "shortest form"
4034         conversion, and it's always better to just do that as float.
4035         * wtf/text/AtomicString.h: Added float overload of AtomicString::number.
4036
4037         * wtf/text/StringBuilder.cpp:
4038         (WTF::StringBuilder::appendFixedPrecisionNumber): Added float
4039         overload.
4040         (WTF::StringBuilder::appendShortestFormNumber): Renamed from
4041         appendECMAScriptNumber and did the above.
4042         (WTF::StringBuilder::appendFixedWidthNumber): Ditto.
4043         * wtf/text/StringBuilder.h: Added overloads for float and
4044         appendShortestFormNumber. The appendNumber and appendECMAScriptNumber
4045         functions are now inlines in the header, since they are expressed
4046         entirely in terms of the other functions.
4047
4048         * wtf/text/WTFString.cpp:
4049         (WTF::String::numberToStringFixedPrecision): Added float overload.
4050         Removed unnecessary explicit conversion to String.
4051         (WTF::String::numberToStringShortest): Renamed from
4052         numberToStringECMAScript and did the above.
4053         (WTF::String::numberToStringFixedWidth): Ditto.
4054
4055         * wtf/text/WTFString.h: Added overloads for float and
4056         numberToStringShortest. The number and numberToStringECMAScript
4057         functions are now inlines in the header, since they are expressed
4058         entirely in terms of the other functions.
4059
4060 2019-03-04  Andy Estes  <aestes@apple.com>
4061
4062         [Apple Pay] Move WebPaymentCoordinatorProxy from Source/WebKit/UIProcess to Source/WebKit/Shared
4063         https://bugs.webkit.org/show_bug.cgi?id=195080
4064         <rdar://problem/48421558>
4065
4066         Reviewed by Antti Koivisto.
4067
4068         * wtf/FeatureDefines.h:
4069
4070 2019-03-04  Michael Catanzaro  <mcatanzaro@igalia.com>
4071
4072         URLHelpers should use unorm2_quickCheck before converting to NFC
4073         https://bugs.webkit.org/show_bug.cgi?id=194272
4074
4075         Reviewed by Darin Adler.
4076
4077         If the string is already in normalization form C, don't try to normalize it.
4078
4079         * wtf/URLHelpers.cpp:
4080         (WTF::URLHelpers::toNormalizationFormC):
4081
4082 2019-03-02  Darin Adler  <darin@apple.com>
4083
4084         Retire legacy dtoa function and DecimalNumber class
4085         https://bugs.webkit.org/show_bug.cgi?id=195253
4086
4087         Reviewed by Daniel Bates.
4088
4089         * WTF.xcodeproj/project.pbxproj: Removed DecimalNumber.cpp/h.
4090         * wtf/CMakeLists.txt: Ditto.
4091
4092         * wtf/DecimalNumber.cpp: Removed.
4093         * wtf/DecimalNumber.h: Removed.
4094
4095         * wtf/JSONValues.cpp:
4096         (WTF::JSONImpl::Value::writeJSON const): Use
4097         StringBuilder::appendECMAScriptNumber instead of custom logic
4098         using the DecimalNumber class.
4099
4100         * wtf/dtoa.cpp:
4101         (WTF::storeInc): Deleted.
4102         (WTF::BigInt): Deleted.
4103         (WTF::multadd): Deleted.
4104         (WTF::hi0bits): Deleted.
4105         (WTF::lo0bits): Deleted.
4106         (WTF::i2b): Deleted.
4107         (WTF::mult): Deleted.
4108         (WTF::P5Node::P5Node): Deleted.
4109         (WTF::pow5mult): Deleted.
4110         (WTF::lshift): Deleted.
4111         (WTF::cmp): Deleted.
4112         (WTF::diff): Deleted.
4113         (WTF::d2b): Deleted.
4114         (WTF::quorem): Deleted.
4115         (WTF::dtoa): Deleted.
4116
4117         * wtf/dtoa.h: Removed DtoaBuffer, dtoa, and NumberToStringBufferLength.
4118
4119 2019-02-27  Darin Adler  <darin@apple.com>
4120
4121         Fixed makeString(float) to do shortest-form serialization without first converting to double
4122         https://bugs.webkit.org/show_bug.cgi?id=195142
4123
4124         Reviewed by Daniel Bates.
4125
4126         * wtf/DecimalNumber.cpp: Removed unneeded includes.
4127
4128         * wtf/DecimalNumber.h: Removed unused constructors; over time we will be
4129         deprecating DecimalNumber, so we should removed the unused parts. Also
4130         marked the constructor explicit, removed types used only for arguments for
4131         the constructors, and removed the sign, exponent, significand, and precision
4132         member functions.
4133
4134         * wtf/JSONValues.cpp:
4135         (WTF::JSONImpl::Value::writeJSON const): Updated for changes to DecimalNumber
4136         switched from NumberToLStringBuffer to NumberToStringBuffer, and for use of
4137         std::array instead of C arrays.
4138
4139         * wtf/dtoa.cpp: Removed unused dtoaRoundSF and dtoaRoundDP functions.
4140         (WTF::dtoa): Updated to use std::array instead of C arrays.
4141         (WTF::dtoaRoundSF): Removed.
4142         (WTF::dtoaRoundDP): Removed.
4143         (WTF::numberToString): Added an overload for float and updated to use std::array.
4144         (WTF::formatStringTruncatingTrailingZerosIfNeeded): Updated to use std::array.
4145         (WTF::numberToFixedPrecisionString): Ditto.
4146         (WTF::numberToFixedWidthString): Ditto.
4147
4148         * wtf/dtoa.h: Changed arrays to be std::array instead of C arrays so the
4149         array types will be checked. Removed dtoaRoundSF and dtoaRoundDP.
4150         Added float overloads for numberToString, numberToFixedPrecisionString,
4151         and numberToFixedWidthString. The only one of these that is called at this
4152         time is numberToString, called by the floating point StringTypeAdapter in
4153         StringConcatenateNummbers.h.
4154
4155         * wtf/text/StringConcatenateNumbers.h: Updated for std::array.
4156
4157 2019-03-01  Darin Adler  <darin@apple.com>
4158
4159         Finish removing String::format
4160         https://bugs.webkit.org/show_bug.cgi?id=194893
4161
4162         Reviewed by Daniel Bates.
4163
4164         * wtf/Assertions.cpp:
4165         (WTF::createWithFormatAndArguments): Moved this here from WTFString.cpp.
4166         (WTFLog): Use WTF::createWithFormatAndArguments instead of String::format.
4167
4168         * wtf/HexNumber.h: Deleted unneeded toString function.
4169
4170         * wtf/text/StringConcatenate.h: Got rid of unneeded forward declaration of
4171         StringTypeAdapter, since that's now in Forward.h. Tweaked formatting of templates
4172         a bit. Use function templates for writeTo functions rather than having two of each.
4173         Removed unused toString functions. Optimized case where we use have a UChar* and
4174         a length of zero to not force the result to be 16-bit. Also gets rid of a small
4175         NO_RETURN_DUE_TO_CRASH mess that we don't need. Refactored constructors to use some
4176         static member helper functions to compute string lengths. Added the pad function
4177         and the PaddingSpecification struct template, so we can add padding to anything
4178         we can turn into a string. Got rid of the special case overload for single
4179         arguments, since it only worked for things that the String constructor can handle.
4180         Instead we will now use StringTypeAdapter, which works for more types. Possibly
4181         less optimal for some special cases, which we could specialize for later if we like.
4182         * wtf/text/StringConcatenateNumbers.h: Ditto.
4183         * wtf/text/StringOperators.h: Ditto.
4184         * wtf/text/StringView.h: Ditto.
4185
4186         * wtf/text/WTFString.cpp:
4187         (WTF::createWithFormatAndArguments): Deleted.
4188         (WTF::String::format): Deleted.
4189         * wtf/text/WTFString.h: Deleted declaration of String::format.
4190
4191 2019-03-01  Alex Christensen  <achristensen@webkit.org>
4192
4193         Revert r241223, r241235, and r241287
4194         https://bugs.webkit.org/show_bug.cgi?id=194427
4195         <rdar://48045861>
4196
4197         * wtf/spi/darwin/XPCSPI.h:
4198
4199 2019-03-01  Simon Fraser  <simon.fraser@apple.com>
4200
4201         Add a system trace scope for event region building
4202         https://bugs.webkit.org/show_bug.cgi?id=195226
4203
4204         Reviewed by Jon Lee.
4205
4206         This trace scope measures the time spend converting element rects into Region objects,
4207         which can be large on some pages.
4208
4209         The value for "Display Refresh Dispatch to main thread" was wrong and I fixed it.
4210
4211         * wtf/SystemTracing.h:
4212
4213 2019-02-28  Yusuke Suzuki  <ysuzuki@apple.com>
4214
4215         [JSC] sizeof(JSString) should be 16
4216         https://bugs.webkit.org/show_bug.cgi?id=194375
4217
4218         Reviewed by Saam Barati.
4219
4220         * wtf/text/StringImpl.h:
4221         (WTF::StringImpl::flagIs8Bit):
4222         (WTF::StringImpl::flagIsAtomic):
4223         (WTF::StringImpl::flagIsSymbol):
4224         (WTF::StringImpl::maskStringKind):
4225         * wtf/text/WTFString.cpp:
4226         (WTF::nullString):
4227         * wtf/text/WTFString.h:
4228
4229 2019-02-28  Mark Lam  <mark.lam@apple.com>
4230
4231         Change CheckedArithmetic to not use std::enable_if_t.
4232         https://bugs.webkit.org/show_bug.cgi?id=195187
4233         <rdar://problem/48464665>
4234
4235         Reviewed by Keith Miller.
4236
4237         Because C++11 does not like std::enable_if_t and there's a need to use this file with C++11.
4238
4239         * wtf/CheckedArithmetic.h:
4240
4241 2019-02-27  Simon Fraser  <simon.fraser@apple.com>
4242
4243         Roll out r242014; it caused crashes in compositing logging (webkit.org/b/195141)
4244
4245         * wtf/Assertions.cpp:
4246         (WTF::createWithFormatAndArguments): Deleted.
4247         * wtf/HexNumber.h:
4248         (WTF::StringTypeAdapter<HexNumberBuffer>::toString const):
4249         * wtf/text/StringConcatenate.h:
4250         (WTF::makeString):
4251         (WTF::pad): Deleted.
4252         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::StringTypeAdapter): Deleted.
4253         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::length const): Deleted.
4254         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::is8Bit const): Deleted.
4255         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::writeTo const): Deleted.
4256         * wtf/text/StringConcatenateNumbers.h:
4257         (WTF::FormattedNumber::fixedPrecision):
4258         (WTF::FormattedNumber::fixedWidth):
4259         (WTF::StringTypeAdapter<FormattedNumber>::toString const):
4260         * wtf/text/StringOperators.h:
4261         (WTF::StringAppend::StringAppend):
4262         * wtf/text/StringView.h:
4263         (WTF::StringView::invalidate):
4264         * wtf/text/WTFString.cpp:
4265         (WTF::createWithFormatAndArguments):
4266         (WTF::String::format):
4267         * wtf/text/WTFString.h:
4268
4269 2019-02-26  Mark Lam  <mark.lam@apple.com>
4270
4271         Remove remaining poisoning code.
4272         https://bugs.webkit.org/show_bug.cgi?id=194138
4273
4274         Reviewed by Saam Barati.
4275
4276         This patch removes the instantiation of Poisoned variants of the various containers
4277         but retains the ability of those containers to work with pointer traits.  This
4278         allows us to use them with smart pointers in the future (just like we used to with
4279         Poisoned values).  At minimum, this ability will be useful when we want to insert
4280         an observer into the container storage type for debugging purposes, or to collect
4281         statistics for profiling.
4282
4283         * WTF.xcodeproj/project.pbxproj:
4284         * wtf/Bag.h:
4285         * wtf/CMakeLists.txt:
4286         * wtf/Platform.h:
4287         * wtf/Poisoned.cpp: Removed.
4288         * wtf/Poisoned.h: Removed.
4289         * wtf/PoisonedUniquePtr.h: Removed.
4290         * wtf/Ref.h:
4291         * wtf/RefCountedArray.h:
4292         * wtf/RefPtr.h:
4293         * wtf/WTFAssertions.cpp:
4294
4295 2019-02-26  Keith Miller  <keith_miller@apple.com>
4296
4297         Code quality cleanup in NeverDestroyed
4298         https://bugs.webkit.org/show_bug.cgi?id=194824
4299
4300         Reviewed by Yusuke Suzuki.
4301
4302         First, move data members to the end of the class per WebKit
4303         style. Also, add forbid heap allocation since we expect the
4304         NeverDestroyed classes to be static.
4305
4306         * wtf/NeverDestroyed.h:
4307
4308 2019-02-25  Xabier Rodriguez Calvar  <calvaris@igalia.com>
4309
4310         Fix WTFLogVerbose variadic parameters forwarding
4311         https://bugs.webkit.org/show_bug.cgi?id=194920
4312
4313         Reviewed by Alex Christensen.
4314
4315         WTFLogVerbose was passing the va_list to WTFLog but this function
4316         also used variadic parameters and this is not allowed in C (that
4317         part of the code is extern "C").
4318
4319         * wtf/Assertions.cpp:
4320         (WTF::WTFLogVaList): Created to take a va_list argument instead of
4321         variadic parameters.
4322         (WTF::WTFLog): Kept with variadic parameters, which are
4323         transformed to va_list and passed to WTFLogVaList.
4324         (WTF::WTFLogVerbose): Use WTFLogVaList instead of WTFLog.
4325
4326 2019-02-25  Sam Weinig  <sam@webkit.org>
4327
4328         Update double-conversion to the latest version
4329         https://bugs.webkit.org/show_bug.cgi?id=194994
4330
4331         Import the latest version of the double-conversion library based on
4332         https://github.com/google/double-conversion/commit/990c44707c70832dc1ce1578048c2198bafd3307
4333
4334         In additon to importing the code, the following changes were applied (or re-applied) to maintain 
4335         parity with what we had previously:
4336              - Add #include "config.h" to each cpp file.
4337              - Put everything inside the WTF namespace.
4338              - Changed all in library includes to be of the form #include <wtf/dtoa/FILE.h>.
4339              - Renamed double_conversion::Vector<> to double_conversion::BufferReference<>.
4340              - Replaced duplicated functions with ASCIICType.h variants
4341              - Made CachedPower table a constexpr.
4342              - Exported (via WTF_EXPORT_PRIVATE) several functions in double-conversion.h.
4343              - Made substantial changes to StringToDoubleConverter to avoid unnecessary overhead of 
4344                parameterization, as we only ever want one configuration. Instead of constructing a
4345                configured class and calling StringToDouble on it, StringToDouble is now a static
4346                function. This allows a bunch of now dead code (hex support, octal support, etc.) to
4347                be eliminated. As StringToDoubleConverter now supports single precision floats, some
4348                additional templating of StringToIeee was added to avoid extra unnecessary branching.
4349              - Added RemoveCharacters function to double_conversion::StringBuilder.
4350
4351         Reviewed by Darin Adler.
4352
4353         * WTF.xcodeproj/project.pbxproj:
4354         * wtf/CMakeLists.txt:
4355         * wtf/dtoa/AUTHORS: Added.
4356         * wtf/dtoa/README: Removed.
4357         * wtf/dtoa/README.md: Added.
4358         * wtf/dtoa/bignum-dtoa.cc:
4359         * wtf/dtoa/bignum-dtoa.h:
4360         * wtf/dtoa/bignum.cc:
4361         * wtf/dtoa/bignum.h:
4362         (WTF::double_conversion::Bignum::Times10):
4363         (WTF::double_conversion::Bignum::Equal):
4364         (WTF::double_conversion::Bignum::LessEqual):
4365         (WTF::double_conversion::Bignum::Less):
4366         (WTF::double_conversion::Bignum::PlusEqual):
4367         (WTF::double_conversion::Bignum::PlusLessEqual):
4368         (WTF::double_conversion::Bignum::PlusLess):
4369         (WTF::double_conversion::Bignum::EnsureCapacity):
4370         (WTF::double_conversion::Bignum::BigitLength const):
4371         * wtf/dtoa/cached-powers.cc:
4372         * wtf/dtoa/cached-powers.h:
4373         * wtf/dtoa/diy-fp.cc:
4374         * wtf/dtoa/diy-fp.h:
4375         (WTF::double_conversion::DiyFp::DiyFp):
4376         (WTF::double_conversion::DiyFp::Subtract):
4377         (WTF::double_conversion::DiyFp::Minus):
4378         (WTF::double_conversion::DiyFp::Times):
4379         (WTF::double_conversion::DiyFp::Normalize):
4380         (WTF::double_conversion::DiyFp::f const):
4381         (WTF::double_conversion::DiyFp::e const):
4382         (WTF::double_conversion::DiyFp::set_f):
4383         (WTF::double_conversion::DiyFp::set_e):
4384         * wtf/dtoa/double-conversion.cc:
4385         * wtf/dtoa/double-conversion.h:
4386         (WTF::double_conversion::DoubleToStringConverter::DoubleToStringConverter):
4387         (WTF::double_conversion::DoubleToStringConverter::ToShortest const):
4388         (WTF::double_conversion::DoubleToStringConverter::ToShortestSingle const):
4389         (WTF::double_conversion::StringToDoubleConverter::StringToDoubleConverter):
4390         * wtf/dtoa/double.h: Removed.
4391         * wtf/dtoa/fast-dtoa.cc:
4392         * wtf/dtoa/fast-dtoa.h:
4393         * wtf/dtoa/fixed-dtoa.cc:
4394         * wtf/dtoa/fixed-dtoa.h:
4395         * wtf/dtoa/ieee.h: Added.
4396         (WTF::double_conversion::double_to_uint64):
4397         (WTF::double_conversion::uint64_to_double):
4398         (WTF::double_conversion::float_to_uint32):
4399         (WTF::double_conversion::uint32_to_float):
4400         (WTF::double_conversion::Double::Double):
4401         (WTF::double_conversion::Double::AsDiyFp const):
4402         (WTF::double_conversion::Double::AsNormalizedDiyFp const):
4403         (WTF::double_conversion::Double::AsUint64 const):
4404         (WTF::double_conversion::Double::NextDouble const):
4405         (WTF::double_conversion::Double::PreviousDouble const):
4406         (WTF::double_conversion::Double::Exponent const):
4407         (WTF::double_conversion::Double::Significand const):
4408         (WTF::double_conversion::Double::IsDenormal const):
4409         (WTF::double_conversion::Double::IsSpecial const):
4410         (WTF::double_conversion::Double::IsNan const):
4411         (WTF::double_conversion::Double::IsInfinite const):
4412         (WTF::double_conversion::Double::Sign const):
4413         (WTF::double_conversion::Double::UpperBoundary const):
4414         (WTF::double_conversion::Double::NormalizedBoundaries const):
4415         (WTF::double_conversion::Double::LowerBoundaryIsCloser const):
4416         (WTF::double_conversion::Double::value const):
4417         (WTF::double_conversion::Double::SignificandSizeForOrderOfMagnitude):
4418         (WTF::double_conversion::Double::Infinity):
4419         (WTF::double_conversion::Double::NaN):
4420         (WTF::double_conversion::Double::DiyFpToUint64):
4421         (WTF::double_conversion::Single::Single):
4422         (WTF::double_conversion::Single::AsDiyFp const):
4423         (WTF::double_conversion::Single::AsUint32 const):
4424         (WTF::double_conversion::Single::Exponent const):
4425         (WTF::double_conversion::Single::Significand const):
4426         (WTF::double_conversion::Single::IsDenormal const):
4427         (WTF::double_conversion::Single::IsSpecial const):
4428         (WTF::double_conversion::Single::IsNan const):
4429         (WTF::double_conversion::Single::IsInfinite const):
4430         (WTF::double_conversion::Single::Sign const):
4431         (WTF::double_conversion::Single::NormalizedBoundaries const):
4432         (WTF::double_conversion::Single::UpperBoundary const):
4433         (WTF::double_conversion::Single::LowerBoundaryIsCloser const):
4434         (WTF::double_conversion::Single::value const):
4435         (WTF::double_conversion::Single::Infinity):
4436         (WTF::double_conversion::Single::NaN):
4437         * wtf/dtoa/strtod.cc:
4438         * wtf/dtoa/strtod.h:
4439         * wtf/dtoa/utils.h:
4440         (abort_noreturn):
4441         (WTF::double_conversion::Max):
4442         (WTF::double_conversion::Min):
4443         (WTF::double_conversion::StrLength):
4444         (WTF::double_conversion::BufferReference::BufferReference):
4445         (WTF::double_conversion::BufferReference::SubVector):
4446         (WTF::double_conversion::BufferReference::length const):
4447         (WTF::double_conversion::BufferReference::is_empty const):
4448         (WTF::double_conversion::BufferReference::start const):
4449         (WTF::double_conversion::BufferReference::operator[] const):
4450         (WTF::double_conversion::BufferReference::first):
4451         (WTF::double_conversion::BufferReference::last):
4452         (WTF::double_conversion::StringBuilder::StringBuilder):
4453         (WTF::double_conversion::StringBuilder::~StringBuilder):
4454         (WTF::double_conversion::StringBuilder::size const):
4455         (WTF::double_conversion::StringBuilder::position const):
4456         (WTF::double_conversion::StringBuilder::Reset):
4457         (WTF::double_conversion::StringBuilder::AddCharacter):
4458         (WTF::double_conversion::StringBuilder::AddString):
4459         (WTF::double_conversion::StringBuilder::AddSubstring):
4460         (WTF::double_conversion::StringBuilder::AddPadding):
4461         (WTF::double_conversion::StringBuilder::RemoveCharacters):
4462         (WTF::double_conversion::StringBuilder::Finalize):
4463         (WTF::double_conversion::StringBuilder::is_finalized const):
4464         (WTF::double_conversion::BitCast):
4465         (WTF::double_conversion::BufferReference::SubBufferReference): Deleted.
4466         (WTF::double_conversion::StringBuilder::SetPosition): Deleted.
4467
4468 2019-02-20  Darin Adler  <darin@apple.com>
4469
4470         Finish removing String::format
4471         https://bugs.webkit.org/show_bug.cgi?id=194893
4472
4473         Reviewed by Daniel Bates.
4474
4475         * wtf/Assertions.cpp:
4476         (WTF::createWithFormatAndArguments): Moved this here from WTFString.cpp.
4477         (WTFLog): Use WTF::createWithFormatAndArguments instead of String::format.
4478
4479         * wtf/HexNumber.h: Deleted unneeded toString function.
4480
4481         * wtf/text/StringConcatenate.h: Got rid of unneeded forward declaration of
4482         StringTypeAdapter, since that's now in Forward.h. Tweaked formatting of templates
4483         a bit. Use function templates for writeTo functions rather than having two of each.
4484         Removed unused toString functions. Optimized case where we use have a UChar* and
4485         a length of zero to not force the result to be 16-bit. Also gets rid of a small
4486         NO_RETURN_DUE_TO_CRASH mess that we don't need. Refactored constructors to use some
4487         static member helper functions to compute string lengths. Added the pad function
4488         and the PaddingSpecification struct template, so we can add padding to anything
4489         we can turn into a string. Got rid of the special case overload for single
4490         arguments, since it only worked for things that the String constructor can handle.
4491         Instead we will now use StringTypeAdapter, which works for more types. Possibly
4492         less optimal for some special cases, which we could specialize for later if we like.
4493         * wtf/text/StringConcatenateNumbers.h: Ditto.
4494         * wtf/text/StringOperators.h: Ditto.
4495         * wtf/text/StringView.h: Ditto.
4496
4497         * wtf/text/WTFString.cpp:
4498         (WTF::createWithFormatAndArguments): Deleted.
4499         (WTF::String::format): Deleted.
4500         * wtf/text/WTFString.h: Deleted declaration of String::format.
4501
4502 2019-02-23  Michael Catanzaro  <mcatanzaro@igalia.com>
4503
4504         Unreviewed, fix find/replace error from r232178
4505
4506         Looks like this was the only such error in that commit.
4507
4508         * wtf/URLHelpers.cpp:
4509         (WTF::URLHelpers::isLookalikeCharacter):
4510
4511 2019-02-23  Mark Lam  <mark.lam@apple.com>
4512
4513         Add an exception check and some assertions in StringPrototype.cpp.
4514         https://bugs.webkit.org/show_bug.cgi?id=194962
4515         <rdar://problem/48013416>
4516
4517         Reviewed by Yusuke Suzuki and Saam Barati.
4518
4519         Add an AssertNoOverflow overflow handler which allows us to do CheckedArithmetic
4520         for assertion purpose only on debug builds but sacrifices no performance on
4521         release builds.
4522
4523         * wtf/CheckedArithmetic.h:
4524         (WTF::AssertNoOverflow::overflowed):
4525         (WTF::AssertNoOverflow::clearOverflow):
4526         (WTF::AssertNoOverflow::crash):
4527         (WTF::AssertNoOverflow::hasOverflowed const):
4528         (WTF::observesOverflow):
4529         (WTF::observesOverflow<AssertNoOverflow>):
4530         (WTF::safeAdd):
4531         (WTF::safeSub):
4532         (WTF::safeMultiply):
4533         (WTF::Checked::operator+=):
4534         (WTF::Checked::operator-=):
4535         (WTF::Checked::operator*=):
4536         (WTF::operator+):
4537         (WTF::operator-):
4538         (WTF::operator*):
4539
4540 2019-02-23  Keith Miller  <keith_miller@apple.com>
4541
4542         Add new mac target numbers
4543         https://bugs.webkit.org/show_bug.cgi?id=194955
4544
4545         Reviewed by Tim Horton.
4546
4547         * Configurations/Base.xcconfig:
4548         * Configurations/DebugRelease.xcconfig:
4549
4550 2019-02-21  Antoine Quint  <graouts@apple.com>
4551
4552         Move UIWebTouchEventsGestureRecognizer.activeTouchesByIdentifier to SPI
4553         https://bugs.webkit.org/show_bug.cgi?id=194531
4554         <rdar://problem/47714562>
4555
4556         Reviewed by Tim Horton.
4557
4558         Follow-up commit to ensure this SPI is only called on newer versions of iOS.
4559
4560         * wtf/Platform.h:
4561
4562 2019-02-21  Dean Jackson  <dino@apple.com>
4563
4564         Rotation animations sometimes use the wrong origin (affects apple.com)
4565         https://bugs.webkit.org/show_bug.cgi?id=194878
4566         <rdar://problem/43908047>
4567
4568         Follow-up commit to ensure this change only affects newer versions
4569         of iOS.
4570
4571         * wtf/Platform.h: Add a version check.
4572
4573 2019-02-20  Alex Christensen  <achristensen@webkit.org>
4574
4575         URL percent-encode operations should use checked arithmetic for buffer allocation length
4576         https://bugs.webkit.org/show_bug.cgi?id=194877
4577         <rdar://problem/48212062>
4578
4579         Reviewed by Tim Horton.
4580
4581         * wtf/URLHelpers.cpp:
4582         (WTF::URLHelpers::userVisibleURL):
4583         * wtf/cocoa/NSURLExtras.mm:
4584         (WTF::dataWithUserTypedString):
4585
4586 2019-02-20  Dean Jackson  <dino@apple.com>
4587
4588         Rotation animations sometimes use the wrong origin (affects apple.com)
4589         https://bugs.webkit.org/show_bug.cgi?id=194878
4590         <rdar://problem/43908047>
4591
4592         Reviewed by Simon Fraser.
4593
4594         * wtf/Platform.h: Add HAVE(CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED).
4595
4596 2019-02-20  Andy Estes  <aestes@apple.com>
4597
4598         [Xcode] Add SDKVariant.xcconfig to various Xcode projects
4599         https://bugs.webkit.org/show_bug.cgi?id=194869
4600
4601         Rubber-stamped by Jer Noble.
4602
4603         * WTF.xcodeproj/project.pbxproj:
4604
4605 2019-02-20  Adrian Perez de Castro  <aperez@igalia.com>
4606
4607         [WPE][GTK] Enable support for CONTENT_EXTENSIONS
4608         https://bugs.webkit.org/show_bug.cgi?id=167941
4609
4610         Reviewed by Carlos Garcia Campos.
4611
4612         Add specialization of the refGPtr() and derefGPtr() templates for GMappedFile.
4613
4614         * wtf/glib/GRefPtr.cpp:
4615         (WTF::refGPtr): Added.
4616         (WTF::derefGPtr): Added.
4617         * wtf/glib/GRefPtr.h: Declare template specializations.
4618
4619 2019-02-19  Commit Queue  <commit-queue@webkit.org>
4620
4621         Unreviewed, rolling out r241770.
4622         https://bugs.webkit.org/show_bug.cgi?id=194833
4623
4624         Caused crashes (Requested by smfr on #webkit).
4625
4626         Reverted changeset:
4627
4628         "Code quality cleanup in NeverDestroyed"
4629         https://bugs.webkit.org/show_bug.cgi?id=194824
4630         https://trac.webkit.org/changeset/241770
4631
4632 2019-02-19  Keith Miller  <keith_miller@apple.com>
4633
4634         Code quality cleanup in NeverDestroyed
4635         https://bugs.webkit.org/show_bug.cgi?id=194824
4636
4637         Reviewed by Yusuke Suzuki.
4638
4639         First, move data members to the end of the class per WebKit
4640         style. Also, add forbid heap allocation since we expect the
4641         NeverDestroyed classes to be static.
4642
4643         * wtf/NeverDestroyed.h:
4644
4645 2019-02-16  Darin Adler  <darin@apple.com>
4646
4647         Continue reducing use of String::format, now focusing on hex: "%p", "%x", etc.
4648         https://bugs.webkit.org/show_bug.cgi?id=194752
4649
4650         Reviewed by Daniel Bates.
4651
4652         * WTF.xcodeproj/project.pbxproj: Added HexNumber.cpp and Logger.cpp.
4653         * wtf/CMakeLists.txt: Ditto.
4654
4655         * wtf/HexNumber.cpp: Added.
4656         (WTF::Internal::appendHex): Non-inline, non-template hex formatting logic.
4657
4658         * wtf/HexNumber.h:
4659         (WTF::Internal::appendHex): Refactored main logic of appendUnsignedAsHex and
4660         appendUnsignedAsHexFixedSize so they can be reused in a function named hex for
4661         use with StringTypeAdapter.
4662         (WTF::appendUnsignedAsHex): Ditto.
4663         (WTF::appendUnsignedAsHexFixedSize): Ditto.
4664         (WTF::hex): Added.
4665         (WTF::StringTypeAdapter<HexNumberBuffer>): Added.
4666
4667         * wtf/Logger.cpp: Added.
4668         (WTF::Logger::LogSiteIdentifier::toString const): Made this a non-template
4669         function and moved it here so that we don't need to include HexNumber.h
4670         in Logger.h. Since HexNumber.h has substantial code in it, it's good if we
4671         don't include it in any other headers.
4672
4673         * wtf/Logger.h:
4674         (WTF::LogArgument<Logger::LogSiteIdentifier>::toString): Changed to call
4675         a non-template function, LogSiteIdentifier::toString.
4676
4677         * wtf/text/StringConcatenateNumbers.h: Replaced overloaded writeTo functions
4678         with function templates and used StringImpl::copyCharacters instead of
4679         hand-written loops.
4680
4681 2019-02-18  Joseph Pecoraro  <pecoraro@apple.com>
4682
4683         Web Inspector: Better categorize CPU usage per-thread / worker
4684         https://bugs.webkit.org/show_bug.cgi?id=194564
4685
4686         Reviewed by Devin Rousso.
4687
4688         * wtf/Threading.h:
4689         * wtf/Threading.cpp:
4690         (WTF::Thread::allThreadsMutex):
4691         (WTF::Thread::create):
4692         (WTF::Thread::didExit):
4693         Add a set of all WTF::Thread created threads.
4694
4695 2019-02-18  Tadeu Zagallo  <tzagallo@apple.com>
4696
4697         Bytecode cache should a have a boot-specific validation
4698         https://bugs.webkit.org/show_bug.cgi?id=194769
4699         <rdar://problem/48149509>
4700
4701         Reviewed by Keith Miller.
4702
4703         Add helper to get kern.bootsessionuuid from sysctl
4704
4705         * wtf/UUID.cpp:
4706         (WTF::bootSessionUUIDString):
4707         * wtf/UUID.h:
4708
4709 2019-02-17  David Kilzer  <ddkilzer@apple.com>
4710
4711         Unreviewed, rolling out r241620.
4712
4713         "Causes use-after-free crashes running layout tests with ASan and GuardMalloc."
4714         (Requested by ddkilzer on #webkit.)
4715
4716         Reverted changeset:
4717
4718         "[WTF] Add environment variable helpers"
4719         https://bugs.webkit.org/show_bug.cgi?id=192405
4720         https://trac.webkit.org/changeset/241620
4721
4722 2019-02-15  Ross Kirsling  <ross.kirsling@sony.com>
4723
4724         [WTF] Add environment variable helpers
4725         https://bugs.webkit.org/show_bug.cgi?id=192405
4726
4727         Reviewed by Michael Catanzaro.
4728
4729         Create a new Environment API as a platform-independent, thread-safe(r)
4730         way to get and set environment variables.
4731
4732         * WTF.xcodeproj/project.pbxproj:
4733         * wtf/CMakeLists.txt:
4734         * wtf/Environment.h: Added.
4735         * wtf/PlatformGTK.cmake:
4736         * wtf/PlatformJSCOnly.cmake:
4737         * wtf/PlatformMac.cmake:
4738         * wtf/PlatformPlayStation.cmake:
4739         * wtf/PlatformWPE.cmake:
4740         * wtf/PlatformWin.cmake:
4741         * wtf/posix/EnvironmentPOSIX.cpp: Added.
4742         * wtf/win/EnvironmentWin.cpp: Added.
4743         Introduce WTF::Environment.
4744
4745         * wtf/Threading.cpp:
4746         (WTF::threadingIsInitialized):
4747         (WTF::initializeThreading):
4748         * wtf/Threading.h:
4749         Introduce WTF::threadingIsInitialized() so that we can ASSERT that it's
4750         false before setting an environment variable through the new API.
4751
4752         * wtf/DataLog.cpp:
4753         (WTF::initializeLogFileOnce):
4754         * wtf/NumberOfCores.cpp:
4755         (WTF::numberOfProcessorCores):
4756         * wtf/posix/FileSystemPOSIX.cpp:
4757         (WTF::FileSystemImpl::openTemporaryFile):
4758         Utilize WTF::Environment where possible.
4759
4760 2019-02-15  Brian Burg  <bburg@apple.com>
4761
4762         [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
4763         https://bugs.webkit.org/show_bug.cgi?id=194411
4764         <rdar://problem/47787614>
4765
4766         Reviewed by Joseph Pecoraro.
4767
4768         * wtf/cocoa/SoftLinking.h:
4769         Remove macro that now has no uses.
4770
4771 2019-02-15  Commit Queue  <commit-queue@webkit.org>
4772
4773         Unreviewed, rolling out r241559 and r241566.
4774         https://bugs.webkit.org/show_bug.cgi?id=194710
4775
4776         Causes layout test crashes under GuardMalloc (Requested by
4777         ryanhaddad on #webkit).
4778
4779         Reverted changesets:
4780
4781         "[WTF] Add environment variable helpers"
4782         https://bugs.webkit.org/show_bug.cgi?id=192405
4783         https://trac.webkit.org/changeset/241559
4784
4785         "Unreviewed build fix for WinCairo Debug after r241559."
4786         https://trac.webkit.org/changeset/241566
4787
4788 2019-02-15  Truitt Savell  <tsavell@apple.com>
4789
4790         Unreviewed, rolling out r241564.
4791
4792         Caused 50+ Timeouts on Mac WK2, mostly in the http/ directory
4793
4794         Reverted changeset:
4795
4796         "[Mac] WebInspectorUI.framework does not need to be soft-
4797         linked anymore"
4798         https://bugs.webkit.org/show_bug.cgi?id=194411
4799         https://trac.webkit.org/changeset/241564
4800
4801 2019-02-15  Dominik Infuehr  <dinfuehr@igalia.com>
4802
4803         Fix deadlock on Linux/x64 between SamplingProfiler and VMTraps
4804         https://bugs.webkit.org/show_bug.cgi?id=194014
4805
4806         Reviewed by Michael Catanzaro.
4807
4808         Do not block SIGUSR1 when installing signal handlers, since this signal
4809         is used to suspend/resume machine threads on Linux.
4810
4811         ftl-ai-filter-phantoms-should-clear-clear-value.js deadlocked with
4812         enabled watchdog and sampling.
4813
4814         Deadlock happened in the following situation:
4815
4816         Thread 1 (Sampling): SamplingProfiler.cpp:takeSample takes all needed locks
4817         and then tries to suspend the main thread.
4818
4819         Thread 2 (Watchdog/VMTraps): Before the Sampling-Thread suspends the main thread
4820         a signal is caught and the signal handler is invoked (VMTraps.cpp:SignalSender).
4821         SignalSender tries to lock codeBlockSet, but this is already locked by the
4822         SamplingProfiler.
4823
4824         The SamplingProfiler can only give up the lock when it suspends
4825         the thread. However since the VMTraps signal handler is active, all other signals blocked,
4826         therefore the SamplingProfiler also waits until its signal handler is invoked.
4827
4828         This patch fixes this by not blocking SIGUSR1 in installSignalHandler, since
4829         it is used to suspend/resume threads on Linux.
4830
4831         * wtf/Threading.h:
4832         * wtf/posix/ThreadingPOSIX.cpp:
4833         * wtf/threads/Signals.cpp:
4834         (WTF::installSignalHandler):
4835
4836 2019-02-15  Saam barati  <sbarati@apple.com>
4837
4838         [WebAssembly] Write a new register allocator for Air O0 and make BBQ use it
4839         https://bugs.webkit.org/show_bug.cgi?id=194036
4840
4841         Reviewed by Yusuke Suzuki.
4842
4843         * wtf/IndexMap.h:
4844         (WTF::IndexMap::at):
4845         (WTF::IndexMap::at const):
4846         (WTF::IndexMap::operator[]):
4847         (WTF::IndexMap::operator[] const):
4848
4849 2019-02-14  Brian Burg  <bburg@apple.com>
4850
4851         [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
4852         https://bugs.webkit.org/show_bug.cgi?id=194411
4853         <rdar://problem/47787614>
4854
4855         Reviewed by Joseph Pecoraro.
4856
4857         * wtf/cocoa/SoftLinking.h:
4858         Remove macro that now has no uses.
4859
4860 2019-02-14  Ross Kirsling  <ross.kirsling@sony.com>
4861
4862         [WTF] Add environment variable helpers
4863         https://bugs.webkit.org/show_bug.cgi?id=192405
4864
4865         Reviewed by Michael Catanzaro.
4866
4867         Create a new Environment API as a platform-independent, thread-safe(r)
4868         way to get and set environment variables.
4869
4870         * WTF.xcodeproj/project.pbxproj:
4871         * wtf/CMakeLists.txt:
4872         * wtf/Environment.h: Added.
4873         * wtf/PlatformGTK.cmake:
4874         * wtf/PlatformJSCOnly.cmake:
4875         * wtf/PlatformMac.cmake:
4876         * wtf/PlatformPlayStation.cmake:
4877         * wtf/PlatformWPE.cmake:
4878         * wtf/PlatformWin.cmake:
4879         * wtf/posix/EnvironmentPOSIX.cpp: Added.
4880         * wtf/win/EnvironmentWin.cpp: Added.
4881         Introduce WTF::Environment.
4882
4883         * wtf/Threading.cpp:
4884         (WTF::threadingIsInitialized):
4885         (WTF::initializeThreading):
4886         * wtf/Threading.h:
4887         Introduce WTF::threadingIsInitialized() so that we can ASSERT that it's
4888         false before setting an environment variable through the new API.
4889
4890         * wtf/DataLog.cpp:
4891         (WTF::initializeLogFileOnce):
4892         * wtf/NumberOfCores.cpp:
4893         (WTF::numberOfProcessorCores):
4894         * wtf/posix/FileSystemPOSIX.cpp:
4895         (WTF::FileSystemImpl::openTemporaryFile):
4896         Utilize WTF::Environment where possible.
4897
4898 2019-02-13  Yusuke Suzuki  <ysuzuki@apple.com>
4899
4900         We should only make rope strings when concatenating strings long enough.
4901         https://bugs.webkit.org/show_bug.cgi?id=194465
4902
4903         Reviewed by Mark Lam.
4904
4905         * wtf/text/StringImpl.h:
4906         (WTF::StringImpl::headerSize):
4907
4908 2019-02-12  Tim Horton  <timothy_horton@apple.com>
4909
4910         Remove WKLegacyPDFView
4911         https://bugs.webkit.org/show_bug.cgi?id=194559
4912
4913         Reviewed by Andy Estes.
4914
4915         * wtf/FeatureDefines.h:
4916
4917 2019-02-12  David Kilzer  <ddkilzer@apple.com>
4918
4919         REGRESSION (r238955, r240494): Soft-linking optional Lookup.framework triggers release assertion when missing
4920         <https://webkit.org/b/194529>
4921         <rdar://problem/47924449>
4922
4923         Reviewed by Eric Carlson.
4924
4925         * wtf/cocoa/SoftLinking.h:
4926         (SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT_AND_IS_OPTIONAL): Rename
4927         SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT_AND_ASSERTION() to this
4928         and change `assertion` argument to `isOptional`.  Pass
4929         `isOptional` to framework##Library() method to control assertion
4930         behavior.  Only check RELEASE_ASSERT() if `!isOptional`, else
4931         that code should be optimized out by the compiler.  This fixes
4932         the crash.
4933         (NO_ASSERT): Remove macro since it's no longer used.
4934         (SOFT_LINK_IS_OPTIONAL): Add macro to use for soft-linking
4935         optional classes.
4936         (SOFT_LINK_IS_NOT_OPTIONAL): Add macro to use for soft-linking
4937         non-optional classes.
4938         (SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT): Update to use new
4939         SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT_AND_IS_OPTIONAL() macro.
4940         (SOFT_LINK_CLASS_FOR_SOURCE_OPTIONAL_WITH_EXPORT): Ditto.
4941         (SOFT_LINK_CLASS_FOR_SOURCE): Ditto.
4942         (SOFT_LINK_CLASS_FOR_SOURCE_OPTIONAL): Ditto.
4943
4944 2019-02-12  Andy Estes  <aestes@apple.com>
4945
4946         [iOSMac] Enable Parental Controls Content Filtering
4947         https://bugs.webkit.org/show_bug.cgi?id=194521
4948         <rdar://39732376>
4949
4950         Reviewed by Tim Horton.
4951
4952         * wtf/Platform.h:
4953
4954 2019-02-11  Myles C. Maxfield  <mmaxfield@apple.com>
4955
4956         [Cocoa] Ask platform for generic font family mappings
4957         https://bugs.webkit.org/show_bug.cgi?id=187723
4958         <rdar://problem/41892438>
4959
4960         Reviewed by Brent Fulgham.
4961
4962         Add an ENABLE in Platform.
4963
4964         * wtf/Platform.h:
4965
4966 2019-02-11  Truitt Savell  <tsavell@apple.com>
4967
4968         Unreviewed, rolling out r241229.
4969
4970         Revision broke internal builds for watchOS.
4971
4972         Reverted changeset:
4973
4974         "[Cocoa] Ask platform for generic font family mappings"
4975         https://bugs.webkit.org/show_bug.cgi?id=187723
4976         https://trac.webkit.org/changeset/241229