Unreviewed, rolling out r246616.
[WebKit-https.git] / Source / WTF / ChangeLog
1 2019-07-03  Ryan Haddad  <ryanhaddad@apple.com>
2
3         Unreviewed, rolling out r246616.
4
5         Caused http/tests/inspector/network/har/har-page.html to fail
6         on Catalina.
7
8         Reverted changeset:
9
10         "Web Inspector: Network: replace CFNetwork SPI with new API
11         where able"
12         https://bugs.webkit.org/show_bug.cgi?id=198762
13         https://trac.webkit.org/changeset/246616
14
15 2019-07-02  Commit Queue  <commit-queue@webkit.org>
16
17         Unreviewed, rolling out r247041.
18         https://bugs.webkit.org/show_bug.cgi?id=199425
19
20         broke some iOS arm64e tests (Requested by keith_miller on
21         #webkit).
22
23         Reverted changeset:
24
25         "PACCage should first cage leaving PAC bits intact then
26         authenticate"
27         https://bugs.webkit.org/show_bug.cgi?id=199372
28         https://trac.webkit.org/changeset/247041
29
30 2019-07-02  Chris Dumez  <cdumez@apple.com>
31
32         ThreadSafeRefCounted<DestructionThread::Main> is not safe to use in the UIProcess
33         https://bugs.webkit.org/show_bug.cgi?id=199420
34         <rdar://problem/52289717>
35
36         Reviewed by Ryosuke Niwa.
37
38         * wtf/MainThread.cpp:
39         (WTF::isMainRunLoop):
40         (WTF::callOnMainRunLoop):
41         * wtf/MainThread.h:
42         Add some function to MainThread.h to be used by ThreadSafeRefCounted to interact with the
43         main RunLoop. This is used to avoid a circular dependency between RunLoop (which is
44         ThreadSafeRefCounted) and ThreadSafeReCounted.
45
46         * wtf/ThreadSafeRefCounted.h:
47         (WTF::ThreadSafeRefCounted::deref const):
48         Add a new DestructionThread::MainRunLoop enum value to be used by classes that need to
49         be destroyed on the main RunLoop rather than the main thread (which may be different
50         when WK1 is invoved)
51
52 2019-07-02  Robin Morisset  <rmorisset@apple.com>
53
54         [WHLSL] the initializer in VariableDeclaration should be a std::unique_ptr, not Optional<UniqueRef<..>>
55         https://bugs.webkit.org/show_bug.cgi?id=199389
56
57         Reviewed by Sam Weinig.
58
59         * wtf/UniqueRef.h:
60         (WTF::UniqueRef::moveToUniquePtr): Added.
61
62 2019-07-02  Keith Miller  <keith_miller@apple.com>
63
64         PACCage should first cage leaving PAC bits intact then authenticate
65         https://bugs.webkit.org/show_bug.cgi?id=199372
66
67         Reviewed by Saam Barati.
68
69         * wtf/CagedPtr.h:
70         (WTF::CagedPtr::get const):
71         (WTF::CagedPtr::getMayBeNull const):
72         (WTF::CagedPtr::mergePointers):
73
74 2019-07-01  Philippe Normand  <pnormand@igalia.com>
75
76         [GStreamer] Cannot play Bert's Bytes radio stream from http://radio.dos.nl/
77         https://bugs.webkit.org/show_bug.cgi?id=198376
78
79         Reviewed by Xabier Rodriguez-Calvar.
80
81         * wtf/glib/GLibUtilities.h:
82         (enumToString): Utility function to get a string representation of of a GLib enum.
83
84 2019-06-22  Darin Adler  <darin@apple.com>
85
86         Streamline some string code, focusing on functions that were using substringSharingImpl
87         https://bugs.webkit.org/show_bug.cgi?id=198898
88
89         Reviewed by Daniel Bates.
90
91         * wtf/URLHelpers.cpp:
92         (WTF::URLHelpers::applyHostNameFunctionToURLString): Change code using
93         substringSharingImpl so it could call String::find to call StringView::contains
94         instead. Also rewrote lambdas to be simpler and likely more efficient.
95         Rewrote another case using substringSharingImpl so it could call String::find
96         to call StringView::find instead.
97
98         * wtf/text/StringView.cpp:
99         (WTF::StringView::startsWith const): Added.
100
101         * wtf/text/StringView.h: Tweaked style a bit, and added an overload of
102         StringView::contains that takes a CodeUnitMatchFunction and an overload
103         of startsWith that cakes a UChar.
104
105 2019-06-28  Konstantin Tokarev  <annulen@yandex.ru>
106
107         Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733
108         https://bugs.webkit.org/show_bug.cgi?id=199317
109
110         Reviewed by Michael Catanzaro.
111
112         While IconDatabase and all code using it was removed,
113         ENABLE_ICONDATABASE still exists as build option and C++ macro.
114
115         * wtf/FeatureDefines.h:
116
117 2019-06-27  Konstantin Tokarev  <annulen@yandex.ru>
118
119         Avoid using WTF::Function for passing local function pointers and closures in URLHelpers.cpp
120         https://bugs.webkit.org/show_bug.cgi?id=199271
121
122         Reviewed by Yusuke Suzuki.
123
124         WTF::Function allocates memory on heap, which is totally redundant in this
125         case.
126
127         * wtf/URLHelpers.cpp:
128         (WTF::URLHelpers::isSecondLevelDomainNameAllowedByTLDRules):
129
130 2019-06-27  Timothy Hatcher  <timothy@apple.com>
131
132         Move WebKitLegacy off of a couple AppKit ivars.
133         https://bugs.webkit.org/show_bug.cgi?id=199279
134         rdar://problem/34983438
135
136         Reviewed by Tim Horton.
137
138         * wtf/Platform.h: Added HAVE_SUBVIEWS_IVAR_SPI.
139
140 2019-06-27  Beth Dakin  <bdakin@apple.com>
141
142         Upstream use of MACCATALYST
143         https://bugs.webkit.org/show_bug.cgi?id=199245
144         rdar://problem/51687723
145
146         Reviewed by Tim Horton.
147
148         * Configurations/SDKVariant.xcconfig:
149         * wtf/FeatureDefines.h:
150         * wtf/Platform.h:
151
152 2019-06-27  Don Olmstead  <don.olmstead@sony.com>
153
154         [FTW] Build JavaScriptCore
155         https://bugs.webkit.org/show_bug.cgi?id=199254
156
157         Reviewed by Brent Fulgham.
158
159         * wtf/PlatformFTW.cmake: Added.
160
161 2019-06-27  Fujii Hironori  <Hironori.Fujii@sony.com>
162
163         [CMake] Bump cmake_minimum_required version to 3.10
164         https://bugs.webkit.org/show_bug.cgi?id=199181
165
166         Reviewed by Don Olmstead.
167
168         * CMakeLists.txt:
169
170 2019-06-26  Konstantin Tokarev  <annulen@yandex.ru>
171
172         Remove unneeded #include <wtf/glib/GRefPtr.h>
173         https://bugs.webkit.org/show_bug.cgi?id=199228
174
175         Reviewed by Michael Catanzaro.
176
177         * wtf/MemoryPressureHandler.h:
178
179 2019-06-26  Myles C. Maxfield  <mmaxfield@apple.com>
180
181         REGRESSION: ( r246394 ) webgpu/whlsl-buffer-fragment.html and webgpu/whlsl-buffer-vertex.html are failing
182         https://bugs.webkit.org/show_bug.cgi?id=199012
183
184         Reviewed by Saam Barati.
185
186         * wtf/Platform.h:
187
188 2019-06-25  Keith Miller  <keith_miller@apple.com>
189
190         CagedPtr doesn't merge PAC bits back into the resulting caged pointer.
191         https://bugs.webkit.org/show_bug.cgi?id=199214
192
193         Reviewed by Yusuke Suzuki.
194
195         The current code means that caging will just strip the any failed
196         authentication bits. Adding this code doesn't appear to be a
197         regression on iPhone Xs.
198
199         * wtf/CagedPtr.h:
200         (WTF::CagedPtr::get const):
201         (WTF::CagedPtr::getMayBeNull const):
202         (WTF::CagedPtr::getUnsafe const):
203         (WTF::CagedPtr::mergePointers):
204
205 2019-06-25  Sam Weinig  <weinig@apple.com>
206
207         Experiment with simple structured bindings use
208         https://bugs.webkit.org/show_bug.cgi?id=198905
209
210         Reviewed by Darin Adler.
211
212         * wtf/URLHelpers.cpp:
213         (WTF::URLHelpers::mapHostNames):
214         Simplify code using c++ structured bindings (https://en.cppreference.com/w/cpp/language/structured_binding)
215         to see if all the platforms will work with it.
216
217 2019-06-25  Adam Barth  <abarth@webkit.org>
218
219         [fuchsia] Update to newer zx_clock_get syscall
220         https://bugs.webkit.org/show_bug.cgi?id=199191
221
222         Reviewed by Sam Weinig.
223
224         Fuchsia has changed the zx_clock_get syscall to return the clock value
225         via an out parameter rather than via its return value. This change
226         makes zx_clock_get consistent with all the other syscalls.
227
228         This patch updates our use of zx_clock_get to use the new syscall. The
229         old syscall is no longer supported by Fuchsia.
230
231         * wtf/fuchsia/CPUTimeFuchsia.cpp:
232         (WTF::CPUTime::get): Switch to using the out parameter.
233         (WTF::CPUTime::forCurrentThread): Switch to using the out parameter.
234
235 2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>
236
237         Fully rename WebKitGTK+ -> WebKitGTK everywhere
238         https://bugs.webkit.org/show_bug.cgi?id=199159
239
240         Reviewed by Carlos Garcia Campos.
241
242         * wtf/URLParser.cpp:
243         (WTF::URLParser::internationalDomainNameTranscoder):
244
245 2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>
246
247         Require GCC 7
248         https://bugs.webkit.org/show_bug.cgi?id=198914
249
250         Reviewed by Darin Adler.
251
252         Remove now-stale GCC version check.
253
254         * wtf/Compiler.h:
255
256 2019-06-23  Simon Fraser  <simon.fraser@apple.com>
257
258         Add OverflowScrollProxyNodes to the scrolling tree
259         https://bugs.webkit.org/show_bug.cgi?id=199132
260
261         Reviewed by Antti Koivisto.
262         
263         Setting indent is useful if you want to make a new stream with the indent of an
264         existing stream.
265
266         * wtf/text/TextStream.h:
267         (WTF::TextStream::setIndent):
268
269 2019-06-20  Fujii Hironori  <Hironori.Fujii@sony.com>
270
271         Try to use C++14 std::enable_if_t in CheckedArithmetic.h again
272         https://bugs.webkit.org/show_bug.cgi?id=199099
273
274         Reviewed by Ross Kirsling.
275
276         r242235 changed CheckedArithmetic to not use C++14. Let's try
277         C++14 again.
278
279         * wtf/CheckedArithmetic.h: Use C++14 std::make_unsigned_t and std::enable_if_t.
280
281 2019-06-18  Darin Adler  <darin@apple.com>
282
283         Tidy up the remaining bits of the AtomicString to AtomString rename
284         https://bugs.webkit.org/show_bug.cgi?id=198990
285
286         Reviewed by Michael Catanzaro.
287
288         * wtf/text/AtomString.cpp: Fix a comment.
289         * wtf/text/AtomString.h: Tweak formatting a bit. Use nullptr instead of 0.
290         Removed "using AtomicString = AtomString".
291         * wtf/text/AtomStringImpl.cpp:
292         (WTF::CStringTranslator::translate): Use setIsAtom instead of setIsAtomic.
293         (WTF::UCharBufferTranslator::translate): Ditto.
294         (WTF::HashAndUTF8CharactersTranslator::translate): Ditto.
295         (WTF::SubstringTranslator::translate): Ditto.
296         (WTF::LCharBufferTranslator::translate): Ditto.
297         (WTF::BufferFromStaticDataTranslator::translate): Ditto.
298         (WTF::AtomStringImpl::addSlowCase): Ditto.
299         (WTF::AtomStringImpl::lookUpSlowCase): Updated assertion message.
300
301         * wtf/text/AtomStringImpl.h: Tweaked the implementation of add.
302         Updated comments to say AtomString.
303
304         * wtf/text/AtomStringTable.cpp:
305         (WTF::AtomStringTable::~AtomStringTable): Use setIsAtom.
306
307         * wtf/text/StringImpl.h: Updated name of StringAtomic and
308         s_hashFlagStringKindIsAtom. Renamed to flagIsAtom and setIsAtom.
309
310         * wtf/text/WTFString.cpp:
311         (WTF::String::isSafeToSendToAnotherThread const): Updated comment.
312
313 2019-06-20  Carlos Garcia Campos  <cgarcia@igalia.com>
314
315         [GTK] Remove support for GTK2 plugins
316         https://bugs.webkit.org/show_bug.cgi?id=199065
317
318         Reviewed by Sergio Villar Senin.
319
320         * wtf/Platform.h:
321         * wtf/glib/GTypedefs.h:
322
323 2019-06-19  Yusuke Suzuki  <ysuzuki@apple.com>
324
325         [bmalloc] IsoHeap's initialization is racy with IsoHeap::isInitialized
326         https://bugs.webkit.org/show_bug.cgi?id=199053
327
328         Reviewed by Saam Barati.
329
330         Add constexpr static functions to generate pseudo random numbers from __LINE__.
331
332         * wtf/WeakRandom.h:
333         (WTF::WeakRandom::nextState):
334         (WTF::WeakRandom::generate):
335         (WTF::WeakRandom::advance):
336
337 2019-06-19  Fujii Hironori  <Hironori.Fujii@sony.com>
338
339         Add WTF::crossThreadCopy(T&&) to utilize String::isolatedCopy() &&
340         https://bugs.webkit.org/show_bug.cgi?id=198957
341
342         Reviewed by Alex Christensen.
343
344         &&-qualified String::isolatedCopy() has a optimization path which
345         does just WTFMove if it isSafeToSendToAnotherThread which means
346         the object hasOneRef.
347
348         However, WTF::crossThreadCopy was using only &-qualified
349         isolatedCopy. To use the optimization, added
350         WTF::crossThreadCopy(T&&) overloading.
351
352         * wtf/CrossThreadCopier.h:
353         (WTF::crossThreadCopy): Added a overload of (T&&).
354         * wtf/CrossThreadTask.h:
355         (WTF::createCrossThreadTask): Removed explicit template arguments of crossThreadCopy.
356
357 2019-06-19  Devin Rousso  <drousso@apple.com>
358
359         Web Inspector: Network: replace CFNetwork SPI with new API where able
360         https://bugs.webkit.org/show_bug.cgi?id=198762
361
362         Reviewed by Timothy Hatcher.
363
364         * wtf/Platform.h:
365
366 2019-06-19  Alex Christensen  <achristensen@webkit.org>
367
368         Add a unit test for client certificate authentication
369         https://bugs.webkit.org/show_bug.cgi?id=197800
370
371         Reviewed by Youenn Fablet.
372
373         * wtf/spi/cocoa/SecuritySPI.h:
374         Move declarations from ArgumentCodersCF.cpp so they can be shared.
375
376 2019-06-19  Adrian Perez de Castro  <aperez@igalia.com>
377
378         [WPE][GTK] Fix build with unified sources disabled
379         https://bugs.webkit.org/show_bug.cgi?id=198752
380
381         Reviewed by Michael Catanzaro.
382
383         * wtf/text/StringBuilder.h: Add missing include of StringConcatenateNumbers.h
384
385 2019-06-19  Zan Dobersek  <zdobersek@igalia.com>
386
387         USE_ANGLE macro can be evaluated without being defined
388         https://bugs.webkit.org/show_bug.cgi?id=198991
389
390         Reviewed by Carlos Garcia Campos.
391
392         * wtf/Platform.h: On platforms not yet defining USE_ANGLE, the
393         incompatibility check with some other flags leads to the macro being
394         evaluated even when it was not defined, producing compiler warnings.
395         To avoid this, the macro should be defined to 0 before the check in
396         case it was not defined already.
397
398 2019-06-18  Dean Jackson  <dino@apple.com>
399
400         UIContextMenuInteraction implementation for WKContentView
401         https://bugs.webkit.org/show_bug.cgi?id=198986
402         <rdar://problem/51875189>
403
404         Reviewed by Andy Estes.
405
406         Add USE_UICONTEXTMENU for iOS 13+.
407
408         * wtf/Platform.h:
409
410 2019-06-18  Kenneth Russell  <kbr@chromium.org>
411
412         Add preliminary ANGLE backend to WebCore
413         https://bugs.webkit.org/show_bug.cgi?id=197755
414
415         Reviewed by Dean Jackson.
416
417         Add a USE_ANGLE definition to wtf/Platform.h (currently disabled)
418         which, when enabled, uses ANGLE instead of the OpenGL or OpenGL ES
419         backend.
420
421         * wtf/Platform.h:
422
423 2019-06-17  Jiewen Tan  <jiewen_tan@apple.com>
424
425         Move SOAuthorization from WebKitAdditions to WebKit
426         https://bugs.webkit.org/show_bug.cgi?id=198874
427         <rdar://problem/47573431>
428
429         Reviewed by Brent Fulgham.
430
431         * wtf/Platform.h:
432         Adds a feature flag to detect AppSSO framework.
433
434 2019-06-17  Ryan Haddad  <ryanhaddad@apple.com>
435
436         Unreviewed, rolling out r246501.
437
438         Breaks Apple internal builds.
439
440         Reverted changeset:
441
442         "Support using ANGLE as the backend for the WebGL
443         implementation"
444         https://bugs.webkit.org/show_bug.cgi?id=197755
445         https://trac.webkit.org/changeset/246501
446
447 2019-06-17  Kenneth Russell  <kbr@chromium.org>
448
449         Support using ANGLE as the backend for the WebGL implementation
450         https://bugs.webkit.org/show_bug.cgi?id=197755
451
452         Reviewed by Dean Jackson.
453
454         Add a USE_ANGLE definition to wtf/Platform.h (currently disabled)
455         which, when enabled, uses ANGLE instead of the OpenGL or OpenGL ES
456         backend.
457
458         * wtf/Platform.h:
459
460 2019-06-16  Darin Adler  <darin@apple.com>
461
462         Rename AtomicString to AtomString
463         https://bugs.webkit.org/show_bug.cgi?id=195276
464
465         Reviewed by Michael Catanzaro.
466
467         * many files: Let do-webcore-rename do the renaming.
468
469         * wtf/text/AtomString.h: After renaming, added AtomicString as a synonym for
470         now; helps smooth things over with a tiny bit of Apple internal software so
471         we don't have to do this all at once. Can remove it soon.
472
473 2019-06-16  Eric Carlson  <eric.carlson@apple.com>
474
475         [MediaStream] Avoid roundoff error when setting AVCapture min/max frame rate
476         https://bugs.webkit.org/show_bug.cgi?id=198875
477         <rdar://problem/51768374>
478
479         Reviewed by Youenn Fablet.
480
481         * wtf/MediaTime.h:
482         (WTF::LogArgument<MediaTime>::toString):
483         (WTF::LogArgument<MediaTimeRange>::toString):
484
485 2019-06-12  Antoine Quint  <graouts@apple.com>
486
487         Show the web page URL when sharing an AR model
488         https://bugs.webkit.org/show_bug.cgi?id=198812
489         <rdar://problem/48689498>
490
491         Reviewed by Dean Jackson.
492
493         * wtf/Platform.h:
494
495 2019-06-12  Youenn Fablet  <youenn@apple.com>
496
497         Use NSURLSession for WebSocket
498         https://bugs.webkit.org/show_bug.cgi?id=198568
499
500         Reviewed by Geoffrey Garen.
501
502         * wtf/Platform.h:
503         Introduce compile flag for WebSocket NSURLSession
504
505 2019-06-12  Commit Queue  <commit-queue@webkit.org>
506
507         Unreviewed, rolling out r246322.
508         https://bugs.webkit.org/show_bug.cgi?id=198796
509
510         "It's a huge page load regression on iOS" (Requested by
511         saamyjoon on #webkit).
512
513         Reverted changeset:
514
515         "Roll out PAC cage"
516         https://bugs.webkit.org/show_bug.cgi?id=198726
517         https://trac.webkit.org/changeset/246322
518
519 2019-06-10  Simon Fraser  <simon.fraser@apple.com>
520
521         Add logging for UI-side compositing hit-testing
522         https://bugs.webkit.org/show_bug.cgi?id=198739
523
524         Reviewed by Antti Koivisto.
525
526         Make it possible to output an Objective-C object to TextStream, which will
527         log its -description.
528
529         Also add a template for OptionSet<> printing.
530
531         * WTF.xcodeproj/project.pbxproj:
532         * wtf/text/TextStream.h:
533         (WTF::operator<<):
534         * wtf/text/cocoa/TextStreamCocoa.mm: Added.
535         (WTF::TextStream::operator<<):
536
537 2019-06-11  Saam Barati  <sbarati@apple.com>
538
539         Roll out PAC cage
540         https://bugs.webkit.org/show_bug.cgi?id=198726
541
542         Reviewed by Keith Miller.
543
544         * WTF.xcodeproj/project.pbxproj:
545         * wtf/CMakeLists.txt:
546         * wtf/CagedPtr.h:
547         (WTF::CagedPtr::CagedPtr):
548         (WTF::CagedPtr::get const):
549         (WTF::CagedPtr::getMayBeNull const):
550         (WTF::CagedPtr::operator=):
551         (WTF::CagedPtr::operator== const):
552         (WTF::CagedPtr::operator!= const):
553         (WTF::CagedPtr::operator bool const):
554         (WTF::CagedPtr::operator* const):
555         (WTF::CagedPtr::operator-> const):
556         (WTF::CagedPtr::operator[] const):
557         (WTF::CagedPtr::getUnsafe const): Deleted.
558         (WTF::CagedPtr::at const): Deleted.
559         (WTF::CagedPtr::recage): Deleted.
560         * wtf/CagedUniquePtr.h:
561         (WTF::CagedUniquePtr::CagedUniquePtr):
562         (WTF::CagedUniquePtr::create):
563         (WTF::CagedUniquePtr::operator=):
564         (WTF::CagedUniquePtr::~CagedUniquePtr):
565         (WTF::CagedUniquePtr::destroy):
566         * wtf/Gigacage.h:
567         (Gigacage::caged):
568         (Gigacage::cagedMayBeNull): Deleted.
569         * wtf/PtrTag.h:
570         (WTF::tagArrayPtr): Deleted.
571         (WTF::untagArrayPtr): Deleted.
572         (WTF::removeArrayPtrTag): Deleted.
573         (WTF::retagArrayPtr): Deleted.
574         * wtf/TaggedArrayStoragePtr.h:
575         (WTF::TaggedArrayStoragePtr::TaggedArrayStoragePtr): Deleted.
576         (WTF::TaggedArrayStoragePtr::get const): Deleted.
577         (WTF::TaggedArrayStoragePtr::getUnsafe const): Deleted.
578         (WTF::TaggedArrayStoragePtr::resize): Deleted.
579         (WTF::TaggedArrayStoragePtr::operator bool const): Deleted.
580
581 2019-06-10  Andy Estes  <aestes@apple.com>
582
583         [iOS] Use PDFKit SPI for taking snapshots when the hosting app is not entitled for global capture
584         https://bugs.webkit.org/show_bug.cgi?id=198731
585         <rdar://problem/46215174>
586
587         Reviewed by Tim Horton.
588
589         * wtf/FeatureDefines.h:
590
591 2019-06-10  Sam Weinig  <weinig@apple.com>
592
593         Remove Dashboard support
594         https://bugs.webkit.org/show_bug.cgi?id=198615
595
596         Reviewed by Ryosuke Niwa.
597
598         * wtf/FeatureDefines.h:
599
600 2019-06-10  Timothy Hatcher  <timothy@apple.com>
601
602         Integrate dark mode support for iOS.
603         https://bugs.webkit.org/show_bug.cgi?id=198687
604         rdar://problem/51545643
605
606         Reviewed by Tim Horton.
607
608         * wtf/Platform.h:
609
610 2019-06-08  Andy Estes  <aestes@apple.com>
611
612         [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests
613         https://bugs.webkit.org/show_bug.cgi?id=198690
614         <rdar://problem/48041803>
615
616         Reviewed by Tim Horton.
617
618         * wtf/FeatureDefines.h: Defined HAVE_PASSKIT_BOUND_INTERFACE_IDENTIFIER, and cleaned up some
619         other PassKit HAVEs.
620
621 2019-06-06  Caio Lima  <ticaiolima@gmail.com>
622
623         [JSCOnly] JSCOnly port is not building on macOS
624         https://bugs.webkit.org/show_bug.cgi?id=198563
625
626         Reviewed by Don Olmstead.
627
628         We are adding `<mach/vm_types.h>` to fix build issues when compiling
629         JSCOnly port on macOS.
630
631         * wtf/WTFAssertions.cpp:
632
633 2019-06-03  Commit Queue  <commit-queue@webkit.org>
634
635         Unreviewed, rolling out r246022.
636         https://bugs.webkit.org/show_bug.cgi?id=198486
637
638         Causing Internal build failures and JSC test failures
639         (Requested by ShawnRoberts on #webkit).
640
641         Reverted changeset:
642
643         "Reenable Gigacage on ARM64."
644         https://bugs.webkit.org/show_bug.cgi?id=198453
645         https://trac.webkit.org/changeset/246022
646
647 2019-06-03  Darin Adler  <darin@apple.com>
648
649         Finish cleanup of String::number for floating point
650         https://bugs.webkit.org/show_bug.cgi?id=198471
651
652         Reviewed by Yusuke Suzuki.
653
654         * wtf/JSONValues.cpp:
655         (WTF::JSONImpl::Value::writeJSON const): Use appendNumber instead of
656         appendECMAScriptNumber, since that's now the default.
657
658         * wtf/text/StringBuilder.cpp:
659         (WTF::StringBuilder::appendNumber): Renamed from appendShortestFormNumber.
660         * wtf/text/StringBuilder.h: Removed appendShortestFormNumber and
661         appendECMAScriptNumber, replacing both with overload of appendNumber.
662
663         * wtf/text/WTFString.cpp:
664         (WTF::String::number): Renamed from numberToStringShortest.
665         * wtf/text/WTFString.h: Removed numberToStringShortest and
666         numberToStringECMAScript, replacing both with overload of number.
667
668 2019-06-02  Keith Miller  <keith_miller@apple.com>
669
670         Reenable Gigacage on ARM64.
671         https://bugs.webkit.org/show_bug.cgi?id=198453
672
673         Reviewed by Filip Pizlo.
674
675         * wtf/CagedPtr.h:
676         (WTF::CagedPtr::authenticatingLoad):
677         (WTF::CagedPtr::get const):
678         (WTF::CagedPtr::getMayBeNull const):
679
680 2019-05-31  Alex Christensen  <achristensen@webkit.org>
681
682         URLParser::parseIPv6Host should properly parse 0's around compression
683         https://bugs.webkit.org/show_bug.cgi?id=198424
684
685         Reviewed by Tim Horton.
686
687         * wtf/URLParser.cpp:
688         (WTF::URLParser::parseIPv6Host):
689
690 2019-05-31  Alex Christensen  <achristensen@webkit.org>
691
692         URLParser::parseHostAndPort should not allow non-port characters after an ipv6 host
693         https://bugs.webkit.org/show_bug.cgi?id=198428
694         <rdar://problem/51209196>
695
696         Reviewed by Tim Horton.
697
698         This matches Chrome and Firefox.
699
700         * wtf/URLParser.cpp:
701         (WTF::URLParser::parseHostAndPort):
702
703 2019-05-31  Tim Horton  <timothy_horton@apple.com>
704
705         Optionally respect device management restrictions when loading from the network
706         https://bugs.webkit.org/show_bug.cgi?id=198318
707         <rdar://problem/44263806>
708
709         Reviewed by Alex Christensen.
710
711         * wtf/Platform.h:
712         Add a HAVE flag for DeviceManagement.framework.
713         It does exist in the simulator, but does not function; pretend it doesn't exist.
714
715 2019-05-31  Geoffrey Garen  <ggaren@apple.com>
716
717         Some WeakPtr cleanup
718         https://bugs.webkit.org/show_bug.cgi?id=198390
719
720         Reviewed by Chris Dumez.
721
722         * wtf/WeakHashSet.h:
723         (WTF::HashTraits<Ref<WeakPtrImpl>>::isReleasedWeakValue):
724         (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator):
725         Updated for rename to WeakPtrImpl.
726
727         (WTF::WeakHashSet::WeakHashSetConstIterator::get const): Updated for new
728         get() interface. Also, switched to iterator operator* to help clarify
729         the double dereference here.
730
731         (WTF::WeakHashSet::add):
732         (WTF::WeakHashSet::remove):
733         (WTF::WeakHashSet::contains const):
734         (WTF::WeakHashSet::computeSize const):
735         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Deleted.
736         Updated for rename to WeakPtrImpl.
737
738         * wtf/WeakPtr.h:
739         (WTF::WeakPtrImpl::create):
740         (WTF::WeakPtrImpl::~WeakPtrImpl): Renamed WeakReference to WeakPtrImpl.
741         Now we don't need a comment explaining that this class is the backing
742         implementation of WeakPtr.
743
744         (WTF::WeakPtrImpl::get): Return the pointer type we stored, rather than
745         the pointer type requested by our client. It's a little too surprising
746         for a field to store one pointer type and load another.
747
748         (WTF::WeakPtrImpl::WeakPtrImpl): Fixed a theoretical type safety bug.
749         Make sure to store T::WeakValueType* instead of T*, since they might
750         not be the same pointer value. (In practice, T and T::WeakValueType*
751         are always the same type in this constructor because WeakPtrFactory
752         makes them so, but it's best not to depend on implementation details
753         across classes.)
754
755         (WTF::WeakPtr::get const): Updated for new get() interface.
756
757         (WTF::WeakPtr::operator bool const):
758         (WTF::WeakPtr::operator=):
759         (WTF::WeakPtr::clear):
760         (WTF::WeakPtr::WeakPtr): Updated for WeakPtrImpl rename.
761
762         (WTF::WeakPtrFactory::~WeakPtrFactory): Updated for WeakPtrImpl rename.
763
764         (WTF::WeakPtrFactory::createWeakPtr const): ASSERT that the passed-in
765         pointer is equal to the stored pointer. As a space optimization, we
766         require our client to remind us what we point to each time a weak
767         pointer is created -- but nothing guarantees that our client will do
768         this correctly.
769
770         (WTF::WeakPtrFactory::revokeAll): Updated for WeakPtrImpl rename.
771
772         (WTF::CanMakeWeakPtr::weakPtrFactory const):
773         (WTF::CanMakeWeakPtr::weakPtrFactory): Use idiomatic accessor naming.
774
775         (WTF::weak_ptr_impl_cast): Fixed a theoretical type safety bug.
776         Previously, if Base and Derived both inherited CanMakeWeakPtr, and
777         you casted WeakPtr<Base> to WeakPtr<Derived> (or vice versa), and
778         casting Base <-> Derived required pointer fixup, the previous
779         compile-time check would accept the cast, even though the stored pointer
780         would be wrong.
781
782         (WTF::WeakPtr<T>::WeakPtr):
783         (WTF::=):
784         (WTF::makeWeakPtr):
785         (WTF::WeakReference::create): Deleted.
786         (WTF::WeakReference::~WeakReference): Deleted.
787         (WTF::WeakReference::get const): Deleted.
788         (WTF::WeakReference::operator bool const): Deleted.
789         (WTF::WeakReference::clear): Deleted.
790         (WTF::WeakReference::WeakReference): Deleted.
791         (WTF::weak_reference_cast): Deleted. Updated for rename to WeakPtrImpl.
792
793         Don't export WeakPtrImpl because it's an implmenetation detail and
794         it shouldn't be easy to use outside WTF.
795
796 2019-05-31  Don Olmstead  <don.olmstead@sony.com>
797
798         [CMake] Add WebKit::WTF target
799         https://bugs.webkit.org/show_bug.cgi?id=198400
800
801         Reviewed by Konstantin Tokarev.
802
803         Create the WebKit::WTF target and use that to propagate headers. Use
804         WEBKIT_COPY_FILES instead of WEBKIT_MAKE_FORWARDING_HEADERS.
805
806         * wtf/CMakeLists.txt:
807
808 2019-05-30  Saam Barati  <sbarati@apple.com>
809
810         [WHLSL] Enforce variable lifetimes
811         https://bugs.webkit.org/show_bug.cgi?id=195794
812         <rdar://problem/50746293>
813
814         Reviewed by Myles C. Maxfield.
815
816         * wtf/PrintStream.h:
817
818 2019-05-30  Keith Rollin  <krollin@apple.com>
819
820         Fix yet more deprecated uses of -[UIApplication interfaceOrientation]
821         https://bugs.webkit.org/show_bug.cgi?id=198381
822         <rdar://problem/51265846>
823
824         Reviewed by Wenson Hsieh.
825
826         r245267, r245272, and r245874 fixed many instances of this issue; this
827         change fixes the issue for tvOS.
828
829         * wtf/FeatureDefines.h:
830
831 2019-05-29  David Kilzer  <ddkilzer@apple.com>
832
833         Clean up a few #include statements in WTF
834         <https://webkit.org/b/198351>
835
836         Reviewed by Alex Christensen.
837
838         * benchmarks/HashSetDFGReplay.cpp:
839         - Add missing "config.h" include.
840         * wtf/ParallelJobsGeneric.cpp:
841         - Replace include of ParallelJobs.h with
842           ParallelJobsGeneric.h.
843         * wtf/StackBounds.cpp:
844         - Fix include ordering of StackBounds.h.
845
846 2019-05-29  Keith Rollin  <krollin@apple.com>
847
848         Followup to r245267 and r245272: fix even more deprecated uses of -[UIApplication interfaceOrientation]
849         https://bugs.webkit.org/show_bug.cgi?id=198348
850         <rdar://problem/51234077>
851
852         Reviewed by Wenson Hsieh.
853
854         r245267 and r245272 fixed many instances of this issue; this change
855         fixes the issue for watchOS.
856
857         * wtf/FeatureDefines.h:
858
859 2019-05-29  David Kilzer  <ddkilzer@apple.com>
860
861         IndexedDatabase Server thread in com.apple.WebKit.Networking process leaks objects into an autoreleasePool that's never cleared
862         <https://webkit.org/b/198346>
863         <rdar://problem/50895658>
864
865         Reviewed by Brent Fulgham.
866
867         * wtf/CrossThreadTaskHandler.cpp:
868         (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
869         - Add optional second argument to enable use of an
870           AutodrainedPool when running the runloop.
871         (WTF::CrossThreadTaskHandler::taskRunLoop):
872         - Create an AutodrainedPool if requested when
873           CrossThreadTaskHandler was created.
874         * wtf/CrossThreadTaskHandler.h:
875         (WTF::CrossThreadTaskHandler::AutodrainedPoolForRunLoop):
876         - Add enum class for enabling an AutodrainedPool for
877           CrossThreadTaskHandler::taskRunLoop().
878         (WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):
879         - Add optional second argument to enable use of an
880           AutodrainedPool when running the runloop.
881
882 2019-05-29  Geoffrey Garen  <ggaren@apple.com>
883
884         WeakPtr breaks vtables when upcasting to base classes
885         https://bugs.webkit.org/show_bug.cgi?id=188799
886
887         Reviewed by Youenn Fablet.
888
889         This patch switches from reinterpret_cast to static_cast when loading
890         from WeakReference storage.
891
892         We know which type to cast *to* because it's specified by the type of
893         the calling WeakPtr.
894
895         We know which type to cast *from* because it's specified by a typedef
896         in CanMakeWeakPtr.
897
898         (Our convention is that we store a pointer to the class that derives
899         from CanMakeWeakPtr. We cast from that pointer to derived pointers when
900         we get(). This means that #include of the derived type header is now
901         required in order to get() the pointer.)
902
903         * wtf/WeakHashSet.h:
904         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Definition
905         is now eagerly required because WeakReference is not a template anymore.
906
907         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
908         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
909         (WTF::WeakHashSet::remove):
910         (WTF::WeakHashSet::contains const):
911         (WTF::WeakHashSet::computesEmpty const):
912         (WTF::WeakHashSet::hasNullReferences const):
913         (WTF::WeakHashSet::computeSize const):
914         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue): Deleted.
915         Updated for new WeakReference get() API.
916
917         * wtf/WeakPtr.h: Use a macro for TestAPI support. We can't use template
918         specialization because WeakReference is not a class template anymore.
919         (Or maybe we could have kept it working with a dummy template argument?
920         Felt weird, so I switched.)
921
922         (WTF::WeakReference::create):
923         (WTF::WeakReference::~WeakReference):
924         (WTF::WeakReference::get const):
925         (WTF::WeakReference::operator bool const):
926         (WTF::WeakReference::WeakReference): WeakReference is just a void* now.
927         It's the caller's responsibility, when creating and getting, to use
928         a consistent storage type. We ensure a canonical storage type using a
929         typedef inside CanMakeWeakPtr.
930
931         (WTF::WeakPtr::WeakPtr):
932         (WTF::WeakPtr::get const):
933         (WTF::WeakPtr::operator bool const):
934         (WTF::WeakPtr::operator-> const):
935         (WTF::WeakPtr::operator* const): Adopted new WeakReference API.
936
937         (WTF::WeakPtrFactory::createWeakPtr const): No need for reinterpret_cast.
938
939         (WTF::weak_reference_cast): This isn't required for correctness, but it's
940         nice to show a complier error at WeakPtr construction sites when you know
941         that the types won't work. Otherwise, you get compiler errors at
942         dereference sites, which are slightly more mysterious ways of saying that
943         you constructed your WeakPtr incorrectly.
944
945         (WTF::WeakPtr<T>::WeakPtr):
946         (WTF::=):
947         (WTF::makeWeakPtr):
948         (WTF::weak_reference_upcast): Deleted.
949         (WTF::weak_reference_downcast): Deleted.
950
951 2019-05-29  Ryan Haddad  <ryanhaddad@apple.com>
952
953         Unreviewed, rolling out r245857.
954
955         Breaks internal builds.
956
957         Reverted changeset:
958
959         "WeakPtr breaks vtables when upcasting to base classes"
960         https://bugs.webkit.org/show_bug.cgi?id=188799
961         https://trac.webkit.org/changeset/245857
962
963 2019-05-28  Geoffrey Garen  <ggaren@apple.com>
964
965         WeakPtr breaks vtables when upcasting to base classes
966         https://bugs.webkit.org/show_bug.cgi?id=188799
967
968         Reviewed by Youenn Fablet.
969
970         This patch switches from reinterpret_cast to static_cast when loading
971         from WeakReference storage.
972
973         We know which type to cast *to* because it's specified by the type of
974         the calling WeakPtr.
975
976         We know which type to cast *from* because it's specified by a typedef
977         in CanMakeWeakPtr.
978
979         (Our convention is that we store a pointer to the class that derives
980         from CanMakeWeakPtr. We cast from that pointer to derived pointers when
981         we get(). This means that #include of the derived type header is now
982         required in order to get() the pointer.)
983
984         * wtf/WeakHashSet.h:
985         (WTF::HashTraits<Ref<WeakReference>>::isReleasedWeakValue): Definition
986         is now eagerly required because WeakReference is not a template anymore.
987
988         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
989         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
990         (WTF::WeakHashSet::remove):
991         (WTF::WeakHashSet::contains const):
992         (WTF::WeakHashSet::computesEmpty const):
993         (WTF::WeakHashSet::hasNullReferences const):
994         (WTF::WeakHashSet::computeSize const):
995         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue): Deleted.
996         Updated for new WeakReference get() API.
997
998         * wtf/WeakPtr.h: Use a macro for TestAPI support. We can't use template
999         specialization because WeakReference is not a class template anymore.
1000         (Or maybe we could have kept it working with a dummy template argument?
1001         Felt weird, so I switched.)
1002
1003         (WTF::WeakReference::create):
1004         (WTF::WeakReference::~WeakReference):
1005         (WTF::WeakReference::get const):
1006         (WTF::WeakReference::operator bool const):
1007         (WTF::WeakReference::WeakReference): WeakReference is just a void* now.
1008         It's the caller's responsibility, when creating and getting, to use
1009         a consistent storage type. We ensure a canonical storage type using a
1010         typedef inside CanMakeWeakPtr.
1011
1012         (WTF::WeakPtr::WeakPtr):
1013         (WTF::WeakPtr::get const):
1014         (WTF::WeakPtr::operator bool const):
1015         (WTF::WeakPtr::operator-> const):
1016         (WTF::WeakPtr::operator* const): Adopted new WeakReference API.
1017
1018         (WTF::WeakPtrFactory::createWeakPtr const): No need for reinterpret_cast.
1019
1020         (WTF::weak_reference_cast): This isn't required for correctness, but it's
1021         nice to show a complier error at WeakPtr construction sites when you know
1022         that the types won't work. Otherwise, you get compiler errors at
1023         dereference sites, which are slightly more mysterious ways of saying that
1024         you constructed your WeakPtr incorrectly.
1025
1026         (WTF::WeakPtr<T>::WeakPtr):
1027         (WTF::=):
1028         (WTF::makeWeakPtr):
1029         (WTF::weak_reference_upcast): Deleted.
1030         (WTF::weak_reference_downcast): Deleted.
1031
1032 2019-05-27  Chris Dumez  <cdumez@apple.com>
1033
1034         Use a strongly-typed identifier for pages
1035         https://bugs.webkit.org/show_bug.cgi?id=198206
1036
1037         Reviewed by Youenn Fablet.
1038
1039         * wtf/ObjectIdentifier.h:
1040         (WTF::operator<<):
1041
1042 2019-05-23  Don Olmstead  <don.olmstead@sony.com>
1043
1044         [CMake] Use target oriented design for bmalloc
1045         https://bugs.webkit.org/show_bug.cgi?id=198046
1046
1047         Reviewed by Konstantin Tokarev.
1048
1049         Use WebKit::bmalloc target.
1050
1051         * wtf/CMakeLists.txt:
1052
1053 2019-05-23  Ross Kirsling  <ross.kirsling@sony.com>
1054
1055         [PlayStation] Implement platformUserPreferredLanguages.
1056         https://bugs.webkit.org/show_bug.cgi?id=198149
1057
1058         Reviewed by Fujii Hironori.
1059
1060         * wtf/PlatformPlayStation.cmake:
1061         * wtf/playstation/LanguagePlayStation.cpp: Added.
1062         (WTF::platformUserPreferredLanguages):
1063
1064 2019-05-22  Myles C. Maxfield  <mmaxfield@apple.com>
1065
1066         font-optical-sizing applies the wrong variation value
1067         https://bugs.webkit.org/show_bug.cgi?id=197528
1068         <rdar://problem/50152854>
1069
1070         Reviewed by Antti Koivisto.
1071
1072         * wtf/Platform.h:
1073
1074 2019-05-22  Ryan Haddad  <ryanhaddad@apple.com>
1075
1076         Unreviewed, rolling out r245598.
1077
1078         Breaks watchOS build.
1079
1080         Reverted changeset:
1081
1082         "font-optical-sizing applies the wrong variation value"
1083         https://bugs.webkit.org/show_bug.cgi?id=197528
1084         https://trac.webkit.org/changeset/245598
1085
1086 2019-05-21  Ross Kirsling  <ross.kirsling@sony.com>
1087
1088         [PlayStation] Don't call fcntl.
1089         https://bugs.webkit.org/show_bug.cgi?id=197961
1090
1091         Reviewed by Fujii Hironori.
1092
1093         * wtf/PlatformGTK.cmake:
1094         * wtf/PlatformJSCOnly.cmake:
1095         * wtf/PlatformPlayStation.cmake:
1096         * wtf/PlatformWPE.cmake:
1097         * wtf/UniStdExtras.h:
1098         * wtf/playstation/UniStdExtrasPlayStation.cpp: Added.
1099         (WTF::setCloseOnExec):
1100         (WTF::dupCloseOnExec):
1101         (WTF::setNonBlock):
1102         * wtf/unix/UniStdExtrasUnix.cpp: Renamed from Source/WTF/wtf/UniStdExtras.cpp.
1103         (WTF::setNonBlock):
1104         Move UniStdExtras to unix/, add a PlayStation version that doesn't use fcntl, add an abstraction for O_NONBLOCK.
1105
1106 2019-05-20  Tadeu Zagallo  <tzagallo@apple.com>
1107
1108         Only cache bytecode for API clients in data vaults
1109         https://bugs.webkit.org/show_bug.cgi?id=197898
1110
1111         Reviewed by Keith Miller.
1112
1113         Add SPI to check if a filesystem path is restricted as a data vault.
1114
1115         * WTF.xcodeproj/project.pbxproj:
1116         * wtf/spi/darwin/DataVaultSPI.h: Added.
1117
1118 2019-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>
1119
1120         [GLIB] Repeating timer is not stopped when stop is called from the callback
1121         https://bugs.webkit.org/show_bug.cgi?id=197986
1122
1123         Reviewed by Michael Catanzaro.
1124
1125         In case of repeating timers we always update the ready time to fire interval after the user callback is called.
1126
1127         * wtf/glib/RunLoopGLib.cpp:
1128         (WTF::RunLoop::TimerBase::stop): Reset m_fireInterval and m_isRepeating.
1129
1130 2019-05-19  Darin Adler  <darin@apple.com>
1131
1132         Change String::number to use "shortest" instead of "fixed precision 6 digits"
1133         https://bugs.webkit.org/show_bug.cgi?id=178319
1134
1135         Reviewed by Sam Weinig.
1136
1137         * wtf/text/StringBuilder.h: Delete appendNumber for floating point and
1138         appendECMAScriptNumber for single-precision.
1139
1140         * wtf/text/WTFString.h: Delete String::number for floating point and
1141         numberToStringECMAScript for single-precision.
1142
1143 2019-05-18  Tadeu Zagallo  <tzagallo@apple.com>
1144
1145         Add extra information to dumpJITMemory
1146         https://bugs.webkit.org/show_bug.cgi?id=197998
1147
1148         Reviewed by Saam Barati.
1149
1150         Add a new trace point code for JSC::dumpJITMemory
1151
1152         * wtf/SystemTracing.h:
1153
1154 2019-05-17  Don Olmstead  <don.olmstead@sony.com>
1155
1156         [CMake] Use builtin FindICU
1157         https://bugs.webkit.org/show_bug.cgi?id=197934
1158
1159         Reviewed by Michael Catanzaro.
1160
1161         Remove uses of ICU_INCLUDE_DIRS and ICU_LIBRARIES. Use ICU:: targets which end
1162         up propagating to all consumers of WTF.
1163
1164         * wtf/CMakeLists.txt:
1165         * wtf/PlatformPlayStation.cmake:
1166
1167 2019-05-17  Commit Queue  <commit-queue@webkit.org>
1168
1169         Unreviewed, rolling out r245418.
1170         https://bugs.webkit.org/show_bug.cgi?id=197989
1171
1172         New API test causing crashes on Mojave testers (Requested by
1173         ShawnRoberts on #webkit).
1174
1175         Reverted changeset:
1176
1177         "Add a unit test for client certificate authentication"
1178         https://bugs.webkit.org/show_bug.cgi?id=197800
1179         https://trac.webkit.org/changeset/245418
1180
1181 2019-05-16  Keith Miller  <keith_miller@apple.com>
1182
1183         Wasm should cage the memory base pointers in structs
1184         https://bugs.webkit.org/show_bug.cgi?id=197620
1185
1186         Reviewed by Saam Barati.
1187
1188         Rename reauthenticate to recage.
1189
1190         * wtf/CagedPtr.h:
1191         (WTF::CagedPtr::recage):
1192         (WTF::CagedPtr::reauthenticate): Deleted.
1193
1194 2019-05-16  Alex Christensen  <achristensen@webkit.org>
1195
1196         Add a unit test for client certificate authentication
1197         https://bugs.webkit.org/show_bug.cgi?id=197800
1198
1199         Reviewed by Youenn Fablet.
1200
1201         * wtf/spi/cocoa/SecuritySPI.h:
1202         Move declarations from ArgumentCodersCF.cpp so they can be shared.
1203
1204 2019-05-16  Eike Rathke  <erack@redhat.com>
1205
1206         Fix memcpy() call for big endian
1207         https://bugs.webkit.org/show_bug.cgi?id=197945
1208
1209         Reviewed by Michael Catanzaro.
1210
1211         * wtf/Packed.h:
1212         (WTF::alignof):
1213
1214 2019-05-15  Ross Kirsling  <ross.kirsling@sony.com>
1215
1216         [PlayStation] WTFCrash should preserve register state.
1217         https://bugs.webkit.org/show_bug.cgi?id=197932
1218
1219         Reviewed by Don Olmstead.
1220
1221         * wtf/Assertions.cpp:
1222         * wtf/Assertions.h:
1223         Let r196397 apply to PlayStation port as well.
1224
1225 2019-05-15  Simon Fraser  <simon.fraser@apple.com>
1226
1227         Make LOG_WITH_STREAM more efficient
1228         https://bugs.webkit.org/show_bug.cgi?id=197905
1229
1230         Reviewed by Alex Christensen.
1231
1232         Add a streamable repeat() class that can be used to output a series of characters.
1233         This is useful for indenting output.
1234
1235         * wtf/text/TextStream.h:
1236         (WTF::TextStream::repeat::repeat):
1237         (WTF::TextStream::operator<<):
1238
1239 2019-05-15  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>
1240
1241         compilation failure with clang 9
1242         https://bugs.webkit.org/show_bug.cgi?id=197911
1243
1244         Reviewed by Alex Christensen.
1245
1246         Use std namespace for nullptr_t in tagArrayPtr templates.
1247
1248         * wtf/PtrTag.h:
1249         (WTF::tagArrayPtr):
1250
1251 2019-05-14  Commit Queue  <commit-queue@webkit.org>
1252
1253         Unreviewed, rolling out r245281.
1254         https://bugs.webkit.org/show_bug.cgi?id=197887
1255
1256         Broke API Test TestWebKitAPI.Challenge.ClientCertificate
1257         (Requested by aakashjain on #webkit).
1258
1259         Reverted changeset:
1260
1261         "Add a unit test for client certificate authentication"
1262         https://bugs.webkit.org/show_bug.cgi?id=197800
1263         https://trac.webkit.org/changeset/245281
1264
1265 2019-05-14  Alex Christensen  <achristensen@webkit.org>
1266
1267         Add a unit test for client certificate authentication
1268         https://bugs.webkit.org/show_bug.cgi?id=197800
1269
1270         Reviewed by Youenn Fablet.
1271
1272         * wtf/spi/cocoa/SecuritySPI.h:
1273         Move declarations from ArgumentCodersCF.cpp so they can be shared.
1274
1275 2019-05-13  Robin Morisset  <rmorisset@apple.com>
1276
1277         IndexSet::isEmpty should use BitVector::isEmpty() instead of size()
1278         https://bugs.webkit.org/show_bug.cgi?id=197857
1279
1280         Reviewed by Darin Adler.
1281
1282         * wtf/IndexSet.h:
1283         (WTF::IndexSet::isEmpty const):
1284
1285 2019-05-13  Youenn Fablet  <youenn@apple.com>
1286
1287         [Mac] Use realpath for dlopen_preflight
1288         https://bugs.webkit.org/show_bug.cgi?id=197803
1289
1290         Reviewed by Eric Carlson.
1291
1292         * wtf/cocoa/SoftLinking.h:
1293
1294 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1295
1296         Unreviewed, wrokaround for MACH_VM_MAX_ADDRESS in ARM32_64
1297         https://bugs.webkit.org/show_bug.cgi?id=197730
1298
1299         Interestingly, MACH_VM_MAX_ADDRESS is larger than 32bit in ARM32_64, I think this is a bug.
1300         But for now, we workaround for this case by using `CPU(ADDRESS64)`.
1301
1302         * wtf/WTFAssertions.cpp:
1303
1304 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1305
1306         [WTF] Remove Threading workaround for support libraries in Windows
1307         https://bugs.webkit.org/show_bug.cgi?id=197350
1308
1309         Reviewed by Darin Adler.
1310
1311         We kept old APIs for some support libraries at 2017. This patch removes them.
1312
1313         * wtf/Threading.h:
1314         * wtf/win/ThreadingWin.cpp:
1315         (WTF::createThread): Deleted.
1316         (WTF::waitForThreadCompletion): Deleted.
1317
1318 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1319
1320         [WTF] Simplify GCThread and CompilationThread flags by adding them to WTF::Thread
1321         https://bugs.webkit.org/show_bug.cgi?id=197146
1322
1323         Reviewed by Saam Barati.
1324
1325         Since GCThread and CompilationThread flags exist in WTF, we put these flags into WTF::Thread directly instead of holding them in ThreadSpecific<>.
1326         And this patch removes dependency from Threading.h to ThreadSpecific.h. ThreadSpecific.h's OS threading primitives are moved to ThreadingPrimitives.h,
1327         and Threading.h relies on it instead.
1328
1329         * wtf/CompilationThread.cpp:
1330         (WTF::isCompilationThread):
1331         (WTF::initializeCompilationThreads): Deleted.
1332         (WTF::exchangeIsCompilationThread): Deleted.
1333         * wtf/CompilationThread.h:
1334         (WTF::CompilationScope::CompilationScope):
1335         (WTF::CompilationScope::~CompilationScope):
1336         (WTF::CompilationScope::leaveEarly):
1337         * wtf/MainThread.cpp:
1338         (WTF::initializeMainThread):
1339         (WTF::initializeMainThreadToProcessMainThread):
1340         (WTF::isMainThreadOrGCThread):
1341         (WTF::initializeGCThreads): Deleted.
1342         (WTF::registerGCThread): Deleted.
1343         (WTF::mayBeGCThread): Deleted.
1344         * wtf/MainThread.h:
1345         * wtf/ThreadSpecific.h:
1346         (WTF::canBeGCThread>::ThreadSpecific):
1347         (WTF::canBeGCThread>::set):
1348         (WTF::threadSpecificKeyCreate): Deleted.
1349         (WTF::threadSpecificKeyDelete): Deleted.
1350         (WTF::threadSpecificSet): Deleted.
1351         (WTF::threadSpecificGet): Deleted.
1352         * wtf/Threading.cpp:
1353         (WTF::Thread::exchangeIsCompilationThread):
1354         (WTF::Thread::registerGCThread):
1355         (WTF::Thread::mayBeGCThread):
1356         * wtf/Threading.h:
1357         (WTF::Thread::isCompilationThread const):
1358         (WTF::Thread::gcThreadType const):
1359         (WTF::Thread::joinableState const):
1360         (WTF::Thread::hasExited const):
1361         (WTF::Thread::Thread):
1362         (WTF::Thread::joinableState): Deleted.
1363         (WTF::Thread::hasExited): Deleted.
1364         * wtf/ThreadingPrimitives.h:
1365         (WTF::threadSpecificKeyCreate):
1366         (WTF::threadSpecificKeyDelete):
1367         (WTF::threadSpecificSet):
1368         (WTF::threadSpecificGet):
1369         * wtf/win/ThreadSpecificWin.cpp:
1370         (WTF::flsKeys):
1371
1372 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1373
1374         Unreviewed, follow-up after r245214
1375         https://bugs.webkit.org/show_bug.cgi?id=197730
1376
1377         Suggested by Sam. We should have static_assert with MACH_VM_MAX_ADDRESS.
1378
1379         * wtf/WTFAssertions.cpp:
1380
1381 2019-05-13  Youenn Fablet  <youenn@apple.com>
1382
1383         Use kDNSServiceFlagsKnownUnique for DNSServiceRegisterRecord only on platforms supporting it
1384         https://bugs.webkit.org/show_bug.cgi?id=197802
1385
1386         Reviewed by Eric Carlson.
1387
1388         * wtf/Platform.h:
1389
1390 2019-05-13  Yusuke Suzuki  <ysuzuki@apple.com>
1391
1392         [JSC] Compress miscelaneous JIT related data structures with Packed<>
1393         https://bugs.webkit.org/show_bug.cgi?id=197830
1394
1395         Reviewed by Saam Barati.
1396
1397         * wtf/Packed.h:
1398         (WTF::alignof):
1399
1400 2019-05-13  Michael Catanzaro  <mcatanzaro@igalia.com>
1401
1402         Unreviewed, fix unused variable warnings in release builds
1403
1404         * wtf/URLHelpers.cpp:
1405         (WTF::URLHelpers::escapeUnsafeCharacters):
1406
1407 2019-05-12  Yusuke Suzuki  <ysuzuki@apple.com>
1408
1409         [JSC] Compress Watchpoint size by using enum type and Packed<> data structure
1410         https://bugs.webkit.org/show_bug.cgi?id=197730
1411
1412         Reviewed by Filip Pizlo.
1413
1414         This patch introduces a new data structures, WTF::Packed, WTF::PackedPtr, and WTF::PackedAlignedPtr.
1415
1416         - WTF::Packed
1417
1418             WTF::Packed is data storage. We can read and write trivial (in C++ term [1]) data to this storage. The difference to
1419             the usual storage is that the alignment of this storage is always 1. We access the underlying data by using unalignedLoad/unalignedStore.
1420             This class offers alignment = 1 data structure instead of missing the following characteristics.
1421
1422                 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
1423                    in a racy way. (e.g. fields accessed optimistically from the concurrent compilers).
1424
1425                 2. We cannot take reference / pointer to the underlying storage since they are unaligned.
1426
1427                 3. Access to this storage is unaligned access. The code is using memcpy, and the compiler will convert to an appropriate unaligned access
1428                    in certain architectures (x86_64 / ARM64). It could be slow. So use it for non performance sensitive & memory sensitive places.
1429
1430         - WTF::PackedPtr
1431
1432             WTF::PackedPtr is a specialization of WTF::Packed<T*>. And it is basically WTF::PackedAlignedPtr with alignment = 1. We further compact
1433             the pointer by leveraging the platform specific knowledge. In 64bit architectures, the effective width of pointers are less than 64 bit.
1434             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
1435             x86_64 and 5 bytes in Darwin ARM64.
1436
1437         - WTF::PackedAlignedPtr
1438
1439             WTF::PackedAlignedPtr is the WTF::PackedPtr with alignment information of the T. If we use this alignment information, we could reduce the
1440             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
1441             this information in Darwin ARM64 platform allows us to make packed JSCell pointer 4 bytes (36 - 4 bits). We do not use passed alignment
1442             information if it is not profitable.
1443
1444         We also have PackedPtrTraits. This is new PtrTraits and use it for various data structures such as Bag<>.
1445
1446         [1]: https://en.cppreference.com/w/cpp/types/is_trivial
1447
1448         * WTF.xcodeproj/project.pbxproj:
1449         * wtf/Bag.h:
1450         (WTF::Bag::clear):
1451         (WTF::Bag::iterator::operator++):
1452         * wtf/CMakeLists.txt:
1453         * wtf/DumbPtrTraits.h:
1454         * wtf/DumbValueTraits.h:
1455         * wtf/MathExtras.h:
1456         (WTF::clzConstexpr):
1457         (WTF::clz):
1458         (WTF::ctzConstexpr):
1459         (WTF::ctz):
1460         (WTF::getLSBSetConstexpr):
1461         (WTF::getMSBSetConstexpr):
1462         * wtf/Packed.h: Added.
1463         (WTF::Packed::Packed):
1464         (WTF::Packed::get const):
1465         (WTF::Packed::set):
1466         (WTF::Packed::operator=):
1467         (WTF::Packed::exchange):
1468         (WTF::Packed::swap):
1469         (WTF::alignof):
1470         (WTF::PackedPtrTraits::exchange):
1471         (WTF::PackedPtrTraits::swap):
1472         (WTF::PackedPtrTraits::unwrap):
1473         * wtf/Platform.h:
1474         * wtf/SentinelLinkedList.h:
1475         (WTF::BasicRawSentinelNode::BasicRawSentinelNode):
1476         (WTF::BasicRawSentinelNode::prev):
1477         (WTF::BasicRawSentinelNode::next):
1478         (WTF::PtrTraits>::remove):
1479         (WTF::PtrTraits>::prepend):
1480         (WTF::PtrTraits>::append):
1481         (WTF::RawNode>::SentinelLinkedList):
1482         (WTF::RawNode>::remove):
1483         (WTF::BasicRawSentinelNode<T>::remove): Deleted.
1484         (WTF::BasicRawSentinelNode<T>::prepend): Deleted.
1485         (WTF::BasicRawSentinelNode<T>::append): Deleted.
1486         * wtf/StdLibExtras.h:
1487         (WTF::roundUpToMultipleOfImpl):
1488         (WTF::roundUpToMultipleOfImpl0): Deleted.
1489         * wtf/UnalignedAccess.h:
1490         (WTF::unalignedLoad):
1491         (WTF::unalignedStore):
1492
1493 2019-05-10  Saam barati  <sbarati@apple.com>
1494
1495         Bag's move operator= leaks memory
1496         https://bugs.webkit.org/show_bug.cgi?id=197757
1497
1498         Reviewed by Keith Miller.
1499
1500         It was unused. So I'm just removing it. We can implement it properly
1501         if we ever need it.
1502
1503         * wtf/Bag.h:
1504         (WTF::Bag::operator=): Deleted.
1505
1506 2019-05-10  Fujii Hironori  <Hironori.Fujii@sony.com>
1507
1508         [WinCairo] storage/indexeddb tests are timing out
1509         https://bugs.webkit.org/show_bug.cgi?id=196289
1510
1511         Reviewed by Alex Christensen.
1512
1513         * wtf/FileSystem.h: Added hardLink.
1514         * wtf/glib/FileSystemGlib.cpp:
1515         (WTF::FileSystemImpl::hardLink):
1516         (WTF::FileSystemImpl::hardLinkOrCopyFile):
1517         * wtf/posix/FileSystemPOSIX.cpp:
1518         (WTF::FileSystemImpl::hardLink):
1519         (WTF::FileSystemImpl::hardLinkOrCopyFile):
1520         * wtf/win/FileSystemWin.cpp:
1521         (WTF::FileSystemImpl::hardLink):
1522         (WTF::FileSystemImpl::hardLinkOrCopyFile):
1523         Added hardLink. Let hardLinkOrCopyFile use the hardLink.
1524
1525 2019-05-10  Yusuke Suzuki  <ysuzuki@apple.com>
1526
1527         [WTF] Remove "private:" from Noncopyable and Nonmovable macros
1528         https://bugs.webkit.org/show_bug.cgi?id=197767
1529
1530         Reviewed by Saam Barati.
1531
1532         We no longer need "private:".
1533
1534         * wtf/Noncopyable.h:
1535         * wtf/Nonmovable.h:
1536
1537 2019-05-08  Zan Dobersek  <zdobersek@igalia.com>
1538
1539         [GLib] Rework WPE RunLoopSourcePriority values
1540         https://bugs.webkit.org/show_bug.cgi?id=197167
1541
1542         Reviewed by Carlos Garcia Campos.
1543
1544         The GLib priorities for the WPE port were initially aligned on the -70
1545         value, theory being that this would help avoid any default-priority
1546         GSources spawned in different dependency libraries affecting our
1547         scheduling. Today it seems that extra caution might not be really
1548         necessary.
1549
1550         This change aligns the base priority value with GLib's default priority
1551         value of 0. We maintain the relativity of priority values by effectively
1552         increasing each priority by 70.
1553
1554         * wtf/glib/RunLoopSourcePriority.h:
1555
1556 2019-05-08  Alex Christensen  <achristensen@webkit.org>
1557
1558         Add SPI to set HSTS storage directory
1559         https://bugs.webkit.org/show_bug.cgi?id=197259
1560
1561         Reviewed by Brady Eidson.
1562
1563         * wtf/Platform.h:
1564
1565 2019-05-08  Keith Miller  <keith_miller@apple.com>
1566
1567         Remove Gigacage from arm64 and use PAC for arm64e instead
1568         https://bugs.webkit.org/show_bug.cgi?id=197110
1569
1570         Reviewed by Saam Barati.
1571
1572         This patch changes the Gigacage to use PAC on arm64e. As part of
1573         this process all platforms must provide their length when
1574         materializing the caged pointer. Since it would be somewhat
1575         confusing to have two parameters for an operator [] those methods
1576         have been removed. Lastly, this patch removes the specializations
1577         for void* caged pointers, instead opting to use enable_if on the
1578         methods that would normally fail on void* e.g. anything that
1579         returns a T&.
1580
1581         * WTF.xcodeproj/project.pbxproj:
1582         * wtf/CMakeLists.txt:
1583         * wtf/CagedPtr.h:
1584         (WTF::CagedPtr::CagedPtr):
1585         (WTF::CagedPtr::get const):
1586         (WTF::CagedPtr::getMayBeNull const):
1587         (WTF::CagedPtr::getUnsafe const):
1588         (WTF::CagedPtr::at const):
1589         (WTF::CagedPtr::reauthenticate):
1590         (WTF::CagedPtr::operator=):
1591         (WTF::CagedPtr::operator== const):
1592         (WTF::CagedPtr::operator bool const):
1593         (WTF::CagedPtr::operator* const): Deleted.
1594         (WTF::CagedPtr::operator-> const): Deleted.
1595         (WTF::CagedPtr::operator[] const): Deleted.
1596         (): Deleted.
1597         * wtf/CagedUniquePtr.h:
1598         (WTF::CagedUniquePtr::CagedUniquePtr):
1599         (WTF::CagedUniquePtr::create):
1600         (WTF::CagedUniquePtr::~CagedUniquePtr):
1601         (WTF::CagedUniquePtr::destroy):
1602         (): Deleted.
1603         * wtf/Gigacage.h:
1604         (Gigacage::cagedMayBeNull):
1605         * wtf/PtrTag.h:
1606         (WTF::tagArrayPtr):
1607         (WTF::untagArrayPtr):
1608         (WTF::removeArrayPtrTag):
1609         (WTF::retagArrayPtr):
1610         * wtf/TaggedArrayStoragePtr.h: Copied from Source/JavaScriptCore/runtime/ArrayBufferView.cpp.
1611         (WTF::TaggedArrayStoragePtr::TaggedArrayStoragePtr):
1612         (WTF::TaggedArrayStoragePtr::get const):
1613         (WTF::TaggedArrayStoragePtr::getUnsafe const):
1614         (WTF::TaggedArrayStoragePtr::resize):
1615         (WTF::TaggedArrayStoragePtr::operator bool const):
1616
1617 2019-05-08  Robin Morisset  <rmorisset@apple.com>
1618
1619         WTF::TimingScope should show the total duration and not just the mean
1620         https://bugs.webkit.org/show_bug.cgi?id=197672
1621
1622         Reviewed by Alex Christensen.
1623
1624         * wtf/TimingScope.cpp:
1625         (WTF::TimingScope::scopeDidEnd):
1626
1627 2019-05-07  Yusuke Suzuki  <ysuzuki@apple.com>
1628
1629         [JSC] LLIntPrototypeLoadAdaptiveStructureWatchpoint does not require Bag<>
1630         https://bugs.webkit.org/show_bug.cgi?id=197645
1631
1632         Reviewed by Saam Barati.
1633
1634         * WTF.xcodeproj/project.pbxproj:
1635         * wtf/CMakeLists.txt:
1636         * wtf/Nonmovable.h: Copied from Source/JavaScriptCore/bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.h.
1637         * wtf/Vector.h:
1638         (WTF::minCapacity>::uncheckedConstructAndAppend):
1639
1640 2019-05-07  Eric Carlson  <eric.carlson@apple.com>
1641
1642         Define media buffering policy
1643         https://bugs.webkit.org/show_bug.cgi?id=196979
1644         <rdar://problem/28383861>
1645
1646         Reviewed by Jer Noble.
1647
1648         * wtf/Platform.h:
1649
1650 2019-05-07  Robin Morisset  <rmorisset@apple.com>
1651
1652         WTF::BitVector should have an isEmpty() method
1653         https://bugs.webkit.org/show_bug.cgi?id=197637
1654
1655         Reviewed by Keith Miller.
1656
1657         * wtf/BitVector.cpp:
1658         (WTF::BitVector::isEmptySlow const):
1659         * wtf/BitVector.h:
1660         (WTF::BitVector::isEmpty const):
1661
1662 2019-05-07  Brent Fulgham  <bfulgham@apple.com>
1663
1664         Correct JSON parser to address unterminated escape character
1665         https://bugs.webkit.org/show_bug.cgi?id=197582
1666         <rdar://problem/50459177>
1667
1668         Reviewed by Alex Christensen.
1669
1670         Correct JSON parser code to properly deal with unterminated escape
1671         characters.
1672
1673         * wtf/JSONValues.cpp:
1674         (WTF::JSONImpl::decodeString):
1675         (WTF::JSONImpl::parseStringToken):
1676
1677 2019-05-07  Alex Christensen  <achristensen@webkit.org>
1678
1679         Add a release assertion that Functions can only be constructed from non-null CompletionHandlers
1680         https://bugs.webkit.org/show_bug.cgi?id=197641
1681
1682         Reviewed by Chris Dumez.
1683
1684         This will help us find the cause of rdar://problem/48679972 by seeing the crash when the Function is dispatched,
1685         not when it's called with no interesting stack trace.  I manually verified this assertion is hit in such a case.
1686         We should also have no legitimate use of creating a Function out of a null CompletionHandler then never calling it.
1687
1688         * wtf/CompletionHandler.h:
1689         (WTF::Detail::CallableWrapper<CompletionHandler<Out):
1690         * wtf/Function.h:
1691         (WTF::Detail::CallableWrapperBase::~CallableWrapperBase):
1692         (WTF::Detail::CallableWrapper::CallableWrapper):
1693         (WTF::Function<Out):
1694
1695 2019-05-06  Christopher Reid  <chris.reid@sony.com>
1696
1697         [JSC] Respect already defined USE_LLINT_EMBEDDED_OPCODE_ID compiler variable.
1698         https://bugs.webkit.org/show_bug.cgi?id=197633
1699
1700         Reviewed by Don Olmstead.
1701
1702         When the variable `USE_LLINT_EMBEDDED_OPCODE_ID` is defined, stop defining
1703         its value with platform default one.
1704
1705         * wtf/Platform.h:
1706
1707 2019-05-03  Sihui Liu  <sihui_liu@apple.com>
1708
1709         Add assertion to check whether shm files have maximum FileProtection of CompleteUnlessOpen
1710         https://bugs.webkit.org/show_bug.cgi?id=197390
1711         <rdar://problem/42685773>
1712
1713         Reviewed by Geoffrey Garen.
1714
1715         * wtf/FileSystem.cpp:
1716         (WTF::FileSystemImpl::isSafeToUseMemoryMapForPath):
1717         (WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):
1718         * wtf/FileSystem.h:
1719         * wtf/cocoa/FileSystemCocoa.mm:
1720         (WTF::FileSystemImpl::isSafeToUseMemoryMapForPath):
1721         (WTF::FileSystemImpl::makeSafeToUseMemoryMapForPath):
1722
1723 2019-05-03  Commit Queue  <commit-queue@webkit.org>
1724
1725         Unreviewed, rolling out r244881.
1726         https://bugs.webkit.org/show_bug.cgi?id=197559
1727
1728         Breaks compilation of jsconly on linux, breaking compilation
1729         for jsc-i386-ews, jsc-mips-ews and jsc-armv7-ews (Requested by
1730         guijemont on #webkit).
1731
1732         Reverted changeset:
1733
1734         "[CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into
1735         WEBKIT_COPY_FILES"
1736         https://bugs.webkit.org/show_bug.cgi?id=197174
1737         https://trac.webkit.org/changeset/244881
1738
1739 2019-05-02  Alex Christensen  <achristensen@webkit.org>
1740
1741         Mark U+01C0 as a homograph of U+006C
1742         https://bugs.webkit.org/show_bug.cgi?id=197526
1743         <rdar://problem/50301904>
1744
1745         Reviewed by Tim Horton.
1746
1747         * wtf/URLHelpers.cpp:
1748         (WTF::URLHelpers::isLookalikeCharacter):
1749
1750 2019-05-02  Don Olmstead  <don.olmstead@sony.com>
1751
1752         [CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into WEBKIT_COPY_FILES
1753         https://bugs.webkit.org/show_bug.cgi?id=197174
1754
1755         Reviewed by Alex Christensen.
1756
1757         Replace WEBKIT_MAKE_FORWARDING_HEADERS with WEBKIT_COPY_FILES.
1758
1759         * wtf/CMakeLists.txt:
1760
1761 2019-05-01  Darin Adler  <darin@apple.com>
1762
1763         WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
1764         https://bugs.webkit.org/show_bug.cgi?id=195535
1765
1766         Reviewed by Alexey Proskuryakov.
1767
1768         * wtf/text/AtomicString.cpp:
1769         (WTF::AtomicString::fromUTF8Internal): Added code to compute string length when the
1770         end is nullptr; this behavior used to be implemented inside the
1771         calculateStringHashAndLengthFromUTF8MaskingTop8Bits function.
1772
1773         * wtf/text/AtomicStringImpl.cpp:
1774         (WTF::HashAndUTF8CharactersTranslator::translate): Updated for change to
1775         convertUTF8ToUTF16.
1776
1777         * wtf/text/AtomicStringImpl.h: Took the WTF_EXPORT_PRIVATE off of the
1778         AtomicStringImpl::addUTF8 function. This is used only inside a non-inlined function in
1779         the AtomicString class and its behavior changed subtly in this patch; it's helpful
1780         to document that it's not exported.
1781
1782         * wtf/text/StringImpl.cpp:
1783         (WTF::StringImpl::utf8Impl): Don't pass "true" for strictness to convertUTF16ToUTF8
1784         since strict is the default. Also updated for changes to ConversionResult.
1785         (WTF::StringImpl::utf8ForCharacters): Updated for change to convertLatin1ToUTF8.
1786         (WTF::StringImpl::tryGetUtf8ForRange const): Ditto.
1787
1788         * wtf/text/StringView.cpp: Removed uneeded include of UTF8Conversion.h.
1789
1790         * wtf/text/WTFString.cpp:
1791         (WTF::String::fromUTF8): Updated for change to convertUTF8ToUTF16.
1792
1793         * wtf/unicode/UTF8Conversion.cpp:
1794         (WTF::Unicode::inlineUTF8SequenceLengthNonASCII): Deleted.
1795         (WTF::Unicode::inlineUTF8SequenceLength): Deleted.
1796         (WTF::Unicode::UTF8SequenceLength): Deleted.
1797         (WTF::Unicode::decodeUTF8Sequence): Deleted.
1798         (WTF::Unicode::convertLatin1ToUTF8): Use U8_APPEND, enabling us to remove
1799         almost everything in the function. Also changed resturn value to be a boolean
1800         to indicate success since there is only one possible failure (target exhausted).
1801         There is room for further simplification, since most callers have lengths rather
1802         than end pointers for the source buffer, and all but one caller supplies a buffer
1803         size known to be sufficient, so those don't need a return value, nor do they need
1804         to pass an end of buffer pointer.
1805         (WTF::Unicode::convertUTF16ToUTF8): Use U_IS_LEAD, U_IS_TRAIL,
1806         U16_GET_SUPPLEMENTARY, U_IS_SURROGATE, and U8_APPEND. Also changed behavior
1807         for non-strict mode so that unpaired surrogates will be turned into the
1808         replacement character instead of invalid UTF-8 sequences, because U8_APPEND
1809         won't create an invalid UTF-8 sequence, and because we don't need to do that
1810         for any good reason at any call site.
1811         (WTF::Unicode::isLegalUTF8): Deleted.
1812         (WTF::Unicode::readUTF8Sequence): Deleted.
1813         (WTF::Unicode::convertUTF8ToUTF16): Use U8_NEXT instead of
1814         inlineUTF8SequenceLength, isLegalUTF8, and readUTF8Sequence. Use
1815         U16_APPEND instead of lots of code that does the same thing. There is
1816         room for further simplification since most callers don't need the "all ASCII"
1817         feature and could probably pass the arguments in a more natural way.
1818         (WTF::Unicode::calculateStringHashAndLengthFromUTF8MaskingTop8Bits):
1819         Use U8_NEXT instead of isLegalUTF8, readUTF8Sequence, and various
1820         error handling checks for things that are handled by U8_NEXT. Also removed
1821         support for passing nullptr for end to specify a null-terminated string.
1822         (WTF::Unicode::equalUTF16WithUTF8): Ditto.
1823
1824         * wtf/unicode/UTF8Conversion.h: Removed UTF8SequenceLength and
1825         decodeUTF8Sequence. Changed the ConversionResult to match WebKit coding
1826         style, with an eye toward perhaps removing it in the future. Changed
1827         the convertUTF8ToUTF16 return value to a boolean and removed the "strict"
1828         argument since no caller was passing false. Changed the convertLatin1ToUTF8
1829         return value to a boolean. Tweaked comments.
1830
1831 2019-05-01  Shawn Roberts  <sroberts@apple.com>
1832
1833         Unreviewed, rolling out r244821.
1834
1835         Causing
1836
1837         Reverted changeset:
1838
1839         "WebKit has too much of its own UTF-8 code and should rely
1840         more on ICU's UTF-8 support"
1841         https://bugs.webkit.org/show_bug.cgi?id=195535
1842         https://trac.webkit.org/changeset/244821
1843
1844 2019-05-01  Shawn Roberts  <sroberts@apple.com>
1845
1846         Unreviewed, rolling out r244822.
1847
1848         Causing 4 Test262 failures on JSC Release and Debug
1849
1850         Reverted changeset:
1851
1852         https://trac.webkit.org/changeset/244822 https://trac.webkit.org/changeset/244821
1853
1854 2019-04-29  Darin Adler  <darin@apple.com>
1855
1856         WebKit has too much of its own UTF-8 code and should rely more on ICU's UTF-8 support
1857         https://bugs.webkit.org/show_bug.cgi?id=195535
1858
1859         Reviewed by Alexey Proskuryakov.
1860
1861         * wtf/text/AtomicString.cpp:
1862         (WTF::AtomicString::fromUTF8Internal): Added code to compute string length when the
1863         end is nullptr; this behavior used to be implemented inside the
1864         calculateStringHashAndLengthFromUTF8MaskingTop8Bits function.
1865
1866         * wtf/text/AtomicStringImpl.cpp:
1867         (WTF::HashAndUTF8CharactersTranslator::translate): Updated for change to
1868         convertUTF8ToUTF16.
1869
1870         * wtf/text/AtomicStringImpl.h: Took the WTF_EXPORT_PRIVATE off of the
1871         AtomicStringImpl::addUTF8 function. This is used only inside a non-inlined function in
1872         the AtomicString class and its behavior changed subtly in this patch; it's helpful
1873         to document that it's not exported.
1874
1875         * wtf/text/StringImpl.cpp:
1876         (WTF::StringImpl::utf8Impl): Don't pass "true" for strictness to convertUTF16ToUTF8
1877         since strict is the default. Also updated for changes to ConversionResult.
1878         (WTF::StringImpl::utf8ForCharacters): Updated for change to convertLatin1ToUTF8.
1879         (WTF::StringImpl::tryGetUtf8ForRange const): Ditto.
1880
1881         * wtf/text/StringView.cpp: Removed uneeded include of UTF8Conversion.h.
1882
1883         * wtf/text/WTFString.cpp:
1884         (WTF::String::fromUTF8): Updated for change to convertUTF8ToUTF16.
1885
1886         * wtf/unicode/UTF8Conversion.cpp:
1887         (WTF::Unicode::inlineUTF8SequenceLengthNonASCII): Deleted.
1888         (WTF::Unicode::inlineUTF8SequenceLength): Deleted.
1889         (WTF::Unicode::UTF8SequenceLength): Deleted.
1890         (WTF::Unicode::decodeUTF8Sequence): Deleted.
1891         (WTF::Unicode::convertLatin1ToUTF8): Use U8_APPEND, enabling us to remove
1892         almost everything in the function. Also changed resturn value to be a boolean
1893         to indicate success since there is only one possible failure (target exhausted).
1894         There is room for further simplification, since most callers have lengths rather
1895         than end pointers for the source buffer, and all but one caller supplies a buffer
1896         size known to be sufficient, so those don't need a return value, nor do they need
1897         to pass an end of buffer pointer.
1898         (WTF::Unicode::convertUTF16ToUTF8): Use U_IS_LEAD, U_IS_TRAIL,
1899         U16_GET_SUPPLEMENTARY, U_IS_SURROGATE, and U8_APPEND. Also changed behavior
1900         for non-strict mode so that unpaired surrogates will be turned into the
1901         replacement character instead of invalid UTF-8 sequences, because U8_APPEND
1902         won't create an invalid UTF-8 sequence, and because we don't need to do that
1903         for any good reason at any call site.
1904         (WTF::Unicode::isLegalUTF8): Deleted.
1905         (WTF::Unicode::readUTF8Sequence): Deleted.
1906         (WTF::Unicode::convertUTF8ToUTF16): Use U8_NEXT instead of
1907         inlineUTF8SequenceLength, isLegalUTF8, and readUTF8Sequence. Use
1908         U16_APPEND instead of lots of code that does the same thing. There is
1909         room for further simplification since most callers don't need the "all ASCII"
1910         feature and could probably pass the arguments in a more natural way.
1911         (WTF::Unicode::calculateStringHashAndLengthFromUTF8MaskingTop8Bits):
1912         Use U8_NEXT instead of isLegalUTF8, readUTF8Sequence, and various
1913         error handling checks for things that are handled by U8_NEXT. Also removed
1914         support for passing nullptr for end to specify a null-terminated string.
1915         (WTF::Unicode::equalUTF16WithUTF8): Ditto.
1916
1917         * wtf/unicode/UTF8Conversion.h: Removed UTF8SequenceLength and
1918         decodeUTF8Sequence. Changed the ConversionResult to match WebKit coding
1919         style, with an eye toward perhaps removing it in the future. Changed
1920         the convertUTF8ToUTF16 return value to a boolean and removed the "strict"
1921         argument since no caller was passing false. Changed the convertLatin1ToUTF8
1922         return value to a boolean. Tweaked comments.
1923
1924 2019-04-30  John Wilander  <wilander@apple.com>
1925
1926         Add logging of Ad Click Attribution errors and events to a dedicated channel
1927         https://bugs.webkit.org/show_bug.cgi?id=197332
1928         <rdar://problem/49918800>
1929
1930         Reviewed by Youenn Fablet.
1931
1932         Added missing RELEASE_LOG_INFO and RELEASE_LOG_INFO_IF dummies
1933         for RELEASE_LOG_DISABLED.
1934
1935         * wtf/Assertions.h:
1936
1937 2019-04-30  Youenn Fablet  <youenn@apple.com>
1938
1939         Make Document audio producers use WeakPtr
1940         https://bugs.webkit.org/show_bug.cgi?id=197382
1941
1942         Reviewed by Eric Carlson.
1943
1944         * wtf/WeakHashSet.h:
1945         (WTF::WeakHashSet::hasNullReferences const):
1946
1947 2019-04-30  Commit Queue  <commit-queue@webkit.org>
1948
1949         Unreviewed, rolling out r244773.
1950         https://bugs.webkit.org/show_bug.cgi?id=197436
1951
1952         Causing assertion failures on debug queues (Requested by
1953         ShawnRoberts on #webkit).
1954
1955         Reverted changeset:
1956
1957         "Make Document audio producers use WeakPtr"
1958         https://bugs.webkit.org/show_bug.cgi?id=197382
1959         https://trac.webkit.org/changeset/244773
1960
1961 2019-04-30  Youenn Fablet  <youenn@apple.com>
1962
1963         Make Document audio producers use WeakPtr
1964         https://bugs.webkit.org/show_bug.cgi?id=197382
1965
1966         Reviewed by Eric Carlson.
1967
1968         * wtf/WeakHashSet.h:
1969         (WTF::WeakHashSet::hasNullReferences const):
1970
1971 2019-04-29  Alex Christensen  <achristensen@webkit.org>
1972
1973         <rdar://problem/50299396> Fix internal High Sierra build
1974         https://bugs.webkit.org/show_bug.cgi?id=197388
1975
1976         * Configurations/Base.xcconfig:
1977
1978 2019-04-29  Yusuke Suzuki  <ysuzuki@apple.com>
1979
1980         JITStubRoutineSet wastes 180KB of HashTable capacity on can.com
1981         https://bugs.webkit.org/show_bug.cgi?id=186732
1982
1983         Reviewed by Saam Barati.
1984
1985         * wtf/Range.h:
1986         (WTF::Range::contains const):
1987
1988 2019-04-29  Basuke Suzuki  <Basuke.Suzuki@sony.com>
1989
1990         [Win] Add flag to enable version information stamping and disable by default.
1991         https://bugs.webkit.org/show_bug.cgi?id=197249
1992         <rdar://problem/50224412>
1993
1994         Reviewed by Ross Kirsling.
1995
1996         This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
1997         Then enable it by default on AppleWin.
1998
1999         * wtf/CMakeLists.txt:
2000
2001 2019-04-26  Don Olmstead  <don.olmstead@sony.com>
2002
2003         Add WTF::findIgnoringASCIICaseWithoutLength to replace strcasestr
2004         https://bugs.webkit.org/show_bug.cgi?id=197291
2005
2006         Reviewed by Konstantin Tokarev.
2007
2008         Adds an implementation of strcasestr within WTF.
2009
2010         * wtf/text/StringCommon.h:
2011         (WTF::findIgnoringASCIICaseWithoutLength):
2012
2013 2019-04-26  Sihui Liu  <sihui_liu@apple.com>
2014
2015         Stop IDB transactions to release locked database files when network process is ready to suspend
2016         https://bugs.webkit.org/show_bug.cgi?id=196372
2017         <rdar://problem/48930116>
2018
2019         Reviewed by Brady Eidson.
2020
2021         Provide a method to suspend the thread and block main thread until the thread is suspended.
2022
2023         * wtf/CrossThreadTaskHandler.cpp:
2024         (WTF::CrossThreadTaskHandler::taskRunLoop):
2025         (WTF::CrossThreadTaskHandler::suspendAndWait):
2026         (WTF::CrossThreadTaskHandler::resume):
2027         * wtf/CrossThreadTaskHandler.h:
2028
2029 2019-04-25  Fujii Hironori  <Hironori.Fujii@sony.com>
2030
2031         Unreviewed, rolling out r244669.
2032
2033         Windows ports can't clean build.
2034
2035         Reverted changeset:
2036
2037         "[Win] Add flag to enable version information stamping and
2038         disable by default."
2039         https://bugs.webkit.org/show_bug.cgi?id=197249
2040         https://trac.webkit.org/changeset/244669
2041
2042 2019-04-25  Basuke Suzuki  <Basuke.Suzuki@sony.com>
2043
2044         [Win] Add flag to enable version information stamping and disable by default.
2045         https://bugs.webkit.org/show_bug.cgi?id=197249
2046
2047         Reviewed by Ross Kirsling.
2048
2049         This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
2050         Then enable it by default on AppleWin.
2051
2052         * wtf/CMakeLists.txt:
2053
2054 2019-04-25  Timothy Hatcher  <timothy@apple.com>
2055
2056         Disable date and time inputs on iOSMac.
2057         https://bugs.webkit.org/show_bug.cgi?id=197287
2058         rdar://problem/46794376
2059
2060         Reviewed by Wenson Hsieh.
2061
2062         * wtf/FeatureDefines.h:
2063
2064 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2065
2066         Fix High Sierra build after r244653
2067         https://bugs.webkit.org/show_bug.cgi?id=197131
2068
2069         * wtf/StdLibExtras.h:
2070         High Sierra thinks __cplusplus is 201406 even when using C++17.
2071         Removing the __cplusplus check resolves the build failure on High Sierra.
2072         We can clean up StdLibExtras more later.
2073
2074 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2075
2076         Start using C++17
2077         https://bugs.webkit.org/show_bug.cgi?id=197131
2078
2079         Reviewed by Darin Adler.
2080
2081         * Configurations/Base.xcconfig:
2082         * wtf/CMakeLists.txt:
2083         * wtf/Variant.h:
2084         (WTF::switchOn):
2085
2086 2019-04-25  Alex Christensen  <achristensen@webkit.org>
2087
2088         Remove DeprecatedOptional
2089         https://bugs.webkit.org/show_bug.cgi?id=197161
2090
2091         Reviewed by Darin Adler.
2092
2093         * WTF.xcodeproj/project.pbxproj:
2094         * wtf/CMakeLists.txt:
2095         * wtf/DeprecatedOptional.h: Removed.
2096
2097 2019-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>
2098
2099         [GTK] Hardcoded text color in input fields
2100         https://bugs.webkit.org/show_bug.cgi?id=126907
2101
2102         Reviewed by Michael Catanzaro.
2103
2104         Define HAVE_OS_DARK_MODE_SUPPORT for GTK port.
2105
2106         * wtf/Platform.h:
2107
2108 2019-04-24  Tim Horton  <timothy_horton@apple.com>
2109
2110         Clean up WKActionSheetAssistant's use of LaunchServices
2111         https://bugs.webkit.org/show_bug.cgi?id=194645
2112         <rdar://problem/47707952>
2113
2114         Reviewed by Andy Estes.
2115
2116         * wtf/Platform.h:
2117
2118 2019-04-24  chris fleizach  <cfleizach@apple.com>
2119
2120         AX: Remove deprecated Accessibility Object Model events
2121         https://bugs.webkit.org/show_bug.cgi?id=197073
2122         <rdar://problem/50027819>
2123
2124         Reviewed by Ryosuke Niwa.
2125
2126         * wtf/Platform.h:
2127
2128 2019-04-23  Commit Queue  <commit-queue@webkit.org>
2129
2130         Unreviewed, rolling out r244558.
2131         https://bugs.webkit.org/show_bug.cgi?id=197219
2132
2133         Causing crashes on iOS Sim Release and Debug (Requested by
2134         ShawnRoberts on #webkit).
2135
2136         Reverted changeset:
2137
2138         "Remove DeprecatedOptional"
2139         https://bugs.webkit.org/show_bug.cgi?id=197161
2140         https://trac.webkit.org/changeset/244558
2141
2142 2019-04-23  Alex Christensen  <achristensen@webkit.org>
2143
2144         Remove DeprecatedOptional
2145         https://bugs.webkit.org/show_bug.cgi?id=197161
2146
2147         Reviewed by Darin Adler.
2148
2149         This was added in r209326 to be compatible with a shipping version of Safari.
2150         We have released several versions of Safari since then, so do what the comments say and remove it.
2151         The existence of this std::optional makes migrating to C++17 harder, and there's no reason to keep it.
2152
2153         * WTF.xcodeproj/project.pbxproj:
2154         * wtf/CMakeLists.txt:
2155         * wtf/DeprecatedOptional.h: Removed.
2156
2157 2019-04-21  Zan Dobersek  <zdobersek@igalia.com>
2158
2159         [WTF] Generic memoryFootprint() implementation should use bmalloc on Linux
2160         https://bugs.webkit.org/show_bug.cgi?id=196963
2161
2162         Reviewed by Don Olmstead.
2163
2164         Have the generic memoryFootprint() implementation use bmalloc's
2165         memoryFootprint() API on Linux, whenever the system malloc option is
2166         not enabled. Limitation to Linux platforms is due to the bmalloc
2167         implementation being limited to those configurations (excluding iOS
2168         which doesn't use MemoryFootprintGeneric.cpp).
2169
2170         * wtf/PlatformWPE.cmake: Switch to building MemoryFootprintGeneric.cpp.
2171         * wtf/generic/MemoryFootprintGeneric.cpp:
2172         (WTF::memoryFootprint):
2173
2174 2019-04-19  Ryosuke Niwa  <rniwa@webkit.org>
2175
2176         HashTable::removeIf always shrinks the hash table by half even if there is nothing left
2177         https://bugs.webkit.org/show_bug.cgi?id=196681
2178         <rdar://problem/49917764>
2179
2180         Reviewed by Darin Adler.
2181
2182         Address Darin's comments by removing the explicit type from std::max.
2183
2184         * wtf/HashTable.h:
2185         (WTF::KeyTraits>::computeBestTableSize):
2186         (WTF::KeyTraits>::shrinkToBestSize):
2187
2188 2019-04-18  Chris Dumez  <cdumez@apple.com>
2189
2190         [iOS] Improve detection of when web views go to background / foreground
2191         https://bugs.webkit.org/show_bug.cgi?id=197035
2192         <rdar://problem/45281182>
2193
2194         Reviewed by Tim Horton.
2195
2196         Add build time flag.
2197
2198         * wtf/FeatureDefines.h:
2199
2200 2019-04-18  Jer Noble  <jer.noble@apple.com>
2201
2202         Add support for parsing FairPlayStreaming PSSH boxes.
2203         https://bugs.webkit.org/show_bug.cgi?id=197064
2204
2205         Reviewed by Eric Carlson.
2206
2207         * wtf/Platform.h:
2208
2209 2019-04-18  Yusuke Suzuki  <ysuzuki@apple.com>
2210
2211         [WTF] StringBuilder should set correct m_is8Bit flag when merging
2212         https://bugs.webkit.org/show_bug.cgi?id=197053
2213
2214         Reviewed by Saam Barati.
2215
2216         When appending StringBuilder to the other StringBuilder, we have a path that does not set m_is8Bit flag correctly.
2217         This patch correctly sets this flag. And we also change 0 to nullptr when we are using 0 as a pointer.
2218
2219         * wtf/text/StringBuilder.cpp:
2220         (WTF::StringBuilder::reserveCapacity):
2221         (WTF::StringBuilder::appendUninitializedSlow):
2222         (WTF::StringBuilder::append):
2223         * wtf/text/StringBuilder.h:
2224         (WTF::StringBuilder::append):
2225         (WTF::StringBuilder::characters8 const):
2226         (WTF::StringBuilder::characters16 const):
2227         (WTF::StringBuilder::clear):
2228
2229 2019-04-17  Tim Horton  <timothy_horton@apple.com>
2230
2231         Adopt different scroll view flashing SPI
2232         https://bugs.webkit.org/show_bug.cgi?id=197043
2233         <rdar://problem/49996476>
2234
2235         Reviewed by Wenson Hsieh.
2236
2237         * wtf/Platform.h:
2238
2239 2019-04-17  Jer Noble  <jer.noble@apple.com>
2240
2241         Enable HAVE_AVFOUNDATION_VIDEO_OUTPUT on PLATFORM(IOSMAC)
2242         https://bugs.webkit.org/show_bug.cgi?id=196994
2243         <rdar://problem/44158331>
2244
2245         Reviewed by Alex Christensen.
2246
2247         * wtf/Platform.h:
2248
2249 2019-04-16  Stephan Szabo  <stephan.szabo@sony.com>
2250
2251         [PlayStation] Update port for system library changes
2252         https://bugs.webkit.org/show_bug.cgi?id=196978
2253
2254         Reviewed by Ross Kirsling.
2255
2256         * wtf/PlatformPlayStation.cmake:
2257         Remove reference to deleted system library
2258
2259 2019-04-16  Jer Noble  <jer.noble@apple.com>
2260
2261         Enable HAVE_AVKIT on PLATFORM(IOSMAC)
2262         https://bugs.webkit.org/show_bug.cgi?id=196987
2263
2264         Reviewed by Tim Horton.
2265
2266         * wtf/Platform.h:
2267
2268 2019-04-16  Robin Morisset  <rmorisset@apple.com>
2269
2270         [WTF] holdLock should be marked WARN_UNUSED_RETURN
2271         https://bugs.webkit.org/show_bug.cgi?id=196922
2272
2273         Reviewed by Keith Miller.
2274
2275         * wtf/Locker.h:
2276
2277 2019-04-16  Don Olmstead  <don.olmstead@sony.com>
2278
2279         [CMake] Set WTF_SCRIPTS_DIR
2280         https://bugs.webkit.org/show_bug.cgi?id=196917
2281
2282         Reviewed by Konstantin Tokarev.
2283
2284         Use WTF_SCRIPTS_DIR for copying the unified sources script.
2285
2286         * wtf/CMakeLists.txt:
2287
2288 2019-04-15  Myles C. Maxfield  <mmaxfield@apple.com>
2289
2290         [Cocoa] FontPlatformData objects aren't cached at all when using font-family:system-ui
2291         https://bugs.webkit.org/show_bug.cgi?id=196846
2292         <rdar://problem/49499971>
2293
2294         Reviewed by Simon Fraser and Darin Adler.
2295
2296         * wtf/RetainPtr.h:
2297         (WTF::safeCFEqual):
2298         (WTF::safeCFHash):
2299
2300 2019-04-12  Ryosuke Niwa  <rniwa@webkit.org>
2301
2302         HashTable::removeIf always shrinks the hash table by half even if there is nothing left
2303         https://bugs.webkit.org/show_bug.cgi?id=196681
2304
2305         Reviewed by Darin Adler.
2306
2307         Made HashTable::removeIf shrink to the "best size", which is the least power of two bigger
2308         than twice the key count as already used in the copy constructor.
2309
2310         * wtf/HashTable.h:
2311         (WTF::HashTable::computeBestTableSize): Extracted from the copy constructor.
2312         (WTF::HashTable::shrinkToBestSize): Added.
2313         (WTF::HashTable::removeIf): Use shrinkToBestSize instead of shrink.
2314         (WTF::HashTable::HashTable):
2315
2316 2019-04-12  Eric Carlson  <eric.carlson@apple.com>
2317
2318         Update AudioSession route sharing policy
2319         https://bugs.webkit.org/show_bug.cgi?id=196776
2320         <rdar://problem/46501611>
2321
2322         Reviewed by Jer Noble.
2323
2324         * wtf/Platform.h: Define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO.
2325
2326 2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>
2327
2328         requestAnimationFrame should execute before the next frame
2329         https://bugs.webkit.org/show_bug.cgi?id=177484
2330
2331         Reviewed by Simon Fraser.
2332
2333         Add trace points for the page RenderingUpdate.
2334
2335         * wtf/SystemTracing.h:
2336
2337 2019-04-10  Claudio Saavedra  <csaavedra@igalia.com>
2338
2339         Do not generate empty unified sources when unified builds are disabled
2340         https://bugs.webkit.org/show_bug.cgi?id=196767
2341
2342         Reviewed by Konstantin Tokarev.
2343
2344         If unified builds are disabled, the ruby script to generate them
2345         is still used to list the sources that need to be
2346         compiled. Currently, the script always generates bundled unified
2347         sources, even if it's being used just to list all the sources. So
2348         when the unified builds are disabled and no files are going to be
2349         bundled, the script generates one empty file per bundle manager
2350         (that is, one C++ and one ObjectiveC), that gets added to the
2351         sources to be compiled.
2352
2353         * Scripts/generate-unified-source-bundles.rb: Only go through the
2354         bundle managers file generation when not running in
2355         PrintAllSources mode, to avoid generating empty bundle files.
2356
2357 2019-04-10  Enrique Ocaña González  <eocanha@igalia.com>
2358
2359         [WPE] Avoid async IO starving timers
2360         https://bugs.webkit.org/show_bug.cgi?id=196733
2361
2362         Reviewed by Carlos Garcia Campos.
2363
2364         If AsyncIONetwork and DiskCacheRead priorities are higher than
2365         MainThreadSharedTimer the timers get starved. This causes the NetworkProcess
2366         to accumulate MB of data instead of handing it down to the WebProcess (done
2367         using a Timer). This eventually causes an Out Of Memory kill on the
2368         NetworkProcess on some embedded platforms with low memory limits.
2369
2370         This patch levels the three priorities to the same value, while still leaving
2371         DiskCacheWrite with less priority than DiskCacheRead.
2372
2373         * wtf/glib/RunLoopSourcePriority.h: Changed RunLoopSourcePriority values for WPE.
2374
2375 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
2376
2377         [CMake] WTF derived sources should only be referenced inside WTF
2378         https://bugs.webkit.org/show_bug.cgi?id=196706
2379
2380         Reviewed by Konstantin Tokarev.
2381
2382         Use ${WTF_DERIVED_SOURCES_DIR} instead of ${DERIVED_SOURCES_DIR} within WTF.
2383
2384         * wtf/CMakeLists.txt:
2385         * wtf/PlatformJSCOnly.cmake:
2386         * wtf/PlatformMac.cmake:
2387
2388 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
2389
2390         [CMake] Apple builds should use ICU_INCLUDE_DIRS
2391         https://bugs.webkit.org/show_bug.cgi?id=196720
2392
2393         Reviewed by Konstantin Tokarev.
2394
2395         Copy ICU headers for Apple builds into ICU_INCLUDE_DIRS.
2396
2397         * CMakeLists.txt:
2398         * wtf/PlatformMac.cmake:
2399
2400 2019-04-08  Don Olmstead  <don.olmstead@sony.com>
2401
2402         [CMake][WinCairo] Separate copied headers into different directories
2403         https://bugs.webkit.org/show_bug.cgi?id=196655
2404
2405         Reviewed by Michael Catanzaro.
2406
2407         * wtf/CMakeLists.txt:
2408
2409 2019-04-08  Guillaume Emont  <guijemont@igalia.com>
2410
2411         Enable DFG on MIPS
2412         https://bugs.webkit.org/show_bug.cgi?id=196689
2413
2414         Reviewed by Žan Doberšek.
2415
2416         Since the bytecode change, we enabled the baseline JIT on mips in
2417         r240432, but DFG is still missing. With this change, all tests are
2418         passing on a ci20 board.
2419
2420         * wtf/Platform.h: Enable DFG on MIPS by default.
2421
2422 2019-04-06  Ryosuke Niwa  <rniwa@webkit.org>
2423
2424         Added tests for WeakHashSet::computesEmpty and WeakHashSet::computeSize
2425         https://bugs.webkit.org/show_bug.cgi?id=196669
2426
2427         Reviewed by Geoffrey Garen.
2428
2429         Removed the superflous type names from forward declarations, and made WeakHashSet::add
2430         take a const object to match other container types in WTF.
2431
2432         * wtf/WeakHashSet.h:
2433         (WTF::WeakHashSet::add):
2434         * wtf/WeakPtr.h:
2435
2436 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
2437
2438         Make WeakPtr<Element> possible and deploy it in form associated elements code
2439         https://bugs.webkit.org/show_bug.cgi?id=196626
2440
2441         Reviewed by Antti Koivisto.
2442
2443         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
2444         a subclass type U of a type T used to define WeakReference<T>.
2445
2446         Also added computesEmpty, which is slightly more efficient than computeSize
2447         when m_set is either empty or when there are non-released weak references in the set.
2448
2449         * wtf/WeakHashSet.h:
2450         (WTF::WeakHashSet::remove):
2451         (WTF::WeakHashSet::contains const):
2452         (WTF::WeakHashSet::computesEmpty const): Added.
2453         * wtf/WeakPtr.h: Added an explicit forward declaration of WeakHashSet to avoid
2454         build failures in GTK+ and WPE ports.
2455
2456 2019-04-05  Eric Carlson  <eric.carlson@apple.com>
2457
2458         Remove AUDIO_TOOLBOX_AUDIO_SESSION
2459         https://bugs.webkit.org/show_bug.cgi?id=196653
2460         <rdar://problem/49652098>
2461
2462         Reviewed by Jer Noble.
2463
2464         * wtf/Platform.h:
2465
2466 2019-04-05  Michael Catanzaro  <mcatanzaro@igalia.com>
2467
2468         Unreviewed manual rollout of r243929
2469         https://bugs.webkit.org/show_bug.cgi?id=196626
2470
2471         * wtf/WeakHashSet.h:
2472         (WTF::WeakHashSet::remove):
2473         (WTF::WeakHashSet::contains const):
2474         (WTF::WeakHashSet::computesEmpty const): Deleted.
2475
2476 2019-04-05  Commit Queue  <commit-queue@webkit.org>
2477
2478         Unreviewed, rolling out r243833.
2479         https://bugs.webkit.org/show_bug.cgi?id=196645
2480
2481         This change breaks build of WPE and GTK ports (Requested by
2482         annulen on #webkit).
2483
2484         Reverted changeset:
2485
2486         "[CMake][WTF] Mirror XCode header directories"
2487         https://bugs.webkit.org/show_bug.cgi?id=191662
2488         https://trac.webkit.org/changeset/243833
2489
2490 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
2491
2492         Make WeakPtr<Element> possible and deploy it in form associated elements code
2493         https://bugs.webkit.org/show_bug.cgi?id=196626
2494
2495         Reviewed by Antti Koivisto.
2496
2497         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
2498         a subclass type U of a type T used to define WeakReference<T>.
2499
2500         Also added computesEmpty, which is slightly more efficient than computeSize
2501         when m_set is either empty or when there are non-released weak references in the set.
2502
2503         * wtf/WeakHashSet.h:
2504         (WTF::WeakHashSet::remove):
2505         (WTF::WeakHashSet::contains const):
2506         (WTF::WeakHashSet::computesEmpty const): Added.
2507
2508 2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>
2509
2510         [WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
2511         https://bugs.webkit.org/show_bug.cgi?id=196475
2512
2513         Reviewed by Saam Barati.
2514
2515         * wtf/ForbidHeapAllocation.h:
2516         * wtf/IsoMalloc.h:
2517         * wtf/IsoMallocInlines.h:
2518
2519 2019-04-03  Don Olmstead  <don.olmstead@sony.com>
2520
2521         [CMake][WTF] Mirror XCode header directories
2522         https://bugs.webkit.org/show_bug.cgi?id=191662
2523
2524         Reviewed by Konstantin Tokarev.
2525
2526         Rename WTF forwarding header target to WTFFramework and update the install location
2527         to WTF_FRAMEWORK_HEADERS_DIR.
2528
2529         * wtf/CMakeLists.txt:
2530
2531 2019-04-03  Joseph Pecoraro  <pecoraro@apple.com>
2532
2533         Web Inspector: Remote Inspector indicate callback should always happen on the main thread
2534         https://bugs.webkit.org/show_bug.cgi?id=196513
2535         <rdar://problem/49498284>
2536
2537         Reviewed by Devin Rousso.
2538
2539         * wtf/MainThread.h:
2540         * wtf/cocoa/MainThreadCocoa.mm:
2541         (WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):
2542         * wtf/ios/WebCoreThread.cpp:
2543         * wtf/ios/WebCoreThread.h:
2544
2545 2019-04-02  Keith Rollin  <krollin@apple.com>
2546
2547         Inhibit CFNetwork logging in private sessions
2548         https://bugs.webkit.org/show_bug.cgi?id=196268
2549         <rdar://problem/48210793>
2550
2551         Fix a conditional in Platform.h where IOS should have been used
2552         instead of IOS_FAMILY. The latter happened to work, but we really want
2553         to be using the proper symbol here.
2554
2555         Reviewed by Alexey Proskuryakov.
2556
2557         * wtf/Platform.h:
2558
2559 2019-04-01  Michael Catanzaro  <mcatanzaro@igalia.com>
2560
2561         Stop trying to support building JSC with clang 3.8
2562         https://bugs.webkit.org/show_bug.cgi?id=195947
2563         <rdar://problem/49069219>
2564
2565         Reviewed by Darin Adler.
2566
2567         It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
2568         don't know how much effort it would be to make JSC work again, and it's making the code
2569         worse. Remove my hacks to support clang 3.8 from WTF.
2570
2571         * wtf/MetaAllocator.cpp:
2572         (WTF::MetaAllocator::allocate):
2573         * wtf/text/StringConcatenate.h:
2574         (WTF::tryMakeStringFromAdapters):
2575
2576 2019-03-31  Yusuke Suzuki  <ysuzuki@apple.com>
2577
2578         [JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
2579         https://bugs.webkit.org/show_bug.cgi?id=196160
2580
2581         Reviewed by Saam Barati.
2582
2583         * wtf/FastMalloc.h:
2584         (WTF::FastMalloc::tryRealloc):
2585         * wtf/Gigacage.cpp:
2586         (Gigacage::tryRealloc):
2587         * wtf/Gigacage.h:
2588
2589 2019-03-31  Andy Estes  <aestes@apple.com>
2590
2591         [iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
2592         https://bugs.webkit.org/show_bug.cgi?id=196433
2593         <rdar://problem/49293305>
2594
2595         Reviewed by Tim Horton.
2596
2597         * wtf/NeverDestroyed.h:
2598         (WTF::NeverDestroyed::operator->):
2599         (WTF::NeverDestroyed::operator-> const):
2600
2601 2019-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
2602
2603         Unreviewed build fix.
2604
2605         * wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.
2606
2607 2019-03-28  Saam Barati  <sbarati@apple.com>
2608
2609         BackwardsGraph needs to consider back edges as the backward's root successor
2610         https://bugs.webkit.org/show_bug.cgi?id=195991
2611
2612         Reviewed by Filip Pizlo.
2613
2614         Previously, our backwards graph analysis was slightly wrong. The idea of
2615         backwards graph is that the root of the graph has edges to terminals in
2616         the original graph. And then the original directed edges in the graph are flipped.
2617         
2618         However, we weren't considering loops as a form of terminality. For example,
2619         we wouldn't consider an infinite loop as a terminal. So there were no edges
2620         from the root to a node in the infinite loop. This lead us to make mistakes
2621         when we used backwards dominators to compute control flow equivalence.
2622         
2623         This is better understood in an example:
2624         
2625         ```
2626         preheader:
2627         while (1) {
2628             if (!isCell(v))
2629                 continue;
2630             load structure ID
2631             if (cond)
2632                continue;
2633             return
2634         }
2635         ```
2636         
2637         In the previous version of this algorithm, the only edge from the backwards
2638         root would be to the block containing the return. This would lead us to
2639         believe that the loading of the structureID backwards dominates the preheader,
2640         leading us to believe it's control flow equivalent to preheader. This is
2641         obviously wrong, since we can loop forever if "v" isn't a cell.
2642         
2643         The solution here is to treat any backedge in the graph as a "terminal" node.
2644         Since a backedge implies the existence of a loop.
2645         
2646         In the above example, the backwards root now has an edge to both blocks with
2647         "continue". This prevents us from falsely claiming that the return is control
2648         flow equivalent with the preheader.
2649         
2650         This patch uses DFS spanning trees to compute back edges. An edge
2651         u->v is a back edge when u is a descendent of v in the DFS spanning
2652         tree of the Graph.
2653
2654         * WTF.xcodeproj/project.pbxproj:
2655         * wtf/BackwardsGraph.h:
2656         (WTF::BackwardsGraph::BackwardsGraph):
2657         * wtf/SpanningTree.h: Added.
2658         (SpanningTree::SpanningTree):
2659         (SpanningTree::isDescendent):
2660
2661 2019-03-28  Tim Horton  <timothy_horton@apple.com>
2662
2663         Un-fix the build
2664
2665         * wtf/Platform.h:
2666         It is no longer necessary to exclude this from PLATFORM(IOSMAC).
2667
2668 2019-03-27  Per Arne Vollan  <pvollan@apple.com>
2669
2670         Layout Test js/math-clz32.html is failing
2671         https://bugs.webkit.org/show_bug.cgi?id=196209
2672
2673         Reviewed by Ross Kirsling.
2674
2675         Use the correct number of loop iterations when counting leading zeros. Also, the
2676         count was off by one for the Win64 case.
2677
2678         * wtf/MathExtras.h:
2679         (WTF::clz):
2680
2681 2019-03-26  Keith Rollin  <krollin@apple.com>
2682
2683         Inhibit CFNetwork logging in private sessions
2684         https://bugs.webkit.org/show_bug.cgi?id=196268
2685         <rdar://problem/48210793>
2686
2687         Reviewed by Alex Christensen.
2688
2689         Before performing any logging, the NetworkProcess checks to see if
2690         it's performing an operation associated with a private (ephemeral)
2691         browsing session. If so, it skips the logging. However, networking
2692         layers below the NetworkProcess don't know about private browsing, so
2693         they would still perform their own logging. CFNetwork now has a flag
2694         that lets us control that, so set it to False if private browsing.
2695
2696         * wtf/Platform.h:
2697
2698 2019-03-25  Alex Christensen  <achristensen@webkit.org>
2699
2700         Expected shouldn't assume its contained types are copyable
2701         https://bugs.webkit.org/show_bug.cgi?id=195986
2702
2703         Reviewed by JF Bastien.
2704
2705         * wtf/Expected.h:
2706         (std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base):
2707         (std::experimental::fundamentals_v3::operator==):
2708         (std::experimental::fundamentals_v3::operator!=):
2709         * wtf/Unexpected.h:
2710         (std::experimental::fundamentals_v3::unexpected::unexpected):
2711
2712 2019-03-24  Keith Miller  <keith_miller@apple.com>
2713
2714         Unreviewed, forgot to refactor variable name for windows build in
2715         r243418.
2716
2717         * wtf/MathExtras.h:
2718         (WTF::clz):
2719         (WTF::ctz):
2720
2721 2019-03-24  Andy Estes  <aestes@apple.com>
2722
2723         [watchOS] Remove unused Proximity Networking code
2724         https://bugs.webkit.org/show_bug.cgi?id=196188
2725
2726         Reviewed by Tim Horton.
2727
2728         * wtf/FeatureDefines.h:
2729
2730 2019-03-23  Keith Miller  <keith_miller@apple.com>
2731
2732         Refactor clz/ctz and fix getLSBSet.
2733         https://bugs.webkit.org/show_bug.cgi?id=196162
2734
2735         Reviewed by Saam Barati.
2736
2737         This patch makes clz32/64 and ctz32 generic so they work on any
2738         numeric type. Since these methods work on any type we don't need
2739         to have a separate implementation of getLSBSet, which also
2740         happened to be getMSBSet. This patch also adds getMSBSet as there
2741         may be users who want that in the future.
2742
2743         * wtf/MathExtras.h:
2744         (WTF::clz):
2745         (WTF::ctz):
2746         (WTF::getLSBSet):
2747         (WTF::getMSBSet):
2748         (getLSBSet): Deleted.
2749         (WTF::clz32): Deleted.
2750         (WTF::clz64): Deleted.
2751         (WTF::ctz32): Deleted.
2752
2753 2019-03-22  Keith Rollin  <krollin@apple.com>
2754
2755         Enable ThinLTO support in Production builds
2756         https://bugs.webkit.org/show_bug.cgi?id=190758
2757         <rdar://problem/45413233>
2758
2759         Reviewed by Daniel Bates.
2760
2761         Enable building with Thin LTO in Production when using Xcode 10.2 or
2762         later. This change results in a 1.45% progression in PLT5. Full
2763         Production build times increase about 2-3%. Incremental build times
2764         are more severely affected, and so LTO is not enabled for local
2765         engineering builds.
2766
2767         LTO is enabled only on macOS for now, until rdar://problem/49013399,
2768         which affects ARM builds, is fixed.
2769
2770         To change the LTO setting when building locally:
2771
2772         - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
2773           command line.
2774         - If building with `build-webkit`, specify --lto-mode={none,thin,full}
2775           on the command line.
2776         - If building with `build-root`, specify --lto={none,thin,full} on the
2777           command line.
2778         - If building with Xcode, create a LocalOverrides.xcconfig file at the
2779           top level of your repository directory (if needed) and define
2780           WK_LTO_MODE to full, thin, or none.
2781
2782         * Configurations/Base.xcconfig:
2783
2784 2019-03-22  Tim Horton  <timothy_horton@apple.com>
2785
2786         Fix the build after r243354
2787
2788         * wtf/Platform.h:
2789
2790 2019-03-22  Tim Horton  <timothy_horton@apple.com>
2791
2792         Fix the build after r243354
2793         https://bugs.webkit.org/show_bug.cgi?id=196138
2794         <rdar://problem/49145951>
2795
2796         * wtf/Platform.h:
2797
2798 2019-03-21  Eric Carlson  <eric.carlson@apple.com>
2799
2800         Add UI process WebRTC runtime logging.
2801         https://bugs.webkit.org/show_bug.cgi?id=196020
2802         <rdar://problem/49071443>
2803
2804         Reviewed by Youenn Fablet.
2805
2806         * wtf/Logger.h:
2807         (WTF::LogArgument::toString): Add long long and unsigned long long variants.
2808
2809 2019-03-20  Simon Fraser  <simon.fraser@apple.com>
2810
2811         Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
2812         https://bugs.webkit.org/show_bug.cgi?id=196049
2813
2814         Reviewed by Tim Horton.
2815
2816         This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
2817         overflow scrolling in general, so rename it.
2818
2819         * wtf/FeatureDefines.h:
2820
2821 2019-03-20  Mark Lam  <mark.lam@apple.com>
2822
2823         Open source arm64e code.
2824         https://bugs.webkit.org/show_bug.cgi?id=196012
2825         <rdar://problem/49066237>
2826
2827         Reviewed by Keith Miller.
2828
2829         * WTF.xcodeproj/project.pbxproj:
2830         * wtf/BlockPtr.h:
2831         * wtf/Platform.h:
2832         * wtf/PlatformRegisters.cpp: Added.
2833         (WTF::threadStateLRInternal):
2834         (WTF::threadStatePCInternal):
2835         * wtf/PlatformRegisters.h:
2836         * wtf/PointerPreparations.h:
2837         * wtf/PtrTag.cpp: Added.
2838         (WTF::tagForPtr):
2839         (WTF::ptrTagName):
2840         (WTF::registerPtrTagLookup):
2841         (WTF::reportBadTag):
2842         * wtf/PtrTag.h:
2843         (WTF::removeCodePtrTag):
2844         (WTF::tagCodePtrImpl):
2845         (WTF::tagCodePtr):
2846         (WTF::untagCodePtrImplHelper):
2847         (WTF::untagCodePtrImpl):
2848         (WTF::untagCodePtr):
2849         (WTF::retagCodePtrImplHelper):
2850         (WTF::retagCodePtrImpl):
2851         (WTF::retagCodePtr):
2852         (WTF::tagCFunctionPtrImpl):
2853         (WTF::tagCFunctionPtr):
2854         (WTF::untagCFunctionPtrImpl):
2855         (WTF::untagCFunctionPtr):
2856         (WTF::tagInt):
2857         (WTF::assertIsCFunctionPtr):
2858         (WTF::assertIsNullOrCFunctionPtr):
2859         (WTF::assertIsNotTagged):
2860         (WTF::assertIsTagged):
2861         (WTF::assertIsNullOrTagged):
2862         (WTF::isTaggedWith):
2863         (WTF::assertIsTaggedWith):
2864         (WTF::assertIsNullOrTaggedWith):
2865         (WTF::usesPointerTagging):
2866         (WTF::registerPtrTagLookup):
2867         (WTF::reportBadTag):
2868         (WTF::tagForPtr): Deleted.
2869
2870 2019-03-20  Keith Rollin  <krollin@apple.com>
2871
2872         Update checks that determine if WebKit is system WebKit
2873         https://bugs.webkit.org/show_bug.cgi?id=195756
2874
2875         Reviewed by Alexey Proskuryakov.
2876
2877         The system WebKit can be installed in additional locations, so check
2878         for and allow those, too.
2879
2880         * wtf/Platform.h:
2881
2882 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
2883
2884         Unreviewed, further attempt to fix clang 3.8 build
2885         https://bugs.webkit.org/show_bug.cgi?id=195947
2886
2887         * wtf/MetaAllocator.cpp:
2888         (WTF::MetaAllocator::allocate):
2889
2890 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
2891
2892         REGRESSION(r243115) breaks build for clang 3.8
2893         https://bugs.webkit.org/show_bug.cgi?id=195947
2894
2895         Reviewed by Chris Dumez.
2896
2897         * wtf/text/StringConcatenate.h:
2898         (WTF::tryMakeStringFromAdapters):
2899
2900 2019-03-20  Tim Horton  <timothy_horton@apple.com>
2901
2902         Add an platform-driven spell-checking mechanism
2903         https://bugs.webkit.org/show_bug.cgi?id=195795
2904
2905         Reviewed by Ryosuke Niwa.
2906
2907         * wtf/Platform.h:
2908         Add an ENABLE flag.
2909
2910 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
2911
2912         Build cleanly with GCC 9
2913         https://bugs.webkit.org/show_bug.cgi?id=195920
2914
2915         Reviewed by Chris Dumez.
2916
2917         WebKit triggers three new GCC 9 warnings:
2918
2919         """
2920         -Wdeprecated-copy, implied by -Wextra, warns about the C++11 deprecation of implicitly
2921         declared copy constructor and assignment operator if one of them is user-provided.
2922         """
2923
2924         Solution is to either add a copy constructor or copy assignment operator, if required, or
2925         else remove one if it is redundant.
2926
2927         """
2928         -Wredundant-move, implied by -Wextra, warns about redundant calls to std::move.
2929         -Wpessimizing-move, implied by -Wall, warns when a call to std::move prevents copy elision.
2930         """
2931
2932         These account for most of this patch. Solution is to just remove the bad WTFMove().
2933
2934         Additionally, -Wclass-memaccess has been enhanced to catch a few cases that GCC 8 didn't.
2935         These are solved by casting nontrivial types to void* before using memcpy. (Of course, it
2936         would be safer to not use memcpy on nontrivial types, but that's too complex for this
2937         patch. Searching for memcpy used with static_cast<void*> will reveal other cases to fix.)
2938
2939         * wtf/CheckedArithmetic.h:
2940         (WTF::Checked::Checked):
2941         * wtf/MetaAllocator.cpp:
2942         (WTF::MetaAllocator::allocate):
2943         * wtf/URLParser.cpp:
2944         (WTF::CodePointIterator::operator!= const):
2945         (WTF::CodePointIterator::operator=): Deleted.
2946         * wtf/text/StringView.h:
2947         (WTF::StringView::CodePoints::Iterator::operator=): Deleted.
2948
2949 2019-03-19  Alex Christensen  <achristensen@webkit.org>
2950
2951         Make WTFLogChannelState and WTFLogLevel enum classes
2952         https://bugs.webkit.org/show_bug.cgi?id=195904
2953
2954         Reviewed by Eric Carlson.
2955
2956         * wtf/Assertions.cpp:
2957         * wtf/Assertions.h:
2958         * wtf/Logger.h:
2959         (WTF::Logger::logAlways const):
2960         (WTF::Logger::error const):
2961         (WTF::Logger::warning const):
2962         (WTF::Logger::info const):
2963         (WTF::Logger::debug const):
2964         (WTF::Logger::willLog const):
2965         (WTF::Logger::log):
2966         * wtf/MemoryPressureHandler.cpp:
2967         * wtf/RefCountedLeakCounter.cpp:
2968
2969 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
2970
2971         Unreviewed, rolling out r243132.
2972
2973         Broke GTK build
2974
2975         Reverted changeset:
2976
2977         "Make WTFLogChannelState and WTFLogLevel enum classes"
2978         https://bugs.webkit.org/show_bug.cgi?id=195904
2979         https://trac.webkit.org/changeset/243132
2980
2981 2019-03-18  Alex Christensen  <achristensen@webkit.org>
2982
2983         Make WTFLogChannelState and WTFLogLevel enum classes
2984         https://bugs.webkit.org/show_bug.cgi?id=195904
2985
2986         Reviewed by Eric Carlson.
2987
2988         * wtf/Assertions.cpp:
2989         * wtf/Assertions.h:
2990         * wtf/Logger.h:
2991         (WTF::Logger::logAlways const):
2992         (WTF::Logger::error const):
2993         (WTF::Logger::warning const):
2994         (WTF::Logger::info const):
2995         (WTF::Logger::debug const):
2996         (WTF::Logger::willLog const):
2997         (WTF::Logger::log):
2998         * wtf/MemoryPressureHandler.cpp:
2999         * wtf/RefCountedLeakCounter.cpp:
3000
3001 2019-03-18  Darin Adler  <darin@apple.com>
3002
3003         Cut down on use of StringBuffer, possibly leading toward removing it entirely
3004         https://bugs.webkit.org/show_bug.cgi?id=195870
3005
3006         Reviewed by Daniel Bates.
3007
3008         * wtf/URL.cpp: Remove a now-inaccurate comment mentioning StringBuffer.
3009
3010         * wtf/text/StringView.cpp:
3011         (WTF::convertASCIICase): Use createUninitialized instead of StringBuffer.
3012
3013 2019-03-18  Xan Lopez  <xan@igalia.com>
3014
3015         [WTF] Remove redundant std::move in StringConcatenate
3016         https://bugs.webkit.org/show_bug.cgi?id=195798
3017
3018         Reviewed by Darin Adler.
3019
3020         Remove redundant calls to WTFMove in return values for this
3021         method. C++ will already do an implicit move here since we are
3022         returning a local value where copy/move elision is not applicable.
3023
3024         * wtf/text/StringConcatenate.h:
3025         (WTF::tryMakeStringFromAdapters):
3026
3027 2019-03-16  Darin Adler  <darin@apple.com>
3028
3029         Improve normalization code, including moving from unorm.h to unorm2.h
3030         https://bugs.webkit.org/show_bug.cgi?id=195330
3031
3032         Reviewed by Michael Catanzaro.
3033
3034         * wtf/URLHelpers.cpp: Removed unneeded include of unorm.h since the
3035         normalization code is now in StringView.cpp.
3036         (WTF::URLHelpers::escapeUnsafeCharacters): Renamed from
3037         createStringWithEscapedUnsafeCharacters since it now only creates
3038         a new string if one is needed. Use unsigned for string lengths, since
3039         that's what WTF::String uses, not size_t. Added a first loop so that
3040         we can return the string unmodified if no lookalike characters are
3041         found. Removed unnecessary round trip from UTF-16 and then back in
3042         the case where the character is not a lookalike.
3043         (WTF::URLHelpers::toNormalizationFormC): Deleted. Moved this logic
3044         into the WTF::normalizedNFC function in StringView.cpp.
3045         (WTF::URLHelpers::userVisibleURL): Call escapeUnsafeCharacters and
3046         normalizedNFC. The normalizedNFC function is better in multiple ways,
3047         but primarily it handles 8-bit strings and other already-normalized
3048         strings much more efficiently.
3049
3050         * wtf/text/StringView.cpp:
3051         (WTF::normalizedNFC): Added. This has two overloads. One is for when
3052         we already have a String, and want to re-use it if no normalization
3053         is needed, and another is when we only have a StringView, and may need
3054         to allocate a String to hold the result. Includes a fast special case
3055         for 8-bit and already-normalized strings, and uses the same strategy
3056         that JSC::normalize was already using: calls unorm2_normalize twice,
3057         first just to determine the length.
3058
3059         * wtf/text/StringView.h: Added normalizedNFC, which can be called with
3060         either a StringView or a String. Also moved StringViewWithUnderlyingString
3061         here from JSString.h, here for use as the return value of normalizedNFC;
3062         it is used for a similar purpose in the JavaScriptCore rope implementation.
3063         Also removed an inaccurate comment.
3064
3065 2019-03-16  Diego Pino Garcia  <dpino@igalia.com>
3066
3067         [GTK] [WPE] Fix compilation errors due to undefined ALWAYS_LOG_IF
3068         https://bugs.webkit.org/show_bug.cgi?id=195850
3069
3070         Unreviewed build fix after r243033. 
3071
3072         * wtf/LoggerHelper.h:
3073
3074 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
3075
3076         [iOS] Block the accessibility server when accessibility is not enabled.
3077         https://bugs.webkit.org/show_bug.cgi?id=195342
3078
3079         Reviewed by Brent Fulgham.
3080
3081         Add SPI to issue a mach extension to a process by pid. Also, add a macro for
3082         the availability of this SPI.
3083
3084         * wtf/Platform.h:
3085         * wtf/spi/darwin/SandboxSPI.h:
3086
3087 2019-03-15  Eric Carlson  <eric.carlson@apple.com>
3088
3089         Add media stream release logging
3090         https://bugs.webkit.org/show_bug.cgi?id=195823
3091
3092         Reviewed by Youenn Fablet.
3093
3094         * wtf/LoggerHelper.h: Add LOG_IF variants that check a condition before logging.
3095
3096 2019-03-15  Truitt Savell  <tsavell@apple.com>
3097
3098         Unreviewed, rolling out r243008.
3099
3100         This revision broke High Sierra builders
3101
3102         Reverted changeset:
3103
3104         "[iOS] Block the accessibility server when accessibility is
3105         not enabled."
3106         https://bugs.webkit.org/show_bug.cgi?id=195342
3107         https://trac.webkit.org/changeset/243008
3108
3109 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
3110
3111         [iOS] Block the accessibility server when accessibility is not enabled.
3112         https://bugs.webkit.org/show_bug.cgi?id=195342
3113
3114         Reviewed by Brent Fulgham.
3115
3116         Add SPI to issue a mach extension to a process by pid.
3117
3118         * wtf/spi/darwin/SandboxSPI.h:
3119
3120 2019-03-13  Sam Weinig  <sam@webkit.org>
3121
3122         Add utility function to allow easy reverse range-based iteration of a container
3123         https://bugs.webkit.org/show_bug.cgi?id=195542
3124
3125         Reviewed by Antti Koivisto.
3126
3127         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
3128         works with any container that is compatible with std::rbegin() and std::rend(). It is
3129         expected to be used in conjunction with range-based for-loops like so:
3130
3131         for (auto& value : WTF::makeReversedRange(myContainer)) 
3132             ...
3133
3134         * wtf/IteratorRange.h:
3135         (WTF::makeReversedRange):
3136
3137 2019-03-13  Keith Rollin  <krollin@apple.com>
3138
3139         Add support for new StagedFrameworks layout
3140         https://bugs.webkit.org/show_bug.cgi?id=195543
3141
3142         Reviewed by Alexey Proskuryakov.
3143
3144         Opportunistic cleanup: remove unused JAVASCRIPTCORE_FRAMEWORKS_DIR
3145         variable.
3146
3147         * Configurations/Base.xcconfig:
3148
3149 2019-03-13  Dominik Infuehr  <dinfuehr@igalia.com>
3150
3151         String overflow when using StringBuilder in JSC::createError
3152         https://bugs.webkit.org/show_bug.cgi?id=194957
3153
3154         Reviewed by Mark Lam.
3155
3156         When calculating the new capacity of a StringBuilder object,
3157         use a limit of MaxLength instead of MaxLength+1.  Allocating
3158         a string of size MaxLength+1 always fails. This means that expanding
3159         a StringBuilder only worked when the newly doubled capacity is less or
3160         equal to MaxLength.
3161
3162         * wtf/text/StringBuilder.cpp:
3163
3164 2019-03-13  Chris Dumez  <cdumez@apple.com>
3165
3166         Better build fix after r242901.
3167
3168         Reviewed by Jer Noble.
3169
3170         * wtf/Logger.h:
3171         (WTF::LogArgument::toString):
3172
3173 2019-03-13  Jer Noble  <jer.noble@apple.com>
3174
3175         Add AggregateLogger, a Logger specialization for singleton classes.
3176         https://bugs.webkit.org/show_bug.cgi?id=195644
3177
3178         Reviewed by Eric Carlson.
3179
3180         Add a new class, AggregateLogger, which will log messages to each of its aggregated loggers.
3181
3182         Drive-by fixes: allow "const void*" to be directly logged by converting the pointer to a hex string.
3183
3184         * WTF.xcodeproj/project.pbxproj:
3185         * wtf/AggregateLogger.h: Added.
3186         (WTF::AggregateLogger::create):
3187         (WTF::AggregateLogger::addLogger):
3188         (WTF::AggregateLogger::removeLogger):
3189         (WTF::AggregateLogger::logAlways const):
3190         (WTF::AggregateLogger::error const):
3191         (WTF::AggregateLogger::warning const):
3192         (WTF::AggregateLogger::info const):
3193         (WTF::AggregateLogger::debug const):
3194         (WTF::AggregateLogger::willLog const):
3195         (WTF::AggregateLogger::AggregateLogger):
3196         (WTF::AggregateLogger::log const):
3197         * wtf/CMakeLists.h:
3198         * wtf/Logger.cpp:
3199         (WTF::>::toString):
3200         * wtf/Logger.h:
3201
3202 2019-03-12  Commit Queue  <commit-queue@webkit.org>
3203
3204         Unreviewed, rolling out r242747.
3205         https://bugs.webkit.org/show_bug.cgi?id=195641
3206
3207         Performance measurement is difficult in this period, rolling
3208         out it and rolling in later to isolate it from the other
3209         sensitive patches (Requested by yusukesuzuki on #webkit).
3210
3211         Reverted changeset:
3212
3213         "[JSC] Make StaticStringImpl & StaticSymbolImpl actually
3214         static"
3215         https://bugs.webkit.org/show_bug.cgi?id=194212
3216         https://trac.webkit.org/changeset/242747
3217
3218 2019-03-12  Robin Morisset  <rmorisset@apple.com>
3219
3220         A lot more classes have padding that can be reduced by reordering their fields
3221         https://bugs.webkit.org/show_bug.cgi?id=195579
3222
3223         Reviewed by Mark Lam.
3224
3225         * wtf/CrossThreadQueue.h:
3226         * wtf/Logger.h:
3227         * wtf/MemoryPressureHandler.h:
3228         * wtf/MetaAllocator.h:
3229         * wtf/Threading.cpp:
3230
3231 2019-03-11  Alex Christensen  <achristensen@webkit.org>
3232
3233         WTF::Expected should use std::addressof instead of operator&
3234         https://bugs.webkit.org/show_bug.cgi?id=195604
3235
3236         Reviewed by Myles Maxfield.
3237
3238         The latter was causing problems with types that do tricky things with constructors and operator&,
3239         specifically UniqueRef but I made a reduced test case.  When it used operator&, it would get the contained
3240         type and call the constructor that takes a contained type instead of the move constructor.
3241
3242         * wtf/Expected.h:
3243         (std::experimental::fundamentals_v3::__expected_detail::base::base):
3244         (std::experimental::fundamentals_v3::expected::swap):
3245
3246 2019-03-11  Ross Kirsling  <ross.kirsling@sony.com>
3247
3248         Add Optional to Forward.h.
3249         https://bugs.webkit.org/show_bug.cgi?id=195586
3250
3251         Reviewed by Darin Adler.
3252
3253         * wtf/Forward.h:
3254         Add forward declaration for Optional.
3255
3256         * wtf/CPUTime.h:
3257         * wtf/Expected.h:
3258         * wtf/MainThread.h:
3259         * wtf/MemoryFootprint.h:
3260         * wtf/URLHelpers.cpp:
3261         * wtf/URLHelpers.h:
3262         * wtf/cocoa/CPUTimeCocoa.cpp:
3263         * wtf/fuchsia/CPUTimeFuchsia.cpp:
3264         * wtf/unix/CPUTimeUnix.cpp:
3265         * wtf/win/CPUTimeWin.cpp:
3266         Remove unnecessary includes from headers.
3267
3268 2019-03-11  Andy Estes  <aestes@apple.com>
3269
3270         [Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
3271         https://bugs.webkit.org/show_bug.cgi?id=195530
3272         <rdar://problem/48747164>
3273
3274         Reviewed by Alex Christensen.
3275
3276         * wtf/FeatureDefines.h: Defined ENABLE_APPLE_PAY_REMOTE_UI.
3277
3278 2019-03-11  Yusuke Suzuki  <ysuzuki@apple.com>
3279
3280         [JSC] Make StaticStringImpl & StaticSymbolImpl actually static
3281         https://bugs.webkit.org/show_bug.cgi?id=194212
3282
3283         Reviewed by Mark Lam.
3284
3285         Avoid mutation onto refcounts if `isStatic()` returns true so that the content of StaticStringImpl never gets modified.
3286
3287         * wtf/text/StringImpl.h:
3288         (WTF::StringImpl::ref):
3289         (WTF::StringImpl::deref):
3290
3291 2019-03-11  Sihui Liu  <sihui_liu@apple.com>
3292
3293         Crash under WebCore::IDBDatabase::connectionToServerLost
3294         https://bugs.webkit.org/show_bug.cgi?id=195563
3295         <rdar://problem/37193655>
3296
3297         CrossThreadTask should protect callee if it is ThreadSafeRefCounted.
3298
3299         Reviewed by Geoffrey Garen.
3300
3301         * wtf/CrossThreadTask.h:
3302         (WTF::createCrossThreadTask):
3303
3304 2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>
3305
3306         Unreviewed, rolling out r242688, r242643, r242624.
3307
3308         Caused multiple layout test failures and crashes on iOS and macOS.
3309
3310         Reverted changeset:
3311
3312         "requestAnimationFrame should execute before the next frame"
3313         https://bugs.webkit.org/show_bug.cgi?id=177484
3314         https://trac.webkit.org/changeset/242624/webkit
3315
3316         * wtf/SystemTracing.h:
3317
3318 2019-03-11  Darin Adler  <darin@apple.com>
3319
3320         Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior
3321         https://bugs.webkit.org/show_bug.cgi?id=195533
3322
3323         Reviewed by Brent Fulgham.
3324
3325         Soon, we will change String::number and StringBuilder::appendNumber for floating
3326         point to use "shortest form" serialization instead of the current default, which is
3327         "6-digit fixed precision stripping trailing zeros". To prepare to do this safely
3328         without accidentally changing any behavior, changing callers to call the explicit
3329         versions. Later, we may want to return and change many of them to use shortest form
3330         instead, but that may require rebaselining tests, and in some extreme cases, getting
3331         rid of flawed logic that converts between different single and double precision
3332         floating point; such problems may be hidden by fixed precision serialization.
3333
3334         Since "shortest form" is already the behavior for AtomicString::number and
3335         for makeString, no changes required for clients of either of those.
3336
3337         * wtf/Logger.h:
3338         (WTF::LogArgument::toString): Use numberToStringFixedPrecision.
3339         * wtf/MediaTime.cpp:
3340         (WTF::MediaTime::toString const): Use appendFixedPrecisionNumber.
3341         * wtf/text/ValueToString.h:
3342         (WTF::ValueToString<float>::string): Use numberToStringFixedPrecision.
3343         (WTF::ValueToString<double>::string): Ditto.
3344
3345 2019-03-11  Truitt Savell  <tsavell@apple.com>
3346
3347         Unreviewed, rolling out r242702.
3348
3349         Broke High Sierra builders.
3350
3351         Reverted changeset:
3352
3353         "Add utility function to allow easy reverse range-based
3354         iteration of a container"
3355         https://bugs.webkit.org/show_bug.cgi?id=195542
3356         https://trac.webkit.org/changeset/242702
3357
3358 2019-03-11  Sam Weinig  <sam@webkit.org>
3359
3360         Add utility function to allow easy reverse range-based iteration of a container
3361         https://bugs.webkit.org/show_bug.cgi?id=195542
3362
3363         Reviewed by Antti Koivisto.
3364
3365         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
3366         works with any container that is compatible with std::rbegin() and std::rend(). It is
3367         expected to be used in conjunction with range-based for-loops like so:
3368
3369         for (auto& value : WTF::makeReversedRange(myContainer)) 
3370             ...
3371
3372         * wtf/IteratorRange.h:
3373         (WTF::makeReversedRange):
3374
3375 2019-03-10  Yusuke Suzuki <utatane.tea@gmail.com> and Fujii Hironori  <Hironori.Fujii@sony.com>
3376
3377         [WTF] Align assumption in RunLoopWin to the other platform's RunLoop
3378         https://bugs.webkit.org/show_bug.cgi?id=181151
3379
3380         Reviewed by Don Olmstead.
3381
3382         This patch fixes RunLoop in Windows to align it to the implementations in the other platforms
3383         to use RunLoop more aggressively.
3384
3385         * wtf/RunLoop.h:
3386         (WTF::RunLoop::Timer::Timer):
3387         * wtf/win/MainThreadWin.cpp:
3388         (initializeMainThreadPlatform): Call RunLoop::registerRunLoopMessageWindowClass.
3389         * wtf/win/RunLoopWin.cpp:
3390         (WTF::RunLoop::wndProc):
3391         (WTF::RunLoop::iterate):
3392         (WTF::RunLoop::stop):
3393         PostQuitMessage is only available in the RunLoop's thread. We should post a message and call
3394         it inside this task.
3395
3396         (WTF::RunLoop::registerRunLoopMessageWindowClass):
3397         Changed the return type from bool to void, and added RELEASE_ASSERT to check the return value of RegisterClass.
3398
3399         (WTF::RunLoop::~RunLoop):
3400         When the RunLoop's thread is freed, its associated window is freed. We do not need to do here.
3401
3402         (WTF::RunLoop::TimerBase::timerFired):
3403         (WTF::RunLoop::TimerBase::TimerBase):
3404         (WTF::RunLoop::TimerBase::start):
3405         (WTF::RunLoop::TimerBase::stop):
3406         (WTF::RunLoop::TimerBase::isActive const):
3407         (WTF::RunLoop::TimerBase::secondsUntilFire const):
3408         (WTF::generateTimerID): Deleted.
3409         We can use TimerBase's pointer as ID since it is uintptr_t.
3410
3411 2019-03-07  Said Abou-Hallawa  <sabouhallawa@apple.com>
3412
3413         requestAnimationFrame should execute before the next frame
3414         https://bugs.webkit.org/show_bug.cgi?id=177484
3415
3416         Reviewed by Simon Fraser.
3417
3418         Add trace points for the page RenderingUpdate.
3419
3420         * wtf/SystemTracing.h:
3421
3422 2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>
3423
3424         [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
3425         https://bugs.webkit.org/show_bug.cgi?id=195346
3426
3427         Reviewed by Fujii Hironori.
3428
3429         * wtf/PlatformWin.cmake:
3430         * wtf/text/AtomicString.h:
3431         (WTF::AtomicString::AtomicString):
3432         * wtf/text/WTFString.h:
3433         (WTF::String::String):
3434         * wtf/text/win/StringWin.cpp: Added.
3435         (WTF::String::wideCharacters const): Renamed from WTF::stringToNullTerminatedWChar.
3436         * wtf/text/win/WCharStringExtras.h:
3437         (WTF::ucharFrom):
3438         (WTF::wcharFrom):
3439         (WTF::stringToNullTerminatedWChar): Deleted.
3440         (WTF::wcharToString): Deleted.
3441         (WTF::nullTerminatedWCharToString): Deleted.
3442         Add static_assert-guarded reinterpret_cast wrappers for going between UChar* and wchar_t*.
3443         Move existing to/from-String helpers into the String (and AtomicString) class(es).
3444
3445         * wtf/win/FileSystemWin.cpp:
3446         (WTF::FileSystemImpl::getFindData):
3447         (WTF::FileSystemImpl::getFinalPathName):
3448         (WTF::FileSystemImpl::createSymbolicLink):
3449         (WTF::FileSystemImpl::deleteFile):
3450         (WTF::FileSystemImpl::deleteEmptyDirectory):
3451         (WTF::FileSystemImpl::moveFile):
3452         (WTF::FileSystemImpl::pathByAppendingComponent):
3453         (WTF::FileSystemImpl::fileSystemRepresentation):
3454         (WTF::FileSystemImpl::makeAllDirectories):
3455         (WTF::FileSystemImpl::pathGetFileName):
3456         (WTF::FileSystemImpl::storageDirectory):
3457         (WTF::FileSystemImpl::generateTemporaryPath):
3458         (WTF::FileSystemImpl::openTemporaryFile):
3459         (WTF::FileSystemImpl::openFile):
3460         (WTF::FileSystemImpl::hardLinkOrCopyFile):
3461         (WTF::FileSystemImpl::deleteNonEmptyDirectory):
3462         * wtf/win/LanguageWin.cpp:
3463         (WTF::localeInfo):
3464         * wtf/win/PathWalker.cpp:
3465         (WTF::PathWalker::PathWalker):
3466         Use wchar helpers as needed.
3467
3468 2019-02-28  Ryosuke Niwa  <rniwa@webkit.org>
3469
3470         Add WeakHashSet
3471         https://bugs.webkit.org/show_bug.cgi?id=195152
3472
3473         Reviewed by Antti Koivisto.
3474
3475         Added WeakHashSet which is a HashSet of WeakPtr. When the object pointed by WeakPtr is deleted,
3476         WeakHashSet treats the key to be no longer in the set. That is, WeakHashSet::contains returns false
3477         and const_iterator skips such a WeakPtr in the set.
3478
3479         We decided not to make HashSet<WeahPtr<T>> work because it involves weird semantics such as making
3480         find(X) delete the table entry as remove(find(X)) would be a no-op otherwise as find(X) would return
3481         necessarily need to return HashSet<WeakPtr<T>>::end().
3482
3483         Furthermore, we cannot determine the true size of this set in O(1) because the objected pointed by
3484         some of WeakPtr in the set may have already been deleted. This has implications that we can't have
3485         size(), isEmpty(), random(), etc... as O(1) operation.
3486
3487         WeakHashSet is implemented as HashSet<WeakReference<T>>. HashTable::rehash has been updated to delete
3488         WeakReference<T>'s whose m_ptr has become null, and HashTable::expand first deletes any such entry
3489         before deciding an actual expansion is needed. This is accomplished via newly added hash trait,
3490         hasIsReleasedWeakValueFunction, and HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue which
3491         returns true for when WeakReference<T> pointed by Ref<WeakReference<T>> has null m_ptr, not to be
3492         confused with Ref<WeakReference<T>> itself pointing to a null WeakReference<T>.
3493
3494         * WTF.xcodeproj/project.pbxproj:
3495         * wtf/CMakeLists.txt:
3496         * wtf/Forward.h:
3497         * wtf/HashSet.h:
3498         (WTF::HashSet<T, U, V>::checkConsistency const): Added.
3499         * wtf/HashTable.h:
3500         (WTF::HashTable::isReleasedWeakBucket): Added.
3501         (WTF::HashTable::expand): Delete WeakReference<T> with null m_ptr first. This updates m_keyCount
3502         and may make mustRehashInPlace() return true.
3503         (WTF::HashTable::deleteReleasedWeakBuckets): Added.
3504         (WTF::HashTable::rehash): Delete WeakReference<T> with null m_ptr. Also refactored the code a bit
3505         to avoid keep repeating oldTable[i].
3506         * wtf/HashTraits.h:
3507         (WTF::HashTraits<T>::isHashTraitsReleasedWeakValue): Added.
3508         (WTF::RefHashTraits<T>): Extracted from HashTraits<Ref<P>> to share code with
3509         HashTraits<Ref<WeakReference<T>>>.
3510         (WTF::HashTraitsReleasedWeakValueChecker<Traits, hasIsReleasedWeakValueFunction>): Added.
3511         (WTF::isHashTraitsReleasedWeakValue<Traits, hasIsReleasedWeakValueFunction>): Added.
3512         * wtf/WeakHashSet.h: Added.
3513         (WTF::WeakHashSet): Added.
3514         (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator):
3515         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
3516         (WTF::WeakHashSet::WeakHashSetConstIterator::operator* const):
3517         (WTF::WeakHashSet::WeakHashSetConstIterator::operator-> const):
3518         (WTF::WeakHashSet::WeakHashSetConstIterator::operator++):
3519         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
3520         (WTF::WeakHashSet::WeakHashSetConstIterator::operator== const):
3521         (WTF::WeakHashSet::WeakHashSetConstIterator::operator!= const):
3522         (WTF::WeakHashSet::WeakHashSet):
3523         (WTF::WeakHashSet::begin const):
3524         (WTF::WeakHashSet::end const):
3525         (WTF::WeakHashSet::add):
3526         (WTF::WeakHashSet::remove):
3527         (WTF::WeakHashSet::contains const):
3528         (WTF::WeakHashSet::capacity const):
3529         (WTF::WeakHashSet::computeSize const): Deletes any WeakReference<T> with null m_ptr first.
3530         (WTF::WeakHashSet::checkConsistency const):
3531         (WTF::HashTraits<Ref<WeakReference<T>>>): Added. This hash traits triggers the new code in HashTable's
3532         expand and rehash methods to delete WeakReference<T> with null m_ptr.
3533         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue):
3534         * wtf/WeakPtr.h:
3535         (WTF::WeakReference::~WeakReference): Added so that we can keep track the number of live WeakReference
3536         in API tests by template specializations.
3537
3538 2019-03-03  Darin Adler  <darin@apple.com>
3539
3540         Prepare to improve handling of conversion of float to strings
3541         https://bugs.webkit.org/show_bug.cgi?id=195262
3542
3543         Reviewed by Daniel Bates.
3544
3545         * wtf/dtoa.cpp:
3546         (WTF::truncateTrailingZeros): Renamed from
3547         formatStringTruncatingTrailingZerosIfNeeded and removed the calls
3548         to double_conversion::StringBuilder::Finalizer, since the caller
3549         already does that.
3550         (WTF::numberToFixedPrecisionString): Added an overload for float
3551         and updated to use the new truncateTrailingZeros.
3552         (WTF::numberToFixedWidthString): Added an overload for float.
3553
3554         * wtf/text/AtomicString.cpp:
3555         (WTF::AtomicString::number): Added float overload. This is a
3556         behavior change, but in all cases for the better. The old behavior
3557         was to convert to double first and then do "shortest form"
3558         conversion, and it's always better to just do that as float.
3559         * wtf/text/AtomicString.h: Added float overload of AtomicString::number.
3560
3561         * wtf/text/StringBuilder.cpp:
3562         (WTF::StringBuilder::appendFixedPrecisionNumber): Added float
3563         overload.
3564         (WTF::StringBuilder::appendShortestFormNumber): Renamed from
3565         appendECMAScriptNumber and did the above.
3566         (WTF::StringBuilder::appendFixedWidthNumber): Ditto.
3567         * wtf/text/StringBuilder.h: Added overloads for float and
3568         appendShortestFormNumber. The appendNumber and appendECMAScriptNumber
3569         functions are now inlines in the header, since they are expressed
3570         entirely in terms of the other functions.
3571
3572         * wtf/text/WTFString.cpp:
3573         (WTF::String::numberToStringFixedPrecision): Added float overload.
3574         Removed unnecessary explicit conversion to String.
3575         (WTF::String::numberToStringShortest): Renamed from
3576         numberToStringECMAScript and did the above.
3577         (WTF::String::numberToStringFixedWidth): Ditto.
3578
3579         * wtf/text/WTFString.h: Added overloads for float and
3580         numberToStringShortest. The number and numberToStringECMAScript
3581         functions are now inlines in the header, since they are expressed
3582         entirely in terms of the other functions.
3583
3584 2019-03-04  Andy Estes  <aestes@apple.com>
3585
3586         [Apple Pay] Move WebPaymentCoordinatorProxy from Source/WebKit/UIProcess to Source/WebKit/Shared
3587         https://bugs.webkit.org/show_bug.cgi?id=195080
3588         <rdar://problem/48421558>
3589
3590         Reviewed by Antti Koivisto.
3591
3592         * wtf/FeatureDefines.h:
3593
3594 2019-03-04  Michael Catanzaro  <mcatanzaro@igalia.com>
3595
3596         URLHelpers should use unorm2_quickCheck before converting to NFC
3597         https://bugs.webkit.org/show_bug.cgi?id=194272
3598
3599         Reviewed by Darin Adler.
3600
3601         If the string is already in normalization form C, don't try to normalize it.
3602
3603         * wtf/URLHelpers.cpp:
3604         (WTF::URLHelpers::toNormalizationFormC):
3605
3606 2019-03-02  Darin Adler  <darin@apple.com>
3607
3608         Retire legacy dtoa function and DecimalNumber class
3609         https://bugs.webkit.org/show_bug.cgi?id=195253
3610
3611         Reviewed by Daniel Bates.
3612
3613         * WTF.xcodeproj/project.pbxproj: Removed DecimalNumber.cpp/h.
3614         * wtf/CMakeLists.txt: Ditto.
3615
3616         * wtf/DecimalNumber.cpp: Removed.
3617         * wtf/DecimalNumber.h: Removed.
3618
3619         * wtf/JSONValues.cpp:
3620         (WTF::JSONImpl::Value::writeJSON const): Use
3621         StringBuilder::appendECMAScriptNumber instead of custom logic
3622         using the DecimalNumber class.
3623
3624         * wtf/dtoa.cpp:
3625         (WTF::storeInc): Deleted.
3626         (WTF::BigInt): Deleted.
3627         (WTF::multadd): Deleted.
3628         (WTF::hi0bits): Deleted.
3629         (WTF::lo0bits): Deleted.
3630         (WTF::i2b): Deleted.
3631         (WTF::mult): Deleted.
3632         (WTF::P5Node::P5Node): Deleted.