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