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