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