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