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