97fa4e21f98edd602fc2099fc62150549db18811
[WebKit-https.git] / Source / WTF / ChangeLog
1 2020-01-27  Jonathan Bedard  <jbedard@apple.com>
2
3         WebCore: Remove iOS 11 macros from RenderThemeIOS.mm
4         https://bugs.webkit.org/show_bug.cgi?id=206787
5
6         Reviewed by Darin Adler.
7
8         * wtf/PlatformHave.h: Add HAVE(SYSTEM_FONT_STYLE_TITLE_0) and HAVE(SYSTEM_FONT_STYLE_TITLE_4).
9
10 2020-01-27  Jonathan Bedard  <jbedard@apple.com>
11
12         Fix OpenSource iphoneos arm64e build
13         https://bugs.webkit.org/show_bug.cgi?id=206703
14
15         Reviewed by Yusuke Suzuki.
16
17         * wtf/PlatformUse.h: Add USE(DARWIN_REGISTER_MACROS) check.
18
19 2020-01-27  Ryan Haddad  <ryanhaddad@apple.com>
20
21         Unreviewed, rolling out r255159.
22
23         Broke the watchOS build.
24
25         Reverted changeset:
26
27         "Fix OpenSource iphoneos arm64e build"
28         https://bugs.webkit.org/show_bug.cgi?id=206703
29         https://trac.webkit.org/changeset/255159
30
31 2020-01-27  Jonathan Bedard  <jbedard@apple.com>
32
33         Fix OpenSource iphoneos arm64e build
34         https://bugs.webkit.org/show_bug.cgi?id=206703
35
36         Reviewed by Yusuke Suzuki.
37
38         * wtf/PlatformUse.h: Add USE(DARWIN_REGISTER_MACROS) check.
39
40 2020-01-27  Mark Lam  <mark.lam@apple.com>
41
42         Make getVTablePointer() an inline function to be compliant with WebKit style guidelines.
43         https://bugs.webkit.org/show_bug.cgi?id=206816
44
45         Reviewed by Darin Adler.
46
47         Convert getVTablePointer() from a macro into an inline template function.  This
48         makes the naming compliant with WebKit style guidelines.
49
50         * wtf/PointerPreparations.h:
51         (WTF::getVTablePointer):
52
53 2020-01-25  Brady Eidson  <beidson@apple.com>
54
55         Make ContentWorlds be identified by an ObjectIdentifier instead of a uint64_t
56         https://bugs.webkit.org/show_bug.cgi?id=206784
57
58         Reviewed by Alex Christensen.
59
60         * wtf/ObjectIdentifier.h:
61         (WTF::ObjectIdentifier::generate):
62         (WTF::ObjectIdentifier::generateThreadSafe):
63         (WTF::ObjectIdentifier::enableGenerationProtection): To allow restricting generating an identifier to the UIProcess.
64
65 2020-01-25  Mark Lam  <mark.lam@apple.com>
66
67         Introduce a getVTablePointer() utility function.
68         https://bugs.webkit.org/show_bug.cgi?id=206804
69         <rdar://problem/58872290>
70
71         Reviewed by Yusuke Suzuki and Oliver Hunt.
72
73         With getVTablePointer(), we can abstract away how we get a vtable function pointer
74         without assuming the way it is signed for ARM64E.  With this, we can remove the
75         WTF_PREPARE_VTBL_POINTER_FOR_INSPECTION macro which assumes how a vtable function
76         pointer is signed.
77
78         * wtf/PointerPreparations.h:
79
80 2020-01-25  Mark Lam  <mark.lam@apple.com>
81
82         Add some tests for dynamically allocated StaticStringImpls.
83         https://bugs.webkit.org/show_bug.cgi?id=206802
84
85         Reviewed by Darin Adler.
86
87         Removed some unnecessary explicit specialization of the charactersAreAllASCII()
88         template function.
89
90         * wtf/text/StringImpl.cpp:
91         (WTF::StringImpl::createFromLiteral):
92         (WTF::StringImpl::createStaticStringImpl):
93
94 2020-01-24  Mark Lam  <mark.lam@apple.com>
95
96         Move singleton Intl string locales out of JSGlobalObject.
97         https://bugs.webkit.org/show_bug.cgi?id=206791
98         <rdar://problem/58889037>
99
100         Reviewed by Yusuke Suzuki.
101
102         Fix a bug in StringImpl::createStaticStringImpl(): I forgot to set its hash value
103         when I introduced it.  StaticStringImpls require that its hash code be set ahead
104         of time, and cannot be mutated at runtime.  See the comment in the definition of
105         StaticStringImpl in StringImpl.h.
106
107         * wtf/text/StringImpl.cpp:
108         (WTF::StringImpl::createStaticStringImpl):
109
110 2020-01-24  Mark Lam  <mark.lam@apple.com>
111
112         IntlObject's cached strings should be immortal and safe for concurrent access.
113         https://bugs.webkit.org/show_bug.cgi?id=206779
114         <rdar://problem/58831763>
115
116         Reviewed by Yusuke Suzuki.
117
118         Add a factory for creating a dynamically allocated StaticStringImpl.
119
120         Note: StaticStringImpl is guaranteed to have the same shape as StringImpl.
121         The only difference is that s_refCountFlagIsStaticString is set on the refCount
122         for StaticStringImpl.  Since the client will use the StaticStringImpl as a
123         StringImpl, we implement the factory by using StringImpl::createInternal() for
124         simplicity, and set the s_refCountFlagIsStaticString flag thereafter.
125
126         * wtf/text/StringImpl.cpp:
127         (WTF::StringImpl::createStaticStringImpl):
128         * wtf/text/StringImpl.h:
129
130 2020-01-24  Keith Rollin  <krollin@apple.com>
131
132         Fix internal Apple builds after r254411
133         https://bugs.webkit.org/show_bug.cgi?id=206723
134         <rdar://problem/58844735>
135
136         Reviewed by Maciej Stachowiak.
137
138         The default Xcode build configuration has changed between macOS 10.13
139         and macOS 10.15, such that references to some frameworks when bulding
140         for the latter don't work when building for the former. Fix this by
141         explicitly adding support for the desired build location rather than
142         assuming such support will be provided for us.
143
144         * Configurations/WTF.xcconfig:
145
146 2020-01-24  Jonathan Bedard  <jbedard@apple.com>
147
148         WTF: Remove old iOS version macros
149         https://bugs.webkit.org/show_bug.cgi?id=206634
150         <rdar://problem/58818561>
151
152         Reviewed by Darin Adler.
153
154         * wtf/PlatformEnable.h: Remove iOS 12 version macro.
155         * wtf/PlatformHave.h: Ditto.
156         * wtf/PlatformUse.h: Ditto.
157
158 2020-01-22  Darin Adler  <darin@apple.com>
159
160         Remove some unneeded definitions from Platform.h family headers
161         https://bugs.webkit.org/show_bug.cgi?id=206642
162
163         Reviewed by Eric Carlson.
164
165         * wtf/PlatformEnable.h:
166         Removed ENABLE_RESPECT_EXIF_ORIENTATION because it was unused.
167
168         * wtf/PlatformHave.h:
169         Removed HAVE_PASSKIT_API_TYPE because it is now unused.
170         Removed HAVE_MERGESORT because it was unused.
171         Removed HAVE_AVFOUNDATION_VIDEO_OUTPUT because it is now unused.
172         Removed HAVE_AVFOUNDATION_MEDIA_SELECTION_GROUP because it is now unused.
173         Removed HAVE_CFNETWORK_WITH_CONTENT_ENCODING_SNIFFING_OVERRIDE because it was unused.
174
175         * wtf/PlatformUse.h:
176         Removed USE_ARENA_ALLOC_ALIGNMENT_INTEGER because it was unused.
177         Removed USE_NETWORK_CFDATA_ARRAY_CALLBACK because it is now unused.
178
179 2020-01-22  Eric Carlson  <eric.carlson@apple.com>
180
181         uniqueLogIdentifier() should generate a unique identifiers
182         https://bugs.webkit.org/show_bug.cgi?id=206612
183
184         Reviewed by Brent Fulgham.
185
186         * wtf/LoggerHelper.h:
187         (WTF::LoggerHelper::uniqueLogIdentifier):
188
189 2020-01-22  Sam Weinig  <weinig@apple.com>
190
191         Remove unused enable macro ENABLE_JIT_CONSTANT_BLINDING
192         https://bugs.webkit.org/show_bug.cgi?id=206415
193
194         Reviewed by Anders Carlsson.
195
196         * wtf/PlatformEnable.h:
197         ENABLE_JIT_CONSTANT_BLINDING is not used anywhere in WebKit so can be removed.
198
199 2020-01-22  Yusuke Suzuki  <ysuzuki@apple.com>
200
201         [JSC] DateMath should accept more ISO-8601 timezone designators even if they are not included in ECMA262 to produce expected results in the wild code
202         https://bugs.webkit.org/show_bug.cgi?id=160287
203
204         Reviewed by Ross Kirsling.
205
206         While ECMA262[1] always requires ":" in a timezone designator between hours and minutes (like, "hh:mm"),
207         ISO-8601 can accept additional forms, "+hh" and "+hhmm". This patch relaxes our Date parsing to accept this
208         type of timezone designators so that we can accept wider forms of date time formats. This addition does not
209         break the existing parsing rules since '+-' prefix can clarify that following sequences are timezones.
210
211         [1]: https://tc39.es/ecma262/#sec-date-time-string-format
212         [2]: https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
213
214         * wtf/DateMath.cpp:
215         (WTF::parseES5TimePortion):
216         (WTF::parseES5DateFromNullTerminatedCharacters):
217
218 2020-01-21  Ross Kirsling  <ross.kirsling@sony.com>
219
220         [JSC] Date parse logic should be less redundant
221         https://bugs.webkit.org/show_bug.cgi?id=206560
222
223         Reviewed by Darin Adler.
224
225         * wtf/DateMath.cpp:
226         (WTF::parseDateFromNullTerminatedCharacters):
227         * wtf/DateMath.h:
228         Align function signature with parseES5DateFromNullTerminatedCharacters.
229         Namely, drop the integer out param and flip the boolean one.
230
231 2020-01-21  Yusuke Suzuki  <ysuzuki@apple.com>
232
233         [WTF] AtomStringTable should be small
234         https://bugs.webkit.org/show_bug.cgi?id=206400
235
236         Reviewed by Sam Weinig.
237
238         AtomStringTable is the largest hashtable typically. It takes more
239         than 256KB per WebProcess (sometimes, it took 1MB or more).
240         This patch leverages PackedPtr to compact it from 8 bytes per entry
241         to 6 bytes per entry.
242
243         While this is still large, we should investigate how to compact C++
244         pointers in 4 bytes[1] to shrink memory footprint, since WebKit
245         memory is used by Vector and HashTable fulfilled with pointers.
246
247         [1]: https://bugs.webkit.org/show_bug.cgi?id=206469
248
249         * wtf/DumbPtrTraits.h:
250         (WTF::DumbPtrTraits::hashTableDeletedValue):
251         (WTF::DumbPtrTraits::isHashTableDeletedValue):
252         * wtf/Forward.h:
253         * wtf/HashTraits.h:
254         * wtf/Packed.h:
255         (WTF::Packed<T::Packed):
256         (WTF::Packed<T::isHashTableDeletedValue const):
257         (WTF::GetPtrHelper<PackedPtr<T>>::getPtr):
258         (WTF::PackedPtrTraits::hashTableDeletedValue):
259         (WTF::PackedPtrTraits::isHashTableDeletedValue):
260         (WTF::alignof): Deleted.
261         * wtf/Ref.h:
262         (WTF::Ref::Ref):
263         (WTF::Ref::isHashTableDeletedValue const):
264         (WTF::Ref::hashTableDeletedValue): Deleted.
265         * wtf/RefPtr.h:
266         (WTF::RefPtr::RefPtr):
267         (WTF::RefPtr::isHashTableDeletedValue const):
268         (WTF::RefPtr::hashTableDeletedValue): Deleted.
269         * wtf/text/AtomStringImpl.cpp:
270         (WTF::addToStringTable):
271         (WTF::CStringTranslator::equal):
272         (WTF::CStringTranslator::translate):
273         (WTF::UCharBufferTranslator::equal):
274         (WTF::UCharBufferTranslator::translate):
275         (WTF::HashAndUTF8CharactersTranslator::equal):
276         (WTF::HashAndUTF8CharactersTranslator::translate):
277         (WTF::SubstringTranslator::translate):
278         (WTF::SubstringTranslator8::equal):
279         (WTF::SubstringTranslator16::equal):
280         (WTF::LCharBufferTranslator::equal):
281         (WTF::LCharBufferTranslator::translate):
282         (WTF::BufferFromStaticDataTranslator::equal):
283         (WTF::BufferFromStaticDataTranslator::translate):
284         (WTF::AtomStringImpl::addSlowCase):
285         (WTF::AtomStringImpl::remove):
286         (WTF::AtomStringImpl::lookUpSlowCase):
287         (WTF::AtomStringImpl::lookUp):
288         * wtf/text/AtomStringTable.cpp:
289         (WTF::AtomStringTable::~AtomStringTable):
290         * wtf/text/AtomStringTable.h:
291         (WTF::AtomStringTable::table):
292         (): Deleted.
293         * wtf/text/StringHash.h:
294         (WTF::StringHash::hash):
295         (WTF::StringHash::equal):
296         (WTF::ASCIICaseInsensitiveHash::hash):
297         (WTF::ASCIICaseInsensitiveHash::equal):
298         * wtf/text/StringImpl.h:
299
300 2020-01-17  Sam Weinig  <weinig@apple.com>
301
302         Platform.h is out of control Part 8: Macros are used inconsistently
303         https://bugs.webkit.org/show_bug.cgi?id=206425
304
305         Reviewed by Darin Adler.
306
307         Start addressing FIXMEs added to Platform.h (and helper files) during previous
308         cleanup work.
309         
310         - Renames WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH,
311           making it available via new macro OS_CONSTANT(...), and syncs bmalloc redefinition.
312         - Renames:
313              USE_LLINT_EMBEDDED_OPCODE_ID to ENABLE_LLINT_EMBEDDED_OPCODE_ID
314              USE_UDIS86 to ENABLE_UDIS86 
315              USE_ARM64_DISASSEMBLER to ENABLE_ARM64_DISASSEMBLER
316           Enable is more appropriate here as these enable functionality within webkit.
317         - Removes undefs that are no longer needed due to only defining the macro once now.
318         - Removes dead defined(__LP64__) check after PLATFORM(MAC) macOS is always 64-bit these
319           days.
320
321         * wtf/Packed.h:
322         (WTF::alignof):
323         * wtf/Platform.h:
324         * wtf/PlatformEnable.h:
325         * wtf/PlatformOS.h:
326         * wtf/WTFAssertions.cpp:
327         * wtf/text/StringCommon.h:
328
329 2020-01-20  David Kilzer  <ddkilzer@apple.com>
330
331         Fix missing header guards and clean up empty files in bmalloc, WTF, JavaScriptCore
332         <https://webkit.org/b/206481>
333
334         Reviewed by Darin Adler.
335
336         * wtf/cocoa/Entitlements.h:
337         * wtf/win/PathWalker.h:
338         - Add #pragma once.
339
340 2020-01-19  Claudio Saavedra  <csaavedra@igalia.com>
341
342         [GTK] Remove usage of deprecated GTimeVal
343         https://bugs.webkit.org/show_bug.cgi?id=206358
344
345         Reviewed by Žan Doberšek.
346
347         Use g_get_real_time() directly instead of deprecated and unsafe API.
348
349         * wtf/CurrentTime.cpp:
350         (WTF::currentTime):
351
352 2020-01-16  Keith Miller  <keith_miller@apple.com>
353
354         Reland bytecode checkpoints since bugs have been fixed
355         https://bugs.webkit.org/show_bug.cgi?id=206361
356
357         Unreviewed, reland.
358
359         The watch bugs have been fixed by https://trac.webkit.org/changeset/254674
360
361         * WTF.xcodeproj/project.pbxproj:
362         * wtf/Bitmap.h:
363         (WTF::WordType>::invert):
364         (WTF::WordType>::operator):
365         (WTF::WordType>::operator const const):
366         * wtf/CMakeLists.txt:
367         * wtf/EnumClassOperatorOverloads.h: Added.
368         * wtf/FastBitVector.h:
369         (WTF::FastBitReference::operator bool const):
370         (WTF::FastBitReference::operator|=):
371         (WTF::FastBitReference::operator&=):
372         (WTF::FastBitVector::fill):
373         (WTF::FastBitVector::grow):
374         * wtf/UnalignedAccess.h:
375         (WTF::unalignedLoad):
376         (WTF::unalignedStore):
377
378 2020-01-16  Tim Horton  <timothy_horton@apple.com>
379
380         Fix the build after r254701
381         <rdar://problem/58667355>
382
383         * wtf/Platform.h:
384         * wtf/PlatformEnable.h:
385         AdditionalFeatureDefines has to come first.
386
387 2020-01-16  Sam Weinig  <weinig@apple.com>
388
389         Platform.h is out of control Part 7: Split calling convention macro definitions out of Platform.h and into a new PlatformCallingConventions.h
390         https://bugs.webkit.org/show_bug.cgi?id=206377
391
392         Reviewed by Anders Carlsson.
393
394         As a another step towards cleaning up Platform.h, split out all the calling convention
395         macros into their own file.
396
397         * WTF.xcodeproj/project.pbxproj:
398         * wtf/CMakeLists.txt:
399         Add new header.
400
401         * wtf/Platform.h:
402         * wtf/PlatformCPU.h:
403         * wtf/PlatformEnable.h:
404         * wtf/PlatformHave.h:
405         * wtf/PlatformLegacy.h:
406         * wtf/PlatformOS.h:
407         * wtf/PlatformUse.h:
408         Unify indirect inclusion guard.
409
410         * wtf/PlatformCallingConventions.h: Copied from Source/WTF/wtf/Platform.h.
411
412 2020-01-16  Robin Morisset  <rmorisset@apple.com>
413
414         Use dataLogIf more regularly
415         https://bugs.webkit.org/show_bug.cgi?id=206332
416
417         Reviewed by Keith Miller.
418
419         * wtf/DataLog.h:
420         (WTF::dataLog): Marked NEVER_INLINE, since it should never be perf-sensitive
421
422
423 2020-01-16  Sam Weinig  <weinig@apple.com>
424
425         Platform.h is out of control Part 6: Split USE_* macro definitions out of Platform.h and into a new PlatformUse.h
426         https://bugs.webkit.org/show_bug.cgi?id=206354
427
428         Reviewed by Dan Bernstein.
429
430         As a another step towards cleaning up Platform.h, split out all the legacy platform
431         macros into their own file.
432
433         * WTF.xcodeproj/project.pbxproj:
434         * wtf/CMakeLists.txt:
435         Add new file.
436
437         * wtf/Platform.h: In addition to removing all the USE_* macros, consolidate
438         all the sub-includes at the top.
439
440         * wtf/PlatformEnable.h: Moved ASSERT_ENABLED here from Platform.h, 
441         as it makes more sense here. Eventually should be renamed ro ENABLE_ASSERT 
442         for consistency.
443
444         * wtf/PlatformUse.h: Copied from Source/WTF/wtf/Platform.h.
445
446 2020-01-16  Per Arne Vollan  <pvollan@apple.com>
447
448         [Win] Fix AppleWin build
449         https://bugs.webkit.org/show_bug.cgi?id=206299
450
451         Reviewed by Brent Fulgham.
452
453         Build internal builds with VS2019.
454
455         * WTF.vcxproj/WTF.proj:
456
457 2020-01-15  Sam Weinig  <weinig@apple.com>
458
459         Platform.h is out of control Part 5: Split HAVE_* macro definitions out of Platform.h and into a new PlatformHave.h
460         https://bugs.webkit.org/show_bug.cgi?id=206307
461
462         Reviewed by Anders Carlsson.
463
464         * WTF.xcodeproj/project.pbxproj:
465         * wtf/CMakeLists.txt:
466         * wtf/Platform.h:
467         * wtf/PlatformHave.h: Copied from Source/WTF/wtf/Platform.h.
468
469 2020-01-15  Keith Miller  <keith_miller@apple.com>
470
471         Revert bytecode checkpoints since it breaks watch
472         https://bugs.webkit.org/show_bug.cgi?id=206301
473
474         Unreviewed, revert.
475
476 2020-01-14  Sam Weinig  <weinig@apple.com>
477
478         Platform.h is out of control Part 4: Split PLATFORM_* macro definitions out of Platform.h and into a new PlatformLegacy.h
479         https://bugs.webkit.org/show_bug.cgi?id=206272
480
481         Reviewed by Anders Carlsson.
482
483         As a another step towards cleaning up Platform.h, split out all the legacy platform
484         macros into their own file.
485
486         * WTF.xcodeproj/project.pbxproj:
487         * wtf/CMakeLists.txt:
488         * wtf/Platform.h:
489         * wtf/PlatformLegacy.h: Copied from Source/WTF/wtf/Platform.h.
490
491 2020-01-14  Sam Weinig  <weinig@apple.com>
492
493         Plaform.h helper files should have a consistent naming scheme
494         https://bugs.webkit.org/show_bug.cgi?id=206240
495
496         Reviewed by Dean Jackson.
497
498         Rename Plaform.h helper files to use the prefix "Platform" consistently.
499
500         * WTF.xcodeproj/project.pbxproj:
501         * wtf/CMakeLists.txt:
502         * wtf/CPU.h: Removed.
503         * wtf/FeatureDefines.h: Removed.
504         * wtf/OS.h: Removed.
505         * wtf/Platform.h:
506         * wtf/PlatformCPU.h: Copied from Source/WTF/wtf/CPU.h.
507         * wtf/PlatformEnable.h: Copied from Source/WTF/wtf/FeatureDefines.h.
508         * wtf/PlatformOS.h: Copied from Source/WTF/wtf/OS.h.
509
510 2020-01-14  Myles C. Maxfield  <mmaxfield@apple.com>
511
512         [Cocoa] Glyph lookup should be language-sensitive (specifically between Yiddish and Hebrew)
513         https://bugs.webkit.org/show_bug.cgi?id=77568
514         <rdar://problem/14649193>
515
516         Reviewed by Simon Fraser.
517
518         * wtf/Platform.h:
519
520 2020-01-13  Darin Adler  <darin@apple.com>
521
522         Use even more "shortest form" formatting, and less "fixed precision" and "fixed width"
523         https://bugs.webkit.org/show_bug.cgi?id=198918
524
525         Reviewed by Sam Weinig.
526
527         * wtf/Logger.h:
528         (WTF::LogArgument::toString): Log floating point numbers as shortest form instead of fixed precision.
529
530         * wtf/MediaTime.cpp:
531         (WTF::MediaTime::toString const): Convert time to string as shortest form instead of fixed precision.
532         Also use multiple-argument append for great simplicity and clarity.
533
534 2020-01-14  Alicia Boya García  <aboya@igalia.com>
535
536         [WTF] Make MediaTime constructor constexpr
537         https://bugs.webkit.org/show_bug.cgi?id=206036
538
539         Reviewed by Adrian Perez de Castro.
540
541         https://bugs.webkit.org/show_bug.cgi?id=205723 allowed to declare
542         MediaTime variables as static inside functions without needing a
543         global destructor.
544
545         It did not eliminate the call to the MediaTime constructor on runtime
546         though. This wasn't a problem for static variables inside functions,
547         as the compiler adds a guard variable to call the constructor the
548         first time the function is called.
549
550         On the other hand, for variables defined outside of the scope of the
551         function, for them to be initialized the MediaTime constructor would
552         have to be called at runtime from a global constructor, something
553         we're trying to avoid and which generates an error in clang.
554
555         But again, MediaTime is a simple class with only integral values, we
556         shouldn't need a runtime function call to initialize it!
557
558         This patch makes the MediaTime constructor constexpr so that we don't
559         need runtime initialization for static MediaTime variables. This
560         allows us to declare them outside functions and enables the compiler
561         to generate code without guard variables when static MediaTime
562         variables are declared inside functions.
563
564         A test has been added accessing a global const static MediaTime. The
565         build should not produce any error stating the need for a global
566         constructor.
567
568         * wtf/MediaTime.cpp:
569         * wtf/MediaTime.h:
570         (WTF::MediaTime::MediaTime):
571
572 2020-01-14  David Kilzer  <ddkilzer@apple.com>
573
574         Enable -Wconditional-uninitialized in bmalloc, WTF, JavaScriptCore
575         <https://webkit.org/b/206190>
576         <rdar://problem/58540387>
577
578         Reviewed by Mark Lam.
579
580         * Configurations/Base.xcconfig:
581         (WARNING_CFLAGS): Add -Wconditional-uninitialized.
582
583 2020-01-13  Sam Weinig  <weinig@apple.com>
584
585         Platform.h is out of control Part 3: Move all ENABLE_* macros definitions in FeatureDefines.h
586         https://bugs.webkit.org/show_bug.cgi?id=206139
587
588         Reviewed by Anders Carlsson.
589
590         - Moves all remaining ENABLE_* defines out of Platform.h and into FeatureDefines.h
591         - Moves most, USE_UDIS86 and USE_ARM64_DISASSEMBLER are tangled up in the JIT definitions
592           still, HAVE_* and USE_* defines out of FeatureDefines.h and into Platform.h
593         - Where straigthforward, convert macro definitions into a canonical 3 line entry of the 
594           form:
595           
596               #if !defined(MACRO_NAME) && (<CONDITIONS HERE>)
597               #define MACRO_NAME 1
598               #endif
599
600           There is rarely (if ever) a resone to undefine or define one of these platform related
601           macros to 0 as the usage macros (e.g. HAVE(...), ENABLE(...), etc.) handle undefined as 0.
602         - Added a guard so that FeatureDefines.h can't be included directly, and must be included via
603           Platform.h. This is necessary as it depends heavily on macros defined in Platform.h
604         - Added numerous FIXMEs detailing follow up cleaning.
605
606         * wtf/FeatureDefines.h:
607         * wtf/Platform.h:
608
609 2020-01-12  Sam Weinig  <weinig@apple.com>
610
611         Platform.h is out of control Part 2: Split WTF_OS_* macro definitions out of Platform.h and into a new OS.h
612         https://bugs.webkit.org/show_bug.cgi?id=206138
613
614         Reviewed by Anders Carlsson.
615
616         As a another step towards cleaning up Platform.h, split out OS related
617         macros into their own file.
618
619         * WTF.xcodeproj/project.pbxproj:
620         * wtf/CMakeLists.txt:
621         * wtf/OS.h: Copied from Source/WTF/wtf/Platform.h.
622         * wtf/Platform.h:
623
624 2020-01-11  Myles C. Maxfield  <mmaxfield@apple.com>
625
626         REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale
627         https://bugs.webkit.org/show_bug.cgi?id=200043
628
629         Unreviewed.
630
631         Fix build.
632
633         * wtf/cocoa/LanguageCocoa.mm:
634         (WTF::canMinimizeLanguages):
635
636 2020-01-11  Myles C. Maxfield  <mmaxfield@apple.com>
637
638         REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale
639         https://bugs.webkit.org/show_bug.cgi?id=200043
640
641         Unreviewed.
642
643         Addressing additional review comments.
644
645         * wtf/cocoa/LanguageCocoa.mm:
646         (WTF::canMinimizeLanguages):
647
648 2020-01-11  Myles C. Maxfield  <mmaxfield@apple.com>
649
650         Fix internal Apple builds after r254389
651         https://bugs.webkit.org/show_bug.cgi?id=206135
652
653         Rubber stamped by Zalan Bujtas.
654
655         * wtf/spi/cocoa/NSLocaleSPI.h:
656
657 2020-01-11  Sam Weinig  <weinig@apple.com>
658
659         Platform.h is out of control Part 1: Split WTF_CPU_* macro definitions out of Platform.h and into a new CPU.h
660         https://bugs.webkit.org/show_bug.cgi?id=206124
661
662         Reviewed by Anders Carlsson.
663
664         As a step towards cleaning up Platform.h, split out CPU related
665         macros into their own file.
666
667         * WTF.xcodeproj/project.pbxproj:
668         * wtf/CMakeLists.txt:
669         * wtf/CPU.h: Copied from Source/WTF/wtf/Platform.h.
670         * wtf/Platform.h:
671
672 2020-01-10  Dean Jackson  <dino@apple.com>
673
674         [WebGL] Clarify USE_OPENGL_ES_3
675         https://bugs.webkit.org/show_bug.cgi?id=206081
676         <rdar://problem/58486798>
677
678         Reviewed by Simon Fraser.
679
680         Make it clear that USE_ANGLE | USE_OPENGL | USE_OPENGL_ES are exclusive,
681         and that the availability of OpenGL ES 3 is a separate query.
682
683         * wtf/Platform.h:
684
685 2020-01-11  Yusuke Suzuki  <ysuzuki@apple.com>
686
687         Unreviewed, fix RunLoopGeneric's RunLoop::cycle
688
689         * wtf/generic/RunLoopGeneric.cpp:
690         (WTF::RunLoop::cycle):
691
692 2020-01-10  Myles C. Maxfield  <mmaxfield@apple.com>
693
694         REGRESSION(r185816): In the Hong Kong locale, navigator.language reports it's in the Taiwan locale
695         https://bugs.webkit.org/show_bug.cgi?id=200043
696         <rdar://problem/44119496>
697
698         Reviewed by Dean Jackson.
699
700         We ask the system for the current locale using CFLocaleCopyPreferredLanguages(), and then round-trip
701         it through CFBundleGetLocalizationInfoForLocalization() / CFBundleCopyLocalizationForLocalizationInfo().
702         This was to work around the fact that CFLocaleCopyPreferredLanguages() previously didn't report BCP47
703         language codes. However, that round-tripping was introducing errors, such as "zh-Hant-HK" was getting
704         turned into "zh-Hant-TW" which is clearly wrong. The CFBundle functions were never supposed to be used
705         in this way.
706
707         Instead, we can use CFLocaleCreateCanonicalLanguageIdentifierFromString() which is intended to
708         canonicalize locale identifiers, and does return BCP47 language codes. However, this function preserves
709         more fingerprinting entropy than the old code path, so we pass the input through new NSLocale SPI to
710         minimize the entropy revealed.
711
712         * WTF.xcodeproj/project.pbxproj:
713         * wtf/Language.h:
714         * wtf/Platform.h:
715         * wtf/PlatformMac.cmake:
716         * wtf/cf/LanguageCF.cpp:
717         (WTF::httpStyleLanguageCode):
718         (WTF::platformUserPreferredLanguages):
719         * wtf/cocoa/LanguageCocoa.mm: Added.
720         (WTF::minimizedLanguagesFromLanguages):
721         * wtf/spi/cocoa/NSLocaleSPI.h: Added.
722
723 2020-01-10  Simon Fraser  <simon.fraser@apple.com>
724
725         Introduce ENABLE_META_VIEWPORT and use it in some WK2 code
726         https://bugs.webkit.org/show_bug.cgi?id=206091
727
728         Reviewed by Tim Horton.
729
730         Define ENABLE_META_VIEWPORT for iOS.
731
732         * wtf/FeatureDefines.h:
733
734 2020-01-09  Tim Horton  <timothy_horton@apple.com>
735
736         Adopt TARGET_OS_MACCATALYST in more places
737         https://bugs.webkit.org/show_bug.cgi?id=206040
738         <rdar://problem/57127108>
739
740         Reviewed by Simon Fraser.
741
742         * wtf/Platform.h:
743
744 2020-01-09  Simon Fraser  <simon.fraser@apple.com>
745
746         Add ENABLE_UI_SIDE_COMPOSITING and use it in a few places
747         https://bugs.webkit.org/show_bug.cgi?id=205982
748
749         Reviewed by Jon Lee.
750         
751         Add a #define ENABLE_UI_SIDE_COMPOSITING for Cocoa platforms. Minor comment cleanup, and
752         move the duplicate ENABLE_ASYNC_SCROLLING from iOS and macOS sections into the Cocoa section.
753
754         * wtf/FeatureDefines.h:
755
756 2020-01-08  Yusuke Suzuki  <ysuzuki@apple.com>
757
758         Reduce binary size by purging C++ type information in Objective-C fields and parameters
759         https://bugs.webkit.org/show_bug.cgi?id=205905
760
761         Reviewed by Saam Barati.
762
763         Objective-C has reflection mechanisms. This means that fields, methods, and their types
764         need to hold its string representations in binary even if we are using release build.
765         While typical Objective-C class does not have large size of type names, C++ struct / class
766         has very large one, and putting them in Objective-C method names, parameter types, or fields
767         makes binary size very large.
768
769         Interesting thing is that type information is gathered when parameter is a C++ pointer, reference,
770         or value. And it gathers one-level deep information from this pointer etc. This means that, if
771         we use RefPtr<T>, collected type information is the one of RefPtr, not one of T. So it becomes significantly
772         smaller.
773
774         This patch introduces NakedRef<T>. This is similar to Ref while it does not have any ownership. So it
775         is just a wrapper around T&. We already have NakedPtr<T>. And use NakedRef<T> / NakedPtr<T> instead
776         of T& and T* if,
777
778             1. T is C++ class.
779             2. T* / T& is in Objective-C fields or parameter types (including a return type).
780
781         Then, these type information is one of NakedRef<T> / NakedPtr<T> instead of T, and we can reduce binary size.
782
783         This patch saves 600~KB in binary size.
784
785         Note the following things.
786
787         1. If we use `__attribute__((objc_direct))`, `__attribute__((objc_direct_members))`, possibly, we can completely remove these
788            metadata without using NakedRef / NakedPtr[1]. However, this is not available for our supporting platforms now (including
789            pre-Catalina OSes). This NakedRef / NakedPtr technique can reduce binary without waiting for it.
790         2. Reverting NakedRef / NakedPtr to usual reference / pointer is fairly easy since it is well typed. Once `__attribute__((objc_direct))`
791            becomes available in our platforms, we can consider it. But using NakedRef / NakedPtr is harmless.
792
793         [1]: https://github.com/llvm/llvm-project/commit/d4e1ba3fa9dfec2613bdcc7db0b58dea490c56b1
794
795         * WTF.xcodeproj/project.pbxproj:
796         * wtf/CMakeLists.txt:
797         * wtf/NakedRef.h: Added.
798         (WTF::NakedRef::NakedRef):
799         (WTF::NakedRef::operator-> const):
800         (WTF::NakedRef::get const):
801         (WTF::NakedRef::operator T& const):
802         (WTF::NakedRef::operator! const):
803         (WTF::=):
804         (WTF::NakedRef<T>::swap):
805         (WTF::swap):
806
807 2020-01-08  Alicia Boya García  <aboya@igalia.com>
808
809         [WTF] Allow MediaTime static constants
810         https://bugs.webkit.org/show_bug.cgi?id=205723
811
812         Reviewed by Darin Adler.
813
814         Despite all its convenience methods, at its core MediaTime is a rather
815         trivial class with only integral members. Despite this, since it had a
816         destructor declared, this made the class non-trivially destructible
817         even if the implementation was empty, and therefore clang did not
818         allow to use it for static variables unless done in form of a pointer.
819
820         By removing the destructor this restriction is lifted and we don't
821         need heap allocations for static MediaTime objects.
822
823         Previous usages of heap allocation for static MediaTime objects have
824         been rewritten to take advantage of this. Test coverage is provided by
825         successful compilation without [-Werror,-Wexit-time-destructors]
826         errors and existing tests.
827
828         * wtf/MediaTime.cpp:
829         (WTF::MediaTime::zeroTime):
830         (WTF::MediaTime::invalidTime):
831         (WTF::MediaTime::positiveInfiniteTime):
832         (WTF::MediaTime::negativeInfiniteTime):
833         (WTF::MediaTime::indefiniteTime):
834         (WTF::MediaTime::~MediaTime): Deleted.
835         * wtf/MediaTime.h:
836
837 2020-01-07  Said Abou-Hallawa  <sabouhallawa@apple.com>
838
839         Implement css3-images image-orientation
840         https://bugs.webkit.org/show_bug.cgi?id=89052
841
842         Reviewed by Simon Fraser.
843
844         Remove the ENABLE_CSS_IMAGE_ORIENTATION feature flag.
845
846         * wtf/FeatureDefines.h:
847
848 2020-01-07  Simon Fraser  <simon.fraser@apple.com>
849
850         Add some more Animations logging
851         https://bugs.webkit.org/show_bug.cgi?id=205890
852
853         Reviewed by Dean Jackson.
854
855         Make Seconds TextStream-loggable, and make Markable<> loggable.
856
857         * wtf/Seconds.cpp:
858         (WTF::operator<<):
859         * wtf/Seconds.h:
860         * wtf/text/TextStream.h:
861         (WTF::operator<<):
862
863 2020-01-07  Carlos Garcia Campos  <cgarcia@igalia.com>
864
865         [GTK][WPE] Add API to set purpose and hints of active editable element to input methods
866         https://bugs.webkit.org/show_bug.cgi?id=205605
867
868         Reviewed by Žan Doberšek.
869
870         Split ENABLE_IOS_AUTOCORRECT_AND_AUTOCAPITALIZE and remove the IOS prefix.
871
872         * wtf/FeatureDefines.h:
873
874 2020-01-06  Don Olmstead  <don.olmstead@sony.com>
875
876         Rename GraphicsContext3D to GraphicsContextGL
877         https://bugs.webkit.org/show_bug.cgi?id=205778
878         <rdar://problem/58327597>
879
880         Reviewed by Ross Kirsling.
881
882         Define USE_OPENGL_3 for Mac and USE_OPENGL_ES_3 for iOS. Use CMake config for
883         Windows and WebGL.
884
885         * wtf/Platform.h:
886
887 2020-01-06  Mark Lam  <mark.lam@apple.com>
888
889         Convert ASSERT_DISABLED to ASSERT_ENABLED, and fix some tests of NDEBUG that should actually test for ASSERT_ENABLED.
890         https://bugs.webkit.org/show_bug.cgi?id=205776
891
892         Reviewed by Saam Barati.
893
894         This patch did the following changes:
895
896         1. Replaced ASSERT_DISABLED with ASSERT_ENABLED.  This change does away
897            with the need for the double negative !ASSERT_DISABLED test that is commonly
898            used all over the code, thereby improving code readability.
899
900            In Assertions.h, there is also BACKTRACE_DISABLED, ASSERT_MSG_DISABLED,
901            ASSERT_ARG_DISABLED, FATAL_DISABLED, ERROR_DISABLED, LOG_DISABLED, and
902            RELEASE_LOG_DISABLED.  We should replace those with ..._ENABLED equivalents
903            as well.  We'll do that in another patch.  For now, they are left as is to
904            minimize the size of this patch.
905            See https://bugs.webkit.org/show_bug.cgi?id=205780.
906
907         2. Fixed some code was guarded with "#ifndef NDEBUG" that should actually be
908            guarded by "#if ASSERT_ENABLED" instead.
909
910         3. In cases where the change is minimal, we move some code around so that we can
911            test for "#if ASSERT_ENABLED" instead of "#if !ASSERT_ENABLED".
912
913         * wtf/Assertions.h:
914         * wtf/AutomaticThread.cpp:
915         (WTF::AutomaticThread::start):
916         * wtf/BitVector.h:
917         * wtf/BlockObjCExceptions.mm:
918         (ReportBlockedObjCException):
919         * wtf/BloomFilter.h:
920         * wtf/CallbackAggregator.h:
921         (WTF::CallbackAggregator::CallbackAggregator):
922         * wtf/CheckedArithmetic.h:
923         (WTF::observesOverflow<AssertNoOverflow>):
924         * wtf/CheckedBoolean.h:
925         (CheckedBoolean::CheckedBoolean):
926         (CheckedBoolean::operator bool):
927         * wtf/CompletionHandler.h:
928         (WTF::CompletionHandler<Out):
929         * wtf/DateMath.cpp:
930         (WTF::initializeDates):
931         * wtf/Gigacage.cpp:
932         (Gigacage::tryAllocateZeroedVirtualPages):
933         * wtf/HashTable.h:
934         (WTF::KeyTraits>::checkKey):
935         (WTF::KeyTraits>::checkTableConsistencyExceptSize const):
936         * wtf/LoggerHelper.h:
937         * wtf/NaturalLoops.h:
938         (WTF::NaturalLoops::headerOf const):
939         * wtf/NeverDestroyed.h:
940         (WTF::LazyNeverDestroyed::construct):
941         * wtf/OptionSet.h:
942         (WTF::OptionSet::OptionSet):
943         * wtf/Platform.h:
944         * wtf/PtrTag.h:
945         * wtf/RefCounted.h:
946         (WTF::RefCountedBase::disableThreadingChecks):
947         (WTF::RefCountedBase::enableThreadingChecksGlobally):
948         (WTF::RefCountedBase::RefCountedBase):
949         (WTF::RefCountedBase::applyRefDerefThreadingCheck const):
950         * wtf/SingleRootGraph.h:
951         (WTF::SingleRootGraph::assertIsConsistent const):
952         * wtf/SizeLimits.cpp:
953         * wtf/StackBounds.h:
954         (WTF::StackBounds::checkConsistency const):
955         * wtf/URLParser.cpp:
956         (WTF::URLParser::URLParser):
957         (WTF::URLParser::domainToASCII):
958         * wtf/ValueCheck.h:
959         * wtf/Vector.h:
960         (WTF::Malloc>::checkConsistency):
961         * wtf/WeakHashSet.h:
962         * wtf/WeakPtr.h:
963         (WTF::WeakPtrImpl::WeakPtrImpl):
964         (WTF::WeakPtrFactory::WeakPtrFactory):
965         * wtf/text/AtomStringImpl.cpp:
966         * wtf/text/AtomStringImpl.h:
967         * wtf/text/StringBuilder.cpp:
968         (WTF::StringBuilder::reifyString const):
969         * wtf/text/StringBuilder.h:
970         * wtf/text/StringCommon.h:
971         (WTF::hasPrefixWithLettersIgnoringASCIICaseCommon):
972         * wtf/text/StringHasher.h:
973         (WTF::StringHasher::addCharacters):
974         * wtf/text/StringImpl.h:
975         * wtf/text/SymbolImpl.h:
976         * wtf/text/UniquedStringImpl.h:
977
978 2020-01-05  Dean Jackson  <dino@apple.com>
979
980         Rename GraphicsContext3D to GraphicsContextGL
981         https://bugs.webkit.org/show_bug.cgi?id=205778
982         <rdar://problem/58327597>
983
984         Reviewed by Sam Weinig.
985
986         Rename all the GraphicsContext3D things to GraphicsContextGL
987         (includes Extensions3D and GRAPHICS_CONTEXT_3D).
988
989         GraphicsContext3DBase now becomes GraphicsContextGL.
990         GraphicsContext3D is now GraphicsContextGLOpenGL (since it represents
991         the OpenGL implementation of the API).
992
993         * wtf/FeatureDefines.h:
994         * wtf/Platform.h:
995
996 2020-01-05  Sam Weinig  <weinig@apple.com>
997
998         Further simplify StringBuilder usage by standardizing hex formating to a single hex() function
999         https://bugs.webkit.org/show_bug.cgi?id=205759
1000
1001         Reviewed by Dean Jackson.
1002
1003         Removes appendByteAsHex, appendUnsignedAsHex and appendUnsignedAsHexFixedSize with the
1004         following mappings:
1005
1006             appendByteAsHex(value, builder, case) 
1007               -> builder.append(hex(static_cast<unsigned char>(value), 2, case))
1008             appendUnsignedAsHex(value, builder, case) 
1009               -> builder.append(hex(value, case))
1010             appendUnsignedAsHexFixedSize(value, builder, size, case)
1011               -> builder.append(hex(value, size, case))
1012         
1013         Adds new API test for HexNumber.cpp
1014
1015         * wtf/HexNumber.h:
1016         (WTF::appendByteAsHex): Deleted.
1017         (WTF::appendUnsignedAsHex): Deleted.
1018         (WTF::appendUnsignedAsHexFixedSize): Deleted.
1019         Remove now unused helper functions.
1020         
1021         * wtf/FileSystem.cpp:
1022         (WTF::FileSystemImpl::encodeForFileName):
1023         Replace appendByteAsHex with direct use of hex(x, 2). The static_cast is needed
1024         since there was an implicit down cast when appendByteAsHex was used.
1025  
1026         * wtf/Logger.cpp:
1027         (WTF::Logger::LogSiteIdentifier::toString const):
1028         (WTF::>::toString):
1029         * wtf/UUID.cpp:
1030         (WTF::createCanonicalUUIDString):
1031         Replace appendUnsignedAsHex/appendUnsignedAsHexFixedSize with hex(). Use makeString() 
1032         rather StringBuilder to simplify things further.
1033
1034         * wtf/text/WTFString.cpp:
1035         (asciiDebug):
1036         Replace appendUnsignedAsHexFixedSize with append(hex()).
1037
1038 2020-01-05  Ross Kirsling  <ross.kirsling@sony.com>
1039
1040         JavaScript: Invalid date parse for ISO 8601 strings when no timezone given
1041         https://bugs.webkit.org/show_bug.cgi?id=89071
1042
1043         Reviewed by Darin Adler.
1044
1045         * wtf/DateMath.cpp:
1046         (WTF::parseES5TimePortion):
1047         (WTF::parseES5DateFromNullTerminatedCharacters):
1048         * wtf/DateMath.h:
1049         Add an out param to tell JSC whether we still need to do a local time adjustment.
1050
1051 2020-01-03  Dean Jackson  <dino@apple.com>
1052
1053         [WebGL] Enable ANGLE by default for Cocoa platforms (except simulator)
1054         https://bugs.webkit.org/show_bug.cgi?id=205483
1055         <rdar://problem/58097701>
1056
1057         Reverting this from trunk (was r253926) due to the number of
1058         flakey tests and failures.
1059
1060         * wtf/Platform.h:
1061
1062 2020-01-03  Simon Fraser  <simon.fraser@apple.com>
1063
1064         Add some shared schemes to the WebKit.xcworkspace
1065         https://bugs.webkit.org/show_bug.cgi?id=205698
1066
1067         Reviewed by Tim Horton.
1068
1069         Make WebKit.xcworkspace show the following schemes by default:
1070             All Source
1071             All Tools
1072             WTF
1073             JavaScriptCore
1074             WebCore
1075             WebKit
1076             WebKitLegacy
1077             DumpRenderTree
1078             WebKitTestRunner
1079             TestWebKitAPI
1080             MiniBrowser
1081             MobileMiniBrowser.
1082             
1083         Also remove the MobileMiniBrowserUITests scheme.
1084
1085         * WTF.xcodeproj/xcshareddata/xcschemes/WTF.xcscheme: Copied from Tools/MobileMiniBrowser/MobileMiniBrowser.xcodeproj/xcshareddata/xcschemes/MobileMiniBrowserUITests.xcscheme.
1086
1087 2020-01-02  Yusuke Suzuki  <ysuzuki@apple.com> and Simon Fraser  <simon.fraser@apple.com>
1088
1089         Experiment: create lots of different malloc zones for easier accounting of memory use
1090         https://bugs.webkit.org/show_bug.cgi?id=186422
1091
1092         Reviewed by Saam Barati.
1093
1094         This patch introduces ENABLE(MALLOC_HEAP_BREAKDOWN). If this is enabled, we allocate malloc_zone per malloc kind.
1095         This offers the way to investigate the usage of memory per kind by using vmmap, like the following.
1096
1097             VIRTUAL   RESIDENT      DIRTY    SWAPPED ALLOCATION      BYTES DIRTY+SWAP          REGION
1098             MALLOC ZONE                                                      SIZE       SIZE       SIZE       SIZE      COUNT  ALLOCATED  FRAG SIZE  % FRAG   COUNT
1099             ===========                                                   =======  =========  =========  =========  =========  =========  =========  ======  ======
1100             StringImpl_0x116efd000                                         188.0M      69.3M      30.9M         0K     139456      18.0M      12.9M     42%      34
1101             DefaultMallocZone_0x10f487000                                  176.0M      53.9M      14.1M         0K     115956      9955K      4497K     32%      22
1102             Vector_0x116eff000                                             162.0M      56.3M      55.3M         0K     140715      17.3M      37.9M     69%      36
1103             MetadataTable_0x11843b000                                      152.0M      17.5M      17.5M         0K      14200      2353K      15.2M     87%      26
1104             WebKit Using System Malloc_0x114cbe000                         150.0M      31.6M      21.8M         0K      87422      16.7M      5278K     24%      23
1105             InstructionStream_0x118469000                                  150.0M      5764K      5764K         0K      14470      4688K      1076K     19%      24
1106             AssemblerData_0x117ee6000                                      150.0M      1928K      1928K         0K          1         16      1928K    100%      24
1107
1108         To achieve this goal without making very large change, we put a template type in various containers.
1109         For example, Vector will take Malloc parameter (the default one is FastMalloc allocator). If ENABLE(MALLOC_HEAP_BREAKDOWN) is enabled, we change this to
1110         specific VectorMalloc allocator, and vmmap can show memory usage of this allocator. This patch also supports malloc_zone per IsoHeap. So we can see memory
1111         allocation per IsoHeap in vmmap.
1112
1113         To use this feature, we need to flip two compile time flags, ENABLE(MALLOC_HEAP_BREAKDOWN) in WTF and BENABLE_MALLOC_HEAP_BREAKDOWN in bmalloc.
1114         And use `vmmap $PID` to dump malloc zones. To allocate objects of a class with a specific malloc-zone, use WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER(HeapIdentifier) for the class,
1115         and define allocator by DECLARE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a header and DEFINE_ALLOCATOR_WITH_HEAP_IDENTIFIER(HeapIdentifier) in a cpp file.
1116
1117         This patch also introduce callstack collector for malloc. Vector, HashMap etc. are used to allocate various things, but the above malloc_zone feature only tells thing like "Vector
1118         takes XXX MB memory". But what we want to know in this case is what Vector is consuming memory. We collect StackShot for each malloc call, and combine these information to tell
1119         which callsite is consuming much memory, which tell us that what Vector is consuming memory.
1120
1121         * WTF.xcodeproj/project.pbxproj:
1122         * wtf/Bag.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
1123         * wtf/Bag.h:
1124         (WTF::Private::BagNode::BagNode): Deleted.
1125         * wtf/BitVector.cpp:
1126         (WTF::BitVector::OutOfLineBits::create):
1127         (WTF::BitVector::OutOfLineBits::destroy):
1128         * wtf/CMakeLists.txt:
1129         * wtf/ConcurrentBuffer.cpp: Copied from Source/JavaScriptCore/parser/SourceProviderCache.cpp.
1130         * wtf/ConcurrentBuffer.h:
1131         * wtf/DebugHeap.cpp: Copied from Source/JavaScriptCore/runtime/CachePayload.cpp.
1132         (WTF::DebugHeap::DebugHeap):
1133         (WTF::DebugHeap::malloc):
1134         (WTF::DebugHeap::calloc):
1135         (WTF::DebugHeap::memalign):
1136         (WTF::DebugHeap::realloc):
1137         (WTF::DebugHeap::free):
1138         * wtf/DebugHeap.h: Added.
1139         * wtf/FastBitVector.cpp:
1140         (WTF::FastBitVectorWordOwner::setEqualsSlow):
1141         (WTF::FastBitVectorWordOwner::resizeSlow):
1142         * wtf/FastBitVector.h:
1143         (WTF::FastBitVectorWordOwner::~FastBitVectorWordOwner):
1144         * wtf/FastMalloc.cpp:
1145         (WTF::fastMallocDumpMallocStats):
1146         (WTF::AvoidRecordingScope::AvoidRecordingScope):
1147         (WTF::AvoidRecordingScope::~AvoidRecordingScope):
1148         (WTF::MallocCallTracker::MallocSiteData::MallocSiteData):
1149         (WTF::MallocCallTracker::singleton):
1150         (WTF::MallocCallTracker::MallocCallTracker):
1151         (WTF::MallocCallTracker::recordMalloc):
1152         (WTF::MallocCallTracker::recordRealloc):
1153         (WTF::MallocCallTracker::recordFree):
1154         (WTF::MallocCallTracker::dumpStats):
1155         (WTF::fastMalloc):
1156         (WTF::fastRealloc):
1157         (WTF::fastFree):
1158         (WTF::fastAlignedMalloc):
1159         (WTF::tryFastAlignedMalloc):
1160         (WTF::fastAlignedFree):
1161         * wtf/FastMalloc.h:
1162         (WTF::FastMalloc::zeroedMalloc):
1163         (WTF::FastMalloc::tryZeroedMalloc):
1164         * wtf/Forward.h:
1165         * wtf/HashTable.cpp:
1166         * wtf/HashTable.h:
1167         (WTF::KeyTraits>::allocateTable):
1168         (WTF::KeyTraits>::deallocateTable):
1169         (WTF::KeyTraits>::rehash):
1170         * wtf/MallocPtr.h:
1171         (WTF::MallocPtr::MallocPtr):
1172         (WTF::MallocPtr::malloc):
1173         (WTF::MallocPtr::zeroedMalloc):
1174         (WTF::MallocPtr::tryMalloc):
1175         (WTF::MallocPtr::tryZeroedMalloc):
1176         (WTF::adoptMallocPtr):
1177         * wtf/MetaAllocator.cpp:
1178         (WTF::MetaAllocator::allocFreeSpaceNode):
1179         (WTF::MetaAllocator::freeFreeSpaceNode):
1180         * wtf/MetaAllocatorHandle.h:
1181         * wtf/Platform.h:
1182         * wtf/RefCountedArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
1183         * wtf/RefCountedArray.h:
1184         (WTF::RefCountedArray::RefCountedArray):
1185         (WTF::RefCountedArray::~RefCountedArray):
1186         (WTF::RefCountedArray::assign):
1187         * wtf/SegmentedVector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
1188         * wtf/SegmentedVector.h:
1189         * wtf/SmallPtrSet.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
1190         * wtf/SmallPtrSet.h:
1191         (WTF::SmallPtrSet::~SmallPtrSet):
1192         (WTF::SmallPtrSet::grow):
1193         * wtf/UniqueArray.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
1194         * wtf/UniqueArray.h:
1195         (WTF::UniqueArrayFree::operator() const):
1196         (WTF::UniqueArrayFree<T::operator() const):
1197         * wtf/Vector.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
1198         * wtf/Vector.h:
1199         (WTF::VectorBufferBase::allocateBuffer):
1200         (WTF::VectorBufferBase::tryAllocateBuffer):
1201         (WTF::VectorBufferBase::reallocateBuffer):
1202         (WTF::VectorBufferBase::deallocateBuffer):
1203         (WTF::VectorBufferBase::releaseBuffer):
1204         (WTF::VectorBuffer::releaseBuffer):
1205         (WTF::Vector::swap):
1206         (WTF::Malloc>::Vector):
1207         (WTF::=):
1208         (WTF::Malloc>::contains const):
1209         (WTF::Malloc>::findMatching const):
1210         (WTF::Malloc>::find const):
1211         (WTF::Malloc>::reverseFind const):
1212         (WTF::Malloc>::appendIfNotContains):
1213         (WTF::Malloc>::fill):
1214         (WTF::Malloc>::appendRange):
1215         (WTF::Malloc>::expandCapacity):
1216         (WTF::Malloc>::tryExpandCapacity):
1217         (WTF::Malloc>::resize):
1218         (WTF::Malloc>::resizeToFit):
1219         (WTF::Malloc>::shrink):
1220         (WTF::Malloc>::grow):
1221         (WTF::Malloc>::asanSetInitialBufferSizeTo):
1222         (WTF::Malloc>::asanSetBufferSizeToFullCapacity):
1223         (WTF::Malloc>::asanBufferSizeWillChangeTo):
1224         (WTF::Malloc>::reserveCapacity):
1225         (WTF::Malloc>::tryReserveCapacity):
1226         (WTF::Malloc>::reserveInitialCapacity):
1227         (WTF::Malloc>::shrinkCapacity):
1228         (WTF::Malloc>::append):
1229         (WTF::Malloc>::tryAppend):
1230         (WTF::Malloc>::constructAndAppend):
1231         (WTF::Malloc>::tryConstructAndAppend):
1232         (WTF::Malloc>::appendSlowCase):
1233         (WTF::Malloc>::constructAndAppendSlowCase):
1234         (WTF::Malloc>::tryConstructAndAppendSlowCase):
1235         (WTF::Malloc>::uncheckedAppend):
1236         (WTF::Malloc>::uncheckedConstructAndAppend):
1237         (WTF::Malloc>::appendVector):
1238         (WTF::Malloc>::insert):
1239         (WTF::Malloc>::insertVector):
1240         (WTF::Malloc>::remove):
1241         (WTF::Malloc>::removeFirst):
1242         (WTF::Malloc>::removeFirstMatching):
1243         (WTF::Malloc>::removeAll):
1244         (WTF::Malloc>::removeAllMatching):
1245         (WTF::Malloc>::reverse):
1246         (WTF::Malloc>::map const):
1247         (WTF::Malloc>::releaseBuffer):
1248         (WTF::Malloc>::checkConsistency):
1249         (WTF::swap):
1250         (WTF::operator==):
1251         (WTF::operator!=):
1252         (WTF::Malloc>::isolatedCopy const):
1253         (WTF::removeRepeatedElements):
1254         (WTF::minCapacity>::Vector): Deleted.
1255         (WTF::minCapacity>::contains const): Deleted.
1256         (WTF::minCapacity>::findMatching const): Deleted.
1257         (WTF::minCapacity>::find const): Deleted.
1258         (WTF::minCapacity>::reverseFind const): Deleted.
1259         (WTF::minCapacity>::appendIfNotContains): Deleted.
1260         (WTF::minCapacity>::fill): Deleted.
1261         (WTF::minCapacity>::appendRange): Deleted.
1262         (WTF::minCapacity>::expandCapacity): Deleted.
1263         (WTF::minCapacity>::tryExpandCapacity): Deleted.
1264         (WTF::minCapacity>::resize): Deleted.
1265         (WTF::minCapacity>::resizeToFit): Deleted.
1266         (WTF::minCapacity>::shrink): Deleted.
1267         (WTF::minCapacity>::grow): Deleted.
1268         (WTF::minCapacity>::asanSetInitialBufferSizeTo): Deleted.
1269         (WTF::minCapacity>::asanSetBufferSizeToFullCapacity): Deleted.
1270         (WTF::minCapacity>::asanBufferSizeWillChangeTo): Deleted.
1271         (WTF::minCapacity>::reserveCapacity): Deleted.
1272         (WTF::minCapacity>::tryReserveCapacity): Deleted.
1273         (WTF::minCapacity>::reserveInitialCapacity): Deleted.
1274         (WTF::minCapacity>::shrinkCapacity): Deleted.
1275         (WTF::minCapacity>::append): Deleted.
1276         (WTF::minCapacity>::tryAppend): Deleted.
1277         (WTF::minCapacity>::constructAndAppend): Deleted.
1278         (WTF::minCapacity>::tryConstructAndAppend): Deleted.
1279         (WTF::minCapacity>::appendSlowCase): Deleted.
1280         (WTF::minCapacity>::constructAndAppendSlowCase): Deleted.
1281         (WTF::minCapacity>::tryConstructAndAppendSlowCase): Deleted.
1282         (WTF::minCapacity>::uncheckedAppend): Deleted.
1283         (WTF::minCapacity>::uncheckedConstructAndAppend): Deleted.
1284         (WTF::minCapacity>::appendVector): Deleted.
1285         (WTF::minCapacity>::insert): Deleted.
1286         (WTF::minCapacity>::insertVector): Deleted.
1287         (WTF::minCapacity>::remove): Deleted.
1288         (WTF::minCapacity>::removeFirst): Deleted.
1289         (WTF::minCapacity>::removeFirstMatching): Deleted.
1290         (WTF::minCapacity>::removeAll): Deleted.
1291         (WTF::minCapacity>::removeAllMatching): Deleted.
1292         (WTF::minCapacity>::reverse): Deleted.
1293         (WTF::minCapacity>::map const): Deleted.
1294         (WTF::minCapacity>::releaseBuffer): Deleted.
1295         (WTF::minCapacity>::checkConsistency): Deleted.
1296         (WTF::minCapacity>::isolatedCopy const): Deleted.
1297         * wtf/text/CString.cpp:
1298         (WTF::CStringBuffer::createUninitialized):
1299         * wtf/text/CString.h:
1300         * wtf/text/StringBuffer.cpp: Copied from Source/JavaScriptCore/bytecode/InstructionStream.cpp.
1301         * wtf/text/StringBuffer.h:
1302         (WTF::StringBuffer::StringBuffer):
1303         (WTF::StringBuffer::~StringBuffer):
1304         (WTF::StringBuffer::resize):
1305         (WTF::StringBuffer::release):
1306         * wtf/text/StringImpl.cpp:
1307         (WTF::StringImpl::~StringImpl):
1308         (WTF::StringImpl::destroy):
1309         (WTF::StringImpl::createUninitializedInternalNonEmpty):
1310         (WTF::StringImpl::reallocateInternal):
1311         * wtf/text/StringImpl.h:
1312         (WTF::StringImpl::StringImpl):
1313         (WTF::StringImpl::createSubstringSharingImpl):
1314         (WTF::StringImpl::tryCreateUninitialized):
1315         (WTF::StringImpl::adopt):
1316         * wtf/text/cf/StringImplCF.cpp:
1317         (WTF::StringWrapperCFAllocator::allocate):
1318         (WTF::StringWrapperCFAllocator::reallocate):
1319         (WTF::StringWrapperCFAllocator::deallocate):
1320
1321 2020-01-02  Dean Jackson  <dino@apple.com>
1322
1323         REGRESSION(r253926): Crash at libANGLE-shared.dylib: gl::LogMessage::~LogMessage
1324         https://bugs.webkit.org/show_bug.cgi?id=205690
1325         rdar://58279401
1326
1327         Reviewed by Eric Carlson.
1328
1329         Only enable ANGLE for iOS hardware while we investigate this fatal error.
1330
1331         * wtf/Platform.h:
1332
1333 2020-01-02  Sam Weinig  <weinig@apple.com>
1334
1335         Simplify StringBuilder API/align with makeString by removing appendFixed* functions and using FormatNumber struct instead
1336         https://bugs.webkit.org/show_bug.cgi?id=205671
1337
1338         Reviewed by Alex Christensen.
1339
1340         In an ongoing attempt to simplify the StringBuilder interface and unify it's functionality with makeString,
1341         this change removes appendFixedPrecisionNumber() and appendFixedWidthNumber(), replacing their uses
1342         with direct calls to append(), using a FormattedNumber object to direct it to the appropriate StringTypeAdapter.
1343
1344         * wtf/text/StringBuilder.h:
1345         * wtf/text/StringBuilder.cpp:
1346         (WTF::StringBuilder::appendFixedPrecisionNumber): Deleted.
1347         (WTF::StringBuilder::appendFixedWidthNumber): Deleted.
1348         Remove StringBuilder::appendFixedPrecisionNumber() and StringBuilder::appendFixedWidthNumber(). The same functionality
1349         is available and more flexible by passing FormattedNumbers to the variadic append() function.
1350         
1351         * wtf/text/TextStream.cpp:
1352         (WTF::TextStream::operator<<):
1353         * wtf/MediaTime.cpp:
1354         (WTF::MediaTime::toString const):
1355         Replace all uses of builder.appendFixedPrecisionNumber(...) with builder.append(FormattedNumber::fixedPrecision(...))
1356         and builder.appendFixedWidthNumber(...) with with builder.append(FormattedNumber::fixedWidth(...))
1357
1358 2019-12-20  Darin Adler  <darin@apple.com>
1359
1360         Tidy a bit of StringBuilder usage
1361         https://bugs.webkit.org/show_bug.cgi?id=205509
1362
1363         Reviewed by Sam Weinig.
1364
1365         * wtf/FileSystem.cpp:
1366         (WTF::FileSystemImpl::decodeFromFilename): Fix misleading variable name "hexDigit"
1367         for result of decoding "%+XXXX"; what's decoded is a character, not a hex digit.
1368
1369         * wtf/HexNumber.h: Remove unused appendUnsignedAsHexFixedSize function for
1370         destinations other than StringBuilder. Don't need it at this time, could add
1371         it later if we ever decide we do.
1372
1373         * wtf/text/StringBuilder.h:
1374         (WTF::StringBuilder::appendSubstring): Improved logic in appendSubstring so it
1375         will handle even absurd values for offset and length correctly, and added a
1376         default length of "infinity" just like in String::substring.
1377
1378         * wtf/text/StringImpl.cpp:
1379         (WTF::StringImpl::convertToLowercaseWithoutLocale): Use isASCII.
1380         (WTF::StringImpl::convertToLowercaseWithoutLocaleStartingAtFailingIndex8Bit): Ditto.
1381
1382         * wtf/text/WTFString.cpp:
1383         (asciiDebug): Use StringBuilder to build the string; this was the one place that
1384         used appendUnsignedAsHexFixedSize on something else, and there is no need.
1385
1386 2019-12-30  youenn fablet  <youenn@apple.com>
1387
1388         Ignore URL host for schemes that are not using host information
1389         https://bugs.webkit.org/show_bug.cgi?id=205157
1390         <rdar://problem/57825963>
1391
1392         Reviewed by Darin Adler.
1393
1394         * wtf/URL.cpp:
1395         (WTF::URL::removeHostAndPort):
1396         * wtf/URL.h:
1397
1398 2019-12-25  Dean Jackson  <dino@apple.com>
1399
1400         [WebGL] Enable ANGLE by default for Cocoa platforms (except simulator)
1401         https://bugs.webkit.org/show_bug.cgi?id=205483
1402         rdar://56925821
1403
1404         Reviewed by Simon Fraser.
1405
1406         Turn USE_ANGLE on for Cocoa, with the exception of the simulator.
1407
1408         * wtf/Platform.h:
1409
1410 2019-12-24  Eric Carlson  <eric.carlson@apple.com>
1411
1412         [Media in GPU process] Enable media player proxy logging
1413         https://bugs.webkit.org/show_bug.cgi?id=205557
1414         <rdar://problem/58160932>
1415
1416         Reviewed by Youenn Fablet.
1417
1418         * wtf/Logger.h:
1419         (WTF::Logger::willLog const): Minor optimization: don't check m_enabled unnecessarily.
1420
1421 2019-12-23  Keith Miller  <keith_miller@apple.com>
1422
1423         DFG/FTL should be able to exit to the middle of a bytecode
1424         https://bugs.webkit.org/show_bug.cgi?id=205232
1425
1426         Reviewed by Saam Barati.
1427
1428         * WTF.xcodeproj/project.pbxproj:
1429         * wtf/Bitmap.h:
1430         (WTF::WordType>::invert):
1431         (WTF::WordType>::operator):
1432         (WTF::WordType>::operator const const):
1433         * wtf/CMakeLists.txt:
1434         * wtf/EnumClassOperatorOverloads.h: Added.
1435         * wtf/FastBitVector.h:
1436         (WTF::FastBitReference::operator bool const):
1437         (WTF::FastBitReference::operator|=):
1438         (WTF::FastBitReference::operator&=):
1439         (WTF::FastBitVector::fill):
1440         (WTF::FastBitVector::grow):
1441         * wtf/UnalignedAccess.h:
1442         (WTF::unalignedLoad):
1443         (WTF::unalignedStore):
1444
1445 2019-12-21  Antti Koivisto  <antti@apple.com>
1446
1447         Move Vector HashTraits to HashTraits.h to fix GCC build
1448         https://bugs.webkit.org/show_bug.cgi?id=205540
1449
1450         Reviewed by Zalan Bujtas.
1451
1452         GCC is stricter than LLVM with partial specializations
1453
1454         Error: partial specialization of struct WTF::HashTraits<WTF::Vector<U, otherCapacity, WTF::CrashOnOverflow, 16> >
1455         after instantiation of struct WTF::HashTraits<WTF::Vector<WTF::String> >
1456
1457         * wtf/HashTraits.h:
1458         * wtf/VectorHash.h:
1459
1460 2019-12-20  Truitt Savell  <tsavell@apple.com>
1461
1462         Unreviewed, rolling out r253820.
1463
1464         Broke Mac testing
1465
1466         Reverted changeset:
1467
1468         "Invalidate only affected elements after media query
1469         evaluation changes"
1470         https://bugs.webkit.org/show_bug.cgi?id=205392
1471         https://trac.webkit.org/changeset/253820
1472
1473 2019-12-20  Antti Koivisto  <antti@apple.com>
1474
1475         Invalidate only affected elements after media query evaluation changes
1476         https://bugs.webkit.org/show_bug.cgi?id=205392
1477
1478         Reviewed by Zalan Bujtas.
1479
1480         Fix GCC build error
1481
1482         Error: partial specialization of ‘struct WTF::HashTraits<WTF::Vector<U, otherCapacity, WTF::CrashOnOverflow, 16> >’
1483                after instantiation of ‘struct WTF::HashTraits<WTF::Vector<WTF::String> >’
1484
1485         * wtf/HashTraits.h:
1486         * wtf/VectorHash.h:
1487
1488         Move to HashTraits to HashTraits.h so it gets specialized before any instantiation.
1489
1490 2019-12-19  Antti Koivisto  <antti@apple.com>
1491
1492         Allow Vectors as hash keys
1493         https://bugs.webkit.org/show_bug.cgi?id=205449
1494
1495         Reviewed by Geoff Garen.
1496
1497         Add traits to allow Vectors of hashable types to act as hash keys.
1498
1499         * WTF.xcodeproj/project.pbxproj:
1500         * wtf/Vector.h:
1501         (WTF::Vector::Vector):
1502         (WTF::Vector::~Vector):
1503         (WTF::Vector::isHashTableDeletedValue const):
1504
1505         Use m_size = numeric_limits::max() as the deleted value.
1506
1507         * wtf/VectorHash.h: Added.
1508         (WTF::VectorHash::hash):
1509         (WTF::VectorHash::equal):
1510
1511         Add traits. Empty Vector is the empty value.
1512
1513 2019-12-19  Jer Noble  <jer.noble@apple.com>
1514
1515         Safely iterate observers in languageDidChange()
1516         https://bugs.webkit.org/show_bug.cgi?id=205452
1517         <rdar://problem/57937765>
1518
1519         Reviewed by Eric Carlson.
1520
1521         Use the "copyToVector() then verify each item is still in the original
1522         map" pattern to safely iterate over the observerMap().
1523
1524         * wtf/Language.cpp:
1525         (WTF::languageDidChange):
1526
1527 2019-12-18  Yusuke Suzuki  <ysuzuki@apple.com>
1528
1529         Unreviewed, build fix after r253730
1530         https://bugs.webkit.org/show_bug.cgi?id=204398
1531
1532         Thread::destructTLS is always required in POSIX environments
1533
1534         * wtf/Threading.h:
1535
1536 2019-12-18  Fujii Hironori  <Hironori.Fujii@sony.com>
1537
1538         [Win] Use thread_local to hold Ref<WTF::Thread> in the thread rather than using FLS
1539         https://bugs.webkit.org/show_bug.cgi?id=204398
1540
1541         Reviewed by Yusuke Suzuki.
1542
1543         Use thread_local which is faster than FLS.
1544
1545         * wtf/Threading.cpp:
1546         (WTF::initializeThreading):
1547         * wtf/Threading.h:
1548         (WTF::Thread::current):
1549         * wtf/ThreadingPrimitives.h: Deleted threadSpecificKeyCreate and
1550         related functions which aren't used now in Windows port. Deleted
1551         THREAD_SPECIFIC_CALL macro which isn't used now.
1552         * wtf/win/ThreadingWin.cpp: Added a thread_local variable s_threadHolder.
1553         (WTF::Thread::ThreadHolder::~ThreadHolder): Added.
1554         (WTF::Thread::currentMayBeNull):
1555         (WTF::Thread::initializeTLS): Store a reference of Thread into s_threadHolder.
1556         (WTF::Thread::initializeTLSKey): Deleted.
1557         (WTF::Thread::destructTLS): Deleted.
1558
1559 2019-12-18  Ben Nham  <nham@apple.com>
1560
1561         Add network loading signposts
1562         https://bugs.webkit.org/show_bug.cgi?id=204822
1563         <rdar://problem/57608824>
1564
1565         Reviewed by Alex Christensen.
1566
1567         This adds os_signposts related to network loads to aid in debugging networking performance
1568         issues. Since URLs are logged in the signposts, this capability is only enabled on Apple
1569         internal builds when an environment variable is set.
1570
1571         * wtf/Platform.h:
1572         Add HAVE_OS_SIGNPOST.
1573
1574 2019-12-17  Myles C. Maxfield  <mmaxfield@apple.com>
1575
1576         [iOS] Update to use CTFontCreateForCharactersWithLanguageAndOption()
1577         https://bugs.webkit.org/show_bug.cgi?id=205310
1578
1579         Reviewed by Simon Fraser.
1580
1581         All our bots are on the appropriate OS version.
1582
1583         * wtf/Platform.h:
1584
1585 2019-12-17  Yusuke Suzuki  <ysuzuki@apple.com>
1586
1587         [JSC] 8Bit JSRopeString can contain 16Bit string in its rope
1588         https://bugs.webkit.org/show_bug.cgi?id=205323
1589
1590         Reviewed by Mark Lam.
1591
1592         * wtf/text/StringImpl.h:
1593         (WTF::StringImpl::copyCharacters):
1594
1595 2019-12-17  Tim Horton  <timothy_horton@apple.com>
1596
1597         macCatalyst: Cursor should update on mouse movement and style change
1598         https://bugs.webkit.org/show_bug.cgi?id=205317
1599         <rdar://problem/46793696>
1600
1601         Reviewed by Anders Carlsson.
1602
1603         * wtf/FeatureDefines.h:
1604         Make ENABLE_CURSOR_SUPPORT true on iOS, for macCatalyst. This results
1605         in it being true everywhere, so remove it.
1606
1607         Add a new ENABLE_CUSTOM_CURSOR_SUPPORT, indicating whether we support
1608         custom bitmap cursors. It covers the subset of ENABLE_CURSOR_SUPPORT
1609         code that we still don't support in macCatalyst.
1610
1611         * wtf/Platform.h:
1612         Add HAVE_HISERVICES (true on macOS but not macCatalyst) and
1613         HAVE_NSCURSOR (true on macOS and macCatalyst but not e.g. iOS).
1614
1615 2019-12-16  Yusuke Suzuki  <ysuzuki@apple.com>
1616
1617         [JSC] Remove ArrayBufferNeuteringWatchpointSet
1618         https://bugs.webkit.org/show_bug.cgi?id=205194
1619
1620         Reviewed by Saam Barati.
1621
1622         This patch adds PackedRef and PackedRefPtr. They are Ref and RefPtr, but its internal pointer is packed.
1623         So we can represent them in 6 bytes with 1 byte alignment.
1624
1625         * WTF.xcodeproj/project.pbxproj:
1626         * wtf/CMakeLists.txt:
1627         * wtf/Packed.h:
1628         (WTF::alignof):
1629         * wtf/PackedRef.h: Copied from Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpointSet.h.
1630         * wtf/PackedRefPtr.h: Renamed from Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpointSet.h.
1631         * wtf/RefPtr.h:
1632         (WTF::RefPtr::operator UnspecifiedBoolType const):
1633         (WTF::RefPtr::unspecifiedBoolTypeInstance const):
1634
1635 2019-12-13  Saam Barati  <sbarati@apple.com>
1636
1637         Add a Heap::finalize function that takes WTF::Function<void()>
1638         https://bugs.webkit.org/show_bug.cgi?id=205211
1639
1640         Reviewed by Geoffrey Garen.
1641
1642         * wtf/Function.h:
1643         (WTF::Function<Out):
1644
1645 2019-12-13  Per Arne Vollan  <pvollan@apple.com>
1646
1647         [iOS] Deny mach lookup access to "*.apple-extension-service" in the WebContent process
1648         https://bugs.webkit.org/show_bug.cgi?id=205134
1649         <rdar://problem/56984257>
1650
1651         Reviewed by Brent Fulgham.
1652
1653         Add enum value for the XPC service name filter type.
1654
1655         * wtf/spi/darwin/SandboxSPI.h:
1656
1657 2019-12-09  Fujii Hironori  <Hironori.Fujii@sony.com>
1658
1659         [MSVC] writeNumberToBufferUnsigned is unsafe for bool type
1660         https://bugs.webkit.org/show_bug.cgi?id=204873
1661
1662         Reviewed by Darin Adler.
1663
1664         MSVC reports warning for using / operator for bool type.
1665         > warning C4804: '/': unsafe use of type 'bool' in operation
1666
1667         And, 'bool' isn't expected to be serialized as '0' or '1'. 'bool' isn't supported.
1668
1669         * wtf/text/IntegerToStringConversion.h: Added a static_assert to ensure UnsignedIntegerType isn't bool.
1670
1671 2019-07-13  Darin Adler  <darin@apple.com>
1672
1673         Streamline PODIntervalTree code and remove ValueToString
1674         https://bugs.webkit.org/show_bug.cgi?id=199782
1675
1676         Reviewed by Anders Carlsson.
1677
1678         * WTF.xcodeproj/project.pbxproj: Remove ValueToString.h.
1679         * wtf/CMakeLists.txt: Ditto.
1680
1681         * wtf/MediaTime.cpp:
1682         (WTF::operator<<): Implement debug-only TextStream serialization
1683         based on toJSONString.
1684         * wtf/MediaTime.h: Ditto.
1685
1686         * wtf/text/ValueToString.h: Removed.
1687
1688 2019-12-06  Zan Dobersek  <zdobersek@igalia.com>
1689
1690         [GTK][WPE] Use bmalloc's memory footprint API for JSC heap growth management
1691         https://bugs.webkit.org/show_bug.cgi?id=204576
1692
1693         Reviewed by Saam Barati.
1694
1695         Add the new USE_BMALLOC_MEMORY_FOOTPRINT_API, enabled for the iOS-family
1696         ports and the Linux ports, as long as system malloc enforcement is
1697         disabled and bmalloc is subsequently built and used. The flag is used in
1698         JavaScriptCore to enable usage of bmalloc's memory footprint API for
1699         JSC heap growth control.
1700
1701         * wtf/Platform.h:
1702
1703 2019-12-05  Chris Dumez  <cdumez@apple.com>
1704
1705         [IPC] Fail ObjectIdentifier decoding if the decoded integer is not a valid ID
1706         https://bugs.webkit.org/show_bug.cgi?id=204921
1707         <rdar://problem/57677747>
1708
1709         Reviewed by Ryosuke Niwa.
1710
1711         * wtf/ObjectIdentifier.h:
1712         (WTF::ObjectIdentifier::decode):
1713
1714 2019-12-03  Sunny He  <sunny_he@apple.com>
1715
1716         Enable security assertions on all ASAN builds
1717         https://bugs.webkit.org/show_bug.cgi?id=204802
1718
1719         Reviewed by Ryosuke Niwa.
1720
1721         * wtf/FeatureDefines.h:
1722
1723 2019-12-03  Christopher Reid  <chris.reid@sony.com>
1724
1725         Regular expression hangs in Safari only
1726         https://bugs.webkit.org/show_bug.cgi?id=202882
1727         <rdar://problem/56236654>
1728
1729         Reviewed by Yusuke Suzuki.
1730
1731         BumpPointerPool::ensureCapacityCrossPool can cause an infinite loop
1732         if multiple large pools are deallocated and a new capacity does not
1733         fit in the deallocated pools. BumpPointerPool should try using
1734         more pools if the next one isn't large enough.
1735
1736         * wtf/BumpPointerAllocator.h:
1737         (WTF::BumpPointerPool::ensureCapacityCrossPool):
1738
1739 2019-11-28  Fujii Hironori  <Hironori.Fujii@sony.com>
1740
1741         Remove ENABLE_KEYBOARD_CODE_ATTRIBUTE and ENABLE_KEYBOARD_KEY_ATTRIBUTE macros
1742         https://bugs.webkit.org/show_bug.cgi?id=204666
1743
1744         Reviewed by Ross Kirsling and Don Olmstead.
1745
1746         * wtf/FeatureDefines.h:
1747
1748 2019-11-25  Fujii Hironori  <Hironori.Fujii@sony.com>
1749
1750         [Win] Update KeyboardEvent as per the latest specification
1751         https://bugs.webkit.org/show_bug.cgi?id=202183
1752
1753         Reviewed by Ross Kirsling.
1754
1755         * wtf/FeatureDefines.h:
1756
1757 2019-11-25  Fujii Hironori  <Hironori.Fujii@sony.com>
1758
1759         Add DefaultHash<OptionSet<T>> and HashTrait<OptionSet<T>> specializations
1760         https://bugs.webkit.org/show_bug.cgi?id=204562
1761
1762         Reviewed by Daniel Bates.
1763
1764         * WTF.xcodeproj/project.pbxproj: Added OptionSetHash.h
1765         * wtf/CMakeLists.txt: Ditto.
1766         * wtf/OptionSet.h: Made StorageType public, and use C++14 types.
1767         * wtf/OptionSetHash.h: Added.
1768         (WTF::DefaultHash<OptionSet<T>>::Hash::hash):
1769         (WTF::DefaultHash<OptionSet<T>>::Hash::equal):
1770         (WTF::HashTraits<OptionSet<T>>::emptyValue):
1771         (WTF::HashTraits<OptionSet<T>>::constructDeletedValue):
1772         (WTF::HashTraits<OptionSet<T>>::isDeletedValue):
1773
1774 2019-11-25  Carlos Garcia Campos  <cgarcia@igalia.com>
1775
1776         REGRESSION(r252770): [GTK][WPE] Remote inspector no longer works if debugger is in a different kind of system
1777         https://bugs.webkit.org/show_bug.cgi?id=204572
1778
1779         Reviewed by Žan Doberšek.
1780
1781         This patch adds the following changes:
1782
1783          - Use uint32_t instead of size_t to store the body size in the message header, because size_t has a different
1784            size in 32 and 64 bit platforms.
1785          - Use htonl/ntohl to write/read the body size in the header.
1786          - Add a flags byte to the header to include the message byte order. The sender always uses the host byter order
1787            and the receiver does the byte swapping if needed.
1788
1789         * wtf/glib/SocketConnection.cpp:
1790         (WTF::messageIsByteSwapped):
1791         (WTF::SocketConnection::readMessage):
1792         (WTF::SocketConnection::sendMessage):
1793
1794 2019-11-25  Carlos Garcia Campos  <cgarcia@igalia.com>
1795
1796         REGRESSION(r252770): [GTK][WPE] Remote inspector broken in debug builds after r252770
1797         https://bugs.webkit.org/show_bug.cgi?id=204569
1798
1799         Reviewed by Žan Doberšek.
1800
1801         We need to call relaxAdoptionRequirement() in SocketConnection constructor because we are taking a reference for
1802         the read monitor lambda.
1803
1804         * wtf/glib/SocketConnection.cpp:
1805         (WTF::SocketConnection::SocketConnection):
1806
1807 2019-11-25  Fujii Hironori  <Hironori.Fujii@sony.com>
1808
1809         Ran sort-Xcode-project-file.
1810
1811         Unreviewed.
1812
1813         * WTF.xcodeproj/project.pbxproj:
1814
1815 2019-11-23  Carlos Garcia Campos  <cgarcia@igalia.com>
1816
1817         Unreviewed. Try to fix the GTK WebDriver tests in the bots after r252770
1818
1819         They are failing in the bots because g_variant_new_from_data() is failing due to the given data not being
1820         properly aligned for the type being loaded. This is not a problem since GLib 2.60 that checks the alignment and
1821         reallocates the buffer in aligned memory only if needed. For previous versions we need to ensure the memory we
1822         pass to g_variant_new_from_data() is aligned.
1823
1824         * wtf/glib/SocketConnection.cpp:
1825         (WTF::SocketConnection::readMessage):
1826
1827 2019-11-22  Brent Fulgham  <bfulgham@apple.com>
1828
1829         Unreviewed FTW build fix after r252687.
1830
1831         * wtf/PlatformFTW.cmake:
1832
1833 2019-11-22  Carlos Garcia Campos  <cgarcia@igalia.com>
1834
1835         [GTK][WPE] RemoteInspector: use sockets instead of DBus
1836         https://bugs.webkit.org/show_bug.cgi?id=204503
1837
1838         Reviewed by Žan Doberšek.
1839
1840         Add SocketConnection class.
1841
1842         * wtf/PlatformGTK.cmake:
1843         * wtf/PlatformWPE.cmake:
1844         * wtf/glib/GSocketMonitor.cpp: Renamed from Source/WebKit/Platform/IPC/glib/GSocketMonitor.cpp.
1845         (WTF::GSocketMonitor::start):
1846         * wtf/glib/GSocketMonitor.h: Renamed from Source/WebKit/Platform/IPC/glib/GSocketMonitor.h.
1847         (WTF::GSocketMonitor::isActive const):
1848         * wtf/glib/GTypedefs.h:
1849         * wtf/glib/GUniquePtr.h:
1850         * wtf/glib/SocketConnection.cpp: Added.
1851         (WTF::SocketConnection::SocketConnection):
1852         (WTF::SocketConnection::~SocketConnection):
1853         (WTF::SocketConnection::read):
1854         (WTF::SocketConnection::readMessage):
1855         (WTF::SocketConnection::sendMessage):
1856         (WTF::SocketConnection::write):
1857         (WTF::SocketConnection::waitForSocketWritability):
1858         (WTF::SocketConnection::close):
1859         (WTF::SocketConnection::didClose):
1860         * wtf/glib/SocketConnection.h: Added.
1861         (WTF::SocketConnection::create):
1862         (WTF::SocketConnection::isClosed const):
1863
1864 2019-11-21  Yusuke Suzuki  <ysuzuki@apple.com>
1865
1866         Unreviewed, rolling in again, regression is not caused by it
1867         https://bugs.webkit.org/show_bug.cgi?id=202471
1868
1869         * wtf/text/StringCommon.h:
1870         (WTF::findCommon):
1871
1872 2019-11-21  Commit Queue  <commit-queue@webkit.org>
1873
1874         Unreviewed, rolling out r252683 and r252721.
1875         https://bugs.webkit.org/show_bug.cgi?id=204475
1876
1877         13% regression in JetStream2/prepack-wtb (Requested by
1878         yusukesuzuki on #webkit).
1879
1880         Reverted changesets:
1881
1882         "Implement String.prototype.replaceAll"
1883         https://bugs.webkit.org/show_bug.cgi?id=202471
1884         https://trac.webkit.org/changeset/252683
1885
1886         "Unreviewed, address Darin's feedback on r252683."
1887         https://trac.webkit.org/changeset/252721
1888
1889 2019-11-21  Tuomas Karkkainen  <tuomas.webkit@apple.com>
1890
1891         add ASSERT_NOT_REACHED_WITH_MESSAGE and RELEASE_ASSERT_NOT_REACHED_WITH_MESSAGE
1892         https://bugs.webkit.org/show_bug.cgi?id=204445
1893
1894         Reviewed by Antti Koivisto.
1895
1896         Add assertions that combine ASSERT_NOT_REACHED and ASSERT_WITH_MESSAGE.
1897
1898         * wtf/Assertions.h:
1899
1900 2019-11-20  Ross Kirsling  <ross.kirsling@sony.com>
1901
1902         Unreviewed, address Darin's feedback on r252683.
1903
1904         * wtf/text/StringCommon.h:
1905         (WTF::findCommon):
1906
1907 2019-11-20  ChangSeok Oh  <changseok@webkit.org>
1908
1909         [GTK] Add ANGLE backend to GTK port
1910         https://bugs.webkit.org/show_bug.cgi?id=199060
1911
1912         Reviewed by Žan Doberšek.
1913
1914         The GTK port uses TEXTURE_MAPPER that has a gl context for accelerated rendering,
1915         and ANGLE has an egl context for WebGL. We want to make both live together
1916         so an exception is made where TEXTURE_MAPPER is enabled.
1917
1918         * wtf/Platform.h:
1919
1920 2019-11-20  Fujii Hironori  <Hironori.Fujii@sony.com>
1921
1922         [Win] Implement WTF::ThreadSpecific in WTF::Thread
1923         https://bugs.webkit.org/show_bug.cgi?id=204341
1924
1925         Reviewed by Brent Fulgham and Yusuke Suzuki.
1926
1927         Thread::destructTLS had a tricky code to defer destroying
1928         WTF::Thread in TLS in order to ensure WTF::Thread is destructed
1929         after other ThreadSpecific are destructed, which is a part of
1930         cause of nasty hanging issue in the process termination (Bug 204192).
1931
1932         This change implements WTF::ThreadSpecific in WTF::Thread by
1933         adding a new class Thread::SpecificStorage to manage TLS. Simplify
1934         Thread::destructTLS. Remove threadMapMutex in ThreadingWin.cpp
1935
1936         * wtf/PlatformWin.cmake:
1937         * wtf/ThreadSpecific.h:
1938         (WTF::canBeGCThread>::ThreadSpecific):
1939         (WTF::canBeGCThread>::get):
1940         (WTF::canBeGCThread>::setInTLS):
1941         (WTF::canBeGCThread>::destroy):
1942         (WTF::canBeGCThread>::~ThreadSpecific): Deleted.
1943         * wtf/Threading.h:
1944         (WTF::Thread::specificStorage):
1945         (WTF::Thread::current):
1946         * wtf/win/ThreadSpecificWin.cpp: Removed.
1947         * wtf/win/ThreadingWin.cpp:
1948         (WTF::Thread::initializeTLSKey):
1949         (WTF::Thread::initializeTLS):
1950         (WTF::Thread::destructTLS):
1951         (WTF::Thread::SpecificStorage::allocateKey):
1952         (WTF::Thread::SpecificStorage::get):
1953         (WTF::Thread::SpecificStorage::set):
1954         (WTF::Thread::SpecificStorage::destroySlots):
1955         (): Deleted.
1956         (WTF::Thread::currentDying): Deleted.
1957         (WTF::Thread::get): Deleted.
1958
1959 2019-11-19  Ross Kirsling  <ross.kirsling@sony.com>
1960
1961         Implement String.prototype.replaceAll
1962         https://bugs.webkit.org/show_bug.cgi?id=202471
1963
1964         Reviewed by Yusuke Suzuki.
1965
1966         * wtf/text/StringCommon.h:
1967         (WTF::findCommon):
1968         Fix logic: "start > length" early out should come before "empty search string" early out.
1969
1970 2019-11-19  Yusuke Suzuki  <ysuzuki@apple.com>
1971
1972         [IndexedDB] IndexedDB's threading assertion should respect Web thread
1973         https://bugs.webkit.org/show_bug.cgi?id=204346
1974
1975         Reviewed by Daniel Bates.
1976
1977         * wtf/MainThread.cpp:
1978         (WTF::canCurrentThreadAccessThreadLocalData):
1979         (WTF::canAccessThreadLocalDataForThread): Deleted.
1980         * wtf/MainThread.h:
1981         * wtf/cocoa/MainThreadCocoa.mm:
1982         (WTF::canCurrentThreadAccessThreadLocalData):
1983         (WTF::canAccessThreadLocalDataForThread): Deleted.
1984
1985 2019-11-18  Fujii Hironori  <Hironori.Fujii@sony.com>
1986
1987         Remove self-defined C++14 features in StdLibExtras.h
1988         https://bugs.webkit.org/show_bug.cgi?id=204220
1989
1990         Reviewed by Ross Kirsling.
1991
1992         Remove std::conjunction, std::in_place_t and std::make_unique definitions.
1993         Remove unsued std::clz.
1994
1995         * wtf/StdLibExtras.h:
1996         (std::make_unique): Deleted.
1997         (std::exchange): Deleted.
1998         (std::clz): Deleted.
1999
2000 2019-11-18  Alex Christensen  <achristensen@webkit.org>
2001
2002         Use SecTrustEvaluateWithError instead of SecTrustEvaluate where available
2003         https://bugs.webkit.org/show_bug.cgi?id=204159
2004         <rdar://problem/45894288>
2005
2006         Reviewed by Darin Adler.
2007
2008         * wtf/Platform.h:
2009
2010 2019-11-15  Yusuke Suzuki  <ysuzuki@apple.com>
2011
2012         [JSC] Remove index-masking on ScopedArguments and put it in IsoSubspace
2013         https://bugs.webkit.org/show_bug.cgi?id=204269
2014
2015         Reviewed by Saam Barati.
2016
2017         * wtf/MathExtras.h:
2018         (WTF::computeIndexingMask): Deleted.
2019         (WTF::preciseIndexMaskShiftForSize): Deleted.
2020         (WTF::preciseIndexMaskShift): Deleted.
2021         (WTF::opaque): Deleted.
2022         (WTF::preciseIndexMaskPtr): Deleted.
2023
2024 2019-11-14  Yusuke Suzuki  <ysuzuki@apple.com>
2025
2026         [JSC] BlockDirectory's bits should be compact
2027         https://bugs.webkit.org/show_bug.cgi?id=204149
2028
2029         Reviewed by Robin Morisset.
2030
2031         * wtf/FastBitVector.h:
2032         (WTF::fastBitVectorArrayLength):
2033         (WTF::FastBitVectorImpl::unsafeWords):
2034         (WTF::FastBitVectorImpl::unsafeWords const):
2035         (WTF::FastBitReference::FastBitReference):
2036         (WTF::FastBitReference::operator bool const):
2037         (WTF::FastBitReference::operator=):
2038         (WTF::FastBitVector::at):
2039         (WTF::FastBitVector::operator[]):
2040         (WTF::FastBitVector::BitReference::BitReference): Deleted.
2041         (WTF::FastBitVector::BitReference::operator bool const): Deleted.
2042         (WTF::FastBitVector::BitReference::operator=): Deleted.
2043
2044 2019-11-11  Ross Kirsling  <ross.kirsling@sony.com>
2045
2046         UTC offset for Samoa is miscalculated when !HAVE(TIMEGM)
2047         https://bugs.webkit.org/show_bug.cgi?id=204032
2048
2049         Reviewed by Yusuke Suzuki.
2050
2051         We have code assuming that the world's time zones haven't changed in the past decade,
2052         but Samoa changed from UTC-11 to UTC+13 at the beginning of 2012.
2053
2054         (Note: "Samoa" here means the Independent State of Samoa (Pacific/Apia) and not American Samoa (Pacific/Samoa).
2055                See https://en.wikipedia.org/wiki/Time_in_Samoa for more information.)
2056
2057         * wtf/DateMath.cpp:
2058         (WTF::calculateUTCOffset):
2059         Update "canned date" from 2009 to 2019.
2060
2061 2019-11-07  Mark Lam  <mark.lam@apple.com>
2062
2063         Add a stack overflow check in Yarr::ByteCompiler::emitDisjunction().
2064         https://bugs.webkit.org/show_bug.cgi?id=203936
2065         <rdar://problem/56624724>
2066
2067         Reviewed by Saam Barati.
2068
2069         1. Add a StackCheck utility class so that we don't have to keep reinventing this
2070            every time we need to add stack checking somewhere.
2071         2. Rename some arguments and constants in StackBounds to be more descriptive of
2072            what they actually are.
2073
2074         * WTF.xcodeproj/project.pbxproj:
2075         * wtf/CMakeLists.txt:
2076         * wtf/StackBounds.h:
2077         (WTF::StackBounds::recursionLimit const):
2078         * wtf/StackCheck.h: Added.
2079         (WTF::StackCheck::StackCheck):
2080         (WTF::StackCheck::isSafeToRecurse):
2081
2082 2019-11-06  Mark Lam  <mark.lam@apple.com>
2083
2084         Remove remnants of support code for an upwards growing stack.
2085         https://bugs.webkit.org/show_bug.cgi?id=203942
2086
2087         Reviewed by Yusuke Suzuki.
2088
2089         We haven't supported an upwards growing stack in years, and a lot of code has
2090         since been written specifically with only a downwards growing stack in mind (e.g.
2091         the LLInt, the JITs).  Also, all our currently supported platforms use a downward
2092         growing stack.
2093
2094         We should remove the remnants of support code for an upwards growing stack.  The
2095         presence of that code is deceptive in that it conveys support for an upwards
2096         growing stack where this hasn't been the case in years.
2097
2098         * wtf/StackBounds.cpp:
2099         (WTF::StackBounds::newThreadStackBounds):
2100         (WTF::StackBounds::currentThreadStackBoundsInternal):
2101         (WTF::StackBounds::stackDirection): Deleted.
2102         (WTF::testStackDirection2): Deleted.
2103         (WTF::testStackDirection): Deleted.
2104         * wtf/StackBounds.h:
2105         (WTF::StackBounds::size const):
2106         (WTF::StackBounds::contains const):
2107         (WTF::StackBounds::recursionLimit const):
2108         (WTF::StackBounds::StackBounds):
2109         (WTF::StackBounds::isGrowingDownwards const):
2110         (WTF::StackBounds::checkConsistency const):
2111         (WTF::StackBounds::isGrowingDownward const): Deleted.
2112         * wtf/StackStats.cpp:
2113         (WTF::StackStats::CheckPoint::CheckPoint):
2114         (WTF::StackStats::CheckPoint::~CheckPoint):
2115         (WTF::StackStats::probe):
2116         (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
2117
2118 2019-11-05  Mark Lam  <mark.lam@apple.com>
2119
2120         WTF::RunLoop should not depend on isMainThread() idiom.
2121         https://bugs.webkit.org/show_bug.cgi?id=203873
2122         <rdar://problem/56524251>
2123
2124         Reviewed by Saam Barati, Ryosuke Niwa, and Devin Rousso.
2125
2126         The isMainThread() idiom is only meaningful for WebCore.  It is less meaningful
2127         for JSC since a VM instance can be entered from multiple threads, as long as only
2128         one thread enters it at any time.  Hence, the concept of a main thread doesn't
2129         make sense at the JSC level.
2130
2131         Since r251036, we started using a WTF::String to represent the RunLoop mode.
2132         This caused problems for JSC clients when USE(CF) since it necessitated the use of
2133         StringWrapperCFAllocator to track the life cycle of the CFStringRef generated from
2134         the WTF::String.
2135
2136         To fix this problem, we should restore the original behavior of using CFStringRefs
2137         as the RunLoop mode token.
2138
2139         * wtf/RunLoop.h:
2140         (WTF::RunLoop::cycle): Deleted.
2141         * wtf/cf/RunLoopCF.cpp:
2142         (WTF::RunLoop::cycle):
2143         * wtf/generic/RunLoopGeneric.cpp:
2144         (WTF::RunLoop::cycle):
2145         * wtf/glib/RunLoopGLib.cpp:
2146         (WTF::RunLoop::cycle):
2147         * wtf/win/RunLoopWin.cpp:
2148         (WTF::RunLoop::cycle):
2149
2150 2019-11-05  Tuomas Karkkainen  <tuomas.webkit@apple.com>
2151
2152         Add definitions of ANSI colors for colorful log output
2153         https://bugs.webkit.org/show_bug.cgi?id=203805
2154
2155         Reviewed by Saam Barati.
2156
2157         * WTF.xcodeproj/project.pbxproj:
2158         * wtf/AnsiColors.h: Added.
2159         * wtf/CMakeLists.txt:
2160
2161 2019-11-05  Tuomas Karkkainen  <tuomas.webkit@apple.com>
2162
2163         move CrashReporterClientSPI.h and parts of WKCrashReporter to WTF so it can be used in JavaScriptCore
2164         https://bugs.webkit.org/show_bug.cgi?id=203803
2165
2166         Reviewed by Saam Barati.
2167
2168         * WTF.xcodeproj/project.pbxproj:
2169         * wtf/PlatformMac.cmake:
2170         * wtf/cocoa/CrashReporter.cpp: Added.
2171         (WTF::setCrashLogMessage):
2172         * wtf/cocoa/CrashReporter.h: Added.
2173         * wtf/spi/cocoa/CrashReporterClientSPI.h: Renamed from Source/WebKit/Platform/spi/Cocoa/CrashReporterClientSPI.h.
2174
2175 2019-11-02  Devin Rousso  <drousso@apple.com>
2176
2177         Web Inspector: Add diagnostic logging for frontend feature usage
2178         https://bugs.webkit.org/show_bug.cgi?id=203579
2179         <rdar://problem/56717410>
2180
2181         Reviewed by Brian Burg.
2182
2183         Original patch by Matt Baker <mattbaker@apple.com>.
2184
2185         * wtf/FeatureDefines.h:
2186         Add `ENABLE_INSPECTOR_TELEMETRY`, which is only enabled for macOS.
2187
2188 2019-11-01  Devin Rousso  <drousso@apple.com>
2189
2190         Web Inspector: Timelines: add a timeline that shows information about any recorded CSS animation/transition
2191         https://bugs.webkit.org/show_bug.cgi?id=203651
2192         <rdar://problem/56128726>
2193
2194         Reviewed by Brian Burg.
2195
2196         * wtf/Markable.h:
2197         (WTF::operator==):
2198         (WTF::operator!=):
2199         Add extra utility operators.
2200
2201 2019-10-31  Tim Horton  <timothy_horton@apple.com>
2202
2203         Turn on IOSurface support in the iOS Simulator
2204         https://bugs.webkit.org/show_bug.cgi?id=203026
2205         <rdar://problem/56320993>
2206
2207         Reviewed by Simon Fraser.
2208
2209         * wtf/Platform.h:
2210         Turn on HAVE(IOSURFACE) and USE(IOSURFACE_CANVAS_BACKING_STORE) in the simulator.
2211         Add HAVE(IOSURFACE_COREIMAGE_SUPPORT).
2212
2213 2019-10-31  Jer Noble  <jer.noble@apple.com>
2214
2215         [EME] Batch multiple key requests into one request and response
2216         https://bugs.webkit.org/show_bug.cgi?id=203580
2217         <rdar://problem/54853345>
2218
2219         Reviewed by Eric Carlson.
2220
2221         Support appending an r-value reference Vector to another.
2222
2223         * wtf/Vector.h:
2224         (WTF::minCapacity>::appendVector):
2225
2226 2019-10-31  Alex Christensen  <achristensen@webkit.org>
2227
2228         Remove unneeded HAVE_TIMINGDATAOPTIONS
2229         https://bugs.webkit.org/show_bug.cgi?id=202990
2230
2231         Reviewed by Brady Eidson.
2232
2233         * wtf/Platform.h:
2234
2235 2019-10-31  Yusuke Suzuki  <ysuzuki@apple.com>
2236
2237         [JSC] DateMath should have TimeClipped version
2238         https://bugs.webkit.org/show_bug.cgi?id=203550
2239
2240         Reviewed by Saam Barati.
2241
2242         We found that our Date constructor is slow because GregorianDateTime calculation takes so long.
2243         We are doing many `fmod`, floating division, `floor` etc. These operations, in particular `fmod`, takes
2244         very long time. As a result, 30% of JetStream2/date-format-xparb is taken by `fmod` function.
2245
2246         But since we are performance timeClip operation, double value in DateInstance is always Int52. We should
2247         have integer version of GregorianDateTime calculation which avoids many unnecessary fmod etc.
2248
2249         While integer division is truncate-to-zero, many Date calculation requires `floor(value / xxx)`. For now,
2250         we use integer fast path only when the value is Int52 and positive.
2251
2252         We see 10~ % improvement in JetStream2/date-format-xparb-SP (from 201 to 239).
2253
2254         * wtf/DateMath.cpp:
2255         (WTF::isLeapYear): Deleted.
2256         (WTF::daysInYear): Deleted.
2257         (WTF::daysFrom1970ToYear): Deleted.
2258         (WTF::msToDays): Deleted.
2259         (WTF::msToYear): Deleted.
2260         (WTF::dayInYear): Deleted.
2261         (WTF::msToMinutes): Deleted.
2262         (WTF::msToHours): Deleted.
2263         (WTF::monthFromDayInYear): Deleted.
2264         (WTF::checkMonth): Deleted.
2265         (WTF::dayInMonthFromDayInYear): Deleted.
2266         (WTF::dateToDaysFrom1970): Deleted.
2267         (WTF::timeClip): Deleted.
2268         * wtf/DateMath.h:
2269         (WTF::TimeClippedPositiveMilliseconds::TimeClippedPositiveMilliseconds):
2270         (WTF::TimeClippedPositiveMilliseconds::value const):
2271         (WTF::TimeClippedPositiveMilliseconds::asDouble const):
2272         (WTF::timeClip):
2273         (WTF::daysFrom1970ToYear):
2274         (WTF::daysFrom1970ToYearTimeClippedPositive):
2275         (WTF::isLeapYear):
2276         (WTF::daysInYear):
2277         (WTF::msToDays):
2278         (WTF::dayInYear):
2279         (WTF::dateToDaysFrom1970):
2280         (WTF::msToYear):
2281         (WTF::msToMinutes):
2282         (WTF::msToHours):
2283         (WTF::msToSeconds):
2284         (WTF::msToWeekDay):
2285         (WTF::monthFromDayInYear):
2286         (WTF::dayInMonthFromDayInYear):
2287         * wtf/GregorianDateTime.cpp:
2288         (WTF::GregorianDateTime::GregorianDateTime):
2289         * wtf/GregorianDateTime.h:
2290
2291 2019-10-30  Alex Christensen  <achristensen@webkit.org>
2292
2293         Prevent Mac CMake build from bit rotting
2294         https://bugs.webkit.org/show_bug.cgi?id=203647
2295
2296         Reviewed by Tim Horton.
2297
2298         * wtf/PlatformMac.cmake:
2299
2300 2019-10-30  Yusuke Suzuki  <ysuzuki@apple.com>
2301
2302         [JSC] Date functions should have intrinsic
2303         https://bugs.webkit.org/show_bug.cgi?id=202187
2304
2305         Reviewed by Keith Miller.
2306
2307         * wtf/DateMath.h:
2308         * wtf/GregorianDateTime.cpp:
2309         (WTF::GregorianDateTime::setToCurrentLocalTime):
2310         * wtf/GregorianDateTime.h:
2311
2312 2019-10-30  Per Arne Vollan  <pvollan@apple.com>
2313
2314         It should be possible to create a mach sandbox extension for the WebContent process before the audit token is known
2315         https://bugs.webkit.org/show_bug.cgi?id=203618
2316
2317         Reviewed by Brent Fulgham.
2318
2319         Added SPI to create mach extension without PID or audit token.
2320
2321         * wtf/spi/darwin/SandboxSPI.h:
2322
2323 2019-10-30  Daniel Bates  <dabates@apple.com>
2324
2325         Add pretty printer for CompactPointerTuple
2326         https://bugs.webkit.org/show_bug.cgi?id=203495
2327
2328         Reviewed by Jer Noble.
2329
2330         #include <wtf/FastMalloc.h> for the definition of WTF_MAKE_FAST_ALLOCATED.
2331
2332         * wtf/CompactPointerTuple.h:
2333
2334 2019-10-29  Yusuke Suzuki  <ysuzuki@apple.com>
2335
2336         [JSC] Add fast path for String#localeCompare
2337         https://bugs.webkit.org/show_bug.cgi?id=202676
2338
2339         Reviewed by Mark Lam.
2340
2341         * wtf/text/StringView.h:
2342         (WTF::StringView::isAllASCII const):
2343
2344 2019-10-26  Chris Lord  <clord@igalia.com>
2345
2346         Put OffscreenCanvas behind a build flag
2347         https://bugs.webkit.org/show_bug.cgi?id=203146
2348
2349         Reviewed by Ryosuke Niwa.
2350
2351         * wtf/FeatureDefines.h:
2352
2353 2019-10-25  Andy Estes  <aestes@apple.com>
2354
2355         [Quick Look] Move the QLPreviewConverter delegate into PreviewConverter and vend a C++ client interface
2356         https://bugs.webkit.org/show_bug.cgi?id=203396
2357
2358         Reviewed by Alex Christensen.
2359
2360         * wtf/FeatureDefines.h: Defined ENABLE_PREVIEW_CONVERTER.
2361
2362 2019-10-23  Yusuke Suzuki  <ysuzuki@apple.com>
2363
2364         [JSC] Figure out missing prepareCallOperation
2365         https://bugs.webkit.org/show_bug.cgi?id=203285
2366
2367         Reviewed by Mark Lam.
2368
2369         Enable USE(BUILTIN_FRAME_ADDRESS) regardless of platform is the compilers and architectures match.
2370
2371         * wtf/Platform.h:
2372
2373 2019-10-23  Tim Horton  <timothy_horton@apple.com>
2374
2375         macCatalyst: Should dispatch contextmenu event on right click
2376         https://bugs.webkit.org/show_bug.cgi?id=203316
2377         <rdar://problem/54617376>
2378
2379         Reviewed by Wenson Hsieh.
2380
2381         * wtf/FeatureDefines.h:
2382
2383 2019-10-23  Truitt Savell  <tsavell@apple.com>
2384
2385         Unreviewed, rolling out r251261.
2386
2387         This broke multiple tests
2388
2389         Reverted changeset:
2390
2391         "Using version 1 CFRunloopSource for faster task dispatch"
2392         https://bugs.webkit.org/show_bug.cgi?id=202874
2393         https://trac.webkit.org/changeset/251261
2394
2395 2019-10-23  Myles C. Maxfield  <mmaxfield@apple.com>
2396
2397         [iOS] Remove Hiragino Sans site-specific quirk for Yahoo Japan
2398         https://bugs.webkit.org/show_bug.cgi?id=203345
2399
2400         Reviewed by Simon Fraser.
2401
2402         * wtf/Platform.h:
2403
2404 2019-10-22  Yusuke Suzuki  <ysuzuki@apple.com>
2405
2406         Make `JSGlobalObject*` threading change more stabilized by adding tests and assertions
2407         https://bugs.webkit.org/show_bug.cgi?id=203274
2408
2409         Reviewed by Saam Barati.
2410
2411         * wtf/Platform.h:
2412
2413 2019-10-22  Antti Koivisto  <antti@apple.com>
2414
2415         operator==(Vector, Vector) should work with different inline capacities
2416         https://bugs.webkit.org/show_bug.cgi?id=203245
2417
2418         Reviewed by Alex Christensen.
2419
2420         Also allow different overflow behavior and minimum capacity.
2421
2422         * wtf/Vector.h:
2423         (WTF::operator==):
2424         (WTF::operator!=):
2425
2426 2019-10-22  Rob Buis  <rbuis@igalia.com>
2427
2428         https://bugs.webkit.org/show_bug.cgi?id=169667
2429         URL: protocol setter needs to be more restrictive around file
2430
2431         Reviewed by Alex Christensen.
2432
2433         Restrict setting protocol to "file" as indictaed in the spec [1].
2434
2435         Test: imported/w3c/web-platform-tests/url/url-setters.html
2436
2437         [1] https://url.spec.whatwg.org/#scheme-state steps 2.1.3 and 2.1.4.
2438
2439         * wtf/URL.cpp:
2440         (WTF::URL::setProtocol):
2441
2442 2019-10-21  Tim Horton  <timothy_horton@apple.com>
2443
2444         macCatalyst: Swipe navigation gestures do not work
2445         https://bugs.webkit.org/show_bug.cgi?id=203205
2446         <rdar://problem/54617473>
2447
2448         Reviewed by Wenson Hsieh.
2449
2450         * wtf/Platform.h:
2451         Add a new HAVE.
2452
2453 2019-10-20  Mark Lam  <mark.lam@apple.com>
2454
2455         Remove all uses of untagCodePtr in debugging code.
2456         https://bugs.webkit.org/show_bug.cgi?id=203188
2457         <rdar://problem/56453043> 
2458
2459         Reviewed by Yusuke Suzuki.
2460
2461         We want the ability to always assert on failure to authenticate in untagCodePtr
2462         (though we don't currently do that yet).
2463
2464         * wtf/PtrTag.cpp:
2465         (WTF::tagForPtr):
2466         * wtf/PtrTag.h:
2467         (WTF::retagCodePtrImpl):
2468         (WTF::tagCFunctionPtrImpl):
2469         (WTF::untagCFunctionPtrImpl):
2470         (WTF::assertIsCFunctionPtr):
2471         (WTF::isTaggedWith):
2472
2473 2019-10-19  Simon Fraser  <simon.fraser@apple.com>
2474
2475         Add support to TextStream for dumping HashMap<> and HashSet<>
2476         https://bugs.webkit.org/show_bug.cgi?id=202969
2477
2478         Reviewed by Dean Jackson.
2479         
2480         Make it possible to output HashMap<> and HashSet<> to TextStream,
2481         so long as key and value types are streamable. Also implement operator<<(char)
2482         so that chars show as ASCII, rather than numbers.
2483
2484         * wtf/text/TextStream.cpp:
2485         (WTF::TextStream::operator<<):
2486         * wtf/text/TextStream.h:
2487         (WTF::operator<<):
2488
2489 2019-10-18  Yusuke Suzuki  <ysuzuki@apple.com>
2490
2491         [JSC] Make ConcurrentJSLock Lock even if ENABLE_CONCURRENT_JS=OFF
2492         https://bugs.webkit.org/show_bug.cgi?id=202892
2493
2494         Reviewed by Mark Lam.
2495
2496         BaselineJIT also has concurrent compiler. ENABLE(CONCURRENT_JS) should not rely on ENABLE(DFG_JIT).
2497         It should rely on ENABLE(JIT) instead.
2498
2499         * wtf/Platform.h:
2500
2501 2019-10-17  Mark Lam  <mark.lam@apple.com>
2502
2503         Use constexpr in more places and remove some unnecessary external linkage.
2504         https://bugs.webkit.org/show_bug.cgi?id=203115
2505
2506         Reviewed by Yusuke Suzuki.
2507
2508         Also removed unused lockSpinLimit in Threading.h.
2509
2510         * wtf/MD5.h:
2511         * wtf/SHA1.h:
2512         * wtf/StackBounds.h:
2513         * wtf/Threading.h:
2514
2515 2019-10-17  Sihui Liu  <sihui_liu@apple.com>
2516
2517         Using version 1 CFRunloopSource for faster task dispatch
2518         https://bugs.webkit.org/show_bug.cgi?id=202874
2519
2520         Reviewed by Geoffrey Garen.
2521
2522         We used CFRunLoopWakeUp to wake up runloop to process source, which seems to be slow according to profiling. To 
2523         avoid calling CFRunLoopWakeUp, we should use version 1 CFRunloopSource instead of version 0. This patch brings
2524         about 15% speedup for test PerformanceTests/IndexedDB/basic/objectstore-get.html.
2525
2526         * wtf/RunLoop.cpp:
2527         (WTF::RunLoop::initializeWebRunLoop):
2528         (WTF::RunLoop::web):
2529         * wtf/RunLoop.h:
2530         * wtf/cf/RunLoopCF.cpp:
2531         (WTF::RunLoop::performWork):
2532         (WTF::RunLoop::RunLoop):
2533         (WTF::RunLoop::~RunLoop):
2534         (WTF::RunLoop::wakeUp):
2535         * wtf/cocoa/MainThreadCocoa.mm:
2536         (WTF::initializeMainThreadPlatform):
2537         (WTF::scheduleDispatchFunctionsOnMainThread):
2538         (WTF::initializeWebThread):
2539         (-[JSWTFMainThreadCaller call]): Deleted.
2540
2541 2019-10-16  Wenson Hsieh  <wenson_hsieh@apple.com>
2542
2543         Unreviewed, fix the internal macOS 10.13 and 10.14 builds after r251171
2544
2545         * wtf/Platform.h: Add a HAVE() macro for AXClientType, which is only available on macOS 10.15+ SDKs.
2546
2547 2019-10-15  Chris Dumez  <cdumez@apple.com>
2548
2549         [macOS] Simplify main thread initialization
2550         https://bugs.webkit.org/show_bug.cgi?id=203001
2551
2552         Reviewed by Geoff Garen.
2553
2554         Simplify main thread initialization on macOS by always using pthread main as main thread.
2555         The complexity is now isolated to the USE(WEB_THREAD) code path.
2556
2557         This patch also adds a debug assertion in WTF::initializeWebThreadPlatform() to make sure
2558         it gets called on the actual main thread. In release, it will log a fault message indicating
2559         it was called on the wrong thread.
2560
2561         * wtf/MainThread.cpp:
2562         * wtf/MainThread.h:
2563         * wtf/RefCounted.h:
2564         (WTF::RefCountedBase::RefCountedBase):
2565         (WTF::RefCountedBase::applyRefDerefThreadingCheck const):
2566         * wtf/cocoa/MainThreadCocoa.mm:
2567         (WTF::initializeMainThreadPlatform):
2568         (WTF::scheduleDispatchFunctionsOnMainThread):
2569         (WTF::initializeWebThreadPlatform):
2570         (WTF::canAccessThreadLocalDataForThread):
2571         (WTF::isMainThread):
2572         * wtf/generic/MainThreadGeneric.cpp:
2573         * wtf/text/cf/StringImplCF.cpp:
2574         (WTF::StringImpl::createCFString):
2575         * wtf/win/MainThreadWin.cpp:
2576
2577 2019-10-14  Tim Horton  <timothy_horton@apple.com>
2578
2579         Unify sources for bindings more densely
2580         https://bugs.webkit.org/show_bug.cgi?id=202918
2581
2582         Reviewed by Simon Fraser.
2583
2584         * Scripts/generate-unified-source-bundles.rb:
2585         Add an option to separate and more densely unify sources that match
2586         a given glob pattern.
2587
2588 2019-10-14  Keith Rollin  <krollin@apple.com>
2589
2590         Remove some support for < iOS 13
2591         https://bugs.webkit.org/show_bug.cgi?id=202820
2592         <rdar://problem/56164838>
2593
2594         Reviewed by Anders Carlsson.
2595
2596         Remove some support for iOS versions less than 13.0.
2597
2598         Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
2599         and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
2600         values >= 130000. This means that expressions like
2601         "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
2602         "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
2603
2604         This removal is part of a series of patches effecting the removal of
2605         dead code for old versions of iOS. This particular pass involves
2606         changes in which Devin Rousso was involved. These changes are isolated
2607         from other similar changes in order to facilitate the reviewing
2608         process.
2609
2610         * wtf/Platform.h:
2611
2612 2019-10-14  Alex Christensen  <achristensen@webkit.org>
2613
2614         REGRESSION: [iOS 13?] TestWebKitAPI.SharedBufferTest.tryCreateArrayBufferLargeSegments is failing
2615         https://bugs.webkit.org/show_bug.cgi?id=201902
2616
2617         Reviewed by Ryosuke Niwa.
2618
2619         * wtf/Vector.h:
2620         The code introduced in r108153 to workaround a warning when building Chrome was causing us to use uninitialized memory
2621         when we create a Vector with the size_t/{signed,unsigned}char constructor with a constexpr size_t.
2622         This was the cause of bug 201902 and bug 201620 which only manifested themselves in release builds with some compilers.
2623
2624 2019-10-14  Per Arne Vollan  <pvollan@apple.com>
2625
2626         [macOS] Sandbox extensions should be created with audit tokens, not PIDs
2627         https://bugs.webkit.org/show_bug.cgi?id=201828
2628
2629         Reviewed by Brent Fulgham.
2630
2631         Remove HAVE macro for issuing sandbox extension by PID, and fix version checks for the HAVE
2632         macros related to issuing sandbox extensions by audit token. Remove SPI for creating
2633         extensions by PID, and add SPI for creating mach extension by audit token. Also remove an
2634         unneeded flag.
2635         
2636         * wtf/Platform.h:
2637         * wtf/spi/darwin/SandboxSPI.h:
2638
2639 2019-10-08  Ryosuke Niwa  <rniwa@webkit.org>
2640
2641         Make WebInspector's remote debug EventLoop code into RunLoop
2642         https://bugs.webkit.org/show_bug.cgi?id=202716
2643
2644         Reviewed by Joseph Pecoraro.
2645
2646         This patch merges WebInspector's EventLoop code into RunLoop as a static function.
2647
2648         * wtf/RunLoop.h:
2649         (WTF::RunLoop::cycle):
2650         * wtf/cf/RunLoopCF.cpp:
2651         (WTF::RunLoop::cycle): Added.
2652         * wtf/generic/RunLoopGeneric.cpp:
2653         (WTF::RunLoop::cycle): Added.
2654         * wtf/glib/RunLoopGLib.cpp:
2655         (WTF::RunLoop::cycle): Added.
2656         * wtf/win/RunLoopWin.cpp:
2657         (WTF::RunLoop::cycle): Added.
2658
2659 2019-10-10  Ryosuke Niwa  <rniwa@webkit.org>
2660
2661         Make it safe to store a ThreadSafeRefCounted object in Ref & RefPtr safe inside its destructor
2662         https://bugs.webkit.org/show_bug.cgi?id=201576
2663
2664         Reviewed by Geoffrey Garen and Mark Lam.
2665
2666         This patch leaves m_refCount 1 inside the last deref call to ThreadSafeRefCounted
2667         so that storing an instance of this object in Ref or RefPtr would not trigger a recursive delete.
2668
2669         Note: this patch does not try to fix a race condition by which another thread tries to ref()
2670         this object after the "last" call to deref had happened since such a code would ref() this object
2671         long after it had been removed (UAF), nor some code calling deref() before calling ref() inside
2672         a destructor since there is no way to defend against unpaired calls to ref() & deref() like that.
2673
2674         Also added m_deletionHasBegun like RefCounted.
2675
2676         * wtf/ThreadSafeRefCounted.h:
2677         (WTF::ThreadSafeRefCountedBase::ref const):
2678         (WTF::ThreadSafeRefCountedBase::hasOneRef const):
2679         (WTF::ThreadSafeRefCountedBase::derefBase const):
2680
2681 2019-10-11  Alex Christensen  <achristensen@webkit.org>
2682
2683         Only use CFNetwork SPI for metrics where needed
2684         https://bugs.webkit.org/show_bug.cgi?id=202825
2685
2686         Reviewed by Joseph Pecoraro.
2687
2688         * wtf/Platform.h:
2689
2690 2019-10-11  Keith Rollin  <krollin@apple.com>
2691
2692         Remove some support for < iOS 13
2693         https://bugs.webkit.org/show_bug.cgi?id=202819
2694         <rdar://problem/56164233>
2695
2696         Reviewed by Anders Carlsson.
2697
2698         Remove some support for iOS versions less than 13.0.
2699
2700         Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
2701         and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
2702         values >= 130000. This means that expressions like
2703         "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
2704         "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
2705
2706         This removal is part of a series of patches effecting the removal of
2707         dead code for old versions of iOS. This particular pass involves
2708         changes in which Jiewen Tan was involved. These changes are isolated
2709         from other similar changes in order to facilitate the reviewing
2710         process.
2711
2712         * wtf/Platform.h:
2713
2714 2019-10-11  Jonathan Bedard  <jbedard@apple.com>
2715
2716         Unreviewed, rolling out r250945.
2717
2718         Broke 18 Debug API tests
2719
2720         Reverted changeset:
2721
2722         "Add support for CompactPointerTuple<..., OptionSet<...>>"
2723         https://bugs.webkit.org/show_bug.cgi?id=201316
2724         https://trac.webkit.org/changeset/250945
2725
2726 2019-10-11  Xabier Rodriguez Calvar  <calvaris@igalia.com>
2727
2728         MediaTime pretty printer can print if time is invalid
2729         https://bugs.webkit.org/show_bug.cgi?id=202735
2730
2731         Reviewed by Eric Carlson.
2732
2733         * wtf/MediaTime.cpp:
2734         (WTF::MediaTime::toString const): Append ", invalid" if isInvalid().
2735         (WTF::MediaTime::toJSONObject const): Set boolean invalid to true
2736         when invalid.
2737
2738 2019-10-09  Keith Rollin  <krollin@apple.com>
2739
2740         Remove some support for < iOS 13
2741         https://bugs.webkit.org/show_bug.cgi?id=202371
2742         <rdar://problem/55853960>
2743
2744         Reviewed by Youenn Fablet.
2745
2746         Remove some support for iOS versions less than 13.0.
2747
2748         Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
2749         and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
2750         values >= 130000. This means that expressions like
2751         "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
2752         "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
2753
2754         This removal is part of a series of patches effecting the removal of
2755         dead code for old versions of iOS. This particular pass involves
2756         changes in which Dean Jackson was involved. These changes are isolated
2757         from other similar changes in order to facilitate the reviewing
2758         process.
2759
2760         * wtf/FeatureDefines.h:
2761         * wtf/Platform.h:
2762
2763 2019-10-09  Daniel Bates  <dabates@apple.com>
2764
2765         Add support for CompactPointerTuple<..., OptionSet<...>>
2766         https://bugs.webkit.org/show_bug.cgi?id=201316
2767
2768         Reviewed by Yusuke Suzuki.
2769
2770         Support using an OptionSet<> for the byte value portion of a CompactPointerTuple so that
2771         you can encode both a pointer and 8-bit bitmask in a type-safe way. Another benefit of
2772         supporting OptionSet<> is that we have a LLDB pretty-printer for it so this makes it easy
2773         to see the set flags in such a CompactPointerTuple.
2774
2775         * wtf/CompactPointerTuple.h:
2776
2777 2019-10-09  Russell Epstein  <repstein@apple.com>
2778
2779         Unreviewed, rolling out r250930.
2780
2781         Broke watchOS Builds
2782
2783         Reverted changeset:
2784
2785         "Add support for CompactPointerTuple<..., OptionSet<...>>"
2786         https://bugs.webkit.org/show_bug.cgi?id=201316
2787         https://trac.webkit.org/changeset/250930
2788
2789 2019-10-09  Daniel Bates  <dabates@apple.com>
2790
2791         Add support for CompactPointerTuple<..., OptionSet<...>>
2792         https://bugs.webkit.org/show_bug.cgi?id=201316
2793
2794         Reviewed by Yusuke Suzuki.
2795
2796         Support using an OptionSet<> for the byte value portion of a CompactPointerTuple so that
2797         you can encode both a pointer and 8-bit bitmask in a type-safe way. Another benefit of
2798         supporting OptionSet<> is that we have a LLDB pretty-printer for it so this makes it easy
2799         to see the set flags in such a CompactPointerTuple.
2800
2801         * wtf/CompactPointerTuple.h:
2802
2803 2019-10-08  Robin Morisset  <rmorisset@apple.com>
2804
2805         dataLogIf should be ALWAYS_INLINE
2806         https://bugs.webkit.org/show_bug.cgi?id=202703
2807
2808         Reviewed by Saam Barati.
2809
2810         We often have the following pattern:
2811         ```
2812         static constexpr bool verbose = false;
2813         ...
2814         dataLogLnIf(verbose, "Something is happening");
2815         ```
2816         To make sure that these are always properly eliminated I'd like to make dataLogIf/dataLogLnIf ALWAYS_INLINE.
2817         
2818         We may as well mark the branch as UNLIKELY too, for the cases where the condition comes from Options::verboseSomething() and is only known at runtime.
2819
2820         * wtf/DataLog.h:
2821         (WTF::dataLogIf):
2822         (WTF::dataLogLnIf):
2823
2824 2019-10-07  Alexey Proskuryakov  <ap@apple.com>
2825
2826         Build failure in WebHTMLView.mm with the public SDK (Xcode 11 and Mojave)
2827         https://bugs.webkit.org/show_bug.cgi?id=199705
2828
2829         Patch by Dan Bernstein and Kenneth Russell.
2830         Reviewed by Alexey Proskuryakov.
2831
2832         * wtf/Platform.h: Added HAVE_SUBVIEWS_IVAR_DECLARED_BY_SDK.
2833
2834 2019-10-04  Commit Queue  <commit-queue@webkit.org>
2835
2836         Unreviewed, rolling out r250762.
2837         https://bugs.webkit.org/show_bug.cgi?id=202609
2838
2839         Broke JSC tests by breaking refCount check in
2840         DropAllLocks::DropAllLocks (Requested by rniwa on #webkit).
2841
2842         Reverted changeset:
2843
2844         "Make a ThreadSafeRefCounted object safe to ref & deref inside
2845         its destructor"
2846         https://bugs.webkit.org/show_bug.cgi?id=201576
2847         https://trac.webkit.org/changeset/250762
2848
2849 2019-10-04  Ryosuke Niwa  <rniwa@webkit.org>
2850
2851         Build fix for macOS Catalina.
2852
2853         * wtf/spi/darwin/SandboxSPI.h:
2854
2855 2019-10-04  Ryosuke Niwa  <rniwa@webkit.org>
2856
2857         Make a ThreadSafeRefCounted object safe to ref & deref inside its destructor
2858         https://bugs.webkit.org/show_bug.cgi?id=201576
2859
2860         Reviewed by Geoffrey Garen.
2861
2862         This patch leaves m_refCount 1 inside the last deref call to ThreadSafeRefCounted
2863         such that ref'ing and deref'ing it again inside its destructor would never try
2864         to double delete the object.
2865
2866         Also added m_deletionHasBegun like RefCounted.
2867
2868         * wtf/ThreadSafeRefCounted.h:
2869         (WTF::ThreadSafeRefCountedBase::ref const):
2870         (WTF::ThreadSafeRefCountedBase::hasOneRef const):
2871         (WTF::ThreadSafeRefCountedBase::derefBase const):
2872
2873 2019-10-04  Heiko Becker  <heirecka@exherbo.org>
2874
2875         Fix build with icu 65.1
2876         https://bugs.webkit.org/show_bug.cgi?id=202600
2877
2878         Reviewed by Konstantin Tokarev.
2879
2880         * wtf/URLHelpers.cpp:
2881         (WTF::URLHelpers::allCharactersInIDNScriptWhiteList):
2882
2883 2019-10-04  Truitt Savell  <tsavell@apple.com>
2884
2885         Unreviewed, rolling out r250583.
2886
2887         Broke multiple internal API tests
2888
2889         Reverted changeset:
2890
2891         "[JSC] Place VM* in TLS"
2892         https://bugs.webkit.org/show_bug.cgi?id=202391
2893         https://trac.webkit.org/changeset/250583
2894
2895 2019-10-03  Keith Rollin  <krollin@apple.com>
2896
2897         Remove some support for < iOS 13
2898         https://bugs.webkit.org/show_bug.cgi?id=202549
2899         <rdar://problem/55967232>
2900
2901         Reviewed by Alex Christensen.
2902
2903         Remove some support for iOS versions less than 13.0. 
2904
2905         Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
2906         and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
2907         values >= 130000. This means that expressions like
2908         "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
2909         "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
2910
2911         This removal is part of a series of patches effecting the removal of
2912         dead code for old versions of iOS. This particular pass involves
2913         changes in which Michael Saboff was involved. These changes are
2914         isolated from other similar changes in order to facilitate the
2915         reviewing process.
2916
2917         * wtf/spi/darwin/ProcessMemoryFootprint.h:
2918
2919 2019-10-03  Per Arne Vollan  <pvollan@apple.com>
2920
2921         REGRESSION(249649): Unable to open local files in MiniBrowser on macOS
2922         https://bugs.webkit.org/show_bug.cgi?id=201798
2923
2924         Reviewed by Brent Fulgham.
2925
2926         Add HAVE_AUDIT_TOKEN and SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN defines.
2927
2928         * wtf/Platform.h:
2929
2930 2019-10-02  Myles C. Maxfield  <mmaxfield@apple.com>
2931
2932         REGRESSION (r245672): <select> dropdown with text-rendering: optimizeLegibility freezes Safari
2933         https://bugs.webkit.org/show_bug.cgi?id=202198
2934
2935         Reviewed by Tim Horton.
2936
2937         * wtf/Platform.h:
2938
2939 2019-10-02  Mark Lam  <mark.lam@apple.com>
2940
2941         DoubleToStringConverter::ToExponential() should null terminate its string.
2942         https://bugs.webkit.org/show_bug.cgi?id=202492
2943         <rdar://problem/55907708>
2944
2945         Reviewed by Filip Pizlo.
2946
2947         * wtf/dtoa/double-conversion.cc:
2948         - DoubleToStringConverter::DoubleToAscii() always produces a null terminated
2949           string.  Fixed the padding loop in DoubleToStringConverter::ToExponential()
2950           that follows it to also keep the null terminator.
2951
2952         * wtf/dtoa/utils.h:
2953         (WTF::double_conversion::StringBuilder::AddSubstring):
2954         - An assertion in here was using strlen() which indicates that it expects a null
2955           terminator in the incoming string.  However, this requirement is too restrictive.
2956           The code does not actually depend on the string having a null terminator, only
2957           that a null terminator does not manifest before the nth character.  Changed
2958           the assertion to use strnlen() instead to reflect this.
2959
2960 2019-10-02  Zan Dobersek  <zdobersek@igalia.com>
2961
2962         [Nicosia] Enable async scrolling at build-time for Nicosia-using ports
2963         https://bugs.webkit.org/show_bug.cgi?id=202397
2964
2965         Reviewed by Carlos Garcia Campos.
2966
2967         * wtf/Platform.h:
2968         Flip ENABLE_KINETIC_SCROLLING to 1 also for PlayStation and WPE ports
2969         when ASYNC_SCROLLING is enabled.
2970 2019-10-01  Jonathan Bedard  <jbedard@apple.com>
2971
2972         WebKitTestRunner: Many tests timeout on macOS Catalina
2973         https://bugs.webkit.org/show_bug.cgi?id=201616
2974         <rdar://problem/55200897>
2975
2976         Reviewed by Alexey Proskuryakov.
2977
2978         * wtf/Platform.h: USE_SOURCE_APPLICATION_AUDIT_DATA should only be enabled on
2979         builds which allow restricted entitlements.
2980
2981 2019-10-01  Yusuke Suzuki  <ysuzuki@apple.com>
2982
2983         [JSC] Place VM* in TLS
2984         https://bugs.webkit.org/show_bug.cgi?id=202391
2985
2986         Reviewed by Mark Lam.
2987
2988         Changed FastTLS's key name from WTF_GC_TLC_KEY to WTF_VM_KEY.
2989
2990         * wtf/FastTLS.h:
2991
2992 2019-10-01  Keith Rollin  <krollin@apple.com>
2993
2994         Remove some support for < iOS 13
2995         https://bugs.webkit.org/show_bug.cgi?id=202386
2996         <rdar://problem/55863017>
2997
2998         Reviewed by Eric Carlson.
2999
3000         Remove some support for iOS versions less than 13.0.
3001
3002         Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
3003         and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
3004         values >= 130000. This means that expressions like
3005         "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
3006         "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
3007
3008         This removal is part of a series of patches effecting the removal of
3009         dead code for old versions of iOS. This particular pass involves
3010         changes in which Jer Noble was involved. These changes are isolated
3011         from other similar changes in order to facilitate the reviewing
3012         process.
3013
3014         * wtf/Platform.h:
3015
3016
3017 2019-09-30  Alex Christensen  <achristensen@webkit.org>
3018
3019         Resurrect Mac CMake build
3020         https://bugs.webkit.org/show_bug.cgi?id=202384
3021
3022         Rubber-stamped by Tim Horton.
3023
3024         * wtf/PlatformMac.cmake:
3025
3026 2019-09-30  Mark Lam  <mark.lam@apple.com>
3027
3028         Add some assertions to convertUTF8ToUTF16().
3029         https://bugs.webkit.org/show_bug.cgi?id=202356
3030         <rdar://problem/52846813>
3031
3032         Reviewed by Filip Pizlo.
3033
3034         * wtf/unicode/UTF8Conversion.cpp:
3035         (WTF::Unicode::convertUTF8ToUTF16):
3036
3037 2019-09-30  Guillaume Emont  <guijemont@igalia.com>
3038
3039         Don't try to use backtrace() on MIPS
3040         https://bugs.webkit.org/show_bug.cgi?id=202196
3041
3042         Reviewed by Carlos Garcia Campos.
3043
3044         backtrace() on mips seems to always return 1 on mips/glibc (I tried
3045         with buildroot, debian stable and debian testing, with and without
3046         libunwind), which renders it useless and breaks a RELEASE_ASSERT in
3047         StackTrace::captureStackTrace().
3048
3049         * wtf/Platform.h:
3050
3051 2019-09-29  Keith Rollin  <krollin@apple.com>
3052
3053         Address static analysis warning in ParkingLot.cpp: Access to field 'size' results in a dereference of a null pointer
3054         https://bugs.webkit.org/show_bug.cgi?id=202154
3055         <rdar://problem/55672103>
3056
3057         Reviewed by Brent Fulgham.
3058
3059         Static analysis reports the following:
3060
3061             .../OpenSource/Source/WTF/wtf/ParkingLot.cpp:376:30: warning: Access to field 'size' results in a dereference of a null pointer (loaded from variable 'oldHashtable')
3062                 RELEASE_ASSERT(newSize > oldHashtable->size);
3063                                          ^~~~~~~~~~~~~~~~~~
3064
3065         This warning arises because earlier code checks to see if oldHashtable
3066         is NULL, leading the static analyzer to think that it *could* be NULL.
3067         However, even earlier code actually ensures that oldHashtable will not
3068         be NULL. Address this by removing the NULL check, and back it up with
3069         an ASSERT to ensure that it's not NULL.
3070
3071         * wtf/ParkingLot.cpp:
3072
3073 2019-09-26  Alexey Shvayka  <shvaikalesh@gmail.com>
3074
3075         toExponential, toFixed, and toPrecision should allow arguments up to 100
3076         https://bugs.webkit.org/show_bug.cgi?id=199163
3077
3078         Reviewed by Ross Kirsling.
3079
3080         Increase size of NumberToStringBuffer: <21 digits> + decimal point + <100 digits> + null char = 123.
3081         Increase kMaxFixedDigitsAfterPoint to make Number.prototype.toFixed work with arguments up to 100.
3082         Also update other constants to their correct values.
3083
3084         * wtf/dtoa.h:
3085         * wtf/dtoa/double-conversion.cc:
3086         * wtf/dtoa/double-conversion.h:
3087
3088 2019-09-25  Keith Rollin  <krollin@apple.com>
3089
3090         Address static analysis warning in UTextProviderLatin1.cpp: Array access results in a null pointer dereference
3091         https://bugs.webkit.org/show_bug.cgi?id=202155
3092         <rdar://problem/55672422>
3093
3094         Reviewed by Geoffrey Garen.
3095
3096         Xcode's static analysis reports:
3097
3098             .../OpenSource/Source/WTF/wtf/text/icu/UTextProviderLatin1.cpp:185:22: warning: Array access (from variable 'dest') results in a null pointer dereference
3099                     dest[length] = 0;
3100                     ~~~~         ^
3101
3102         This error is due to an earlier "if" statement that caused the static
3103         analyzer to infer that "dest" could be NULL. It turns out that that
3104         previous check was in error, in that it tested for "!dest" when it
3105         should have tested for "dest". So this patch fixes that.
3106
3107         Even with that error fixed, the static analyzer will still infer that
3108         "dest" could be NULL at the point shown above. Therefore, add a "dest"
3109         test just before the assignment.
3110
3111         * wtf/text/icu/UTextProviderLatin1.cpp:
3112         (WTF::uTextLatin1Extract):
3113
3114 2019-09-25  Wenson Hsieh  <wenson_hsieh@apple.com>
3115
3116         [iPadOS] [DataActivation] Focus moves away after focusing input fields on www.att.com
3117         https://bugs.webkit.org/show_bug.cgi?id=202167
3118         <rdar://problem/55185021>
3119
3120         Reviewed by Tim Horton.
3121
3122         Declare DYLD_IOS_VERSION_13_2.
3123
3124         * wtf/spi/darwin/dyldSPI.h:
3125
3126 2019-09-24  Keith Rollin  <krollin@apple.com>
3127
3128         Coalesce or remove PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
3129         https://bugs.webkit.org/show_bug.cgi?id=202119
3130         <rdar://problem/55638792>
3131
3132         Reviewed by Alex Christensen.
3133
3134         After refactoring and other code evolution, some platform checks have
3135         ended up looking like PLATFORM(MAC) || PLATFORM(IOS_FAMILY) (or
3136         vice-versa). These can be converted into the equivalent
3137         PLATFORM(COCOA). Where the instance occurs in a Cocoa-only file, the
3138         check can be removed altogether (along with any "#else" branches).
3139
3140         * wtf/Platform.h:
3141         * wtf/text/TextBreakIterator.h:
3142
3143 2019-09-21  David Kilzer  <ddkilzer@apple.com>
3144
3145         clang-tidy: Fix unnecessary copy/ref churn of for loop variables in WTF/JavaScriptCore
3146         <https://webkit.org/b/202069>
3147
3148         Reviewed by Mark Lam.
3149
3150         Fix unwanted copying/ref churn of loop variables by making them
3151         const references.
3152
3153         * wtf/AggregateLogger.h:
3154         (WTF::AggregateLogger::log const):
3155
3156 2019-09-20  Keith Rollin  <krollin@apple.com>
3157
3158         Remove some support for < iOS 13
3159         https://bugs.webkit.org/show_bug.cgi?id=201967
3160         <rdar://problem/55504738>
3161
3162         Reviewed by Andy Estes.
3163
3164         Remove some support for iOS versions less than 13.0.
3165
3166         Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
3167         and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
3168         values >= 130000. This means that expressions like
3169         "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
3170         "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
3171
3172         After version checks have been removed, there are some cases where the
3173         preprocessor conditional looks like "#if PLATFORM(MAC) ||
3174         PLATFORM(IOS_FAMILY)". These can be collapsed into "#if
3175         PLATFORM(COCOA)". This additional cleanup will be performed in a
3176         subsequent patch.
3177
3178         This removal is part of a series of patches effecting the removal of
3179         dead code for old versions of iOS. This particular pass involves
3180         changes in which Andy Estes was involved. These changes are isolated
3181         from other similar changes in order to facilitate the reviewing
3182         process.
3183
3184         * wtf/FeatureDefines.h:
3185
3186 2019-09-20  Keith Rollin  <krollin@apple.com>
3187
3188         Remove some support for < iOS 13
3189         https://bugs.webkit.org/show_bug.cgi?id=201973
3190         <rdar://problem/55506966>
3191
3192         Reviewed by Alex Christensen.
3193
3194         Remove some support for iOS versions less than 13.0.
3195
3196         Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED
3197         and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have
3198         values >= 130000. This means that expressions like
3199         "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and
3200         "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True.
3201
3202         This removal is part of a series of patches effecting the removal of
3203         dead code for old versions of iOS. This particular pass involves
3204         changes in which Chris Dumez was involved. These changes are isolated
3205         from other similar changes in order to facilitate the reviewing
3206         process.
3207
3208         * wtf/FeatureDefines.h:
3209
3210 2019-09-20  Paulo Matos  <pmatos@igalia.com>
3211
3212         Implement memory monitoring functions for Linux OS
3213         https://bugs.webkit.org/show_bug.cgi?id=200391
3214
3215         Reviewed by Žan Doberšek.
3216
3217         * wtf/PlatformGTK.cmake:
3218         * wtf/PlatformJSCOnly.cmake:
3219         * wtf/PlatformWPE.cmake:
3220         * wtf/linux/ProcessMemoryFootprint.h: Added.
3221         (ProcessMemoryFootprint::now):
3222         (ProcessMemoryFootprint::resetPeak):
3223
3224 2019-09-20  Libor Bukata  <libor.bukata@oracle.com>
3225
3226         UI process crash when using callOnMainThread() after the main thread dispatcher has been destroyed
3227         https://bugs.webkit.org/show_bug.cgi?id=197266
3228
3229         Reviewed by Carlos Garcia Campos.
3230
3231         * wtf/generic/MainThreadGeneric.cpp:
3232         (WTF::scheduleDispatchFunctionsOnMainThread):
3233
3234 2019-09-17  Mark Lam  <mark.lam@apple.com>
3235
3236         Use constexpr instead of const in symbol definitions that are obviously constexpr.
3237         https://bugs.webkit.org/show_bug.cgi?id=201879
3238
3239         Rubber-stamped by Joseph Pecoraro.
3240
3241         * wtf/Assertions.cpp:
3242         * wtf/AutomaticThread.cpp:
3243         * wtf/BitVector.h:
3244         * wtf/Bitmap.h:
3245         * wtf/BloomFilter.h:
3246         * wtf/Brigand.h:
3247         * wtf/CheckedArithmetic.h:
3248         * wtf/CrossThreadCopier.h:
3249         * wtf/CurrentTime.cpp:
3250         * wtf/DataLog.cpp:
3251         * wtf/DateMath.cpp:
3252         (WTF::daysFrom1970ToYear):
3253         * wtf/DeferrableRefCounted.h:
3254         * wtf/GetPtr.h:
3255         * wtf/HashFunctions.h:
3256         * wtf/HashMap.h:
3257         * wtf/HashTable.h:
3258         * wtf/HashTraits.h:
3259         * wtf/JSONValues.cpp:
3260         * wtf/JSONValues.h:
3261         * wtf/ListHashSet.h:
3262         * wtf/Lock.h:
3263         * wtf/LockAlgorithm.h:
3264         * wtf/LockAlgorithmInlines.h:
3265         (WTF::Hooks>::lockSlow):
3266         * wtf/Logger.h:
3267         * wtf/LoggerHelper.h:
3268         (WTF::LoggerHelper::childLogIdentifier const):
3269         * wtf/MainThread.cpp:
3270         * wtf/MetaAllocatorPtr.h:
3271         * wtf/MonotonicTime.h:
3272         * wtf/NaturalLoops.h:
3273         (WTF::NaturalLoops::NaturalLoops):
3274         * wtf/ObjectIdentifier.h:
3275         * wtf/RAMSize.cpp:
3276         * wtf/Ref.h:
3277         * wtf/RefPtr.h:
3278         * wtf/RetainPtr.h:
3279         * wtf/SchedulePair.h:
3280         * wtf/StackShot.h:
3281         * wtf/StdLibExtras.h:
3282         * wtf/TinyPtrSet.h:
3283         * wtf/URL.cpp:
3284         * wtf/URLHash.h:
3285         * wtf/URLParser.cpp:
3286         (WTF::URLParser::defaultPortForProtocol):
3287         * wtf/Vector.h:
3288         * wtf/VectorTraits.h:
3289         * wtf/WallTime.h:
3290         * wtf/WeakHashSet.h:
3291         * wtf/WordLock.h:
3292         * wtf/cocoa/CPUTimeCocoa.cpp:
3293         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
3294         * wtf/persistence/PersistentDecoder.h:
3295         * wtf/persistence/PersistentEncoder.h:
3296         * wtf/text/AtomStringHash.h:
3297         * wtf/text/CString.h:
3298         * wtf/text/StringBuilder.cpp:
3299         (WTF::expandedCapacity):
3300         * wtf/text/StringHash.h:
3301         * wtf/text/StringImpl.h:
3302         * wtf/text/StringToIntegerConversion.h:
3303         (WTF::toIntegralType):
3304         * wtf/text/SymbolRegistry.h:
3305         * wtf/text/TextStream.cpp:
3306         (WTF::hasFractions):
3307         * wtf/text/WTFString.h:
3308         * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp:
3309
3310 2019-09-16  Alex Christensen  <achristensen@webkit.org>
3311
3312         Remove "gopher" from list of special schemes in URLParser
3313         https://bugs.webkit.org/show_bug.cgi?id=201852
3314
3315         Reviewed by Simon Fraser.
3316
3317         There is little meaningful content on gopher servers, and WebKit does not actually support gopher.
3318         This makes WebKit match the behavior of Gecko and goes along with a change proposed at
3319         https://github.com/whatwg/url/issues/342
3320
3321         * wtf/URLParser.cpp:
3322         (WTF::URLParser::defaultPortForProtocol):
3323         (WTF::scheme):
3324         (WTF::URLParser::copyURLPartsUntil):
3325         (WTF::URLParser::parse):
3326
3327 2019-09-14  Yusuke Suzuki  <ysuzuki@apple.com>
3328
3329         Retire x86 32bit JIT support
3330         https://bugs.webkit.org/show_bug.cgi?id=201790
3331
3332         Reviewed by Mark Lam.
3333
3334         * wtf/Platform.h:
3335
3336 2019-09-13  Jonathan Bedard  <jbedard@apple.com>
3337
3338         iOS 13: Some SPI targets 13.1
3339         https://bugs.webkit.org/show_bug.cgi?id=201777
3340
3341         Reviewed by Alexey Proskuryakov.
3342
3343         * wtf/Platform.h:
3344
3345 2019-09-12  Mark Lam  <mark.lam@apple.com>
3346
3347         Harden JSC against the abuse of runtime options.
3348         https://bugs.webkit.org/show_bug.cgi?id=201597
3349         <rdar://problem/55167068>
3350
3351         Reviewed by Filip Pizlo.
3352
3353         Add a source file that was missing so that Xcode can search its contents too.
3354
3355         * WTF.xcodeproj/project.pbxproj:
3356
3357 2019-09-09  Tim Horton  <timothy_horton@apple.com>
3358
3359         Clarify some macCatalyst feature flags
3360         https://bugs.webkit.org/show_bug.cgi?id=201619
3361         <rdar://problem/54615618>
3362
3363         Reviewed by Megan Gardner.
3364
3365         * wtf/Platform.h:
3366         We prefer specific flags over platform checks.
3367
3368 2019-09-07  David Quesada  <david_quesada@apple.com>
3369
3370         REGRESSION(r248533): Unable to use WTF::RefCounted when building in a debug configuration against a non-debug WebKit
3371         https://bugs.webkit.org/show_bug.cgi?id=201585
3372         rdar://problem/55153369
3373
3374         Reviewed by Chris Dumez.
3375
3376         Export WTF::RefCountedBase::areThreadingChecksEnabledGlobally regardless of whether or not assertions
3377         are enabled for the WTF being built. This allows WebKit-based projects to use RefCounted for their own
3378         objects in a debug configuration without requiring a debug build of WebKit.
3379
3380         * wtf/RefCounted.cpp:
3381         * wtf/RefCounted.h:
3382
3383 2019-09-07  Mark Lam  <mark.lam@apple.com>
3384
3385         performJITMemcpy() source buffer should not be in the Gigacage.
3386         https://bugs.webkit.org/show_bug.cgi?id=201577
3387         <rdar://problem/55142606>
3388
3389         Reviewed by Michael Saboff.
3390
3391         * wtf/Gigacage.h:
3392         (Gigacage::contains):
3393
3394 2019-09-06  Mark Lam  <mark.lam@apple.com>
3395
3396         Harden protection of the Gigacage Config parameters.
3397         https://bugs.webkit.org/show_bug.cgi?id=201570
3398         <rdar://problem/55134229>
3399
3400         Reviewed by Saam Barati.
3401
3402         Just renaming some function names here.
3403
3404         * wtf/Gigacage.h:
3405         (Gigacage::forbidDisablingPrimitiveGigacage):
3406         (Gigacage::isDisablingPrimitiveGigacageForbidden):
3407         (Gigacage::disableDisablingPrimitiveGigacageIfShouldBeEnabled): Deleted.
3408         (Gigacage::isDisablingPrimitiveGigacageDisabled): Deleted.
3409
3410 2019-09-05  Mark Lam  <mark.lam@apple.com>
3411
3412         Refactor the Gigacage code to require less pointer casting.
3413         https://bugs.webkit.org/show_bug.cgi?id=201521
3414
3415         Reviewed by Saam Barati.
3416
3417         Remove some unneeded stubs in WTF Gigacage.h.
3418
3419         * wtf/Gigacage.cpp:
3420         * wtf/Gigacage.h:
3421         (Gigacage::name):
3422         (Gigacage::isEnabled):
3423         (Gigacage::basePtr): Deleted.
3424         (Gigacage::basePtrs): Deleted.
3425
3426 2019-08-30  Alex Christensen  <achristensen@webkit.org>
3427
3428         Remove HAVE_CFNETWORK_WITH_AUTO_ADDED_HTTP_HEADER_SUPPRESSION_SUPPORT conditional
3429         https://bugs.webkit.org/show_bug.cgi?id=201280
3430
3431         Reviewed by Youenn Fablet.
3432
3433         * wtf/Platform.h:
3434
3435 2019-08-30  Alex Christensen  <achristensen@webkit.org>
3436
3437         Remove HAVE_CFNETWORK_WITH_IGNORE_HSTS conditional
3438         https://bugs.webkit.org/show_bug.cgi?id=201279
3439
3440         Reviewed by Darin Adler.
3441
3442         * wtf/Platform.h:
3443
3444 2019-08-30  Alex Christensen  <achristensen@webkit.org>
3445
3446         Fix non-iOS iOS-family and catalyst builds after r249019
3447         https://bugs.webkit.org/show_bug.cgi?id=200945
3448
3449         * wtf/Platform.h:
3450         State that they have tls_protocol_version_t
3451
3452 2019-08-30  Simon Fraser  <simon.fraser@apple.com>
3453
3454         Add system tracing points for compositing updates, and touch-event dispatching
3455         https://bugs.webkit.org/show_bug.cgi?id=201327
3456
3457         Reviewed by Alex Christensen.
3458
3459         * wtf/SystemTracing.h:
3460
3461 2019-08-30  Keith Rollin  <krollin@apple.com>
3462
3463         Remove AppKitCompatibilityDeclarations.h
3464         https://bugs.webkit.org/show_bug.cgi?id=201283
3465         <rdar://problem/54822042>
3466
3467         Reviewed by Alexey Proskuryakov.
3468
3469         The two copies of these files -- on in WTF, one in MiniBrowser -- are
3470         empty and can be removed.
3471
3472         * WTF.xcodeproj/project.pbxproj:
3473         * wtf/PlatformMac.cmake:
3474         * wtf/mac/AppKitCompatibilityDeclarations.h: Removed.
3475
3476 2019-08-29  Keith Rollin  <krollin@apple.com>
3477
3478         Remove HAVE_PASSKIT_GRANULAR_ERRORS conditional
3479         https://bugs.webkit.org/show_bug.cgi?id=201278
3480         <rdar://problem/54821052>
3481
3482         Reviewed by Alex Christensen.
3483
3484         HAVE_PASSKIT_GRANULAR_ERRORS is always True, so remove the conditional
3485         tests, keeping the True branches and removing the False branches.
3486
3487         * wtf/FeatureDefines.h:
3488
3489 2019-08-29  Keith Rollin  <krollin@apple.com>
3490
3491         Update .xcconfig symbols to reflect the current set of past and future product versions.
3492         https://bugs.webkit.org/show_bug.cgi?id=200720
3493         <rdar://problem/54305032>
3494
3495         Reviewed by Alex Christensen.
3496
3497         Remove version symbols related to old OS's we no longer support,
3498         ensure that version symbols are defined for OS's we do support.
3499
3500         * Configurations/Base.xcconfig:
3501         * Configurations/DebugRelease.xcconfig:
3502
3503 2019-08-29  Keith Rollin  <krollin@apple.com>
3504
3505         Remove 32-bit macOS support
3506         https://bugs.webkit.org/show_bug.cgi?id=201282
3507         <rdar://problem/54821667>
3508
3509         Reviewed by Anders Carlsson.
3510
3511         WebKit doesn’t support 32-bit Mac any more, so remove checks and code
3512         for that platform.
3513
3514         * wtf/Platform.h:
3515
3516 2019-08-29  Chris Dumez  <cdumez@apple.com>
3517
3518         CompletionHandler default constructor does not initialize `m_wasConstructedOnMainThread`
3519         https://bugs.webkit.org/show_bug.cgi?id=201249
3520
3521         Reviewed by Joseph Pecoraro and Alex Christensen.
3522
3523         * wtf/CompletionHandler.h:
3524         (WTF::CompletionHandler<Out):
3525
3526 2019-08-29  Chris Dumez  <cdumez@apple.com>
3527
3528         Crash when mach_port_deallocate() returns KERN_INVALID_NAME
3529         https://bugs.webkit.org/show_bug.cgi?id=201248
3530         <rdar://problem/54813890>
3531
3532         Reviewed by Alex Christensen.
3533
3534         * wtf/cocoa/MachSendRight.cpp:
3535         (WTF::deallocateSendRightSafely):
3536
3537 2019-08-25  Fujii Hironori  <Hironori.Fujii@sony.com>
3538
3539         Regression(r248533) Assertion hit in isMainThread() for some clients using WTF because the main thread is not initialized
3540         https://bugs.webkit.org/show_bug.cgi?id=201083
3541         <rdar://problem/54651993>
3542
3543         Unreviewed build fox for Windows.
3544
3545         * wtf/win/MainThreadWin.cpp:
3546         (WTF::isMainThreadInitialized): Added.
3547
3548 2019-08-23  Jiewen Tan  <jiewen_tan@apple.com>
3549
3550         Unreviewed, build fix after r249059
3551
3552         * wtf/Platform.h:
3553         Make HAVE_NEAR_FIELD available only on iOS 13+ and macOS Catalina+.
3554
3555 2019-08-23  Chris Dumez  <cdumez@apple.com>
3556
3557         Regression(r248533) Assertion hit in isMainThread() for some clients using WTF because the main thread is not initialized
3558         https://bugs.webkit.org/show_bug.cgi?id=201083
3559
3560         Reviewed by Alex Christensen.
3561
3562         An assertion is hit in isMainThread() for some clients using WTF because the main thread is not initialized, since r248533.
3563         Clients can work around this by calling WTF::initializeMainThread() before using WTF but it seems unfortunate to force them
3564         to do so. I propose we disable the assertion until the main thread is initialized.
3565
3566         * wtf/MainThread.h:
3567         * wtf/RefCounted.h:
3568         (WTF::RefCountedBase::RefCountedBase):
3569         (WTF::RefCountedBase::applyRefDerefThreadingCheck const):
3570         * wtf/cocoa/MainThreadCocoa.mm:
3571         (WTF::isMainThreadInitialized):
3572         * wtf/generic/MainThreadGeneric.cpp:
3573         (WTF::isMainThreadInitialized):
3574
3575 2019-08-21  Jiewen Tan  <jiewen_tan@apple.com>
3576
3577         [WebAuthn] Support NFC authenticators for iOS
3578         https://bugs.webkit.org/show_bug.cgi?id=188624
3579         <rdar://problem/43354214>
3580
3581         Reviewed by Chris Dumez.
3582
3583         * wtf/Platform.h:
3584         Add a feature flag for NearField.
3585
3586 2019-08-22  Andy Estes  <aestes@apple.com>
3587
3588         [watchOS] Disable Content Filtering in the simulator build
3589         https://bugs.webkit.org/show_bug.cgi?id=201047
3590
3591         Reviewed by Tim Horton.
3592
3593         * wtf/Platform.h:
3594
3595 2019-08-22  Keith Rollin  <krollin@apple.com>
3596
3597         Remove support for tvOS < 13.0
3598         https://bugs.webkit.org/show_bug.cgi?id=200963
3599         <rdar://problem/54541355>
3600
3601         Reviewed by Tim Horton.
3602
3603         Update conditionals that reference __TV_OS_VERSION_MIN_REQUIRED and
3604         __TV_OS_VERSION_MAX_ALLOWED, assuming that they both have values >=
3605         130000. This means that expressions like "__TV_OS_VERSION_MIN_REQUIRED
3606         < 130000" are always False and "__TV_OS_VERSION_MIN_REQUIRED >=
3607         130000" are always True.
3608
3609         * wtf/FeatureDefines.h:
3610         * wtf/Platform.h:
3611
3612 2019-08-22  Kate Cheney  <katherine_cheney@apple.com>
3613
3614         Logging in FileSystem::deleteFile should avoid logging unsurprising errors
3615         https://bugs.webkit.org/show_bug.cgi?id=200831
3616
3617         Reviewed by Chris Dumez.
3618
3619         To avoid overlogging unnecessary information, added a check to avoid logging
3620         ENOENT (file not found) errors.
3621
3622         * wtf/posix/FileSystemPOSIX.cpp:
3623         (WTF::FileSystemImpl::deleteFile):
3624
3625 2019-08-22  Alex Christensen  <achristensen@webkit.org>
3626
3627         Disable legacy TLS versions and add a temporary default to re-enable it
3628         https://bugs.webkit.org/show_bug.cgi?id=200945
3629
3630         Reviewed by Brady Eidson.
3631
3632         * wtf/Platform.h:
3633
3634 2019-08-22  Darin Adler  <darin@apple.com>
3635
3636         Rename StringBuilder functions to avoid unclear "append uninitialized" terminology
3637         https://bugs.webkit.org/show_bug.cgi?id=201020
3638
3639         Reviewed by Alex Christensen.
3640
3641         * wtf/text/StringBuilder.cpp:
3642         (WTF::StringBuilder::allocateBuffer): Use std::memcpy instead of just memcpy.
3643         (WTF::StringBuilder::extendBufferForAppending): Renamed.
3644         (WTF::StringBuilder::extendBufferForAppendingWithoutOverflowCheck): Ditto.
3645         (WTF::StringBuilder::extendBufferForAppending8): Ditto.
3646         (WTF::StringBuilder::extendBufferForAppending16): Ditto.
3647         (WTF::StringBuilder::extendBufferForAppendingSlowPath): Ditto.
3648         (WTF::StringBuilder::appendCharacters): Updated for new names.
3649         * wtf/text/StringBuilder.h: Updated for new names.
3650
3651 2019-08-17  Darin Adler  <darin@apple.com>
3652
3653         Use makeString and multi-argument StringBuilder::append instead of less efficient multiple appends
3654         https://bugs.webkit.org/show_bug.cgi?id=200862
3655
3656         Reviewed by Ryosuke Niwa.
3657
3658         * wtf/DateMath.cpp:
3659         (WTF::makeRFC2822DateString): Use one append instead of multiple.
3660         * wtf/JSONValues.cpp:
3661         (WTF::appendDoubleQuotedString): Ditto.
3662
3663 2019-08-21  Mark Lam  <mark.lam@apple.com>
3664
3665         Fix infinite recursion in WTFCrashWithInfo() after r248930.
3666         https://bugs.webkit.org/show_bug.cgi?id=201022
3667
3668         Reviewed by Saam Barati.
3669
3670         * wtf/Assertions.cpp:
3671         (WTFCrashWithInfoImpl):
3672         (WTFCrashWithInfo): Deleted.
3673         * wtf/Assertions.h:
3674         (WTFCrashWithInfo):
3675
3676 2019-08-21  Chris Dumez  <cdumez@apple.com>
3677
3678         registrableDomainsToRemoveWebsiteDataFor() does not need to return a HashMap
3679         https://bugs.webkit.org/show_bug.cgi?id=200985
3680
3681         Reviewed by John Wilander.
3682
3683         Allow calling crossThreadCopy() on a std::pair<>.
3684
3685         * wtf/CrossThreadCopier.h:
3686
3687 2019-08-21  Keith Rollin  <krollin@apple.com>
3688
3689         Remove support for watchOS < 6.0
3690         https://bugs.webkit.org/show_bug.cgi?id=200937
3691         <rdar://problem/54524009>
3692
3693         Reviewed by Darin Adler.
3694
3695         Update conditionals that reference __WATCH_OS_VERSION_MIN_REQUIRED and
3696         __WATCH_OS_VERSION_MAX_ALLOWED, assuming that they both have values >=
3697         60000. This means that expressions like
3698         "__WATCH_OS_VERSION_MIN_REQUIRED < 60000" are always False and
3699         "__WATCH_OS_VERSION_MIN_REQUIRED >= 60000" are always True.
3700
3701         * wtf/FeatureDefines.h:
3702         * wtf/Platform.h:
3703
3704 2019-08-20  Mark Lam  <mark.lam@apple.com>
3705
3706         Make it easier to pass pointers to WTFCrashWithInfo.
3707         https://bugs.webkit.org/show_bug.cgi?id=200960
3708
3709         Reviewed by Saam Barati and Yusuke Suzuki.
3710
3711         Now, we don't have to explicitly cast them to uint64_ts first.  The template
3712         wrappers will take care of it for us.
3713
3714         * wtf/Assertions.h:
3715         (wtfCrashArg):
3716         (WTFCrashWithInfo):
3717         (WTF::isIntegralOrPointerType):
3718         (WTF::isIntegralType): Deleted.
3719
3720 2019-08-20  Saam Barati  <sbarati@apple.com>
3721
3722         Unreviewed. Followup to r248903. It's not valid to remove
3723         hasOverflowed() checks from appendCharacters.
3724
3725         * wtf/text/StringBuilder.cpp:
3726         (WTF::StringBuilder::appendCharacters):
3727
3728 2019-08-20  Darin Adler  <darin@apple.com>
3729
3730         Variadic StringBuilder::append does not handle upconverting from 8-bit to 16-bit correctly
3731         https://bugs.webkit.org/show_bug.cgi?id=200921
3732
3733         Reviewed by Saam Barati.
3734
3735         * wtf/text/StringBuilder.cpp:
3736         (WTF::StringBuilder::appendUninitialized8): Renamed from
3737         appendUninitializedWithoutOverflowCheckForLChar and moved the length overflow
3738         check in here to cut down on unnecessary inlining and code size.
3739         (WTF::StringBuilder::appendUninitialized16): Renamed from
3740         appendUninitializedWithoutOverflowCheckForUChar, moved the length overflow check
3741         in here, and moved the necessary upconversion code from the const UChar* overload of
3742         the appendCharacters function.
3743         (WTF::StringBuilder::appendCharacters): Removed unneeded "length has already overflowed"
3744         check at the start of the function since the code in the function already handles that
3745         case correctly. Refactored the const UChar* overload to use the new appendCharacters16
3746         function so it can share more code with StringBuilder::appendFromAdapters.
3747
3748         * wtf/text/StringBuilder.h:
3749         (WTF::StringBuilder::appendFromAdapters): Updated the function names for the
3750         two appendUninitialized functions, which now do a bit more than before. Removed the
3751         overflow check since the appendUninitialized8/16 functions now handle that; better to
3752         not make the inlined code larger to handle a failure case.
3753
3754 2019-08-19  Sam Weinig  <weinig@apple.com>
3755
3756         [WHLSL] Make generated Metal code should be indented properly to ease reading while debugging
3757         https://bugs.webkit.org/show_bug.cgi?id=200870
3758
3759         Reviewed by Saam Barati.
3760
3761         Adds simple Indentation class to allow programatic indenting compatible with StringTypeAdapter
3762         aware functions/class (e.g. makeString and StringBuilder). Templatized on the number of spaces
3763         to indent.
3764         
3765         Also adds IndentationScope, which uses RAII to increment/decrement the indentation value.
3766
3767         * wtf/text/StringConcatenate.h:
3768         (WTF::Indentation::operator++):
3769         (WTF::Indentation::operator--):
3770         (WTF::IndentationScope::IndentationScope):
3771         (WTF::IndentationScope::~IndentationScope):
3772
3773 2019-08-19  Per Arne Vollan  <pvollan@apple.com>
3774
3775         Unreviewed build fix for macOS 10.14 after r248832.
3776
3777         * wtf/Platform.h:
3778
3779 2019-08-19  Yusuke Suzuki  <ysuzuki@apple.com>
3780
3781         [WTF] Add makeUnique<T>, which ensures T is fast-allocated, actual static_assert part
3782         https://bugs.webkit.org/show_bug.cgi?id=200620
3783
3784         Reviewed by Geoff Garen.
3785
3786         This is the last part of the split patch from https://bugs.webkit.org/show_bug.cgi?id=200620.
3787         Expose T::webkitFastMalloced type to perform static_assert in makeUnique.
3788         makeUnique and makeUniqueRef start performing static_assert check to ensure that the type T is FastMalloced / IsoHeaped.
3789
3790         * wtf/FastMalloc.h:
3791         * wtf/StdLibExtras.h:
3792         (WTF::makeUnique):
3793         * wtf/UniqueRef.h:
3794         (WTF::makeUniqueRef):
3795
3796 2019-08-18  Yusuke Suzuki  <ysuzuki@apple.com>
3797
3798         [WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part
3799         https://bugs.webkit.org/show_bug.cgi?id=200620
3800
3801         Reviewed by Geoff Garen.
3802
3803         This patch is second part of bug 200620 patch. I split I split it into three pieces to make roll-out easy.
3804         his part, we convert std::make_unique to WTF::makeUnique or WTF::makeUniqueWithoutFastMallocCheck.
3805         In the third patch, we will add a static_assert to makeUnique, which ensures the given class T is FastMalloced or IsoHeaped.
3806
3807         This patch adds `WTF::makeUnique<T>` and `WTF::makeUniqueWithoutFastMallocCheck<T>` as drop-in replacement for `std::make_unique<T>`.
3808         `WTF::makeUnique<T>` has one additional `static_assert` check which ensures `T` FastMalloc / IsoHeap annotated. If it is not, the
3809         compile error happens.
3810
3811         In this patch, I tried using this everywhere in WebKit as much as possible. And we found that surprisingly many classes are missing
3812         FastMalloc annotation and allocated from system-malloc. Using WTF::makeUnique enforces classes / structs to use FastMalloc.
3813
3814         WTF::makeUniqueWithoutFastMallocCheck is offered for the corner cases. This is identical to std::make_unique. We use this for classes
3815         that are offered by non-WebKit code base, like, zlib. This clear name can make us easily find this allocation is intentionally done
3816         by system-malloc.
3817
3818         We do not take the following direction, `WTF::makeUnique` automatically allocates FastMalloc even if FastMalloc annotation is not attached.
3819         Since default deleter is performing `delete` and this is not what we want for FastMalloced ones, we need to return
3820         std::unique_ptr<T, FastFreeDeleter> for T if T does not have FastMalloc-annotation. Automatically doing this sounds a bit dangerous.
3821
3822             auto pointer = WTF::makeUnique<T>();
3823             // Super dangerous, but sometimes it is required...
3824             auto* rawPointer = pointer.release();
3825             // Passing rawPointer to somewhere, and
3826             delete rawPointer;
3827
3828         The above one becomes invalid because pointer may start requiring non `delete` destroying function.
3829         In the above case, the correct way becomes the following.
3830
3831             rawPointer->~T();
3832             fastFree(rawPointer);
3833
3834         This looks non-intuitive. And having two ways to destroying objects (`delete` or the above one) can be error-prone.
3835         If we have WTF_MAKE_FAST_ALLOCATED for T, we do not need to care about this. "new" and "delete" operators are defined, and C++ way works.
3836         The simple invariant, "makeUnique just does `new` internally. And `delete` operator does `delete`. default deleter is just doing `delete`", is kept.
3837
3838         While we need to annotate many classes with WTF_MAKE_FAST_ALLOCATED, it is one time cost when we add a class.
3839         And, by introducing `WTF::makeUnique<>`, we no longer forget adding this.
3840
3841             makeUnique(...)
3842             static_assert(T is FastMalloced or IsoHeaped);
3843             return make_unique<T>(...)
3844
3845         * benchmarks/LockFairnessTest.cpp:
3846         * benchmarks/LockSpeedTest.cpp:
3847         * wtf/ConcurrentVector.h:
3848         * wtf/CrossThreadTaskHandler.cpp:
3849         (WTF::CrossThreadTaskHandler::taskRunLoop):
3850         * wtf/FilePrintStream.cpp:
3851         (WTF::FilePrintStream::open):
3852         * wtf/Function.h:
3853         (WTF::Function<Out):
3854         * wtf/HashTable.h:
3855         (WTF::KeyTraits>::HashTable):
3856         * wtf/MemoryPressureHandler.cpp:
3857         (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
3858         * wtf/StdLibExtras.h:
3859         (WTF::makeUnique):
3860         (WTF::makeUniqueWithoutFastMallocCheck):
3861         * wtf/StreamBuffer.h:
3862         (WTF::StreamBuffer::append):
3863         * wtf/UniqueRef.h:
3864         (WTF::makeUniqueRefWithoutFastMallocCheck):
3865         (WTF::makeUniqueRef):
3866         * wtf/glib/RunLoopGLib.cpp:
3867         (WTF::RunLoop::dispatchAfter):
3868         * wtf/text/StringView.cpp:
3869         (WTF::StringView::GraphemeClusters::Iterator::Iterator):
3870
3871 2019-08-18  Per Arne Vollan  <pvollan@apple.com>
3872
3873         [Mac] Use the PID of the WebContent process when issuing local file read sandbox extensions
3874         https://bugs.webkit.org/show_bug.cgi?id=200543
3875         <rdar://problem/49394015>
3876
3877         Reviewed by Brent Fulgham.
3878
3879         Add new SPI.
3880         
3881         * wtf/Platform.h:
3882         * wtf/spi/darwin/SandboxSPI.h:
3883
3884 2019-08-17  Darin Adler  <darin@apple.com>
3885
3886         Tidy up checks to see if a character is in the Latin-1 range by using isLatin1 consistently
3887         https://bugs.webkit.org/show_bug.cgi?id=200861
3888
3889         Reviewed by Ross Kirsling.
3890
3891         * wtf/text/StringBuilder.cpp:
3892         (WTF::StringBuilder::appendCharacters): Use isLatin1 and also call append rather than
3893         calling appendCharacters, since it's the same thing, inlined, and removes the need for
3894         a local variable. Also tweaked the idiom of the code using memcpy.
3895         (WTF::StringBuilder::canShrink const): Reworded a comment.
3896
3897         * wtf/text/StringBuilder.h:
3898         (WTF::StringBuilder::append): Use isLatin1.
3899
3900         * wtf/text/StringCommon.h:
3901         (WTF::isLatin1): Moved this function template here so it can be used here.
3902         (WTF::find): Use isLatin1.
3903
3904         * wtf/text/StringImpl.h:
3905         (WTF::isLatin1): Deleted. Moved to StringCommon.h.
3906         (WTF::reverseFind): Use isLatin1.
3907         (WTF::isSpaceOrNewline): Ditto.
3908
3909 2019-08-17  Eric Liang  <ericliang@apple.com>
3910
3911         Added HAVE_ACCESSIBILITY_BUNDLES_PATH
3912         https://bugs.webkit.org/show_bug.cgi?id=200367
3913
3914         Reviewed by Darin Adler.
3915
3916         * wtf/Platform.h:
3917
3918 2019-08-17  Sam Weinig  <weinig@apple.com>
3919
3920         Rename StringBuilder::flexibleAppend(...) to StringBuilder::append(...)
3921         https://bugs.webkit.org/show_bug.cgi?id=200756
3922
3923         Reviewed by Darin Adler.
3924
3925         Now that there are no remaining multi-parameter or behavior changing overloads
3926         of StringBuilder::append(...), we can rename StringBuilder::flexibleAppend(...)
3927         to StringBuilder::append(...).
3928         
3929         This change leaves the existing single parameter overloads StringBuilder::append(...)
3930         for now, and since they have specify specific types, they will continue to be prefered
3931         in overload resolution. Once we have concluded the variadic StringBuilder::append(...)
3932         can provide the same performance as the single parameter variant, we can remove the
3933         single parameter variant.
3934
3935         * wtf/posix/FileSystemPOSIX.cpp:
3936         (WTF::FileSystemImpl::pathByAppendingComponents):
3937         * wtf/text/StringBuilder.h:
3938         (WTF::StringBuilder::appendFromAdapters):
3939         (WTF::StringBuilder::append):
3940         (WTF::StringBuilder::flexibleAppendFromAdapters): Deleted.
3941         (WTF::StringBuilder::flexibleAppend): Deleted.
3942         Update for rename from StringBuilder::flexibleAppend(...) to StringBuilder::append(...).
3943
3944 2019-08-15  Ryosuke Niwa  <rniwa@webkit.org>
3945
3946         Don't use union to store NodeRareData* and RenderObject*
3947         https://bugs.webkit.org/show_bug.cgi?id=200744
3948
3949         Reviewed by Antti Koivisto.
3950
3951         Moved the static assert which requires the type of the object to which the pointer type points
3952         into setPointer so that we can use CompactPointerTuple<T*, U> as a member variable
3953         with just a forward declaration of T.
3954
3955         * wtf/CompactPointerTuple.h:
3956         (WTF::CompactPointerTuple::setPointer):
3957
3958 2019-08-15  Zalan Bujtas  <zalan@apple.com>
3959
3960         [ContentChangeObserver] Keep track of all the visibility candidates.
3961         https://bugs.webkit.org/show_bug.cgi?id=200777
3962         <rdar://problem/54356331>
3963
3964         Reviewed by Simon Fraser.
3965
3966         * wtf/WeakHashSet.h:
3967
3968 2019-08-15  Brent Fulgham  <bfulgham@apple.com>
3969
3970         [FTW] Enable CoreFoundation use if building for Apple target
3971         https://bugs.webkit.org/show_bug.cgi?id=200799
3972
3973         Reviewed by Alex Christensen.
3974
3975         * wtf/PlatformFTW.cmake: Add missing files.
3976
3977 2019-08-15  Commit Queue  <commit-queue@webkit.org>
3978
3979         Unreviewed, rolling out r248440.
3980         https://bugs.webkit.org/show_bug.cgi?id=200772
3981
3982         Introduced regressions related to loading of local files.
3983         (Requested by perarne on #webkit).
3984
3985         Reverted changeset:
3986
3987         "[Mac] Use the PID of the WebContent process when issuing
3988         local file read sandbox extensions"
3989         https://bugs.webkit.org/show_bug.cgi?id=200543
3990         https://trac.webkit.org/changeset/248440
3991
3992 2019-08-14  Kate Cheney  <katherine_cheney@apple.com>
3993
3994         FileSystem::deleteFile should log error status (178347)
3995         https://bugs.webkit.org/show_bug.cgi?id=178347
3996
3997         Reviewed by Brent Fulgham.
3998
3999         I added logging to the FileSystem::deleteFile function so that the debugger will
4000         be able to see the associated errno string and better understand the reason for an
4001         unlink failure or will know if the fileSystemRepresentation call was not
4002         successful (or returned null).
4003
4004         * wtf/posix/FileSystemPOSIX.cpp:
4005         (WTF::FileSystemImpl::deleteFile):
4006
4007 2019-08-14  Keith Rollin  <krollin@apple.com>
4008
4009         Remove support for macOS < 10.13
4010         https://bugs.webkit.org/show_bug.cgi?id=200694
4011         <rdar://problem/54278851>
4012
4013         Reviewed by Youenn Fablet.
4014
4015         Update conditionals that reference __MAC_OS_X_VERSION_MIN_REQUIRED and
4016         __MAC_OS_X_VERSION_MAX_ALLOWED, assuming that they both have values >=
4017         101300. This means that expressions like
4018         "__MAC_OS_X_VERSION_MIN_REQUIRED < 101300" are always False and
4019         "__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300" are always True.
4020
4021         * wtf/FeatureDefines.h:
4022         * wtf/Platform.h:
4023         * wtf/mac/AppKitCompatibilityDeclarations.h:
4024         * wtf/spi/darwin/SandboxSPI.h:
4025
4026 2019-08-14  Yusuke Suzuki  <ysuzuki@apple.com>
4027
4028         [JSC] Less contended MetaAllocator
4029         https://bugs.webkit.org/show_bug.cgi?id=200278
4030
4031         Reviewed by Mark Lam.
4032
4033         * wtf/MetaAllocator.cpp:
4034         (WTF::MetaAllocator::incrementPageOccupancy):
4035         (WTF::MetaAllocator::decrementPageOccupancy):
4036         * wtf/MetaAllocator.h:
4037
4038 2019-08-14  Samuel Groß  <saelo@google.com>
4039
4040         [JSCOnly] JSCOnly port doesn't build on macOS
4041         https://bugs.webkit.org/show_bug.cgi?id=200667
4042
4043         spi/darwin/ProcessMemoryFootprint.h is required by jsc.cpp so we add it to the WTF_PUBLIC_HEADERS.
4044
4045         Reviewed by Alex Christensen.
4046
4047         * wtf/PlatformJSCOnly.cmake:
4048         * wtf/PlatformMac.cmake:
4049
4050 2019-08-13  Sam Weinig  <weinig@apple.com>
4051
4052         Rename StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32) to avoid accidental change in behavior when replacing append with flexibleAppend
4053         https://bugs.webkit.org/show_bug.cgi?id=200675
4054
4055         Reviewed by Darin Adler.
4056
4057         When we switch StringBuilder::append(...) to be based on the StringConcatenate/makeString flexibleAppend 
4058         implementation, if we don't change anything, the behavior of StringBuilder::append(UChar32) will go from 
4059         appending a character to appending a stringified number.
4060
4061         To work around this, we can rename StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32) 
4062         and update all the call sites.
4063
4064         * wtf/text/StringBuilder.h:
4065         (WTF::StringBuilder::appendCharacter):
4066         Renamed StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32).
4067
4068         * wtf/FileSystem.cpp:
4069         (WTF::FileSystemImpl::decodeFromFilename):
4070         Update for new name.
4071
4072 2019-08-13  Yusuke Suzuki  <ysuzuki@apple.com>
4073
4074         Unreviewed, build fix for Windows
4075         https://bugs.webkit.org/show_bug.cgi?id=200611
4076
4077         * wtf/win/GDIObject.h:
4078
4079 2019-08-12  Takashi Komori  <Takashi.Komori@sony.com>
4080
4081         [WTF] Thread::removeFromThreadGroup leaks weak pointers.
4082         https://bugs.webkit.org/show_bug.cgi?id=199857
4083
4084         Reviewed by Yusuke Suzuki.
4085
4086         Fix leaking of ThreadGroup's weak pointers.
4087
4088         Tests: WTF.ThreadGroupRemove API tests
4089
4090         * wtf/Threading.cpp:
4091         (WTF::Thread::didExit):
4092         (WTF::Thread::addToThreadGroup):
4093         (WTF::Thread::removeFromThreadGroup):
4094         (WTF::Thread::numberOfThreadGroups):
4095         * wtf/Threading.h:
4096
4097 2019-08-12  Sam Weinig  <weinig@apple.com>
4098
4099         Replace multiparameter overloads of append() in StringBuilder as a first step toward standardizinging on the flexibleAppend() implementation
4100         https://bugs.webkit.org/show_bug.cgi?id=200614
4101
4102         Reviewed by Darin Adler.
4103
4104         Renames StringBuilder::append(const LChar*, unsigned), StringBuilder::append(const UChar*, unsigned) and 
4105         StringBuilder::append(const char*, unsigned) to StringBuilder::appendCharacters(...).
4106         
4107         Renames StringBuilder::append(const String& string, unsigned offset, unsigned length) to 
4108         StringBuilder::appendSubstring(...).
4109
4110         * wtf/HexNumber.h:
4111         (WTF::appendUnsignedAsHexFixedSize):
4112         Add overload that explicitly takes a StringBuilder to work around rename from append to appendCharacters.
4113
4114         * wtf/text/StringBuilder.cpp:
4115         (WTF::StringBuilder::appendCharacters):
4116         (WTF::StringBuilder::append):
4117         * wtf/text/StringBuilder.h:
4118         (WTF::StringBuilder::appendCharacters):
4119         (WTF::StringBuilder::append):
4120         (WTF::StringBuilder::appendSubstring):
4121         (WTF::StringBuilder::appendLiteral):
4122         (WTF::IntegerToStringConversionTrait<StringBuilder>::flush):
4123         Update for renames.
4124
4125 2019-08-12  Yusuke Suzuki  <ysuzuki@apple.com>
4126
4127         [WTF][JSC] Make JSC and WTF aggressively-fast-malloced
4128         https://bugs.webkit.org/show_bug.cgi?id=200611
4129
4130         Reviewed by Saam Barati.
4131
4132         WTF has many data structures, in particular, containers. And these containers can be allocated like `std::make_unique<Container>()`.
4133         Without WTF_MAKE_FAST_ALLOCATED, this container itself is allocated from the system malloc. This patch attaches WTF_MAKE_FAST_ALLOCATED
4134         more aggressively not to allocate them from the system malloc. And we add some `final` to containers and classes that would be never inherited.
4135
4136         * wtf/Assertions.cpp:
4137         * wtf/Atomics.h:
4138         * wtf/AutodrainedPool.h:
4139         * wtf/Bag.h:
4140         (WTF::Bag::Bag): Deleted.
4141         (WTF::Bag::~Bag): Deleted.
4142         (WTF::Bag::clear): Deleted.
4143         (WTF::Bag::add): Deleted.
4144         (WTF::Bag::iterator::iterator): Deleted.
4145         (WTF::Bag::iterator::operator! const): Deleted.
4146         (WTF::Bag::iterator::operator* const): Deleted.
4147         (WTF::Bag::iterator::operator++): Deleted.
4148         (WTF::Bag::iterator::operator== const): Deleted.
4149         (WTF::Bag::iterator::operator!= const): Deleted.
4150         (WTF::Bag::begin): Deleted.
4151         (WTF::Bag::begin const): Deleted.
4152         (WTF::Bag::end const): Deleted.
4153         (WTF::Bag::isEmpty const): Deleted.
4154         (WTF::Bag::unwrappedHead const): Deleted.
4155         * wtf/BitVector.h:
4156         (WTF::BitVector::BitVector): Deleted.
4157         (WTF::BitVector::~BitVector): Deleted.
4158         (WTF::BitVector::operator=): Deleted.
4159         (WTF::BitVector::size const): Deleted.
4160         (WTF::BitVector::ensureSize): Deleted.
4161         (WTF::BitVector::quickGet const): Deleted.
4162         (WTF::BitVector::quickSet): Deleted.
4163         (WTF::BitVector::quickClear): Deleted.
4164         (WTF::BitVector::get const): Deleted.
4165         (WTF::BitVector::contains const): Deleted.
4166         (WTF::BitVector::set): Deleted.
4167         (WTF::BitVector::add): Deleted.
4168         (WTF::BitVector::ensureSizeAndSet): Deleted.
4169         (WTF::BitVector::clear): Deleted.
4170         (WTF::BitVector::remove): Deleted.
4171         (WTF::BitVector::merge): Deleted.
4172         (WTF::BitVector::filter): Deleted.
4173         (WTF::BitVector::exclude): Deleted.
4174         (WTF::BitVector::bitCount const): Deleted.
4175         (WTF::BitVector::isEmpty const): Deleted.
4176         (WTF::BitVector::findBit const): Deleted.
4177         (WTF::BitVector::isEmptyValue const): Deleted.
4178         (WTF::BitVector::isDeletedValue const): Deleted.
4179         (WTF::BitVector::isEmptyOrDeletedValue const): Deleted.
4180         (WTF::BitVector::operator== const): Deleted.
4181         (WTF::BitVector::hash const): Deleted.
4182         (WTF::BitVector::iterator::iterator): Deleted.
4183         (WTF::BitVector::iterator::operator* const): Deleted.
4184         (WTF::BitVector::iterator::operator++): Deleted.
4185         (WTF::BitVector::iterator::isAtEnd const): Deleted.
4186         (WTF::BitVector::iterator::operator== const): Deleted.
4187         (WTF::BitVector::iterator::operator!= const): Deleted.
4188         (WTF::BitVector::begin const): Deleted.
4189         (WTF::BitVector::end const): Deleted.
4190         (WTF::BitVector::bitsInPointer): Deleted.
4191         (WTF::BitVector::maxInlineBits): Deleted.
4192         (WTF::BitVector::byteCount): Deleted.
4193         (WTF::BitVector::makeInlineBits): Deleted.
4194         (WTF::BitVector::cleanseInlineBits): Deleted.
4195         (WTF::BitVector::bitCount): Deleted.
4196         (WTF::BitVector::findBitFast const): Deleted.
4197         (WTF::BitVector::findBitSimple const): Deleted.
4198         (WTF::BitVector::OutOfLineBits::numBits const): Deleted.
4199         (WTF::BitVector::OutOfLineBits::numWords const): Deleted.
4200         (WTF::BitVector::OutOfLineBits::bits): Deleted.
4201         (WTF::BitVector::OutOfLineBits::bits const): Deleted.
4202         (WTF::BitVector::OutOfLineBits::OutOfLineBits): Deleted.
4203         (WTF::BitVector::isInline const): Deleted.
4204         (WTF::BitVector::outOfLineBits const): Deleted.
4205         (WTF::BitVector::outOfLineBits): Deleted.
4206         (WTF::BitVector::bits): Deleted.
4207         (WTF::BitVector::bits const): Deleted.
4208         * wtf/Bitmap.h:
4209         (WTF::Bitmap::size): Deleted.
4210         (WTF::Bitmap::iterator::iterator): Deleted.
4211         (WTF::Bitmap::iterator::operator* const): Deleted.
4212         (WTF::Bitmap::iterator::operator++): Deleted.
4213         (WTF::Bitmap::iterator::operator== const): Deleted.
4214         (WTF::Bitmap::iterator::operator!= const): Deleted.
4215         (WTF::Bitmap::begin const): Deleted.
4216         (WTF::Bitmap::end const): Deleted.
4217         * wtf/Box.h:
4218         * wtf/BumpPointerAllocator.h:
4219         * wtf/CPUTime.h:
4220         * wtf/CheckedBoolean.h:
4221         * wtf/CommaPrinter.h:
4222         (WTF::CommaPrinter::CommaPrinter): Deleted.
4223         (WTF::CommaPrinter::dump const): Deleted.
4224         (WTF::CommaPrinter::didPrint const): Deleted.
4225         * wtf/CompactPointerTuple.h:
4226         (WTF::CompactPointerTuple::encodeType): Deleted.
4227         (WTF::CompactPointerTuple::decodeType): Deleted.
4228         (WTF::CompactPointerTuple::CompactPointerTuple): Deleted.
4229         (WTF::CompactPointerTuple::pointer const): Deleted.
4230         (WTF::CompactPointerTuple::setPointer): Deleted.