HashTable::removeIf always shrinks the hash table by half even if there is nothing...
[WebKit-https.git] / Source / WTF / ChangeLog
1 2019-04-12  Ryosuke Niwa  <rniwa@webkit.org>
2
3         HashTable::removeIf always shrinks the hash table by half even if there is nothing left
4         https://bugs.webkit.org/show_bug.cgi?id=196681
5
6         Reviewed by Darin Adler.
7
8         Made HashTable::removeIf shrink to the "best size", which is the least power of two bigger
9         than twice the key count as already used in the copy constructor.
10
11         * wtf/HashTable.h:
12         (WTF::HashTable::computeBestTableSize): Extracted from the copy constructor.
13         (WTF::HashTable::shrinkToBestSize): Added.
14         (WTF::HashTable::removeIf): Use shrinkToBestSize instead of shrink.
15         (WTF::HashTable::HashTable):
16
17 2019-04-12  Eric Carlson  <eric.carlson@apple.com>
18
19         Update AudioSession route sharing policy
20         https://bugs.webkit.org/show_bug.cgi?id=196776
21         <rdar://problem/46501611>
22
23         Reviewed by Jer Noble.
24
25         * wtf/Platform.h: Define HAVE_ROUTE_SHARING_POLICY_LONG_FORM_VIDEO.
26
27 2019-04-10  Said Abou-Hallawa  <sabouhallawa@apple.com>
28
29         requestAnimationFrame should execute before the next frame
30         https://bugs.webkit.org/show_bug.cgi?id=177484
31
32         Reviewed by Simon Fraser.
33
34         Add trace points for the page RenderingUpdate.
35
36         * wtf/SystemTracing.h:
37
38 2019-04-10  Claudio Saavedra  <csaavedra@igalia.com>
39
40         Do not generate empty unified sources when unified builds are disabled
41         https://bugs.webkit.org/show_bug.cgi?id=196767
42
43         Reviewed by Konstantin Tokarev.
44
45         If unified builds are disabled, the ruby script to generate them
46         is still used to list the sources that need to be
47         compiled. Currently, the script always generates bundled unified
48         sources, even if it's being used just to list all the sources. So
49         when the unified builds are disabled and no files are going to be
50         bundled, the script generates one empty file per bundle manager
51         (that is, one C++ and one ObjectiveC), that gets added to the
52         sources to be compiled.
53
54         * Scripts/generate-unified-source-bundles.rb: Only go through the
55         bundle managers file generation when not running in
56         PrintAllSources mode, to avoid generating empty bundle files.
57
58 2019-04-10  Enrique Ocaña González  <eocanha@igalia.com>
59
60         [WPE] Avoid async IO starving timers
61         https://bugs.webkit.org/show_bug.cgi?id=196733
62
63         Reviewed by Carlos Garcia Campos.
64
65         If AsyncIONetwork and DiskCacheRead priorities are higher than
66         MainThreadSharedTimer the timers get starved. This causes the NetworkProcess
67         to accumulate MB of data instead of handing it down to the WebProcess (done
68         using a Timer). This eventually causes an Out Of Memory kill on the
69         NetworkProcess on some embedded platforms with low memory limits.
70
71         This patch levels the three priorities to the same value, while still leaving
72         DiskCacheWrite with less priority than DiskCacheRead.
73
74         * wtf/glib/RunLoopSourcePriority.h: Changed RunLoopSourcePriority values for WPE.
75
76 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
77
78         [CMake] WTF derived sources should only be referenced inside WTF
79         https://bugs.webkit.org/show_bug.cgi?id=196706
80
81         Reviewed by Konstantin Tokarev.
82
83         Use ${WTF_DERIVED_SOURCES_DIR} instead of ${DERIVED_SOURCES_DIR} within WTF.
84
85         * wtf/CMakeLists.txt:
86         * wtf/PlatformJSCOnly.cmake:
87         * wtf/PlatformMac.cmake:
88
89 2019-04-09  Don Olmstead  <don.olmstead@sony.com>
90
91         [CMake] Apple builds should use ICU_INCLUDE_DIRS
92         https://bugs.webkit.org/show_bug.cgi?id=196720
93
94         Reviewed by Konstantin Tokarev.
95
96         Copy ICU headers for Apple builds into ICU_INCLUDE_DIRS.
97
98         * CMakeLists.txt:
99         * wtf/PlatformMac.cmake:
100
101 2019-04-08  Don Olmstead  <don.olmstead@sony.com>
102
103         [CMake][WinCairo] Separate copied headers into different directories
104         https://bugs.webkit.org/show_bug.cgi?id=196655
105
106         Reviewed by Michael Catanzaro.
107
108         * wtf/CMakeLists.txt:
109
110 2019-04-08  Guillaume Emont  <guijemont@igalia.com>
111
112         Enable DFG on MIPS
113         https://bugs.webkit.org/show_bug.cgi?id=196689
114
115         Reviewed by Žan Doberšek.
116
117         Since the bytecode change, we enabled the baseline JIT on mips in
118         r240432, but DFG is still missing. With this change, all tests are
119         passing on a ci20 board.
120
121         * wtf/Platform.h: Enable DFG on MIPS by default.
122
123 2019-04-06  Ryosuke Niwa  <rniwa@webkit.org>
124
125         Added tests for WeakHashSet::computesEmpty and WeakHashSet::computeSize
126         https://bugs.webkit.org/show_bug.cgi?id=196669
127
128         Reviewed by Geoffrey Garen.
129
130         Removed the superflous type names from forward declarations, and made WeakHashSet::add
131         take a const object to match other container types in WTF.
132
133         * wtf/WeakHashSet.h:
134         (WTF::WeakHashSet::add):
135         * wtf/WeakPtr.h:
136
137 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
138
139         Make WeakPtr<Element> possible and deploy it in form associated elements code
140         https://bugs.webkit.org/show_bug.cgi?id=196626
141
142         Reviewed by Antti Koivisto.
143
144         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
145         a subclass type U of a type T used to define WeakReference<T>.
146
147         Also added computesEmpty, which is slightly more efficient than computeSize
148         when m_set is either empty or when there are non-released weak references in the set.
149
150         * wtf/WeakHashSet.h:
151         (WTF::WeakHashSet::remove):
152         (WTF::WeakHashSet::contains const):
153         (WTF::WeakHashSet::computesEmpty const): Added.
154         * wtf/WeakPtr.h: Added an explicit forward declaration of WeakHashSet to avoid
155         build failures in GTK+ and WPE ports.
156
157 2019-04-05  Eric Carlson  <eric.carlson@apple.com>
158
159         Remove AUDIO_TOOLBOX_AUDIO_SESSION
160         https://bugs.webkit.org/show_bug.cgi?id=196653
161         <rdar://problem/49652098>
162
163         Reviewed by Jer Noble.
164
165         * wtf/Platform.h:
166
167 2019-04-05  Michael Catanzaro  <mcatanzaro@igalia.com>
168
169         Unreviewed manual rollout of r243929
170         https://bugs.webkit.org/show_bug.cgi?id=196626
171
172         * wtf/WeakHashSet.h:
173         (WTF::WeakHashSet::remove):
174         (WTF::WeakHashSet::contains const):
175         (WTF::WeakHashSet::computesEmpty const): Deleted.
176
177 2019-04-05  Commit Queue  <commit-queue@webkit.org>
178
179         Unreviewed, rolling out r243833.
180         https://bugs.webkit.org/show_bug.cgi?id=196645
181
182         This change breaks build of WPE and GTK ports (Requested by
183         annulen on #webkit).
184
185         Reverted changeset:
186
187         "[CMake][WTF] Mirror XCode header directories"
188         https://bugs.webkit.org/show_bug.cgi?id=191662
189         https://trac.webkit.org/changeset/243833
190
191 2019-04-05  Ryosuke Niwa  <rniwa@webkit.org>
192
193         Make WeakPtr<Element> possible and deploy it in form associated elements code
194         https://bugs.webkit.org/show_bug.cgi?id=196626
195
196         Reviewed by Antti Koivisto.
197
198         Make it possible to call WeakHashSet::remove and WeakHashSet::contains with
199         a subclass type U of a type T used to define WeakReference<T>.
200
201         Also added computesEmpty, which is slightly more efficient than computeSize
202         when m_set is either empty or when there are non-released weak references in the set.
203
204         * wtf/WeakHashSet.h:
205         (WTF::WeakHashSet::remove):
206         (WTF::WeakHashSet::contains const):
207         (WTF::WeakHashSet::computesEmpty const): Added.
208
209 2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>
210
211         [WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
212         https://bugs.webkit.org/show_bug.cgi?id=196475
213
214         Reviewed by Saam Barati.
215
216         * wtf/ForbidHeapAllocation.h:
217         * wtf/IsoMalloc.h:
218         * wtf/IsoMallocInlines.h:
219
220 2019-04-03  Don Olmstead  <don.olmstead@sony.com>
221
222         [CMake][WTF] Mirror XCode header directories
223         https://bugs.webkit.org/show_bug.cgi?id=191662
224
225         Reviewed by Konstantin Tokarev.
226
227         Rename WTF forwarding header target to WTFFramework and update the install location
228         to WTF_FRAMEWORK_HEADERS_DIR.
229
230         * wtf/CMakeLists.txt:
231
232 2019-04-03  Joseph Pecoraro  <pecoraro@apple.com>
233
234         Web Inspector: Remote Inspector indicate callback should always happen on the main thread
235         https://bugs.webkit.org/show_bug.cgi?id=196513
236         <rdar://problem/49498284>
237
238         Reviewed by Devin Rousso.
239
240         * wtf/MainThread.h:
241         * wtf/cocoa/MainThreadCocoa.mm:
242         (WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):
243         * wtf/ios/WebCoreThread.cpp:
244         * wtf/ios/WebCoreThread.h:
245
246 2019-04-02  Keith Rollin  <krollin@apple.com>
247
248         Inhibit CFNetwork logging in private sessions
249         https://bugs.webkit.org/show_bug.cgi?id=196268
250         <rdar://problem/48210793>
251
252         Fix a conditional in Platform.h where IOS should have been used
253         instead of IOS_FAMILY. The latter happened to work, but we really want
254         to be using the proper symbol here.
255
256         Reviewed by Alexey Proskuryakov.
257
258         * wtf/Platform.h:
259
260 2019-04-01  Michael Catanzaro  <mcatanzaro@igalia.com>
261
262         Stop trying to support building JSC with clang 3.8
263         https://bugs.webkit.org/show_bug.cgi?id=195947
264         <rdar://problem/49069219>
265
266         Reviewed by Darin Adler.
267
268         It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
269         don't know how much effort it would be to make JSC work again, and it's making the code
270         worse. Remove my hacks to support clang 3.8 from WTF.
271
272         * wtf/MetaAllocator.cpp:
273         (WTF::MetaAllocator::allocate):
274         * wtf/text/StringConcatenate.h:
275         (WTF::tryMakeStringFromAdapters):
276
277 2019-03-31  Yusuke Suzuki  <ysuzuki@apple.com>
278
279         [JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
280         https://bugs.webkit.org/show_bug.cgi?id=196160
281
282         Reviewed by Saam Barati.
283
284         * wtf/FastMalloc.h:
285         (WTF::FastMalloc::tryRealloc):
286         * wtf/Gigacage.cpp:
287         (Gigacage::tryRealloc):
288         * wtf/Gigacage.h:
289
290 2019-03-31  Andy Estes  <aestes@apple.com>
291
292         [iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
293         https://bugs.webkit.org/show_bug.cgi?id=196433
294         <rdar://problem/49293305>
295
296         Reviewed by Tim Horton.
297
298         * wtf/NeverDestroyed.h:
299         (WTF::NeverDestroyed::operator->):
300         (WTF::NeverDestroyed::operator-> const):
301
302 2019-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
303
304         Unreviewed build fix.
305
306         * wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.
307
308 2019-03-28  Saam Barati  <sbarati@apple.com>
309
310         BackwardsGraph needs to consider back edges as the backward's root successor
311         https://bugs.webkit.org/show_bug.cgi?id=195991
312
313         Reviewed by Filip Pizlo.
314
315         Previously, our backwards graph analysis was slightly wrong. The idea of
316         backwards graph is that the root of the graph has edges to terminals in
317         the original graph. And then the original directed edges in the graph are flipped.
318         
319         However, we weren't considering loops as a form of terminality. For example,
320         we wouldn't consider an infinite loop as a terminal. So there were no edges
321         from the root to a node in the infinite loop. This lead us to make mistakes
322         when we used backwards dominators to compute control flow equivalence.
323         
324         This is better understood in an example:
325         
326         ```
327         preheader:
328         while (1) {
329             if (!isCell(v))
330                 continue;
331             load structure ID
332             if (cond)
333                continue;
334             return
335         }
336         ```
337         
338         In the previous version of this algorithm, the only edge from the backwards
339         root would be to the block containing the return. This would lead us to
340         believe that the loading of the structureID backwards dominates the preheader,
341         leading us to believe it's control flow equivalent to preheader. This is
342         obviously wrong, since we can loop forever if "v" isn't a cell.
343         
344         The solution here is to treat any backedge in the graph as a "terminal" node.
345         Since a backedge implies the existence of a loop.
346         
347         In the above example, the backwards root now has an edge to both blocks with
348         "continue". This prevents us from falsely claiming that the return is control
349         flow equivalent with the preheader.
350         
351         This patch uses DFS spanning trees to compute back edges. An edge
352         u->v is a back edge when u is a descendent of v in the DFS spanning
353         tree of the Graph.
354
355         * WTF.xcodeproj/project.pbxproj:
356         * wtf/BackwardsGraph.h:
357         (WTF::BackwardsGraph::BackwardsGraph):
358         * wtf/SpanningTree.h: Added.
359         (SpanningTree::SpanningTree):
360         (SpanningTree::isDescendent):
361
362 2019-03-28  Tim Horton  <timothy_horton@apple.com>
363
364         Un-fix the build
365
366         * wtf/Platform.h:
367         It is no longer necessary to exclude this from PLATFORM(IOSMAC).
368
369 2019-03-27  Per Arne Vollan  <pvollan@apple.com>
370
371         Layout Test js/math-clz32.html is failing
372         https://bugs.webkit.org/show_bug.cgi?id=196209
373
374         Reviewed by Ross Kirsling.
375
376         Use the correct number of loop iterations when counting leading zeros. Also, the
377         count was off by one for the Win64 case.
378
379         * wtf/MathExtras.h:
380         (WTF::clz):
381
382 2019-03-26  Keith Rollin  <krollin@apple.com>
383
384         Inhibit CFNetwork logging in private sessions
385         https://bugs.webkit.org/show_bug.cgi?id=196268
386         <rdar://problem/48210793>
387
388         Reviewed by Alex Christensen.
389
390         Before performing any logging, the NetworkProcess checks to see if
391         it's performing an operation associated with a private (ephemeral)
392         browsing session. If so, it skips the logging. However, networking
393         layers below the NetworkProcess don't know about private browsing, so
394         they would still perform their own logging. CFNetwork now has a flag
395         that lets us control that, so set it to False if private browsing.
396
397         * wtf/Platform.h:
398
399 2019-03-25  Alex Christensen  <achristensen@webkit.org>
400
401         Expected shouldn't assume its contained types are copyable
402         https://bugs.webkit.org/show_bug.cgi?id=195986
403
404         Reviewed by JF Bastien.
405
406         * wtf/Expected.h:
407         (std::experimental::fundamentals_v3::__expected_detail::constexpr_base::constexpr_base):
408         (std::experimental::fundamentals_v3::operator==):
409         (std::experimental::fundamentals_v3::operator!=):
410         * wtf/Unexpected.h:
411         (std::experimental::fundamentals_v3::unexpected::unexpected):
412
413 2019-03-24  Keith Miller  <keith_miller@apple.com>
414
415         Unreviewed, forgot to refactor variable name for windows build in
416         r243418.
417
418         * wtf/MathExtras.h:
419         (WTF::clz):
420         (WTF::ctz):
421
422 2019-03-24  Andy Estes  <aestes@apple.com>
423
424         [watchOS] Remove unused Proximity Networking code
425         https://bugs.webkit.org/show_bug.cgi?id=196188
426
427         Reviewed by Tim Horton.
428
429         * wtf/FeatureDefines.h:
430
431 2019-03-23  Keith Miller  <keith_miller@apple.com>
432
433         Refactor clz/ctz and fix getLSBSet.
434         https://bugs.webkit.org/show_bug.cgi?id=196162
435
436         Reviewed by Saam Barati.
437
438         This patch makes clz32/64 and ctz32 generic so they work on any
439         numeric type. Since these methods work on any type we don't need
440         to have a separate implementation of getLSBSet, which also
441         happened to be getMSBSet. This patch also adds getMSBSet as there
442         may be users who want that in the future.
443
444         * wtf/MathExtras.h:
445         (WTF::clz):
446         (WTF::ctz):
447         (WTF::getLSBSet):
448         (WTF::getMSBSet):
449         (getLSBSet): Deleted.
450         (WTF::clz32): Deleted.
451         (WTF::clz64): Deleted.
452         (WTF::ctz32): Deleted.
453
454 2019-03-22  Keith Rollin  <krollin@apple.com>
455
456         Enable ThinLTO support in Production builds
457         https://bugs.webkit.org/show_bug.cgi?id=190758
458         <rdar://problem/45413233>
459
460         Reviewed by Daniel Bates.
461
462         Enable building with Thin LTO in Production when using Xcode 10.2 or
463         later. This change results in a 1.45% progression in PLT5. Full
464         Production build times increase about 2-3%. Incremental build times
465         are more severely affected, and so LTO is not enabled for local
466         engineering builds.
467
468         LTO is enabled only on macOS for now, until rdar://problem/49013399,
469         which affects ARM builds, is fixed.
470
471         To change the LTO setting when building locally:
472
473         - If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
474           command line.
475         - If building with `build-webkit`, specify --lto-mode={none,thin,full}
476           on the command line.
477         - If building with `build-root`, specify --lto={none,thin,full} on the
478           command line.
479         - If building with Xcode, create a LocalOverrides.xcconfig file at the
480           top level of your repository directory (if needed) and define
481           WK_LTO_MODE to full, thin, or none.
482
483         * Configurations/Base.xcconfig:
484
485 2019-03-22  Tim Horton  <timothy_horton@apple.com>
486
487         Fix the build after r243354
488
489         * wtf/Platform.h:
490
491 2019-03-22  Tim Horton  <timothy_horton@apple.com>
492
493         Fix the build after r243354
494         https://bugs.webkit.org/show_bug.cgi?id=196138
495         <rdar://problem/49145951>
496
497         * wtf/Platform.h:
498
499 2019-03-21  Eric Carlson  <eric.carlson@apple.com>
500
501         Add UI process WebRTC runtime logging.
502         https://bugs.webkit.org/show_bug.cgi?id=196020
503         <rdar://problem/49071443>
504
505         Reviewed by Youenn Fablet.
506
507         * wtf/Logger.h:
508         (WTF::LogArgument::toString): Add long long and unsigned long long variants.
509
510 2019-03-20  Simon Fraser  <simon.fraser@apple.com>
511
512         Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
513         https://bugs.webkit.org/show_bug.cgi?id=196049
514
515         Reviewed by Tim Horton.
516
517         This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
518         overflow scrolling in general, so rename it.
519
520         * wtf/FeatureDefines.h:
521
522 2019-03-20  Mark Lam  <mark.lam@apple.com>
523
524         Open source arm64e code.
525         https://bugs.webkit.org/show_bug.cgi?id=196012
526         <rdar://problem/49066237>
527
528         Reviewed by Keith Miller.
529
530         * WTF.xcodeproj/project.pbxproj:
531         * wtf/BlockPtr.h:
532         * wtf/Platform.h:
533         * wtf/PlatformRegisters.cpp: Added.
534         (WTF::threadStateLRInternal):
535         (WTF::threadStatePCInternal):
536         * wtf/PlatformRegisters.h:
537         * wtf/PointerPreparations.h:
538         * wtf/PtrTag.cpp: Added.
539         (WTF::tagForPtr):
540         (WTF::ptrTagName):
541         (WTF::registerPtrTagLookup):
542         (WTF::reportBadTag):
543         * wtf/PtrTag.h:
544         (WTF::removeCodePtrTag):
545         (WTF::tagCodePtrImpl):
546         (WTF::tagCodePtr):
547         (WTF::untagCodePtrImplHelper):
548         (WTF::untagCodePtrImpl):
549         (WTF::untagCodePtr):
550         (WTF::retagCodePtrImplHelper):
551         (WTF::retagCodePtrImpl):
552         (WTF::retagCodePtr):
553         (WTF::tagCFunctionPtrImpl):
554         (WTF::tagCFunctionPtr):
555         (WTF::untagCFunctionPtrImpl):
556         (WTF::untagCFunctionPtr):
557         (WTF::tagInt):
558         (WTF::assertIsCFunctionPtr):
559         (WTF::assertIsNullOrCFunctionPtr):
560         (WTF::assertIsNotTagged):
561         (WTF::assertIsTagged):
562         (WTF::assertIsNullOrTagged):
563         (WTF::isTaggedWith):
564         (WTF::assertIsTaggedWith):
565         (WTF::assertIsNullOrTaggedWith):
566         (WTF::usesPointerTagging):
567         (WTF::registerPtrTagLookup):
568         (WTF::reportBadTag):
569         (WTF::tagForPtr): Deleted.
570
571 2019-03-20  Keith Rollin  <krollin@apple.com>
572
573         Update checks that determine if WebKit is system WebKit
574         https://bugs.webkit.org/show_bug.cgi?id=195756
575
576         Reviewed by Alexey Proskuryakov.
577
578         The system WebKit can be installed in additional locations, so check
579         for and allow those, too.
580
581         * wtf/Platform.h:
582
583 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
584
585         Unreviewed, further attempt to fix clang 3.8 build
586         https://bugs.webkit.org/show_bug.cgi?id=195947
587
588         * wtf/MetaAllocator.cpp:
589         (WTF::MetaAllocator::allocate):
590
591 2019-03-20  Michael Catanzaro  <mcatanzaro@igalia.com>
592
593         REGRESSION(r243115) breaks build for clang 3.8
594         https://bugs.webkit.org/show_bug.cgi?id=195947
595
596         Reviewed by Chris Dumez.
597
598         * wtf/text/StringConcatenate.h:
599         (WTF::tryMakeStringFromAdapters):
600
601 2019-03-20  Tim Horton  <timothy_horton@apple.com>
602
603         Add an platform-driven spell-checking mechanism
604         https://bugs.webkit.org/show_bug.cgi?id=195795
605
606         Reviewed by Ryosuke Niwa.
607
608         * wtf/Platform.h:
609         Add an ENABLE flag.
610
611 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
612
613         Build cleanly with GCC 9
614         https://bugs.webkit.org/show_bug.cgi?id=195920
615
616         Reviewed by Chris Dumez.
617
618         WebKit triggers three new GCC 9 warnings:
619
620         """
621         -Wdeprecated-copy, implied by -Wextra, warns about the C++11 deprecation of implicitly
622         declared copy constructor and assignment operator if one of them is user-provided.
623         """
624
625         Solution is to either add a copy constructor or copy assignment operator, if required, or
626         else remove one if it is redundant.
627
628         """
629         -Wredundant-move, implied by -Wextra, warns about redundant calls to std::move.
630         -Wpessimizing-move, implied by -Wall, warns when a call to std::move prevents copy elision.
631         """
632
633         These account for most of this patch. Solution is to just remove the bad WTFMove().
634
635         Additionally, -Wclass-memaccess has been enhanced to catch a few cases that GCC 8 didn't.
636         These are solved by casting nontrivial types to void* before using memcpy. (Of course, it
637         would be safer to not use memcpy on nontrivial types, but that's too complex for this
638         patch. Searching for memcpy used with static_cast<void*> will reveal other cases to fix.)
639
640         * wtf/CheckedArithmetic.h:
641         (WTF::Checked::Checked):
642         * wtf/MetaAllocator.cpp:
643         (WTF::MetaAllocator::allocate):
644         * wtf/URLParser.cpp:
645         (WTF::CodePointIterator::operator!= const):
646         (WTF::CodePointIterator::operator=): Deleted.
647         * wtf/text/StringView.h:
648         (WTF::StringView::CodePoints::Iterator::operator=): Deleted.
649
650 2019-03-19  Alex Christensen  <achristensen@webkit.org>
651
652         Make WTFLogChannelState and WTFLogLevel enum classes
653         https://bugs.webkit.org/show_bug.cgi?id=195904
654
655         Reviewed by Eric Carlson.
656
657         * wtf/Assertions.cpp:
658         * wtf/Assertions.h:
659         * wtf/Logger.h:
660         (WTF::Logger::logAlways const):
661         (WTF::Logger::error const):
662         (WTF::Logger::warning const):
663         (WTF::Logger::info const):
664         (WTF::Logger::debug const):
665         (WTF::Logger::willLog const):
666         (WTF::Logger::log):
667         * wtf/MemoryPressureHandler.cpp:
668         * wtf/RefCountedLeakCounter.cpp:
669
670 2019-03-19  Michael Catanzaro  <mcatanzaro@igalia.com>
671
672         Unreviewed, rolling out r243132.
673
674         Broke GTK build
675
676         Reverted changeset:
677
678         "Make WTFLogChannelState and WTFLogLevel enum classes"
679         https://bugs.webkit.org/show_bug.cgi?id=195904
680         https://trac.webkit.org/changeset/243132
681
682 2019-03-18  Alex Christensen  <achristensen@webkit.org>
683
684         Make WTFLogChannelState and WTFLogLevel enum classes
685         https://bugs.webkit.org/show_bug.cgi?id=195904
686
687         Reviewed by Eric Carlson.
688
689         * wtf/Assertions.cpp:
690         * wtf/Assertions.h:
691         * wtf/Logger.h:
692         (WTF::Logger::logAlways const):
693         (WTF::Logger::error const):
694         (WTF::Logger::warning const):
695         (WTF::Logger::info const):
696         (WTF::Logger::debug const):
697         (WTF::Logger::willLog const):
698         (WTF::Logger::log):
699         * wtf/MemoryPressureHandler.cpp:
700         * wtf/RefCountedLeakCounter.cpp:
701
702 2019-03-18  Darin Adler  <darin@apple.com>
703
704         Cut down on use of StringBuffer, possibly leading toward removing it entirely
705         https://bugs.webkit.org/show_bug.cgi?id=195870
706
707         Reviewed by Daniel Bates.
708
709         * wtf/URL.cpp: Remove a now-inaccurate comment mentioning StringBuffer.
710
711         * wtf/text/StringView.cpp:
712         (WTF::convertASCIICase): Use createUninitialized instead of StringBuffer.
713
714 2019-03-18  Xan Lopez  <xan@igalia.com>
715
716         [WTF] Remove redundant std::move in StringConcatenate
717         https://bugs.webkit.org/show_bug.cgi?id=195798
718
719         Reviewed by Darin Adler.
720
721         Remove redundant calls to WTFMove in return values for this
722         method. C++ will already do an implicit move here since we are
723         returning a local value where copy/move elision is not applicable.
724
725         * wtf/text/StringConcatenate.h:
726         (WTF::tryMakeStringFromAdapters):
727
728 2019-03-16  Darin Adler  <darin@apple.com>
729
730         Improve normalization code, including moving from unorm.h to unorm2.h
731         https://bugs.webkit.org/show_bug.cgi?id=195330
732
733         Reviewed by Michael Catanzaro.
734
735         * wtf/URLHelpers.cpp: Removed unneeded include of unorm.h since the
736         normalization code is now in StringView.cpp.
737         (WTF::URLHelpers::escapeUnsafeCharacters): Renamed from
738         createStringWithEscapedUnsafeCharacters since it now only creates
739         a new string if one is needed. Use unsigned for string lengths, since
740         that's what WTF::String uses, not size_t. Added a first loop so that
741         we can return the string unmodified if no lookalike characters are
742         found. Removed unnecessary round trip from UTF-16 and then back in
743         the case where the character is not a lookalike.
744         (WTF::URLHelpers::toNormalizationFormC): Deleted. Moved this logic
745         into the WTF::normalizedNFC function in StringView.cpp.
746         (WTF::URLHelpers::userVisibleURL): Call escapeUnsafeCharacters and
747         normalizedNFC. The normalizedNFC function is better in multiple ways,
748         but primarily it handles 8-bit strings and other already-normalized
749         strings much more efficiently.
750
751         * wtf/text/StringView.cpp:
752         (WTF::normalizedNFC): Added. This has two overloads. One is for when
753         we already have a String, and want to re-use it if no normalization
754         is needed, and another is when we only have a StringView, and may need
755         to allocate a String to hold the result. Includes a fast special case
756         for 8-bit and already-normalized strings, and uses the same strategy
757         that JSC::normalize was already using: calls unorm2_normalize twice,
758         first just to determine the length.
759
760         * wtf/text/StringView.h: Added normalizedNFC, which can be called with
761         either a StringView or a String. Also moved StringViewWithUnderlyingString
762         here from JSString.h, here for use as the return value of normalizedNFC;
763         it is used for a similar purpose in the JavaScriptCore rope implementation.
764         Also removed an inaccurate comment.
765
766 2019-03-16  Diego Pino Garcia  <dpino@igalia.com>
767
768         [GTK] [WPE] Fix compilation errors due to undefined ALWAYS_LOG_IF
769         https://bugs.webkit.org/show_bug.cgi?id=195850
770
771         Unreviewed build fix after r243033. 
772
773         * wtf/LoggerHelper.h:
774
775 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
776
777         [iOS] Block the accessibility server when accessibility is not enabled.
778         https://bugs.webkit.org/show_bug.cgi?id=195342
779
780         Reviewed by Brent Fulgham.
781
782         Add SPI to issue a mach extension to a process by pid. Also, add a macro for
783         the availability of this SPI.
784
785         * wtf/Platform.h:
786         * wtf/spi/darwin/SandboxSPI.h:
787
788 2019-03-15  Eric Carlson  <eric.carlson@apple.com>
789
790         Add media stream release logging
791         https://bugs.webkit.org/show_bug.cgi?id=195823
792
793         Reviewed by Youenn Fablet.
794
795         * wtf/LoggerHelper.h: Add LOG_IF variants that check a condition before logging.
796
797 2019-03-15  Truitt Savell  <tsavell@apple.com>
798
799         Unreviewed, rolling out r243008.
800
801         This revision broke High Sierra builders
802
803         Reverted changeset:
804
805         "[iOS] Block the accessibility server when accessibility is
806         not enabled."
807         https://bugs.webkit.org/show_bug.cgi?id=195342
808         https://trac.webkit.org/changeset/243008
809
810 2019-03-15  Per Arne Vollan  <pvollan@apple.com>
811
812         [iOS] Block the accessibility server when accessibility is not enabled.
813         https://bugs.webkit.org/show_bug.cgi?id=195342
814
815         Reviewed by Brent Fulgham.
816
817         Add SPI to issue a mach extension to a process by pid.
818
819         * wtf/spi/darwin/SandboxSPI.h:
820
821 2019-03-13  Sam Weinig  <sam@webkit.org>
822
823         Add utility function to allow easy reverse range-based iteration of a container
824         https://bugs.webkit.org/show_bug.cgi?id=195542
825
826         Reviewed by Antti Koivisto.
827
828         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
829         works with any container that is compatible with std::rbegin() and std::rend(). It is
830         expected to be used in conjunction with range-based for-loops like so:
831
832         for (auto& value : WTF::makeReversedRange(myContainer)) 
833             ...
834
835         * wtf/IteratorRange.h:
836         (WTF::makeReversedRange):
837
838 2019-03-13  Keith Rollin  <krollin@apple.com>
839
840         Add support for new StagedFrameworks layout
841         https://bugs.webkit.org/show_bug.cgi?id=195543
842
843         Reviewed by Alexey Proskuryakov.
844
845         Opportunistic cleanup: remove unused JAVASCRIPTCORE_FRAMEWORKS_DIR
846         variable.
847
848         * Configurations/Base.xcconfig:
849
850 2019-03-13  Dominik Infuehr  <dinfuehr@igalia.com>
851
852         String overflow when using StringBuilder in JSC::createError
853         https://bugs.webkit.org/show_bug.cgi?id=194957
854
855         Reviewed by Mark Lam.
856
857         When calculating the new capacity of a StringBuilder object,
858         use a limit of MaxLength instead of MaxLength+1.  Allocating
859         a string of size MaxLength+1 always fails. This means that expanding
860         a StringBuilder only worked when the newly doubled capacity is less or
861         equal to MaxLength.
862
863         * wtf/text/StringBuilder.cpp:
864
865 2019-03-13  Chris Dumez  <cdumez@apple.com>
866
867         Better build fix after r242901.
868
869         Reviewed by Jer Noble.
870
871         * wtf/Logger.h:
872         (WTF::LogArgument::toString):
873
874 2019-03-13  Jer Noble  <jer.noble@apple.com>
875
876         Add AggregateLogger, a Logger specialization for singleton classes.
877         https://bugs.webkit.org/show_bug.cgi?id=195644
878
879         Reviewed by Eric Carlson.
880
881         Add a new class, AggregateLogger, which will log messages to each of its aggregated loggers.
882
883         Drive-by fixes: allow "const void*" to be directly logged by converting the pointer to a hex string.
884
885         * WTF.xcodeproj/project.pbxproj:
886         * wtf/AggregateLogger.h: Added.
887         (WTF::AggregateLogger::create):
888         (WTF::AggregateLogger::addLogger):
889         (WTF::AggregateLogger::removeLogger):
890         (WTF::AggregateLogger::logAlways const):
891         (WTF::AggregateLogger::error const):
892         (WTF::AggregateLogger::warning const):
893         (WTF::AggregateLogger::info const):
894         (WTF::AggregateLogger::debug const):
895         (WTF::AggregateLogger::willLog const):
896         (WTF::AggregateLogger::AggregateLogger):
897         (WTF::AggregateLogger::log const):
898         * wtf/CMakeLists.h:
899         * wtf/Logger.cpp:
900         (WTF::>::toString):
901         * wtf/Logger.h:
902
903 2019-03-12  Commit Queue  <commit-queue@webkit.org>
904
905         Unreviewed, rolling out r242747.
906         https://bugs.webkit.org/show_bug.cgi?id=195641
907
908         Performance measurement is difficult in this period, rolling
909         out it and rolling in later to isolate it from the other
910         sensitive patches (Requested by yusukesuzuki on #webkit).
911
912         Reverted changeset:
913
914         "[JSC] Make StaticStringImpl & StaticSymbolImpl actually
915         static"
916         https://bugs.webkit.org/show_bug.cgi?id=194212
917         https://trac.webkit.org/changeset/242747
918
919 2019-03-12  Robin Morisset  <rmorisset@apple.com>
920
921         A lot more classes have padding that can be reduced by reordering their fields
922         https://bugs.webkit.org/show_bug.cgi?id=195579
923
924         Reviewed by Mark Lam.
925
926         * wtf/CrossThreadQueue.h:
927         * wtf/Logger.h:
928         * wtf/MemoryPressureHandler.h:
929         * wtf/MetaAllocator.h:
930         * wtf/Threading.cpp:
931
932 2019-03-11  Alex Christensen  <achristensen@webkit.org>
933
934         WTF::Expected should use std::addressof instead of operator&
935         https://bugs.webkit.org/show_bug.cgi?id=195604
936
937         Reviewed by Myles Maxfield.
938
939         The latter was causing problems with types that do tricky things with constructors and operator&,
940         specifically UniqueRef but I made a reduced test case.  When it used operator&, it would get the contained
941         type and call the constructor that takes a contained type instead of the move constructor.
942
943         * wtf/Expected.h:
944         (std::experimental::fundamentals_v3::__expected_detail::base::base):
945         (std::experimental::fundamentals_v3::expected::swap):
946
947 2019-03-11  Ross Kirsling  <ross.kirsling@sony.com>
948
949         Add Optional to Forward.h.
950         https://bugs.webkit.org/show_bug.cgi?id=195586
951
952         Reviewed by Darin Adler.
953
954         * wtf/Forward.h:
955         Add forward declaration for Optional.
956
957         * wtf/CPUTime.h:
958         * wtf/Expected.h:
959         * wtf/MainThread.h:
960         * wtf/MemoryFootprint.h:
961         * wtf/URLHelpers.cpp:
962         * wtf/URLHelpers.h:
963         * wtf/cocoa/CPUTimeCocoa.cpp:
964         * wtf/fuchsia/CPUTimeFuchsia.cpp:
965         * wtf/unix/CPUTimeUnix.cpp:
966         * wtf/win/CPUTimeWin.cpp:
967         Remove unnecessary includes from headers.
968
969 2019-03-11  Andy Estes  <aestes@apple.com>
970
971         [Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
972         https://bugs.webkit.org/show_bug.cgi?id=195530
973         <rdar://problem/48747164>
974
975         Reviewed by Alex Christensen.
976
977         * wtf/FeatureDefines.h: Defined ENABLE_APPLE_PAY_REMOTE_UI.
978
979 2019-03-11  Yusuke Suzuki  <ysuzuki@apple.com>
980
981         [JSC] Make StaticStringImpl & StaticSymbolImpl actually static
982         https://bugs.webkit.org/show_bug.cgi?id=194212
983
984         Reviewed by Mark Lam.
985
986         Avoid mutation onto refcounts if `isStatic()` returns true so that the content of StaticStringImpl never gets modified.
987
988         * wtf/text/StringImpl.h:
989         (WTF::StringImpl::ref):
990         (WTF::StringImpl::deref):
991
992 2019-03-11  Sihui Liu  <sihui_liu@apple.com>
993
994         Crash under WebCore::IDBDatabase::connectionToServerLost
995         https://bugs.webkit.org/show_bug.cgi?id=195563
996         <rdar://problem/37193655>
997
998         CrossThreadTask should protect callee if it is ThreadSafeRefCounted.
999
1000         Reviewed by Geoffrey Garen.
1001
1002         * wtf/CrossThreadTask.h:
1003         (WTF::createCrossThreadTask):
1004
1005 2019-03-11  Ryan Haddad  <ryanhaddad@apple.com>
1006
1007         Unreviewed, rolling out r242688, r242643, r242624.
1008
1009         Caused multiple layout test failures and crashes on iOS and macOS.
1010
1011         Reverted changeset:
1012
1013         "requestAnimationFrame should execute before the next frame"
1014         https://bugs.webkit.org/show_bug.cgi?id=177484
1015         https://trac.webkit.org/changeset/242624/webkit
1016
1017         * wtf/SystemTracing.h:
1018
1019 2019-03-11  Darin Adler  <darin@apple.com>
1020
1021         Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior
1022         https://bugs.webkit.org/show_bug.cgi?id=195533
1023
1024         Reviewed by Brent Fulgham.
1025
1026         Soon, we will change String::number and StringBuilder::appendNumber for floating
1027         point to use "shortest form" serialization instead of the current default, which is
1028         "6-digit fixed precision stripping trailing zeros". To prepare to do this safely
1029         without accidentally changing any behavior, changing callers to call the explicit
1030         versions. Later, we may want to return and change many of them to use shortest form
1031         instead, but that may require rebaselining tests, and in some extreme cases, getting
1032         rid of flawed logic that converts between different single and double precision
1033         floating point; such problems may be hidden by fixed precision serialization.
1034
1035         Since "shortest form" is already the behavior for AtomicString::number and
1036         for makeString, no changes required for clients of either of those.
1037
1038         * wtf/Logger.h:
1039         (WTF::LogArgument::toString): Use numberToStringFixedPrecision.
1040         * wtf/MediaTime.cpp:
1041         (WTF::MediaTime::toString const): Use appendFixedPrecisionNumber.
1042         * wtf/text/ValueToString.h:
1043         (WTF::ValueToString<float>::string): Use numberToStringFixedPrecision.
1044         (WTF::ValueToString<double>::string): Ditto.
1045
1046 2019-03-11  Truitt Savell  <tsavell@apple.com>
1047
1048         Unreviewed, rolling out r242702.
1049
1050         Broke High Sierra builders.
1051
1052         Reverted changeset:
1053
1054         "Add utility function to allow easy reverse range-based
1055         iteration of a container"
1056         https://bugs.webkit.org/show_bug.cgi?id=195542
1057         https://trac.webkit.org/changeset/242702
1058
1059 2019-03-11  Sam Weinig  <sam@webkit.org>
1060
1061         Add utility function to allow easy reverse range-based iteration of a container
1062         https://bugs.webkit.org/show_bug.cgi?id=195542
1063
1064         Reviewed by Antti Koivisto.
1065
1066         Add functions to create an IteratorRange<T> that will iterate a container backwards. It
1067         works with any container that is compatible with std::rbegin() and std::rend(). It is
1068         expected to be used in conjunction with range-based for-loops like so:
1069
1070         for (auto& value : WTF::makeReversedRange(myContainer)) 
1071             ...
1072
1073         * wtf/IteratorRange.h:
1074         (WTF::makeReversedRange):
1075
1076 2019-03-10  Yusuke Suzuki <utatane.tea@gmail.com> and Fujii Hironori  <Hironori.Fujii@sony.com>
1077
1078         [WTF] Align assumption in RunLoopWin to the other platform's RunLoop
1079         https://bugs.webkit.org/show_bug.cgi?id=181151
1080
1081         Reviewed by Don Olmstead.
1082
1083         This patch fixes RunLoop in Windows to align it to the implementations in the other platforms
1084         to use RunLoop more aggressively.
1085
1086         * wtf/RunLoop.h:
1087         (WTF::RunLoop::Timer::Timer):
1088         * wtf/win/MainThreadWin.cpp:
1089         (initializeMainThreadPlatform): Call RunLoop::registerRunLoopMessageWindowClass.
1090         * wtf/win/RunLoopWin.cpp:
1091         (WTF::RunLoop::wndProc):
1092         (WTF::RunLoop::iterate):
1093         (WTF::RunLoop::stop):
1094         PostQuitMessage is only available in the RunLoop's thread. We should post a message and call
1095         it inside this task.
1096
1097         (WTF::RunLoop::registerRunLoopMessageWindowClass):
1098         Changed the return type from bool to void, and added RELEASE_ASSERT to check the return value of RegisterClass.
1099
1100         (WTF::RunLoop::~RunLoop):
1101         When the RunLoop's thread is freed, its associated window is freed. We do not need to do here.
1102
1103         (WTF::RunLoop::TimerBase::timerFired):
1104         (WTF::RunLoop::TimerBase::TimerBase):
1105         (WTF::RunLoop::TimerBase::start):
1106         (WTF::RunLoop::TimerBase::stop):
1107         (WTF::RunLoop::TimerBase::isActive const):
1108         (WTF::RunLoop::TimerBase::secondsUntilFire const):
1109         (WTF::generateTimerID): Deleted.
1110         We can use TimerBase's pointer as ID since it is uintptr_t.
1111
1112 2019-03-07  Said Abou-Hallawa  <sabouhallawa@apple.com>
1113
1114         requestAnimationFrame should execute before the next frame
1115         https://bugs.webkit.org/show_bug.cgi?id=177484
1116
1117         Reviewed by Simon Fraser.
1118
1119         Add trace points for the page RenderingUpdate.
1120
1121         * wtf/SystemTracing.h:
1122
1123 2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>
1124
1125         [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
1126         https://bugs.webkit.org/show_bug.cgi?id=195346
1127
1128         Reviewed by Fujii Hironori.
1129
1130         * wtf/PlatformWin.cmake:
1131         * wtf/text/AtomicString.h:
1132         (WTF::AtomicString::AtomicString):
1133         * wtf/text/WTFString.h:
1134         (WTF::String::String):
1135         * wtf/text/win/StringWin.cpp: Added.
1136         (WTF::String::wideCharacters const): Renamed from WTF::stringToNullTerminatedWChar.
1137         * wtf/text/win/WCharStringExtras.h:
1138         (WTF::ucharFrom):
1139         (WTF::wcharFrom):
1140         (WTF::stringToNullTerminatedWChar): Deleted.
1141         (WTF::wcharToString): Deleted.
1142         (WTF::nullTerminatedWCharToString): Deleted.
1143         Add static_assert-guarded reinterpret_cast wrappers for going between UChar* and wchar_t*.
1144         Move existing to/from-String helpers into the String (and AtomicString) class(es).
1145
1146         * wtf/win/FileSystemWin.cpp:
1147         (WTF::FileSystemImpl::getFindData):
1148         (WTF::FileSystemImpl::getFinalPathName):
1149         (WTF::FileSystemImpl::createSymbolicLink):
1150         (WTF::FileSystemImpl::deleteFile):
1151         (WTF::FileSystemImpl::deleteEmptyDirectory):
1152         (WTF::FileSystemImpl::moveFile):
1153         (WTF::FileSystemImpl::pathByAppendingComponent):
1154         (WTF::FileSystemImpl::fileSystemRepresentation):
1155         (WTF::FileSystemImpl::makeAllDirectories):
1156         (WTF::FileSystemImpl::pathGetFileName):
1157         (WTF::FileSystemImpl::storageDirectory):
1158         (WTF::FileSystemImpl::generateTemporaryPath):
1159         (WTF::FileSystemImpl::openTemporaryFile):
1160         (WTF::FileSystemImpl::openFile):
1161         (WTF::FileSystemImpl::hardLinkOrCopyFile):
1162         (WTF::FileSystemImpl::deleteNonEmptyDirectory):
1163         * wtf/win/LanguageWin.cpp:
1164         (WTF::localeInfo):
1165         * wtf/win/PathWalker.cpp:
1166         (WTF::PathWalker::PathWalker):
1167         Use wchar helpers as needed.
1168
1169 2019-02-28  Ryosuke Niwa  <rniwa@webkit.org>
1170
1171         Add WeakHashSet
1172         https://bugs.webkit.org/show_bug.cgi?id=195152
1173
1174         Reviewed by Antti Koivisto.
1175
1176         Added WeakHashSet which is a HashSet of WeakPtr. When the object pointed by WeakPtr is deleted,
1177         WeakHashSet treats the key to be no longer in the set. That is, WeakHashSet::contains returns false
1178         and const_iterator skips such a WeakPtr in the set.
1179
1180         We decided not to make HashSet<WeahPtr<T>> work because it involves weird semantics such as making
1181         find(X) delete the table entry as remove(find(X)) would be a no-op otherwise as find(X) would return
1182         necessarily need to return HashSet<WeakPtr<T>>::end().
1183
1184         Furthermore, we cannot determine the true size of this set in O(1) because the objected pointed by
1185         some of WeakPtr in the set may have already been deleted. This has implications that we can't have
1186         size(), isEmpty(), random(), etc... as O(1) operation.
1187
1188         WeakHashSet is implemented as HashSet<WeakReference<T>>. HashTable::rehash has been updated to delete
1189         WeakReference<T>'s whose m_ptr has become null, and HashTable::expand first deletes any such entry
1190         before deciding an actual expansion is needed. This is accomplished via newly added hash trait,
1191         hasIsReleasedWeakValueFunction, and HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue which
1192         returns true for when WeakReference<T> pointed by Ref<WeakReference<T>> has null m_ptr, not to be
1193         confused with Ref<WeakReference<T>> itself pointing to a null WeakReference<T>.
1194
1195         * WTF.xcodeproj/project.pbxproj:
1196         * wtf/CMakeLists.txt:
1197         * wtf/Forward.h:
1198         * wtf/HashSet.h:
1199         (WTF::HashSet<T, U, V>::checkConsistency const): Added.
1200         * wtf/HashTable.h:
1201         (WTF::HashTable::isReleasedWeakBucket): Added.
1202         (WTF::HashTable::expand): Delete WeakReference<T> with null m_ptr first. This updates m_keyCount
1203         and may make mustRehashInPlace() return true.
1204         (WTF::HashTable::deleteReleasedWeakBuckets): Added.
1205         (WTF::HashTable::rehash): Delete WeakReference<T> with null m_ptr. Also refactored the code a bit
1206         to avoid keep repeating oldTable[i].
1207         * wtf/HashTraits.h:
1208         (WTF::HashTraits<T>::isHashTraitsReleasedWeakValue): Added.
1209         (WTF::RefHashTraits<T>): Extracted from HashTraits<Ref<P>> to share code with
1210         HashTraits<Ref<WeakReference<T>>>.
1211         (WTF::HashTraitsReleasedWeakValueChecker<Traits, hasIsReleasedWeakValueFunction>): Added.
1212         (WTF::isHashTraitsReleasedWeakValue<Traits, hasIsReleasedWeakValueFunction>): Added.
1213         * wtf/WeakHashSet.h: Added.
1214         (WTF::WeakHashSet): Added.
1215         (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator):
1216         (WTF::WeakHashSet::WeakHashSetConstIterator::get const):
1217         (WTF::WeakHashSet::WeakHashSetConstIterator::operator* const):
1218         (WTF::WeakHashSet::WeakHashSetConstIterator::operator-> const):
1219         (WTF::WeakHashSet::WeakHashSetConstIterator::operator++):
1220         (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets):
1221         (WTF::WeakHashSet::WeakHashSetConstIterator::operator== const):
1222         (WTF::WeakHashSet::WeakHashSetConstIterator::operator!= const):
1223         (WTF::WeakHashSet::WeakHashSet):
1224         (WTF::WeakHashSet::begin const):
1225         (WTF::WeakHashSet::end const):
1226         (WTF::WeakHashSet::add):
1227         (WTF::WeakHashSet::remove):
1228         (WTF::WeakHashSet::contains const):
1229         (WTF::WeakHashSet::capacity const):
1230         (WTF::WeakHashSet::computeSize const): Deletes any WeakReference<T> with null m_ptr first.
1231         (WTF::WeakHashSet::checkConsistency const):
1232         (WTF::HashTraits<Ref<WeakReference<T>>>): Added. This hash traits triggers the new code in HashTable's
1233         expand and rehash methods to delete WeakReference<T> with null m_ptr.
1234         (WTF::HashTraits<Ref<WeakReference<T>>>::isReleasedWeakValue):
1235         * wtf/WeakPtr.h:
1236         (WTF::WeakReference::~WeakReference): Added so that we can keep track the number of live WeakReference
1237         in API tests by template specializations.
1238
1239 2019-03-03  Darin Adler  <darin@apple.com>
1240
1241         Prepare to improve handling of conversion of float to strings
1242         https://bugs.webkit.org/show_bug.cgi?id=195262
1243
1244         Reviewed by Daniel Bates.
1245
1246         * wtf/dtoa.cpp:
1247         (WTF::truncateTrailingZeros): Renamed from
1248         formatStringTruncatingTrailingZerosIfNeeded and removed the calls
1249         to double_conversion::StringBuilder::Finalizer, since the caller
1250         already does that.
1251         (WTF::numberToFixedPrecisionString): Added an overload for float
1252         and updated to use the new truncateTrailingZeros.
1253         (WTF::numberToFixedWidthString): Added an overload for float.
1254
1255         * wtf/text/AtomicString.cpp:
1256         (WTF::AtomicString::number): Added float overload. This is a
1257         behavior change, but in all cases for the better. The old behavior
1258         was to convert to double first and then do "shortest form"
1259         conversion, and it's always better to just do that as float.
1260         * wtf/text/AtomicString.h: Added float overload of AtomicString::number.
1261
1262         * wtf/text/StringBuilder.cpp:
1263         (WTF::StringBuilder::appendFixedPrecisionNumber): Added float
1264         overload.
1265         (WTF::StringBuilder::appendShortestFormNumber): Renamed from
1266         appendECMAScriptNumber and did the above.
1267         (WTF::StringBuilder::appendFixedWidthNumber): Ditto.
1268         * wtf/text/StringBuilder.h: Added overloads for float and
1269         appendShortestFormNumber. The appendNumber and appendECMAScriptNumber
1270         functions are now inlines in the header, since they are expressed
1271         entirely in terms of the other functions.
1272
1273         * wtf/text/WTFString.cpp:
1274         (WTF::String::numberToStringFixedPrecision): Added float overload.
1275         Removed unnecessary explicit conversion to String.
1276         (WTF::String::numberToStringShortest): Renamed from
1277         numberToStringECMAScript and did the above.
1278         (WTF::String::numberToStringFixedWidth): Ditto.
1279
1280         * wtf/text/WTFString.h: Added overloads for float and
1281         numberToStringShortest. The number and numberToStringECMAScript
1282         functions are now inlines in the header, since they are expressed
1283         entirely in terms of the other functions.
1284
1285 2019-03-04  Andy Estes  <aestes@apple.com>
1286
1287         [Apple Pay] Move WebPaymentCoordinatorProxy from Source/WebKit/UIProcess to Source/WebKit/Shared
1288         https://bugs.webkit.org/show_bug.cgi?id=195080
1289         <rdar://problem/48421558>
1290
1291         Reviewed by Antti Koivisto.
1292
1293         * wtf/FeatureDefines.h:
1294
1295 2019-03-04  Michael Catanzaro  <mcatanzaro@igalia.com>
1296
1297         URLHelpers should use unorm2_quickCheck before converting to NFC
1298         https://bugs.webkit.org/show_bug.cgi?id=194272
1299
1300         Reviewed by Darin Adler.
1301
1302         If the string is already in normalization form C, don't try to normalize it.
1303
1304         * wtf/URLHelpers.cpp:
1305         (WTF::URLHelpers::toNormalizationFormC):
1306
1307 2019-03-02  Darin Adler  <darin@apple.com>
1308
1309         Retire legacy dtoa function and DecimalNumber class
1310         https://bugs.webkit.org/show_bug.cgi?id=195253
1311
1312         Reviewed by Daniel Bates.
1313
1314         * WTF.xcodeproj/project.pbxproj: Removed DecimalNumber.cpp/h.
1315         * wtf/CMakeLists.txt: Ditto.
1316
1317         * wtf/DecimalNumber.cpp: Removed.
1318         * wtf/DecimalNumber.h: Removed.
1319
1320         * wtf/JSONValues.cpp:
1321         (WTF::JSONImpl::Value::writeJSON const): Use
1322         StringBuilder::appendECMAScriptNumber instead of custom logic
1323         using the DecimalNumber class.
1324
1325         * wtf/dtoa.cpp:
1326         (WTF::storeInc): Deleted.
1327         (WTF::BigInt): Deleted.
1328         (WTF::multadd): Deleted.
1329         (WTF::hi0bits): Deleted.
1330         (WTF::lo0bits): Deleted.
1331         (WTF::i2b): Deleted.
1332         (WTF::mult): Deleted.
1333         (WTF::P5Node::P5Node): Deleted.
1334         (WTF::pow5mult): Deleted.
1335         (WTF::lshift): Deleted.
1336         (WTF::cmp): Deleted.
1337         (WTF::diff): Deleted.
1338         (WTF::d2b): Deleted.
1339         (WTF::quorem): Deleted.
1340         (WTF::dtoa): Deleted.
1341
1342         * wtf/dtoa.h: Removed DtoaBuffer, dtoa, and NumberToStringBufferLength.
1343
1344 2019-02-27  Darin Adler  <darin@apple.com>
1345
1346         Fixed makeString(float) to do shortest-form serialization without first converting to double
1347         https://bugs.webkit.org/show_bug.cgi?id=195142
1348
1349         Reviewed by Daniel Bates.
1350
1351         * wtf/DecimalNumber.cpp: Removed unneeded includes.
1352
1353         * wtf/DecimalNumber.h: Removed unused constructors; over time we will be
1354         deprecating DecimalNumber, so we should removed the unused parts. Also
1355         marked the constructor explicit, removed types used only for arguments for
1356         the constructors, and removed the sign, exponent, significand, and precision
1357         member functions.
1358
1359         * wtf/JSONValues.cpp:
1360         (WTF::JSONImpl::Value::writeJSON const): Updated for changes to DecimalNumber
1361         switched from NumberToLStringBuffer to NumberToStringBuffer, and for use of
1362         std::array instead of C arrays.
1363
1364         * wtf/dtoa.cpp: Removed unused dtoaRoundSF and dtoaRoundDP functions.
1365         (WTF::dtoa): Updated to use std::array instead of C arrays.
1366         (WTF::dtoaRoundSF): Removed.
1367         (WTF::dtoaRoundDP): Removed.
1368         (WTF::numberToString): Added an overload for float and updated to use std::array.
1369         (WTF::formatStringTruncatingTrailingZerosIfNeeded): Updated to use std::array.
1370         (WTF::numberToFixedPrecisionString): Ditto.
1371         (WTF::numberToFixedWidthString): Ditto.
1372
1373         * wtf/dtoa.h: Changed arrays to be std::array instead of C arrays so the
1374         array types will be checked. Removed dtoaRoundSF and dtoaRoundDP.
1375         Added float overloads for numberToString, numberToFixedPrecisionString,
1376         and numberToFixedWidthString. The only one of these that is called at this
1377         time is numberToString, called by the floating point StringTypeAdapter in
1378         StringConcatenateNummbers.h.
1379
1380         * wtf/text/StringConcatenateNumbers.h: Updated for std::array.
1381
1382 2019-03-01  Darin Adler  <darin@apple.com>
1383
1384         Finish removing String::format
1385         https://bugs.webkit.org/show_bug.cgi?id=194893
1386
1387         Reviewed by Daniel Bates.
1388
1389         * wtf/Assertions.cpp:
1390         (WTF::createWithFormatAndArguments): Moved this here from WTFString.cpp.
1391         (WTFLog): Use WTF::createWithFormatAndArguments instead of String::format.
1392
1393         * wtf/HexNumber.h: Deleted unneeded toString function.
1394
1395         * wtf/text/StringConcatenate.h: Got rid of unneeded forward declaration of
1396         StringTypeAdapter, since that's now in Forward.h. Tweaked formatting of templates
1397         a bit. Use function templates for writeTo functions rather than having two of each.
1398         Removed unused toString functions. Optimized case where we use have a UChar* and
1399         a length of zero to not force the result to be 16-bit. Also gets rid of a small
1400         NO_RETURN_DUE_TO_CRASH mess that we don't need. Refactored constructors to use some
1401         static member helper functions to compute string lengths. Added the pad function
1402         and the PaddingSpecification struct template, so we can add padding to anything
1403         we can turn into a string. Got rid of the special case overload for single
1404         arguments, since it only worked for things that the String constructor can handle.
1405         Instead we will now use StringTypeAdapter, which works for more types. Possibly
1406         less optimal for some special cases, which we could specialize for later if we like.
1407         * wtf/text/StringConcatenateNumbers.h: Ditto.
1408         * wtf/text/StringOperators.h: Ditto.
1409         * wtf/text/StringView.h: Ditto.
1410
1411         * wtf/text/WTFString.cpp:
1412         (WTF::createWithFormatAndArguments): Deleted.
1413         (WTF::String::format): Deleted.
1414         * wtf/text/WTFString.h: Deleted declaration of String::format.
1415
1416 2019-03-01  Alex Christensen  <achristensen@webkit.org>
1417
1418         Revert r241223, r241235, and r241287
1419         https://bugs.webkit.org/show_bug.cgi?id=194427
1420         <rdar://48045861>
1421
1422         * wtf/spi/darwin/XPCSPI.h:
1423
1424 2019-03-01  Simon Fraser  <simon.fraser@apple.com>
1425
1426         Add a system trace scope for event region building
1427         https://bugs.webkit.org/show_bug.cgi?id=195226
1428
1429         Reviewed by Jon Lee.
1430
1431         This trace scope measures the time spend converting element rects into Region objects,
1432         which can be large on some pages.
1433
1434         The value for "Display Refresh Dispatch to main thread" was wrong and I fixed it.
1435
1436         * wtf/SystemTracing.h:
1437
1438 2019-02-28  Yusuke Suzuki  <ysuzuki@apple.com>
1439
1440         [JSC] sizeof(JSString) should be 16
1441         https://bugs.webkit.org/show_bug.cgi?id=194375
1442
1443         Reviewed by Saam Barati.
1444
1445         * wtf/text/StringImpl.h:
1446         (WTF::StringImpl::flagIs8Bit):
1447         (WTF::StringImpl::flagIsAtomic):
1448         (WTF::StringImpl::flagIsSymbol):
1449         (WTF::StringImpl::maskStringKind):
1450         * wtf/text/WTFString.cpp:
1451         (WTF::nullString):
1452         * wtf/text/WTFString.h:
1453
1454 2019-02-28  Mark Lam  <mark.lam@apple.com>
1455
1456         Change CheckedArithmetic to not use std::enable_if_t.
1457         https://bugs.webkit.org/show_bug.cgi?id=195187
1458         <rdar://problem/48464665>
1459
1460         Reviewed by Keith Miller.
1461
1462         Because C++11 does not like std::enable_if_t and there's a need to use this file with C++11.
1463
1464         * wtf/CheckedArithmetic.h:
1465
1466 2019-02-27  Simon Fraser  <simon.fraser@apple.com>
1467
1468         Roll out r242014; it caused crashes in compositing logging (webkit.org/b/195141)
1469
1470         * wtf/Assertions.cpp:
1471         (WTF::createWithFormatAndArguments): Deleted.
1472         * wtf/HexNumber.h:
1473         (WTF::StringTypeAdapter<HexNumberBuffer>::toString const):
1474         * wtf/text/StringConcatenate.h:
1475         (WTF::makeString):
1476         (WTF::pad): Deleted.
1477         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::StringTypeAdapter): Deleted.
1478         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::length const): Deleted.
1479         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::is8Bit const): Deleted.
1480         (WTF::StringTypeAdapter<PaddingSpecification<UnderlyingAdapterType>>::writeTo const): Deleted.
1481         * wtf/text/StringConcatenateNumbers.h:
1482         (WTF::FormattedNumber::fixedPrecision):
1483         (WTF::FormattedNumber::fixedWidth):
1484         (WTF::StringTypeAdapter<FormattedNumber>::toString const):
1485         * wtf/text/StringOperators.h:
1486         (WTF::StringAppend::StringAppend):
1487         * wtf/text/StringView.h:
1488         (WTF::StringView::invalidate):
1489         * wtf/text/WTFString.cpp:
1490         (WTF::createWithFormatAndArguments):
1491         (WTF::String::format):
1492         * wtf/text/WTFString.h:
1493
1494 2019-02-26  Mark Lam  <mark.lam@apple.com>
1495
1496         Remove remaining poisoning code.
1497         https://bugs.webkit.org/show_bug.cgi?id=194138
1498
1499         Reviewed by Saam Barati.
1500
1501         This patch removes the instantiation of Poisoned variants of the various containers
1502         but retains the ability of those containers to work with pointer traits.  This
1503         allows us to use them with smart pointers in the future (just like we used to with
1504         Poisoned values).  At minimum, this ability will be useful when we want to insert
1505         an observer into the container storage type for debugging purposes, or to collect
1506         statistics for profiling.
1507
1508         * WTF.xcodeproj/project.pbxproj:
1509         * wtf/Bag.h:
1510         * wtf/CMakeLists.txt:
1511         * wtf/Platform.h:
1512         * wtf/Poisoned.cpp: Removed.
1513         * wtf/Poisoned.h: Removed.
1514         * wtf/PoisonedUniquePtr.h: Removed.
1515         * wtf/Ref.h:
1516         * wtf/RefCountedArray.h:
1517         * wtf/RefPtr.h:
1518         * wtf/WTFAssertions.cpp:
1519
1520 2019-02-26  Keith Miller  <keith_miller@apple.com>
1521
1522         Code quality cleanup in NeverDestroyed
1523         https://bugs.webkit.org/show_bug.cgi?id=194824
1524
1525         Reviewed by Yusuke Suzuki.
1526
1527         First, move data members to the end of the class per WebKit
1528         style. Also, add forbid heap allocation since we expect the
1529         NeverDestroyed classes to be static.
1530
1531         * wtf/NeverDestroyed.h:
1532
1533 2019-02-25  Xabier Rodriguez Calvar  <calvaris@igalia.com>
1534
1535         Fix WTFLogVerbose variadic parameters forwarding
1536         https://bugs.webkit.org/show_bug.cgi?id=194920
1537
1538         Reviewed by Alex Christensen.
1539
1540         WTFLogVerbose was passing the va_list to WTFLog but this function
1541         also used variadic parameters and this is not allowed in C (that
1542         part of the code is extern "C").
1543
1544         * wtf/Assertions.cpp:
1545         (WTF::WTFLogVaList): Created to take a va_list argument instead of
1546         variadic parameters.
1547         (WTF::WTFLog): Kept with variadic parameters, which are
1548         transformed to va_list and passed to WTFLogVaList.
1549         (WTF::WTFLogVerbose): Use WTFLogVaList instead of WTFLog.
1550
1551 2019-02-25  Sam Weinig  <sam@webkit.org>
1552
1553         Update double-conversion to the latest version
1554         https://bugs.webkit.org/show_bug.cgi?id=194994
1555
1556         Import the latest version of the double-conversion library based on
1557         https://github.com/google/double-conversion/commit/990c44707c70832dc1ce1578048c2198bafd3307
1558
1559         In additon to importing the code, the following changes were applied (or re-applied) to maintain 
1560         parity with what we had previously:
1561              - Add #include "config.h" to each cpp file.
1562              - Put everything inside the WTF namespace.
1563              - Changed all in library includes to be of the form #include <wtf/dtoa/FILE.h>.
1564              - Renamed double_conversion::Vector<> to double_conversion::BufferReference<>.
1565              - Replaced duplicated functions with ASCIICType.h variants
1566              - Made CachedPower table a constexpr.
1567              - Exported (via WTF_EXPORT_PRIVATE) several functions in double-conversion.h.
1568              - Made substantial changes to StringToDoubleConverter to avoid unnecessary overhead of 
1569                parameterization, as we only ever want one configuration. Instead of constructing a
1570                configured class and calling StringToDouble on it, StringToDouble is now a static
1571                function. This allows a bunch of now dead code (hex support, octal support, etc.) to
1572                be eliminated. As StringToDoubleConverter now supports single precision floats, some
1573                additional templating of StringToIeee was added to avoid extra unnecessary branching.
1574              - Added RemoveCharacters function to double_conversion::StringBuilder.
1575
1576         Reviewed by Darin Adler.
1577
1578         * WTF.xcodeproj/project.pbxproj:
1579         * wtf/CMakeLists.txt:
1580         * wtf/dtoa/AUTHORS: Added.
1581         * wtf/dtoa/README: Removed.
1582         * wtf/dtoa/README.md: Added.
1583         * wtf/dtoa/bignum-dtoa.cc:
1584         * wtf/dtoa/bignum-dtoa.h:
1585         * wtf/dtoa/bignum.cc:
1586         * wtf/dtoa/bignum.h:
1587         (WTF::double_conversion::Bignum::Times10):
1588         (WTF::double_conversion::Bignum::Equal):
1589         (WTF::double_conversion::Bignum::LessEqual):
1590         (WTF::double_conversion::Bignum::Less):
1591         (WTF::double_conversion::Bignum::PlusEqual):
1592         (WTF::double_conversion::Bignum::PlusLessEqual):
1593         (WTF::double_conversion::Bignum::PlusLess):
1594         (WTF::double_conversion::Bignum::EnsureCapacity):
1595         (WTF::double_conversion::Bignum::BigitLength const):
1596         * wtf/dtoa/cached-powers.cc:
1597         * wtf/dtoa/cached-powers.h:
1598         * wtf/dtoa/diy-fp.cc:
1599         * wtf/dtoa/diy-fp.h:
1600         (WTF::double_conversion::DiyFp::DiyFp):
1601         (WTF::double_conversion::DiyFp::Subtract):
1602         (WTF::double_conversion::DiyFp::Minus):
1603         (WTF::double_conversion::DiyFp::Times):
1604         (WTF::double_conversion::DiyFp::Normalize):
1605         (WTF::double_conversion::DiyFp::f const):
1606         (WTF::double_conversion::DiyFp::e const):
1607         (WTF::double_conversion::DiyFp::set_f):
1608         (WTF::double_conversion::DiyFp::set_e):
1609         * wtf/dtoa/double-conversion.cc:
1610         * wtf/dtoa/double-conversion.h:
1611         (WTF::double_conversion::DoubleToStringConverter::DoubleToStringConverter):
1612         (WTF::double_conversion::DoubleToStringConverter::ToShortest const):
1613         (WTF::double_conversion::DoubleToStringConverter::ToShortestSingle const):
1614         (WTF::double_conversion::StringToDoubleConverter::StringToDoubleConverter):
1615         * wtf/dtoa/double.h: Removed.
1616         * wtf/dtoa/fast-dtoa.cc:
1617         * wtf/dtoa/fast-dtoa.h:
1618         * wtf/dtoa/fixed-dtoa.cc:
1619         * wtf/dtoa/fixed-dtoa.h:
1620         * wtf/dtoa/ieee.h: Added.
1621         (WTF::double_conversion::double_to_uint64):
1622         (WTF::double_conversion::uint64_to_double):
1623         (WTF::double_conversion::float_to_uint32):
1624         (WTF::double_conversion::uint32_to_float):
1625         (WTF::double_conversion::Double::Double):
1626         (WTF::double_conversion::Double::AsDiyFp const):
1627         (WTF::double_conversion::Double::AsNormalizedDiyFp const):
1628         (WTF::double_conversion::Double::AsUint64 const):
1629         (WTF::double_conversion::Double::NextDouble const):
1630         (WTF::double_conversion::Double::PreviousDouble const):
1631         (WTF::double_conversion::Double::Exponent const):
1632         (WTF::double_conversion::Double::Significand const):
1633         (WTF::double_conversion::Double::IsDenormal const):
1634         (WTF::double_conversion::Double::IsSpecial const):
1635         (WTF::double_conversion::Double::IsNan const):
1636         (WTF::double_conversion::Double::IsInfinite const):
1637         (WTF::double_conversion::Double::Sign const):
1638         (WTF::double_conversion::Double::UpperBoundary const):
1639         (WTF::double_conversion::Double::NormalizedBoundaries const):
1640         (WTF::double_conversion::Double::LowerBoundaryIsCloser const):
1641         (WTF::double_conversion::Double::value const):
1642         (WTF::double_conversion::Double::SignificandSizeForOrderOfMagnitude):
1643         (WTF::double_conversion::Double::Infinity):
1644         (WTF::double_conversion::Double::NaN):
1645         (WTF::double_conversion::Double::DiyFpToUint64):
1646         (WTF::double_conversion::Single::Single):
1647         (WTF::double_conversion::Single::AsDiyFp const):
1648         (WTF::double_conversion::Single::AsUint32 const):
1649         (WTF::double_conversion::Single::Exponent const):
1650         (WTF::double_conversion::Single::Significand const):
1651         (WTF::double_conversion::Single::IsDenormal const):
1652         (WTF::double_conversion::Single::IsSpecial const):
1653         (WTF::double_conversion::Single::IsNan const):
1654         (WTF::double_conversion::Single::IsInfinite const):
1655         (WTF::double_conversion::Single::Sign const):
1656         (WTF::double_conversion::Single::NormalizedBoundaries const):
1657         (WTF::double_conversion::Single::UpperBoundary const):
1658         (WTF::double_conversion::Single::LowerBoundaryIsCloser const):
1659         (WTF::double_conversion::Single::value const):
1660         (WTF::double_conversion::Single::Infinity):
1661         (WTF::double_conversion::Single::NaN):
1662         * wtf/dtoa/strtod.cc:
1663         * wtf/dtoa/strtod.h:
1664         * wtf/dtoa/utils.h:
1665         (abort_noreturn):
1666         (WTF::double_conversion::Max):
1667         (WTF::double_conversion::Min):
1668         (WTF::double_conversion::StrLength):
1669         (WTF::double_conversion::BufferReference::BufferReference):
1670         (WTF::double_conversion::BufferReference::SubVector):
1671         (WTF::double_conversion::BufferReference::length const):
1672         (WTF::double_conversion::BufferReference::is_empty const):
1673         (WTF::double_conversion::BufferReference::start const):
1674         (WTF::double_conversion::BufferReference::operator[] const):
1675         (WTF::double_conversion::BufferReference::first):
1676         (WTF::double_conversion::BufferReference::last):
1677         (WTF::double_conversion::StringBuilder::StringBuilder):
1678         (WTF::double_conversion::StringBuilder::~StringBuilder):
1679         (WTF::double_conversion::StringBuilder::size const):
1680         (WTF::double_conversion::StringBuilder::position const):
1681         (WTF::double_conversion::StringBuilder::Reset):
1682         (WTF::double_conversion::StringBuilder::AddCharacter):
1683         (WTF::double_conversion::StringBuilder::AddString):
1684         (WTF::double_conversion::StringBuilder::AddSubstring):
1685         (WTF::double_conversion::StringBuilder::AddPadding):
1686         (WTF::double_conversion::StringBuilder::RemoveCharacters):
1687         (WTF::double_conversion::StringBuilder::Finalize):
1688         (WTF::double_conversion::StringBuilder::is_finalized const):
1689         (WTF::double_conversion::BitCast):
1690         (WTF::double_conversion::BufferReference::SubBufferReference): Deleted.
1691         (WTF::double_conversion::StringBuilder::SetPosition): Deleted.
1692
1693 2019-02-20  Darin Adler  <darin@apple.com>
1694
1695         Finish removing String::format
1696         https://bugs.webkit.org/show_bug.cgi?id=194893
1697
1698         Reviewed by Daniel Bates.
1699
1700         * wtf/Assertions.cpp:
1701         (WTF::createWithFormatAndArguments): Moved this here from WTFString.cpp.
1702         (WTFLog): Use WTF::createWithFormatAndArguments instead of String::format.
1703
1704         * wtf/HexNumber.h: Deleted unneeded toString function.
1705
1706         * wtf/text/StringConcatenate.h: Got rid of unneeded forward declaration of
1707         StringTypeAdapter, since that's now in Forward.h. Tweaked formatting of templates
1708         a bit. Use function templates for writeTo functions rather than having two of each.
1709         Removed unused toString functions. Optimized case where we use have a UChar* and
1710         a length of zero to not force the result to be 16-bit. Also gets rid of a small
1711         NO_RETURN_DUE_TO_CRASH mess that we don't need. Refactored constructors to use some
1712         static member helper functions to compute string lengths. Added the pad function
1713         and the PaddingSpecification struct template, so we can add padding to anything
1714         we can turn into a string. Got rid of the special case overload for single
1715         arguments, since it only worked for things that the String constructor can handle.
1716         Instead we will now use StringTypeAdapter, which works for more types. Possibly
1717         less optimal for some special cases, which we could specialize for later if we like.
1718         * wtf/text/StringConcatenateNumbers.h: Ditto.
1719         * wtf/text/StringOperators.h: Ditto.
1720         * wtf/text/StringView.h: Ditto.
1721
1722         * wtf/text/WTFString.cpp:
1723         (WTF::createWithFormatAndArguments): Deleted.
1724         (WTF::String::format): Deleted.
1725         * wtf/text/WTFString.h: Deleted declaration of String::format.
1726
1727 2019-02-23  Michael Catanzaro  <mcatanzaro@igalia.com>
1728
1729         Unreviewed, fix find/replace error from r232178
1730
1731         Looks like this was the only such error in that commit.
1732
1733         * wtf/URLHelpers.cpp:
1734         (WTF::URLHelpers::isLookalikeCharacter):
1735
1736 2019-02-23  Mark Lam  <mark.lam@apple.com>
1737
1738         Add an exception check and some assertions in StringPrototype.cpp.
1739         https://bugs.webkit.org/show_bug.cgi?id=194962
1740         <rdar://problem/48013416>
1741
1742         Reviewed by Yusuke Suzuki and Saam Barati.
1743
1744         Add an AssertNoOverflow overflow handler which allows us to do CheckedArithmetic
1745         for assertion purpose only on debug builds but sacrifices no performance on
1746         release builds.
1747
1748         * wtf/CheckedArithmetic.h:
1749         (WTF::AssertNoOverflow::overflowed):
1750         (WTF::AssertNoOverflow::clearOverflow):
1751         (WTF::AssertNoOverflow::crash):
1752         (WTF::AssertNoOverflow::hasOverflowed const):
1753         (WTF::observesOverflow):
1754         (WTF::observesOverflow<AssertNoOverflow>):
1755         (WTF::safeAdd):
1756         (WTF::safeSub):
1757         (WTF::safeMultiply):
1758         (WTF::Checked::operator+=):
1759         (WTF::Checked::operator-=):
1760         (WTF::Checked::operator*=):
1761         (WTF::operator+):
1762         (WTF::operator-):
1763         (WTF::operator*):
1764
1765 2019-02-23  Keith Miller  <keith_miller@apple.com>
1766
1767         Add new mac target numbers
1768         https://bugs.webkit.org/show_bug.cgi?id=194955
1769
1770         Reviewed by Tim Horton.
1771
1772         * Configurations/Base.xcconfig:
1773         * Configurations/DebugRelease.xcconfig:
1774
1775 2019-02-21  Antoine Quint  <graouts@apple.com>
1776
1777         Move UIWebTouchEventsGestureRecognizer.activeTouchesByIdentifier to SPI
1778         https://bugs.webkit.org/show_bug.cgi?id=194531
1779         <rdar://problem/47714562>
1780
1781         Reviewed by Tim Horton.
1782
1783         Follow-up commit to ensure this SPI is only called on newer versions of iOS.
1784
1785         * wtf/Platform.h:
1786
1787 2019-02-21  Dean Jackson  <dino@apple.com>
1788
1789         Rotation animations sometimes use the wrong origin (affects apple.com)
1790         https://bugs.webkit.org/show_bug.cgi?id=194878
1791         <rdar://problem/43908047>
1792
1793         Follow-up commit to ensure this change only affects newer versions
1794         of iOS.
1795
1796         * wtf/Platform.h: Add a version check.
1797
1798 2019-02-20  Alex Christensen  <achristensen@webkit.org>
1799
1800         URL percent-encode operations should use checked arithmetic for buffer allocation length
1801         https://bugs.webkit.org/show_bug.cgi?id=194877
1802         <rdar://problem/48212062>
1803
1804         Reviewed by Tim Horton.
1805
1806         * wtf/URLHelpers.cpp:
1807         (WTF::URLHelpers::userVisibleURL):
1808         * wtf/cocoa/NSURLExtras.mm:
1809         (WTF::dataWithUserTypedString):
1810
1811 2019-02-20  Dean Jackson  <dino@apple.com>
1812
1813         Rotation animations sometimes use the wrong origin (affects apple.com)
1814         https://bugs.webkit.org/show_bug.cgi?id=194878
1815         <rdar://problem/43908047>
1816
1817         Reviewed by Simon Fraser.
1818
1819         * wtf/Platform.h: Add HAVE(CA_WHERE_ADDITIVE_TRANSFORMS_ARE_REVERSED).
1820
1821 2019-02-20  Andy Estes  <aestes@apple.com>
1822
1823         [Xcode] Add SDKVariant.xcconfig to various Xcode projects
1824         https://bugs.webkit.org/show_bug.cgi?id=194869
1825
1826         Rubber-stamped by Jer Noble.
1827
1828         * WTF.xcodeproj/project.pbxproj:
1829
1830 2019-02-20  Adrian Perez de Castro  <aperez@igalia.com>
1831
1832         [WPE][GTK] Enable support for CONTENT_EXTENSIONS
1833         https://bugs.webkit.org/show_bug.cgi?id=167941
1834
1835         Reviewed by Carlos Garcia Campos.
1836
1837         Add specialization of the refGPtr() and derefGPtr() templates for GMappedFile.
1838
1839         * wtf/glib/GRefPtr.cpp:
1840         (WTF::refGPtr): Added.
1841         (WTF::derefGPtr): Added.
1842         * wtf/glib/GRefPtr.h: Declare template specializations.
1843
1844 2019-02-19  Commit Queue  <commit-queue@webkit.org>
1845
1846         Unreviewed, rolling out r241770.
1847         https://bugs.webkit.org/show_bug.cgi?id=194833
1848
1849         Caused crashes (Requested by smfr on #webkit).
1850
1851         Reverted changeset:
1852
1853         "Code quality cleanup in NeverDestroyed"
1854         https://bugs.webkit.org/show_bug.cgi?id=194824
1855         https://trac.webkit.org/changeset/241770
1856
1857 2019-02-19  Keith Miller  <keith_miller@apple.com>
1858
1859         Code quality cleanup in NeverDestroyed
1860         https://bugs.webkit.org/show_bug.cgi?id=194824
1861
1862         Reviewed by Yusuke Suzuki.
1863
1864         First, move data members to the end of the class per WebKit
1865         style. Also, add forbid heap allocation since we expect the
1866         NeverDestroyed classes to be static.
1867
1868         * wtf/NeverDestroyed.h:
1869
1870 2019-02-16  Darin Adler  <darin@apple.com>
1871
1872         Continue reducing use of String::format, now focusing on hex: "%p", "%x", etc.
1873         https://bugs.webkit.org/show_bug.cgi?id=194752
1874
1875         Reviewed by Daniel Bates.
1876
1877         * WTF.xcodeproj/project.pbxproj: Added HexNumber.cpp and Logger.cpp.
1878         * wtf/CMakeLists.txt: Ditto.
1879
1880         * wtf/HexNumber.cpp: Added.
1881         (WTF::Internal::appendHex): Non-inline, non-template hex formatting logic.
1882
1883         * wtf/HexNumber.h:
1884         (WTF::Internal::appendHex): Refactored main logic of appendUnsignedAsHex and
1885         appendUnsignedAsHexFixedSize so they can be reused in a function named hex for
1886         use with StringTypeAdapter.
1887         (WTF::appendUnsignedAsHex): Ditto.
1888         (WTF::appendUnsignedAsHexFixedSize): Ditto.
1889         (WTF::hex): Added.
1890         (WTF::StringTypeAdapter<HexNumberBuffer>): Added.
1891
1892         * wtf/Logger.cpp: Added.
1893         (WTF::Logger::LogSiteIdentifier::toString const): Made this a non-template
1894         function and moved it here so that we don't need to include HexNumber.h
1895         in Logger.h. Since HexNumber.h has substantial code in it, it's good if we
1896         don't include it in any other headers.
1897
1898         * wtf/Logger.h:
1899         (WTF::LogArgument<Logger::LogSiteIdentifier>::toString): Changed to call
1900         a non-template function, LogSiteIdentifier::toString.
1901
1902         * wtf/text/StringConcatenateNumbers.h: Replaced overloaded writeTo functions
1903         with function templates and used StringImpl::copyCharacters instead of
1904         hand-written loops.
1905
1906 2019-02-18  Joseph Pecoraro  <pecoraro@apple.com>
1907
1908         Web Inspector: Better categorize CPU usage per-thread / worker
1909         https://bugs.webkit.org/show_bug.cgi?id=194564
1910
1911         Reviewed by Devin Rousso.
1912
1913         * wtf/Threading.h:
1914         * wtf/Threading.cpp:
1915         (WTF::Thread::allThreadsMutex):
1916         (WTF::Thread::create):
1917         (WTF::Thread::didExit):
1918         Add a set of all WTF::Thread created threads.
1919
1920 2019-02-18  Tadeu Zagallo  <tzagallo@apple.com>
1921
1922         Bytecode cache should a have a boot-specific validation
1923         https://bugs.webkit.org/show_bug.cgi?id=194769
1924         <rdar://problem/48149509>
1925
1926         Reviewed by Keith Miller.
1927
1928         Add helper to get kern.bootsessionuuid from sysctl
1929
1930         * wtf/UUID.cpp:
1931         (WTF::bootSessionUUIDString):
1932         * wtf/UUID.h:
1933
1934 2019-02-17  David Kilzer  <ddkilzer@apple.com>
1935
1936         Unreviewed, rolling out r241620.
1937
1938         "Causes use-after-free crashes running layout tests with ASan and GuardMalloc."
1939         (Requested by ddkilzer on #webkit.)
1940
1941         Reverted changeset:
1942
1943         "[WTF] Add environment variable helpers"
1944         https://bugs.webkit.org/show_bug.cgi?id=192405
1945         https://trac.webkit.org/changeset/241620
1946
1947 2019-02-15  Ross Kirsling  <ross.kirsling@sony.com>
1948
1949         [WTF] Add environment variable helpers
1950         https://bugs.webkit.org/show_bug.cgi?id=192405
1951
1952         Reviewed by Michael Catanzaro.
1953
1954         Create a new Environment API as a platform-independent, thread-safe(r)
1955         way to get and set environment variables.
1956
1957         * WTF.xcodeproj/project.pbxproj:
1958         * wtf/CMakeLists.txt:
1959         * wtf/Environment.h: Added.
1960         * wtf/PlatformGTK.cmake:
1961         * wtf/PlatformJSCOnly.cmake:
1962         * wtf/PlatformMac.cmake:
1963         * wtf/PlatformPlayStation.cmake:
1964         * wtf/PlatformWPE.cmake:
1965         * wtf/PlatformWin.cmake:
1966         * wtf/posix/EnvironmentPOSIX.cpp: Added.
1967         * wtf/win/EnvironmentWin.cpp: Added.
1968         Introduce WTF::Environment.
1969
1970         * wtf/Threading.cpp:
1971         (WTF::threadingIsInitialized):
1972         (WTF::initializeThreading):
1973         * wtf/Threading.h:
1974         Introduce WTF::threadingIsInitialized() so that we can ASSERT that it's
1975         false before setting an environment variable through the new API.
1976
1977         * wtf/DataLog.cpp:
1978         (WTF::initializeLogFileOnce):
1979         * wtf/NumberOfCores.cpp:
1980         (WTF::numberOfProcessorCores):
1981         * wtf/posix/FileSystemPOSIX.cpp:
1982         (WTF::FileSystemImpl::openTemporaryFile):
1983         Utilize WTF::Environment where possible.
1984
1985 2019-02-15  Brian Burg  <bburg@apple.com>
1986
1987         [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
1988         https://bugs.webkit.org/show_bug.cgi?id=194411
1989         <rdar://problem/47787614>
1990
1991         Reviewed by Joseph Pecoraro.
1992
1993         * wtf/cocoa/SoftLinking.h:
1994         Remove macro that now has no uses.
1995
1996 2019-02-15  Commit Queue  <commit-queue@webkit.org>
1997
1998         Unreviewed, rolling out r241559 and r241566.
1999         https://bugs.webkit.org/show_bug.cgi?id=194710
2000
2001         Causes layout test crashes under GuardMalloc (Requested by
2002         ryanhaddad on #webkit).
2003
2004         Reverted changesets:
2005
2006         "[WTF] Add environment variable helpers"
2007         https://bugs.webkit.org/show_bug.cgi?id=192405
2008         https://trac.webkit.org/changeset/241559
2009
2010         "Unreviewed build fix for WinCairo Debug after r241559."
2011         https://trac.webkit.org/changeset/241566
2012
2013 2019-02-15  Truitt Savell  <tsavell@apple.com>
2014
2015         Unreviewed, rolling out r241564.
2016
2017         Caused 50+ Timeouts on Mac WK2, mostly in the http/ directory
2018
2019         Reverted changeset:
2020
2021         "[Mac] WebInspectorUI.framework does not need to be soft-
2022         linked anymore"
2023         https://bugs.webkit.org/show_bug.cgi?id=194411
2024         https://trac.webkit.org/changeset/241564
2025
2026 2019-02-15  Dominik Infuehr  <dinfuehr@igalia.com>
2027
2028         Fix deadlock on Linux/x64 between SamplingProfiler and VMTraps
2029         https://bugs.webkit.org/show_bug.cgi?id=194014
2030
2031         Reviewed by Michael Catanzaro.
2032
2033         Do not block SIGUSR1 when installing signal handlers, since this signal
2034         is used to suspend/resume machine threads on Linux.
2035
2036         ftl-ai-filter-phantoms-should-clear-clear-value.js deadlocked with
2037         enabled watchdog and sampling.
2038
2039         Deadlock happened in the following situation:
2040
2041         Thread 1 (Sampling): SamplingProfiler.cpp:takeSample takes all needed locks
2042         and then tries to suspend the main thread.
2043
2044         Thread 2 (Watchdog/VMTraps): Before the Sampling-Thread suspends the main thread
2045         a signal is caught and the signal handler is invoked (VMTraps.cpp:SignalSender).
2046         SignalSender tries to lock codeBlockSet, but this is already locked by the
2047         SamplingProfiler.
2048
2049         The SamplingProfiler can only give up the lock when it suspends
2050         the thread. However since the VMTraps signal handler is active, all other signals blocked,
2051         therefore the SamplingProfiler also waits until its signal handler is invoked.
2052
2053         This patch fixes this by not blocking SIGUSR1 in installSignalHandler, since
2054         it is used to suspend/resume threads on Linux.
2055
2056         * wtf/Threading.h:
2057         * wtf/posix/ThreadingPOSIX.cpp:
2058         * wtf/threads/Signals.cpp:
2059         (WTF::installSignalHandler):
2060
2061 2019-02-15  Saam barati  <sbarati@apple.com>
2062
2063         [WebAssembly] Write a new register allocator for Air O0 and make BBQ use it
2064         https://bugs.webkit.org/show_bug.cgi?id=194036
2065
2066         Reviewed by Yusuke Suzuki.
2067
2068         * wtf/IndexMap.h:
2069         (WTF::IndexMap::at):
2070         (WTF::IndexMap::at const):
2071         (WTF::IndexMap::operator[]):
2072         (WTF::IndexMap::operator[] const):
2073
2074 2019-02-14  Brian Burg  <bburg@apple.com>
2075
2076         [Mac] WebInspectorUI.framework does not need to be soft-linked anymore
2077         https://bugs.webkit.org/show_bug.cgi?id=194411
2078         <rdar://problem/47787614>
2079
2080         Reviewed by Joseph Pecoraro.
2081
2082         * wtf/cocoa/SoftLinking.h:
2083         Remove macro that now has no uses.
2084
2085 2019-02-14  Ross Kirsling  <ross.kirsling@sony.com>
2086
2087         [WTF] Add environment variable helpers
2088         https://bugs.webkit.org/show_bug.cgi?id=192405
2089
2090         Reviewed by Michael Catanzaro.
2091
2092         Create a new Environment API as a platform-independent, thread-safe(r)
2093         way to get and set environment variables.
2094
2095         * WTF.xcodeproj/project.pbxproj:
2096         * wtf/CMakeLists.txt:
2097         * wtf/Environment.h: Added.
2098         * wtf/PlatformGTK.cmake:
2099         * wtf/PlatformJSCOnly.cmake:
2100         * wtf/PlatformMac.cmake:
2101         * wtf/PlatformPlayStation.cmake:
2102         * wtf/PlatformWPE.cmake:
2103         * wtf/PlatformWin.cmake:
2104         * wtf/posix/EnvironmentPOSIX.cpp: Added.
2105         * wtf/win/EnvironmentWin.cpp: Added.
2106         Introduce WTF::Environment.
2107
2108         * wtf/Threading.cpp:
2109         (WTF::threadingIsInitialized):
2110         (WTF::initializeThreading):
2111         * wtf/Threading.h:
2112         Introduce WTF::threadingIsInitialized() so that we can ASSERT that it's
2113         false before setting an environment variable through the new API.
2114
2115         * wtf/DataLog.cpp:
2116         (WTF::initializeLogFileOnce):
2117         * wtf/NumberOfCores.cpp:
2118         (WTF::numberOfProcessorCores):
2119         * wtf/posix/FileSystemPOSIX.cpp:
2120         (WTF::FileSystemImpl::openTemporaryFile):
2121         Utilize WTF::Environment where possible.
2122
2123 2019-02-13  Yusuke Suzuki  <ysuzuki@apple.com>
2124
2125         We should only make rope strings when concatenating strings long enough.
2126         https://bugs.webkit.org/show_bug.cgi?id=194465
2127
2128         Reviewed by Mark Lam.
2129
2130         * wtf/text/StringImpl.h:
2131         (WTF::StringImpl::headerSize):
2132
2133 2019-02-12  Tim Horton  <timothy_horton@apple.com>
2134
2135         Remove WKLegacyPDFView
2136         https://bugs.webkit.org/show_bug.cgi?id=194559
2137
2138         Reviewed by Andy Estes.
2139
2140         * wtf/FeatureDefines.h:
2141
2142 2019-02-12  David Kilzer  <ddkilzer@apple.com>
2143
2144         REGRESSION (r238955, r240494): Soft-linking optional Lookup.framework triggers release assertion when missing
2145         <https://webkit.org/b/194529>
2146         <rdar://problem/47924449>
2147
2148         Reviewed by Eric Carlson.
2149
2150         * wtf/cocoa/SoftLinking.h:
2151         (SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT_AND_IS_OPTIONAL): Rename
2152         SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT_AND_ASSERTION() to this
2153         and change `assertion` argument to `isOptional`.  Pass
2154         `isOptional` to framework##Library() method to control assertion
2155         behavior.  Only check RELEASE_ASSERT() if `!isOptional`, else
2156         that code should be optimized out by the compiler.  This fixes
2157         the crash.
2158         (NO_ASSERT): Remove macro since it's no longer used.
2159         (SOFT_LINK_IS_OPTIONAL): Add macro to use for soft-linking
2160         optional classes.
2161         (SOFT_LINK_IS_NOT_OPTIONAL): Add macro to use for soft-linking
2162         non-optional classes.
2163         (SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT): Update to use new
2164         SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT_AND_IS_OPTIONAL() macro.
2165         (SOFT_LINK_CLASS_FOR_SOURCE_OPTIONAL_WITH_EXPORT): Ditto.
2166         (SOFT_LINK_CLASS_FOR_SOURCE): Ditto.
2167         (SOFT_LINK_CLASS_FOR_SOURCE_OPTIONAL): Ditto.
2168
2169 2019-02-12  Andy Estes  <aestes@apple.com>
2170
2171         [iOSMac] Enable Parental Controls Content Filtering
2172         https://bugs.webkit.org/show_bug.cgi?id=194521
2173         <rdar://39732376>
2174
2175         Reviewed by Tim Horton.
2176
2177         * wtf/Platform.h:
2178
2179 2019-02-11  Myles C. Maxfield  <mmaxfield@apple.com>
2180
2181         [Cocoa] Ask platform for generic font family mappings
2182         https://bugs.webkit.org/show_bug.cgi?id=187723
2183         <rdar://problem/41892438>
2184
2185         Reviewed by Brent Fulgham.
2186
2187         Add an ENABLE in Platform.
2188
2189         * wtf/Platform.h:
2190
2191 2019-02-11  Truitt Savell  <tsavell@apple.com>
2192
2193         Unreviewed, rolling out r241229.
2194
2195         Revision broke internal builds for watchOS.
2196
2197         Reverted changeset:
2198
2199         "[Cocoa] Ask platform for generic font family mappings"
2200         https://bugs.webkit.org/show_bug.cgi?id=187723
2201         https://trac.webkit.org/changeset/241229
2202
2203 2019-02-10  Darin Adler  <darin@apple.com>
2204
2205         Switch uses of StringBuilder with String::format for hex numbers to use HexNumber.h instead
2206         https://bugs.webkit.org/show_bug.cgi?id=194485
2207
2208         Reviewed by Daniel Bates.
2209
2210         * wtf/HexNumber.h: Removed unused functions placeByteAsHexCompressIfPossible and
2211         placeByteAsHex. Can always bring them back if someone needs them. Updated
2212         appendUnsignedAsHex to be a template so we can use it on any integer type,
2213         got rid of unnecessary use of Vector and unnecessary reversing, and got rid of
2214         appendUnsigned64AsHex since callers can now just use appendUnsignedAsHex.
2215         Rewrote appendUnsignedAsHexFixedSize to share mode code rather than replicating.
2216
2217         * wtf/Logger.h: Use appendUnsignedAsHex instead of appendUnsigned64AsHex.
2218
2219         * wtf/URL.cpp: Removed unnecessary include of HexNumber.h.
2220
2221         * wtf/cocoa/NSURLExtras.h: Added missing include of Foundation.h that was
2222         worked around in NSURLExtras.mm.
2223         * wtf/cocoa/NSURLExtras.mm: Removed unnecessary includes of HexNumber.h
2224         and Foundation.h.
2225
2226 2019-02-09  Darin Adler  <darin@apple.com>
2227
2228         Eliminate unnecessary String temporaries by using StringConcatenateNumbers
2229         https://bugs.webkit.org/show_bug.cgi?id=194021
2230
2231         Reviewed by Geoffrey Garen.
2232
2233         * wtf/URL.cpp:
2234         (WTF::URL::setPort): Remove String::number and let makeString do the conversion
2235         without allocating/destroying a String. Added a cast to "unsigned" to sidestep the
2236         ambiguity with 16-bit unsigned types that are sometimes used for numbers (uint16_t)
2237         and sometimes used for UTF-16 code units (UChar) and can be the same type.
2238
2239         * wtf/text/StringConcatenateNumbers.h:
2240         Changed FormattedNumber::fixedPrecision to more closely match String::number and
2241         StringBuilder::appendNumber by defaulting to truncating trailing zeros and using
2242         a named enumeration for the truncation policy rather than a boolean.
2243
2244
2245 2019-02-09  Yusuke Suzuki  <ysuzuki@apple.com>
2246
2247         Unreviewed, rolling in r241237 again
2248         https://bugs.webkit.org/show_bug.cgi?id=194469
2249
2250         After the measurement, this patch was unrelated to recent regression.
2251
2252         * wtf/text/StringImpl.h:
2253         (WTF::StringImpl::isSubString const):
2254         (WTF::StringImpl::createSubstringSharingImpl):
2255
2256 2019-02-09  Commit Queue  <commit-queue@webkit.org>
2257
2258         Unreviewed, rolling out r241237.
2259         https://bugs.webkit.org/show_bug.cgi?id=194474
2260
2261         Shows significant memory increase in WSL (Requested by
2262         yusukesuzuki on #webkit).
2263
2264         Reverted changeset:
2265
2266         "[WTF] Use BufferInternal StringImpl if substring StringImpl
2267         takes more memory"
2268         https://bugs.webkit.org/show_bug.cgi?id=194469
2269         https://trac.webkit.org/changeset/241237
2270
2271 2019-02-08  Yusuke Suzuki  <ysuzuki@apple.com>
2272
2273         [WTF] Use BufferInternal StringImpl if substring StringImpl takes more memory
2274         https://bugs.webkit.org/show_bug.cgi?id=194469
2275
2276         Reviewed by Geoffrey Garen.
2277
2278         Because pointer is large and aligned in 64bit in 64bit architecture, BufferSubstring StringImpl
2279         implementation takes more memory than BufferInternal StringImpl implementation for small strings.
2280         And BufferInternal StringImpl does not have a problem like, small substring StringImpl keeps super
2281         large owner StringImpl. This patch calculates the required size of memory and selects the more efficient one.
2282
2283         * wtf/text/StringImpl.h:
2284         (WTF::StringImpl::isSubString const):
2285         (WTF::StringImpl::createSubstringSharingImpl):
2286
2287 2019-02-08  Alex Christensen  <achristensen@webkit.org>
2288
2289         Add SPI to use networking daemon instead of XPC service
2290         https://bugs.webkit.org/show_bug.cgi?id=194427
2291
2292         Reviewed by Geoffrey Garen.
2293
2294         * wtf/spi/darwin/XPCSPI.h:
2295         Instead of using XPC bootstrap SPI, we just send a separate message.
2296         xpc_copy_bootstrap does not seem to work in  daemons.
2297
2298 2019-02-08  Truitt Savell  <tsavell@apple.com>
2299
2300         Unreviewed, rolling out r241197.
2301
2302         Broke iOS Simulator Debug build and casued 1 API failure on
2303         High Sierra
2304
2305         Reverted changeset:
2306
2307         "Add SPI to use networking daemon instead of XPC service"
2308         https://bugs.webkit.org/show_bug.cgi?id=194427
2309         https://trac.webkit.org/changeset/241197
2310
2311 2019-02-08  Alex Christensen  <achristensen@webkit.org>
2312
2313         Add SPI to use networking daemon instead of XPC service
2314         https://bugs.webkit.org/show_bug.cgi?id=194427
2315
2316         Reviewed by Geoffrey Garen.
2317
2318         * wtf/spi/darwin/XPCSPI.h:
2319         Instead of using XPC bootstrap SPI, we just send a separate message.
2320         xpc_copy_bootstrap does not seem to work in  daemons.
2321
2322 2019-02-08  Benjamin Poulain  <benjamin@webkit.org>
2323
2324         clampTo(): do not convert the input to double when dealing with integers
2325         https://bugs.webkit.org/show_bug.cgi?id=194263
2326         <rdar://problem/47692312>
2327
2328         Reviewed by Darin Adler.
2329
2330         Previously, every use of clampTo() was converting the input to double,
2331         doing the comparison in double, then casting back to whatever type was needed.
2332
2333         In many case, that was very wasteful. WebKit has many cases of clampTo() with
2334         the same type as input/output, or with integer types of different size/sign.
2335
2336         This patch adds a few versions of clampTo() for the common cases seen in WebKit.
2337         In each case, I tried to minimize the amount of conversion needed at runtime.
2338
2339         * wtf/MathExtras.h:
2340         (clampTo):
2341
2342 2019-02-07  Chris Dumez  <cdumez@apple.com>
2343
2344         Mark more heap-allocated classes as fast allocated
2345         https://bugs.webkit.org/show_bug.cgi?id=194422
2346
2347         Reviewed by Ryosuke Niwa.
2348
2349         * wtf/Function.h:
2350         (WTF::Function<Out):
2351         * wtf/RefCounter.h:
2352         * wtf/URL.h:
2353         * wtf/text/StringView.cpp:
2354
2355 2019-02-07  Per Arne Vollan  <pvollan@apple.com>
2356
2357         [macOS] Block coreservicesd in sandbox.
2358         https://bugs.webkit.org/show_bug.cgi?id=192670
2359
2360         Reviewed by Alexey Proskuryakov.
2361
2362         Add HAVE_CSCHECKFIXDISABLE define.
2363
2364         * wtf/Platform.h:
2365
2366 2019-02-07  Eric Carlson  <eric.carlson@apple.com>
2367
2368         [MSE] Convert debug-only logging to runtime logging
2369         https://bugs.webkit.org/show_bug.cgi?id=194348
2370         <rdar://problem/47566449>
2371
2372         Reviewed by Jer Noble.
2373
2374         * wtf/LoggerHelper.h:
2375         (WTF::LoggerHelper::childLogIdentifier const): Helper to generate a log identifier for an
2376         object that is associated with another logging object.
2377         * wtf/MediaTime.cpp:
2378         (WTF::MediaTime::toJSONObject const):
2379         (WTF::MediaTime::toJSONString const):
2380         (WTF::MediaTimeRange::toJSONString const):
2381         (WTF::toJSONStringInternal): Deleted.
2382         * wtf/MediaTime.h:
2383
2384 2019-02-05  Keith Rollin  <krollin@apple.com>
2385
2386         Enable the automatic checking and regenerations of .xcfilelists during builds
2387         https://bugs.webkit.org/show_bug.cgi?id=194124
2388         <rdar://problem/47721277>
2389
2390         Reviewed by Tim Horton.
2391
2392         Bug 193790 add a facility for checking -- during build time -- that
2393         any needed .xcfilelist files are up-to-date and for updating them if
2394         they are not. This facility was initially opt-in by setting
2395         WK_ENABLE_CHECK_XCFILELISTS until other pieces were in place and until
2396         the process seemed robust. Its now time to enable this facility and
2397         make it opt-out. If there is a need to disable this facility, set and
2398         export WK_DISABLE_CHECK_XCFILELISTS=1 in your environment before
2399         running `make` or `build-webkit`, or before running Xcode from the
2400         command line.
2401
2402         Additionally, remove the step that generates a list of source files
2403         going into the UnifiedSources build step. It's only necessarily to
2404         specify Sources.txt and SourcesCocoa.txt as inputs.
2405
2406         * Scripts/generate-unified-source-bundles.rb:
2407
2408 2019-02-05  Yusuke Suzuki  <ysuzuki@apple.com>
2409
2410         [JSC] Shrink sizeof(UnlinkedCodeBlock)
2411         https://bugs.webkit.org/show_bug.cgi?id=194281
2412
2413         Reviewed by Michael Saboff.
2414
2415         * wtf/TriState.h:
2416
2417 2019-02-05  Zan Dobersek  <zdobersek@igalia.com>
2418
2419         [GLib] Stop URI-escaping file system representations
2420         https://bugs.webkit.org/show_bug.cgi?id=194213
2421
2422         Reviewed by Carlos Garcia Campos.
2423
2424         Stop URI-escaping of file representation strings in
2425         FileSystem::stringFromFileSystemRepresentation(), and URI-unescaping
2426         of strings in FileSystem::fileSystemRepresentation().
2427
2428         This behavior deviates from POSIX and CF implementations and is
2429         currently breaking IndexedDB-specific calculation of database sizes due
2430         to directory components used in that process that are URL-based and are
2431         as such URI-escaped. When unescaped, those single directory components
2432         explode into multiple directory components, leading to incorrect total
2433         database size calculation when iterating the database directory.
2434
2435         FileSystem::stringFromFileSystemRepresentation() now retrieves GLib's
2436         filename charsets and in worst case converts the filesystem
2437         representation to UTF-8 before String::fromUTF8() is used.
2438         FileSystem::fileSystemRepresentation() reverses that process, taking
2439         String's UTF-8 data and converting it to target charset if necessary.
2440
2441         Other FileSystem functions are adjusted to convert passed-in String
2442         objects to filesystem representations.
2443
2444         * wtf/glib/FileSystemGlib.cpp:
2445         (WTF::FileSystemImpl::stringFromFileSystemRepresentation):
2446         (WTF::FileSystemImpl::fileSystemRepresentation):
2447         (WTF::FileSystemImpl::validRepresentation):
2448         (WTF::FileSystemImpl::filenameForDisplay):
2449         (WTF::FileSystemImpl::fileExists):
2450         (WTF::FileSystemImpl::deleteFile):
2451         (WTF::FileSystemImpl::deleteEmptyDirectory):
2452         (WTF::FileSystemImpl::getFileStat):
2453         (WTF::FileSystemImpl::getFileLStat):
2454         (WTF::FileSystemImpl::makeAllDirectories):
2455         (WTF::FileSystemImpl::createSymbolicLink):
2456         (WTF::FileSystemImpl::pathGetFileName):
2457         (WTF::FileSystemImpl::getVolumeFreeSpace):
2458         (WTF::FileSystemImpl::directoryName):
2459         (WTF::FileSystemImpl::listDirectory):
2460         (WTF::FileSystemImpl::openFile):
2461         (WTF::FileSystemImpl::moveFile):
2462         (WTF::FileSystemImpl::hardLinkOrCopyFile):
2463         (WTF::FileSystemImpl::getFileDeviceId): Align with POSIX implementation
2464         and treat input CString as an existing filesystem representation.
2465         (WTF::FileSystemImpl::unescapedFilename): Deleted.
2466
2467 2019-02-04  Ms2ger  <Ms2ger@igalia.com>
2468
2469         [GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
2470         https://bugs.webkit.org/show_bug.cgi?id=174816
2471
2472         Reviewed by Michael Catanzaro.
2473
2474         Translate userVisibleString and dependent code into platform-neutral C++
2475         in wtf/URLHelpers.{h,cpp}.
2476
2477         * WTF.xcodeproj/project.pbxproj:
2478         * wtf/CMakeLists.txt:
2479         * wtf/URLHelpers.cpp: Added.
2480         (WTF::URLHelpers::loadIDNScriptWhiteList):
2481         (WTF::URLHelpers::isArmenianLookalikeCharacter):
2482         (WTF::URLHelpers::isArmenianScriptCharacter):
2483         (WTF::URLHelpers::isASCIIDigitOrValidHostCharacter):
2484         (WTF::URLHelpers::isLookalikeCharacter):
2485         (WTF::URLHelpers::whiteListIDNScript):
2486         (WTF::URLHelpers::initializeDefaultIDNScriptWhiteList):
2487         (WTF::URLHelpers::allCharactersInIDNScriptWhiteList):
2488         (WTF::URLHelpers::isSecondLevelDomainNameAllowedByTLDRules):
2489         (WTF::URLHelpers::isRussianDomainNameCharacter):
2490         (WTF::URLHelpers::allCharactersAllowedByTLDRules):
2491         (WTF::URLHelpers::mapHostName):
2492         (WTF::URLHelpers::collectRangesThatNeedMapping):
2493         (WTF::URLHelpers::applyHostNameFunctionToMailToURLString):
2494         (WTF::URLHelpers::applyHostNameFunctionToURLString):
2495         (WTF::URLHelpers::mapHostNames):
2496         (WTF::URLHelpers::createStringWithEscapedUnsafeCharacters):
2497         (WTF::URLHelpers::toNormalizationFormC):
2498         (WTF::URLHelpers::userVisibleURL):
2499         * wtf/URLHelpers.h: Added.
2500         * wtf/cocoa/NSURLExtras.mm:
2501         (WTF::URLHelpers::loadIDNScriptWhiteList):
2502         (WTF::decodePercentEscapes):
2503         (WTF::decodeHostName):
2504         (WTF::encodeHostName):
2505         (WTF::URLWithUserTypedString):
2506         (WTF::userVisibleString):
2507
2508 2019-02-03  Commit Queue  <commit-queue@webkit.org>
2509
2510         Unreviewed, rolling out r240896.
2511         https://bugs.webkit.org/show_bug.cgi?id=194202
2512
2513         "Fixes leaks, but is probably not the correct fix." (Requested
2514         by ddkilzer on #webkit).
2515
2516         Reverted changeset:
2517
2518         "Leak of WTF::StringImpl under SymbolImpl::createNullSymbol()
2519         (48 bytes) in com.apple.WebKit.WebContent running layout
2520         tests"
2521         https://bugs.webkit.org/show_bug.cgi?id=193291
2522         https://trac.webkit.org/changeset/240896
2523
2524 2019-02-02  David Kilzer  <ddkilzer@apple.com>
2525
2526         Leak of WTF::StringImpl under SymbolImpl::createNullSymbol() (48 bytes) in com.apple.WebKit.WebContent running layout tests
2527         <https://webkit.org/b/193291>
2528         <rdar://problem/46655953>
2529
2530         Reviewed by Keith Miller.
2531
2532         * wtf/text/SymbolImpl.h:
2533         (WTF::SymbolImpl::~SymbolImpl): Fix the leak by implementing the
2534         class destructor that calls StringImpl::deref() on `m_owner`.
2535         Two of the three constructors leak the StringImpl when setting
2536         `m_owner`, so we need to balance that by manually calling
2537         deref().
2538
2539 2018-12-16  Darin Adler  <darin@apple.com>
2540
2541         Convert additional String::format clients to alternative approaches
2542         https://bugs.webkit.org/show_bug.cgi?id=192746
2543
2544         Reviewed by Alexey Proskuryakov.
2545
2546         * wtf/JSONValues.cpp:
2547         (WTF::appendDoubleQuotedStringEscapedCharacter): Renamed from
2548         escapeChar and reordered arguments to make sense as an append function.
2549         (WTF::appendDoubleQuotedString): Renamed from doubleQuoteString,
2550         reordered arguments to make sense as an append function, take a
2551         StringView instead of a String, used early exit to make the code
2552         a bit easier to read. Use the ASCIIHexDigit functions to construct
2553         a hex number a nibble at a time rather than using String::format.
2554         (WTF::JSONImpl::Value::writeJSON const): Update for name change.
2555         (WTF::JSONImpl::ObjectBase::writeJSON const): Ditto.
2556
2557 2019-01-31  Carlos Garcia Campos  <cgarcia@igalia.com>
2558
2559         Unreviewed. Fix WPE compile warnings due to deprecated glib API.
2560
2561         * wtf/Platform.h:
2562
2563 2019-01-29  Chris Dumez  <cdumez@apple.com>
2564
2565         Make sure WTF::generateObjectIdentifier() internal counter does not get duplicated
2566         https://bugs.webkit.org/show_bug.cgi?id=193848
2567
2568         Reviewed by Youenn Fablet.
2569
2570         Move WTF::generateObjectIdentifier()'s internal counter out-of-line so make sure it never gets
2571         duplicated at each call site. This has caused some hard-to-debug issues with duplicate
2572         identifiers such as Bug 193761.
2573
2574         Also move it to ObjectIdentifier and rename it to generate() as this make call sites nicer
2575         when they have a typedef for the ObjectIdentifier<T> type.
2576
2577         * WTF.xcodeproj/project.pbxproj:
2578         * wtf/CMakeLists.txt:
2579         * wtf/ObjectIdentifier.cpp: Copied from Source/WebCore/platform/Process.cpp.
2580         (WTF::ObjectIdentifierBase::generateIdentifierInternal):
2581         (WTF::ObjectIdentifierBase::generateThreadSafeIdentifierInternal):
2582         * wtf/ObjectIdentifier.h:
2583         (WTF::ObjectIdentifier::generate):
2584         (WTF::ObjectIdentifier::generateThreadSafe):
2585
2586 2019-01-28  Ross Kirsling  <ross.kirsling@sony.com>
2587
2588         Move platform-specific files out of WTF root directory.
2589         https://bugs.webkit.org/show_bug.cgi?id=193929
2590
2591         Reviewed by Alex Christensen.
2592
2593         * WTF.xcodeproj/project.pbxproj:
2594         * wtf/CMakeLists.txt:
2595         * wtf/PlatformGTK.cmake:
2596         * wtf/PlatformJSCOnly.cmake:
2597         * wtf/PlatformMac.cmake:
2598         * wtf/PlatformPlayStation.cmake:
2599         * wtf/PlatformWPE.cmake:
2600         * wtf/PlatformWin.cmake:
2601         * wtf/cf/RunLoopTimerCF.cpp: Renamed from Source/WTF/wtf/RunLoopTimerCF.cpp.
2602         * wtf/cf/SchedulePairCF.cpp: Renamed from Source/WTF/wtf/SchedulePairCF.cpp.
2603         * wtf/mac/SchedulePairMac.mm: Renamed from Source/WTF/wtf/SchedulePairMac.mm.
2604         * wtf/posix/OSAllocatorPOSIX.cpp: Renamed from Source/WTF/wtf/OSAllocatorPosix.cpp.
2605         * wtf/posix/ThreadingPOSIX.cpp: Renamed from Source/WTF/wtf/ThreadingPthreads.cpp.
2606         * wtf/win/CONTRIBUTORS.pthreads-win32: Renamed from Source/WTF/wtf/CONTRIBUTORS.pthreads-win32.
2607         * wtf/win/OSAllocatorWin.cpp: Renamed from Source/WTF/wtf/OSAllocatorWin.cpp.
2608         * wtf/win/ThreadSpecificWin.cpp: Renamed from Source/WTF/wtf/ThreadSpecificWin.cpp.
2609         * wtf/win/ThreadingWin.cpp: Renamed from Source/WTF/wtf/ThreadingWin.cpp.
2610
2611 2019-01-28  Andy Estes  <aestes@apple.com>
2612
2613         [watchOS] Enable Parental Controls content filtering
2614         https://bugs.webkit.org/show_bug.cgi?id=193939
2615         <rdar://problem/46641912>
2616
2617         Reviewed by Ryosuke Niwa.
2618
2619         * wtf/Platform.h:
2620
2621 2019-01-28  Ross Kirsling  <ross.kirsling@sony.com>
2622
2623         [JSCOnly][WTF] Expose FileSystem.
2624         https://bugs.webkit.org/show_bug.cgi?id=193789
2625
2626         Reviewed by Don Olmstead.
2627
2628         * wtf/FileSystem.h:
2629         * wtf/PlatformJSCOnly.cmake:
2630         * wtf/posix/FileSystemPOSIX.cpp:
2631         (WTF::FileSystemImpl::getVolumeFreeSpace):
2632         * wtf/win/FileSystemWin.cpp:
2633         (WTF::FileSystemImpl::fileSystemRepresentation):
2634
2635 2019-01-28  Eric Carlson  <eric.carlson@apple.com>
2636
2637         AVStreamSession isn't always available, make a HAVE compile flag for it
2638         https://bugs.webkit.org/show_bug.cgi?id=193889
2639         <rdar://problem/47452863>
2640
2641         Reviewed by Jer Noble.
2642
2643         * wtf/FeatureDefines.h:
2644
2645 2018-12-15  Darin Adler  <darin@apple.com>
2646
2647         Replace many uses of String::format with more type-safe alternatives
2648         https://bugs.webkit.org/show_bug.cgi?id=192742
2649
2650         Reviewed by Mark Lam.
2651
2652         * wtf/WorkQueue.cpp:
2653         (WTF::WorkQueue::concurrentApply): Use makeString.
2654
2655         * wtf/dtoa.cpp:
2656         (WTF::dtoa): Use sprintf instead of String::format in the comments,
2657         since these functions have nothing to do with WTF::String.
2658
2659 2019-01-25  Chris Dumez  <cdumez@apple.com>
2660
2661         [iOS] Add support for the download attribute
2662         https://bugs.webkit.org/show_bug.cgi?id=167341
2663         <rdar://problem/30296281>
2664
2665         Reviewed by Geoffrey Garen.
2666
2667         Turn on HTML download attribute support on iOS.
2668
2669         * wtf/FeatureDefines.h:
2670
2671 2019-01-25  David Kilzer  <ddkilzer@apple.com>
2672
2673         Move soft-linking of Lookup.framework out of LookupSPI.h
2674         <https://webkit.org/b/193815>
2675
2676         Reviewed by Tim Horton.
2677
2678         * wtf/cocoa/SoftLinking.h:
2679         (SOFT_LINK_CONSTANT_FOR_HEADER):
2680         (SOFT_LINK_CONSTANT_FOR_SOURCE_WITH_EXPORT):
2681         (SOFT_LINK_CONSTANT_MAY_FAIL_FOR_HEADER):
2682         - Remove local declaration of constant.  This should be handled
2683           by including *SPI.h or "real" headers.
2684         (SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE_WITH_EXPORT):
2685         - Remove local declaration of constant.
2686         - Rename from SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE() and add
2687           `export` argument to support exporting of functions.
2688         (SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE):
2689         - Redefine in terms of
2690           SOFT_LINK_CONSTANT_MAY_FAIL_FOR_SOURCE_WITH_EXPORT().
2691
2692 2019-01-24  Youenn Fablet  <youenn@apple.com>
2693
2694         Use MonotonicTime in WorkerRunLoop
2695         https://bugs.webkit.org/show_bug.cgi?id=193417
2696
2697         Reviewed by Saam Barati.
2698
2699         * wtf/MessageQueue.h:
2700         (WTF::MessageQueue<DataType>::waitForMessage):
2701         (WTF::MessageQueue<DataType>::waitForMessageFilteredWithTimeout):
2702
2703 2019-01-24  Ross Kirsling  <ross.kirsling@sony.com>
2704
2705         Move FileSystem to WTF
2706         https://bugs.webkit.org/show_bug.cgi?id=193602
2707
2708         Reviewed by Yusuke Suzuki.
2709
2710         * WTF.xcodeproj/project.pbxproj:
2711         * wtf/CMakeLists.txt:
2712         * wtf/FileMetadata.h: Renamed from Source/WebCore/platform/FileMetadata.h.
2713         * wtf/FileSystem.cpp: Renamed from Source/WebCore/platform/FileSystem.cpp.
2714         * wtf/FileSystem.h: Renamed from Source/WebCore/platform/FileSystem.h.
2715         * wtf/PlatformGTK.cmake:
2716         * wtf/PlatformMac.cmake:
2717         * wtf/PlatformPlayStation.cmake:
2718         * wtf/PlatformWPE.cmake:
2719         * wtf/PlatformWin.cmake:
2720         * wtf/cf/FileSystemCF.cpp: Renamed from Source/WebCore/platform/cf/FileSystemCF.cpp.
2721         * wtf/cocoa/FileSystemCocoa.mm: Renamed from Source/WebCore/platform/cocoa/FileSystemCocoa.mm.
2722         * wtf/glib/FileSystemGlib.cpp: Renamed from Source/WebCore/platform/glib/FileSystemGlib.cpp.
2723         * wtf/mac/FileSystemMac.mm: Renamed from Source/WebCore/platform/mac/FileSystemMac.mm.
2724         * wtf/posix/FileSystemPOSIX.cpp: Renamed from Source/WebCore/platform/posix/FileSystemPOSIX.cpp.
2725         * wtf/spi/mac/MetadataSPI.h: Renamed from Source/WebCore/PAL/pal/spi/mac/MetadataSPI.h.
2726         * wtf/win/FileSystemWin.cpp: Renamed from Source/WebCore/platform/win/FileSystemWin.cpp.
2727         * wtf/win/PathWalker.cpp: Renamed from Source/WebCore/platform/win/PathWalker.cpp.
2728         * wtf/win/PathWalker.h: Renamed from Source/WebCore/platform/win/PathWalker.h.
2729
2730 2019-01-24  Guillaume Emont  <guijemont@igalia.com>
2731
2732         [JSC] Reenable baseline JIT on mips
2733         https://bugs.webkit.org/show_bug.cgi?id=192983
2734
2735         Reviewed by Mark Lam.
2736
2737         Use baseline JIT by default on MIPS.
2738
2739         * wtf/Platform.h:
2740
2741 2019-01-24  David Kilzer  <ddkilzer@apple.com>
2742
2743         Duplicate global variables: WTF::asciiCaseFoldTable
2744         <https://webkit.org/b/193726>
2745         <rdar://problem/47334622>
2746
2747         Reviewed by Michael Catanzaro.
2748
2749         * WTF.xcodeproj/project.pbxproj:
2750         * wtf/CMakeLists.txt:
2751         - Add ASCIICType.cpp to build systems.
2752
2753         * wtf/ASCIICType.cpp: Added.
2754         (WTF::asciiCaseFoldTable): Move table to here so there is only
2755         one copy.  Mark as exported for other frameworks to use.
2756         * wtf/ASCIICType.h:
2757         (WTF::asciiCaseFoldTable): Change to extern declaration, and
2758         mark as exported for other frameworks to use.
2759
2760 2019-01-23  Mark Lam  <mark.lam@apple.com>
2761
2762         ARM64E should not ENABLE(SEPARATED_WX_HEAP).
2763         https://bugs.webkit.org/show_bug.cgi?id=193744
2764         <rdar://problem/46262952>
2765
2766         Reviewed by Saam Barati.
2767
2768         * wtf/Platform.h:
2769
2770 2019-01-23  David Kilzer  <ddkilzer@apple.com>
2771
2772         Switch remaining CoreMedia soft-linking in WebKit over to CoreMediaSoftLink.{cpp,h}
2773         <https://webkit.org/b/193694>
2774         <rdar://problem/47464025>
2775
2776         Reviewed by Tim Horton.
2777
2778         * wtf/win/SoftLinking.h:
2779         (SOFT_LINK_CONSTANT_FOR_SOURCE_WITH_EXPORT):
2780         - Implement for Windows.
2781         (SOFT_LINK_CONSTANT_FOR_SOURCE):
2782         - Define using SOFT_LINK_CONSTANT_FOR_SOURCE_WITH_EXPORT().
2783
2784 2019-01-22  Tadeu Zagallo  <tzagallo@apple.com>
2785
2786         Cache bytecode to disk
2787         https://bugs.webkit.org/show_bug.cgi?id=192782
2788         <rdar://problem/46084932>
2789
2790         Reviewed by Keith Miller.
2791
2792         BitVectors have to be friends with JSC::CacheBitVector to allow
2793         serializing its buffer as part of the bytecode cache encoding.
2794
2795         * wtf/BitVector.h:
2796
2797 2019-01-21  Claudio Saavedra  <csaavedra@igalia.com>
2798
2799         [GTK] Speculative build fix for Ubuntu LTS
2800         https://bugs.webkit.org/show_bug.cgi?id=193651
2801
2802         Unreviewed build fix.
2803
2804         * wtf/Assertions.h: Add missing <cstdlib> include.
2805
2806 2019-01-20  Saam Barati  <sbarati@apple.com>
2807
2808         Rollout r240210: It broke tests on iOS
2809         https://bugs.webkit.org/show_bug.cgi?id=193640
2810
2811         Unreviewed.
2812
2813         * wtf/BitVector.h:
2814
2815 2019-01-20  Tadeu Zagallo  <tzagallo@apple.com>
2816
2817         Cache bytecode to disk
2818         https://bugs.webkit.org/show_bug.cgi?id=192782
2819         <rdar://problem/46084932>
2820
2821         Reviewed by Keith Miller.
2822
2823         BitVectors have to be friends with JSC::CacheBitVector to allow
2824         serializing its buffer as part of the bytecode cache encoding.
2825
2826         * wtf/BitVector.h:
2827
2828 2019-01-18  Tim Horton  <timothy_horton@apple.com>
2829
2830         Get rid of ADVANCED_SPELL_CHECKING
2831         https://bugs.webkit.org/show_bug.cgi?id=193592
2832
2833         Reviewed by Wenson Hsieh.
2834
2835         * wtf/Platform.h:
2836
2837 2019-01-18  Jer Noble  <jer.noble@apple.com>
2838
2839         SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
2840         https://bugs.webkit.org/show_bug.cgi?id=189553
2841
2842         Reviewed by Tim Horton.
2843
2844         * Configurations/Base.xcconfig:
2845         * Configurations/SDKVariant.xcconfig: Added.
2846
2847 2019-01-18  Keith Miller  <keith_miller@apple.com>
2848
2849         Gigacages should start allocations from a slide
2850         https://bugs.webkit.org/show_bug.cgi?id=193523
2851
2852         Reviewed by Mark Lam.
2853
2854         This patch changes some macros into constants since macros are the
2855         devil.
2856
2857         * wtf/Gigacage.cpp:
2858         * wtf/Gigacage.h:
2859
2860 2019-01-18  Matt Lewis  <jlewis3@apple.com>
2861
2862         Unreviewed, rolling out r240160.
2863
2864         This broke multiple internal builds.
2865
2866         Reverted changeset:
2867
2868         "Gigacages should start allocations from a slide"
2869         https://bugs.webkit.org/show_bug.cgi?id=193523
2870         https://trac.webkit.org/changeset/240160
2871
2872 2019-01-18  Keith Miller  <keith_miller@apple.com>
2873
2874         Gigacages should start allocations from a slide
2875         https://bugs.webkit.org/show_bug.cgi?id=193523
2876
2877         Reviewed by Mark Lam.
2878
2879         This patch changes some macros into constants since macros are the
2880         devil.
2881
2882         * wtf/Gigacage.cpp:
2883         * wtf/Gigacage.h:
2884
2885 2019-01-17  Truitt Savell  <tsavell@apple.com>
2886
2887         Unreviewed, rolling out r240124.
2888
2889         This commit broke an internal build.
2890
2891         Reverted changeset:
2892
2893         "SDK_VARIANT build destinations should be separate from non-
2894         SDK_VARIANT builds"
2895         https://bugs.webkit.org/show_bug.cgi?id=189553
2896         https://trac.webkit.org/changeset/240124
2897
2898 2019-01-17  Jer Noble  <jer.noble@apple.com>
2899
2900         SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
2901         https://bugs.webkit.org/show_bug.cgi?id=189553
2902
2903         Reviewed by Tim Horton.
2904
2905         * Configurations/Base.xcconfig:
2906         * Configurations/SDKVariant.xcconfig: Added.
2907
2908 2019-01-16  Keith Miller  <keith_miller@apple.com>
2909
2910         bmalloc should use JSC VM tag for gigacage
2911         https://bugs.webkit.org/show_bug.cgi?id=193496
2912
2913         Reviewed by Mark Lam.
2914
2915         Move most of the macros for vm tagging to bmalloc.
2916
2917         * wtf/VMTags.h:
2918
2919 2019-01-16  Alberto Garcia  <berto@igalia.com>
2920
2921         [WTF] Compilation fails with system malloc
2922         https://bugs.webkit.org/show_bug.cgi?id=172445
2923
2924         Reviewed by Michael Catanzaro.
2925
2926         Follow-up to r217270. The sysinfo() system call is specific to
2927         Linux so update the #ifdef checks accordingly.
2928
2929         * wtf/RAMSize.cpp:
2930         (WTF::computeRAMSize):
2931
2932 2019-01-15  Chris Dumez  <cdumez@apple.com>
2933
2934         Unreviewed, revert part of r239997 as it is not needed to fix the build.
2935
2936         * wtf/RefCounter.h:
2937
2938 2019-01-15  Alex Christensen  <achristensen@webkit.org>
2939
2940         Fix iOS build after r239993
2941         https://bugs.webkit.org/show_bug.cgi?id=193361
2942
2943         * wtf/RefCounter.h:
2944
2945 2019-01-14  Michael Catanzaro  <mcatanzaro@igalia.com>
2946
2947         Use unorm2_normalize instead of precomposedStringWithCanonicalMapping in userVisibleString
2948         https://bugs.webkit.org/show_bug.cgi?id=192945
2949
2950         Reviewed by Alex Christensen.
2951
2952         Replace use of the nice NSString function precomposedStringWithCanonicalMapping with the ICU
2953         API unorm2_normalize. This is to prep the code for translation to cross-platform C++. Of
2954         course this is much worse than the preexisting code, but this is just a transitional
2955         measure and not the final state of the code. It wouldn't make sense to do this if the code
2956         were to remain Objective C++.
2957
2958         * wtf/cocoa/NSURLExtras.mm:
2959         (WTF::toNormalizationFormC):
2960         (WTF::userVisibleString):
2961
2962 2019-01-14  Alex Christensen  <achristensen@webkit.org>
2963
2964         Bulgarian TLD should not punycode-encode URLs with Bulgarian Cyrillic characters
2965         https://bugs.webkit.org/show_bug.cgi?id=193411
2966         <rdar://problem/47215929>
2967
2968         Reviewed by Alexey Proskuryakov.
2969
2970         * wtf/cocoa/NSURLExtras.mm:
2971         (WTF::allCharactersAllowedByTLDRules):
2972
2973 2019-01-12  Timothy Hatcher  <timothy@apple.com>
2974
2975         Have prefers-color-scheme: light always match on macOS versions before Mojave.
2976         https://bugs.webkit.org/show_bug.cgi?id=191655
2977         rdar://problem/46074680
2978
2979         Reviewed by Megan Gardner.
2980
2981         * wtf/Platform.h: Define HAVE_OS_DARK_MODE_SUPPORT on macOS 10.14.
2982
2983 2019-01-11  David Kilzer  <ddkilzer@apple.com>
2984
2985         Follow-up: WorkQueue::concurrentApply() passes a raw pointer to a temporary String to Thread::create().
2986         https://bugs.webkit.org/show_bug.cgi?id=191350
2987
2988         * wtf/WorkQueue.cpp:
2989         (WTF::WorkQueue::concurrentApply): Fix whitespace.
2990
2991 2019-01-11  Devin Rousso  <drousso@apple.com>
2992
2993         Fix style CFNetworkSPI style checker warnings from r239698
2994         https://bugs.webkit.org/show_bug.cgi?id=193369
2995
2996         Reviewed by Joseph Pecoraro.
2997
2998         * wtf/Platform.h:
2999
3000 2019-01-11  Said Abou-Hallawa  <sabouhallawa@apple.com>
3001
3002         WorkQueue::concurrentApply() passes a raw pointer to a temporary String to Thread::create().
3003         https://bugs.webkit.org/show_bug.cgi?id=191350
3004
3005         Reviewed by Brent Fulgham.
3006
3007         The non COCOA version of WorkQueue::concurrentApply() creates a temporary
3008         String for the threadName and passes the raw pointer of this String to
3009         Thread::create(). After freeing this String, Thread::entryPoint() uses
3010         the raw char pointer to internally initialize the thread.
3011
3012         The fix is to use a single literal string for all the threads' names since
3013         they are created for a thread-pool.
3014
3015         * wtf/WorkQueue.cpp:
3016         (WTF::WorkQueue::concurrentApply):
3017
3018 2019-01-11  Dominik Infuehr  <dinfuehr@igalia.com>
3019
3020         Enable DFG on ARM/Linux again
3021         https://bugs.webkit.org/show_bug.cgi?id=192496
3022
3023         Reviewed by Yusuke Suzuki.
3024
3025         After changing the bytecode format DFG was disabled on all 32-bit
3026         architectures. Enable DFG now again on ARM/Linux.
3027
3028         * wtf/Platform.h:
3029
3030 2019-01-10  Commit Queue  <commit-queue@webkit.org>
3031
3032         Unreviewed, rolling out r239825.
3033         https://bugs.webkit.org/show_bug.cgi?id=193330
3034
3035         Broke tests on armv7/linux bots (Requested by guijemont on
3036         #webkit).
3037
3038         Reverted changeset:
3039
3040         "Enable DFG on ARM/Linux again"
3041         https://bugs.webkit.org/show_bug.cgi?id=192496
3042         https://trac.webkit.org/changeset/239825
3043
3044 2019-01-10  John Wilander  <wilander@apple.com>
3045
3046         Override the session configuration for cookieAcceptPolicy
3047         https://bugs.webkit.org/show_bug.cgi?id=190925
3048         <rdar://problem/45497382>
3049
3050         Reviewed by Alexey Proskuryakov and Alex Christensen.
3051
3052         * wtf/Platform.h:
3053             Definition of HAVE_CFNETWORK_OVERRIDE_SESSION_COOKIE_ACCEPT_POLICY.
3054
3055 2019-01-10  Dominik Infuehr  <dinfuehr@igalia.com>
3056
3057         Enable DFG on ARM/Linux again
3058         https://bugs.webkit.org/show_bug.cgi?id=192496
3059
3060         Reviewed by Yusuke Suzuki.
3061
3062         After changing the bytecode format DFG was disabled on all 32-bit
3063         architectures. Enable DFG now again on ARM/Linux.
3064
3065         * wtf/Platform.h:
3066
3067 2019-01-10  Carlos Garcia Campos  <cgarcia@igalia.com>
3068
3069         [FreeType] Color emoji not properly supported
3070         https://bugs.webkit.org/show_bug.cgi?id=191976
3071
3072         Reviewed by Michael Catanzaro.
3073
3074         Add a name for combining enclosing keycap character.
3075
3076         * wtf/unicode/CharacterNames.h:
3077
3078 2019-01-09  Carlos Eduardo Ramalho  <cadubentzen@gmail.com> and Fujii Hironori  <Hironori.Fujii@sony.com>
3079
3080         Use directory local sequential numbers for Unified Sources filenames instead of global sequential numbers for CMake
3081         https://bugs.webkit.org/show_bug.cgi?id=192391
3082
3083         Reviewed by Don Olmstead.
3084
3085         Unified Source Builds are using global sequential numbers for
3086         bundle filenames UnifiedSource{sequential-number}.cpp. As the
3087         result, every new source file added would shift the next ones and
3088         prevent compiler caches from speeding up consecutive builds e.g.
3089         in git-bisect sessions.
3090
3091         Changed it to directory local sequential numbers,
3092         UnifiedSource-{hash-of-dir-name}-{sequential-number-within-the-dir}.cpp.
3093
3094         This is affecting only CMake builds which is where no
3095         '--max-cpp-bundle-count' nor '--max-obj-c-bundle-count' options
3096         are set. Xcode builds still use the old convention.
3097
3098         * Scripts/generate-unified-source-bundles.rb: Add new instance
3099         variables @currentDirectory and @extraFiles to BundleManager.
3100         Still use global sequential numbers if --max-cpp-bundle-count or
3101         --max-obj-c-bundle-count is given.
3102
3103 2019-01-09  Alex Christensen  <achristensen@webkit.org>
3104
3105         Expand use of sourceApplicationAuditData
3106         https://bugs.webkit.org/show_bug.cgi?id=192995
3107         <rdar://problem/46627875>
3108
3109         Reviewed by Brady Eidson.
3110
3111         * wtf/Platform.h:
3112
3113 2019-01-09  Mark Lam  <mark.lam@apple.com>
3114
3115         Gigacage disabling checks should handle the GIGACAGE_ALLOCATION_CAN_FAIL case properly.
3116         https://bugs.webkit.org/show_bug.cgi?id=193292
3117         <rdar://problem/46485450>
3118
3119         Reviewed by Yusuke Suzuki.
3120
3121         Update the USE_SYSTEM_MALLOC version of Gigacage.h to match the bmalloc version.
3122
3123         * wtf/Gigacage.h:
3124
3125 2019-01-07  David Kilzer  <ddkilzer@apple.com>
3126
3127         Prefer RetainPtr<NSObject> to RetainPtr<NSObject *>
3128         <https://webkit.org/b/193056>
3129
3130         Reviewed by Alex Christensen.
3131
3132         * wtf/RetainPtr.h:
3133         (WTF::RetainPtr<T>::HelperPtrType):
3134         - Use C++ template metaprogramming to define a shared return
3135           type for adoptNS() and retainPtr() that uses
3136           RetainPtr<NSObject> instead of RetainPtr<NSObject *>.  The
3137           non-Objective-C typedef is used with retainPtr() for CFTypeRef
3138           objects.
3139         (WTF::adoptNS):
3140         - Only make declarations available when compilng with
3141           Objective-C.  The inline implementation is only available for
3142           Objective-C, so this makes the declarations consistent.
3143         - Change return type to remove '*' from NS types using
3144           RetainPtr<T>::HelperPtrType.
3145         (WTF::retainPtr):
3146         - Change return type to remove '*' from NS types using
3147           RetainPtr<T>::HelperPtrType.
3148
3149         * wtf/SchedulePair.h:
3150         - Remove '*' from RetainPtr<> type.
3151
3152 2019-01-07  Eric Carlson  <eric.carlson@apple.com>
3153
3154         A MediaTime timescale must never be zero
3155         https://bugs.webkit.org/show_bug.cgi?id=193156
3156         <rdar://problem/32504501>
3157
3158         Reviewed by Jer Noble.
3159
3160         * wtf/MediaTime.cpp:
3161         (WTF::greatestCommonDivisor): ASSERT if either parameter or return value is zero.
3162         (WTF::MediaTime::MediaTime): Create +/- infinity if passed zero timescale.
3163         (WTF::MediaTime::createWithFloat): Ditto.
3164         (WTF::MediaTime::createWithDouble): Ditto.
3165         (WTF::MediaTime::setTimeScale): Ditto.
3166
3167 2019-01-02  Alex Christensen  <achristensen@webkit.org>
3168
3169         Homograph with LATIN SMALL LETTER R WITH FISHHOOK
3170         https://bugs.webkit.org/show_bug.cgi?id=192944
3171
3172         Reviewed by Tim Horton.
3173
3174         * wtf/cocoa/NSURLExtras.mm:
3175         (WTF::isLookalikeCharacter):
3176
3177 2019-01-02  Commit Queue  <commit-queue@webkit.org>
3178
3179         Unreviewed, rolling out r239524.
3180         https://bugs.webkit.org/show_bug.cgi?id=193083
3181
3182         basic browsing seems not to work (Requested by thorton on
3183         #webkit).
3184
3185         Reverted changeset:
3186
3187         "Expand use of sourceApplicationAuditData"
3188         https://bugs.webkit.org/show_bug.cgi?id=192995
3189         https://trac.webkit.org/changeset/239524
3190
3191 2018-12-28  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
3192
3193         Add ENABLE_UNIFIED_BUILDS option to cmake ports
3194         https://bugs.webkit.org/show_bug.cgi?id=193045
3195
3196         Reviewed by Don Olmstead.
3197
3198         * Scripts/generate-unified-source-bundles.rb:
3199
3200 2018-12-27  Alex Christensen  <achristensen@webkit.org>
3201
3202         Resurrect Mac CMake build
3203         https://bugs.webkit.org/show_bug.cgi?id=192658
3204
3205         Reviewed by Yusuke Suzuki.
3206
3207         * wtf/PlatformMac.cmake:
3208         * wtf/cf/CFURLExtras.cpp:
3209         * wtf/cf/CFURLExtras.h:
3210         * wtf/cf/URLCF.cpp:
3211         * wtf/cocoa/NSURLExtras.h:
3212         * wtf/cocoa/NSURLExtras.mm:
3213         * wtf/cocoa/URLCocoa.mm:
3214
3215 2018-12-21  Dan Bernstein  <mitz@apple.com>
3216
3217         Fixed building for macOS 10.13 using the macOS 10.14 SDK.
3218
3219         * wtf/Platform.h: Changed HAVE_AUTHORIZATION_STATUS_FOR_MEDIA_TYPE to depend on the
3220           deployment target, not the SDK.
3221
3222 2018-12-20  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
3223
3224         [JSC] Implement "well-formed JSON.stringify" proposal
3225         https://bugs.webkit.org/show_bug.cgi?id=191677
3226
3227         Reviewed by Darin Adler.
3228
3229         This patch implements "well-formed JSON.stringify" proposal[1], which is now stage 3.
3230         JSON.stringify appended surrogate pair codes even if it is not paired appropriately.
3231         The proposal requires that broken surrogate pairs are unicode-escaped.
3232
3233         [1]: https://github.com/tc39/proposal-well-formed-stringify
3234
3235         * wtf/text/StringBuilderJSON.cpp:
3236         (WTF::appendQuotedJSONStringInternal):
3237
3238 2018-12-21  Alex Christensen  <achristensen@webkit.org>
3239
3240         Expand use of sourceApplicationAuditData
3241         https://bugs.webkit.org/show_bug.cgi?id=192995
3242         <rdar://problem/46627875>
3243
3244         Reviewed by Brady Eidson.
3245
3246         * wtf/Platform.h:
3247
3248 2018-12-21  Alex Christensen  <achristensen@webkit.org>
3249
3250         Revert r239503.
3251         https://bugs.webkit.org/show_bug.cgi?id=192944
3252
3253         * wtf/cocoa/NSURLExtras.mm:
3254         (WTF::isLookalikeCharacter):
3255
3256 2018-12-20  Brent Fulgham  <bfulgham@apple.com>
3257
3258         Show punycode if URL contains Latin small letter dotless i
3259         https://bugs.webkit.org/show_bug.cgi?id=192944
3260         <rdar://problem/46103047>
3261
3262         Reviewed by Andy Estes.
3263
3264         Revise our "lookalike character" logic to include the small Latin
3265         dotless i character.
3266
3267         Test: fast/url/host.html
3268
3269         * wtf/cocoa/NSURLExtras.mm:
3270         (WTF::isLookalikeCharacter):
3271
3272 2018-12-20  Chris Dumez  <cdumez@apple.com>
3273
3274         Use Optional::hasValue() instead of Optional::has_value()
3275         https://bugs.webkit.org/show_bug.cgi?id=192948
3276
3277         Reviewed by Tim Horton.
3278
3279         * wtf/Hasher.h:
3280         (WTF::add):
3281         * wtf/Optional.h:
3282
3283 2018-12-20  Chris Dumez  <cdumez@apple.com>
3284
3285         Use Optional::valueOr() instead of Optional::value_or()
3286         https://bugs.webkit.org/show_bug.cgi?id=192933
3287
3288         Reviewed by Geoffrey Garen.
3289
3290         * wtf/Optional.h:
3291         (WTF::Optional<T::valueOr const):
3292
3293 2018-12-20  Tadeu Zagallo  <tzagallo@apple.com>
3294
3295         Consistently use MaxLength for all WTF strings
3296         https://bugs.webkit.org/show_bug.cgi?id=192853
3297         <rdar://problem/45726906>
3298
3299         Reviewed by Mark Lam.
3300
3301         MaxLength was introduced to be INT_MAX for WTF::String and StringImpl,
3302         but all the assertions were still done using UINT_MAX. Change it to
3303         use MaxLength for all checks.
3304
3305         * wtf/text/StringImpl.cpp:
3306         (WTF::StringImpl::createUninitializedInternalNonEmpty):
3307         (WTF::StringImpl::reallocateInternal):
3308         (WTF::StringImpl::create):
3309         (WTF::StringImpl::convertToLowercaseWithoutLocale):
3310         (WTF::StringImpl::convertToUppercaseWithoutLocale):
3311         (WTF::StringImpl::convertToLowercaseWithLocale):
3312         (WTF::StringImpl::convertToUppercaseWithLocale):
3313         (WTF::StringImpl::foldCase):
3314         (WTF::StringImpl::find):
3315         (WTF::StringImpl::replace):
3316         (WTF::StringImpl::utf8ForCharacters):
3317         (WTF::StringImpl::tryGetUtf8ForRange const):
3318         * wtf/text/StringImpl.h:
3319         (WTF::lengthOfNullTerminatedString):
3320         (WTF::StringImpl::tryCreateUninitialized):
3321         (WTF::StringImpl::adopt):
3322         (WTF::StringImpl::maxInternalLength):
3323         * wtf/text/WTFString.cpp:
3324         (WTF::String::append):
3325         (WTF::String::insert):
3326         (WTF::String::fromUTF8):
3327         * wtf/text/WTFString.h:
3328         (WTF::String::reverseFind const):
3329
3330 2018-12-19  Chris Dumez  <cdumez@apple.com>
3331
3332         wtf/Optional.h: move-constructor and move-assignment operator should disengage the value being moved from
3333         https://bugs.webkit.org/show_bug.cgi?id=192728
3334         <rdar://problem/46746779>
3335
3336         Reviewed by Geoff Garen.
3337
3338         Update optional's move-constructor and move-assignment operator to disengage the value being moved from.
3339         Rename to optional to Optional, make_optional() to makeOptional(), and move class from std to WTF namespace.
3340
3341         Based on patch by David Kilzer.
3342
3343         * wtf/*:
3344
3345 2018-12-19  Eric Carlson  <eric.carlson@apple.com>
3346
3347         [MediaStream] Force system camera/microphone TCC prompt if necessary
3348         https://bugs.webkit.org/show_bug.cgi?id=192820
3349         <rdar://problem/42680098>
3350
3351         Reviewed by Jer Noble.
3352
3353         * wtf/Platform.h: Define HAVE_AUTHORIZATION_STATUS_FOR_MEDIA_TYPE.
3354
3355 2018-12-17  Chris Fleizach  <cfleizach@apple.com>
3356
3357         Some builds are broken after r239262
3358         https://bugs.webkit.org/show_bug.cgi?id=192777
3359
3360         Reviewed by Simon Fraser.
3361
3362         * wtf/Platform.h:
3363
3364 2018-12-17  Daniel Bates  <dabates@apple.com>
3365
3366         Support concatenating StringView with other string types
3367         https://bugs.webkit.org/show_bug.cgi?id=177566
3368
3369         Reviewed by Darin Adler.
3370
3371         Add operator+ overloads to StringOperators.h to support concatenating a StringView with
3372         other string types (e.g. String). This lets a person write more naturally looking code:
3373
3374         stringView + string
3375
3376         Instead of:
3377
3378         makeString(stringView, string)
3379
3380         * wtf/text/StringOperators.h:
3381         (WTF::operator+): Added various operator+ overloads.
3382
3383 2018-12-17  Commit Queue  <commit-queue@webkit.org>
3384
3385         Unreviewed, rolling out r239265 and r239274.
3386         https://bugs.webkit.org/show_bug.cgi?id=192765
3387
3388         unorm_normalize is deprecated, and broke an internal build
3389         (Requested by Truitt on #webkit).
3390
3391         Reverted changesets:
3392
3393         "[GTK][WPE] Need a function to convert internal URI to display
3394         ("pretty") URI"
3395         https://bugs.webkit.org/show_bug.cgi?id=174816
3396         https://trac.webkit.org/changeset/239265
3397
3398         "Fix the Apple Internal Mac build with a newer SDK"
3399         https://trac.webkit.org/changeset/239274
3400
3401 2018-12-17  Daniel Bates  <dabates@apple.com>
3402
3403         Fix the Apple Internal Mac build with a newer SDK
3404
3405         * wtf/URLHelpers.cpp:
3406         (WTF::URLHelpers::userVisibleURL):
3407
3408 2018-12-17  Matt Lewis  <jlewis3@apple.com>
3409
3410         Unreviewed, rolling out r239254.
3411
3412         This broke the Windows 10 Debug build
3413
3414         Reverted changeset:
3415
3416         "Replace many uses of String::format with more type-safe
3417         alternatives"
3418         https://bugs.webkit.org/show_bug.cgi?id=192742
3419         https://trac.webkit.org/changeset/239254
3420
3421 2018-12-17  Ms2ger  <Ms2ger@igalia.com>
3422
3423         [GTK][WPE] Need a function to convert internal URI to display ("pretty") URI
3424         https://bugs.webkit.org/show_bug.cgi?id=174816
3425
3426         Reviewed by Michael Catanzaro.
3427
3428         Translate userVisibleString and dependent code into platform-neutral C++
3429         in wtf/URLHelpers.{h,cpp}.
3430
3431         * WTF.xcodeproj/project.pbxproj:
3432         * wtf/CMakeLists.txt:
3433         * wtf/URLHelpers.cpp: Added.
3434         (WTF::URLHelpers::loadIDNScriptWhiteList):
3435         (WTF::URLHelpers::isArmenianLookalikeCharacter):
3436         (WTF::URLHelpers::isArmenianScriptCharacter):
3437         (WTF::URLHelpers::isASCIIDigitOrValidHostCharacter):
3438         (WTF::URLHelpers::isLookalikeCharacter):
3439         (WTF::URLHelpers::whiteListIDNScript):
3440         (WTF::URLHelpers::initializeDefaultIDNScriptWhiteList):
3441         (WTF::URLHelpers::allCharactersInIDNScriptWhiteList):
3442         (WTF::URLHelpers::isSecondLevelDomainNameAllowedByTLDRules):
3443         (WTF::URLHelpers::isRussianDomainNameCharacter):
3444         (WTF::URLHelpers::allCharactersAllowedByTLDRules):
3445         (WTF::URLHelpers::mapHostName):
3446         (WTF::URLHelpers::collectRangesThatNeedMapping):
3447         (WTF::URLHelpers::applyHostNameFunctionToMailToURLString):
3448         (WTF::URLHelpers::applyHostNameFunctionToURLString):
3449         (WTF::URLHelpers::mapHostNames):
3450         (WTF::URLHelpers::createStringWithEscapedUnsafeCharacters):
3451         (WTF::URLHelpers::userVisibleURL):
3452         * wtf/URLHelpers.h: Added.
3453         * wtf/cocoa/NSURLExtras.mm:
3454         (WTF::URLHelpers::loadIDNScriptWhiteList):
3455         (WTF::decodePercentEscapes):
3456         (WTF::decodeHostName):
3457         (WTF::encodeHostName):
3458         (WTF::URLWithUserTypedString):
3459         (WTF::userVisibleString):
3460
3461 2018-12-15  Darin Adler  <darin@apple.com>
3462
3463         Use warning-ignoring macros more consistently and simply
3464         https://bugs.webkit.org/show_bug.cgi?id=192743
3465
3466         Reviewed by Mark Lam.
3467
3468         * wtf/Assertions.h: Use IGNORE_WARNINGS_BEGIN rather than
3469         IGNORE_CLANG_WARNINGS_BEGIN since we don't need special handling for
3470         non-clang compilers, in part since the code is already inside
3471         #if COMPILER(CLANG), but also because it would be harmless to ignore this
3472         warning on non-clang; we should almost never use IGNORE_CLANG_WARNINGS_BEGIN.
3473
3474 2018-12-15  Darin Adler  <darin@apple.com>
3475
3476         Replace many uses of String::format with more type-safe alternatives
3477         https://bugs.webkit.org/show_bug.cgi?id=192742
3478
3479         Reviewed by Mark Lam.
3480
3481         * wtf/WorkQueue.cpp:
3482         (WTF::WorkQueue::concurrentApply): Use makeString.
3483
3484         * wtf/dtoa.cpp:
3485         (WTF::dtoa): Use sprintf instead of String::format in the comments,
3486         since these functions have nothing to do with WTF::String.
3487
3488 2018-12-14  Darin Adler  <darin@apple.com>
3489
3490         Verify size is valid in USE_SYSTEM_MALLOC version of tryAllocateZeroedVirtualPages
3491         https://bugs.webkit.org/show_bug.cgi?id=192738
3492         rdar://problem/37502342
3493
3494         Reviewed by Mark Lam.
3495
3496         * wtf/Gigacage.cpp:
3497         (Gigacage::tryAllocateZeroedVirtualPages): Added a RELEASE_ASSERT just
3498         like the one in tryLargeZeroedMemalignVirtual in bmalloc.
3499
3500 2018-12-14  David Kilzer  <ddkilzer@apple.com>
3501
3502         clang-tidy: Fix unnecessary copy of AtomicString each time one is logged
3503         <https://webkit.org/b/192710>
3504         <rdar://problem/46738962>
3505
3506         Reviewed by Eric Carlson.
3507
3508         * wtf/Logger.h:
3509         (WTF::LogArgument::toString): Make argument a const reference to
3510         avoid the copy.
3511
3512 2018-12-14  Zan Dobersek  <zdobersek@igalia.com>
3513
3514         [GLib] RunLoop::dispatchAfter() GSource requires microsecond precision
3515         https://bugs.webkit.org/show_bug.cgi?id=192696
3516
3517         Reviewed by Michael Catanzaro.
3518
3519         The GSource we set up in GLib's RunLoop::dispatchAfter() implementation
3520         should support microsecond-precision delays. Such delays are common in
3521         JSC's Watchdog implementation and missing support for them has been
3522         causing test failures in the `testapi` program as well as some JSC
3523         tests that depend on the termination determination functionality of the
3524         JSC::Watchdog class.
3525
3526         RunLoop::dispatchAfter() is changed to spawn a raw GSource that uses the
3527         existing GSourceFuncs implementation used elsewhere in GLib's RunLoop.
3528         The GSource's ready time is set manually, now with the necessary
3529         microsecond precision.
3530
3531         * wtf/glib/RunLoopGLib.cpp:
3532         (WTF::RunLoop::dispatchAfter):
3533
3534 2018-12-13  Saam Barati  <sbarati@apple.com>
3535
3536         The JSC shell should listen for memory pressure events and respond to them
3537         https://bugs.webkit.org/show_bug.cgi?id=192647
3538
3539         Reviewed by Keith Miller.
3540
3541         * wtf/MemoryPressureHandler.cpp:
3542         (WTF::MemoryPressureHandler::MemoryPressureHandler):
3543         (WTF::MemoryPressureHandler::setDispatchQueue):
3544         Make it so that we can customize which dispatch queue memory pressure
3545         events get handled on.
3546
3547         * wtf/MemoryPressureHandler.h:
3548         (WTF::MemoryPressureHandler::setShouldLogMemoryMemoryPressureEvents):
3549         Make it so that we can disable logging that happens on each memory
3550         pressure event.
3551
3552         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
3553         (WTF::MemoryPressureHandler::install):
3554         (WTF::MemoryPressureHandler::uninstall):
3555         (WTF::MemoryPressureHandler::holdOff):
3556
3557 2018-12-13  David Kilzer  <ddkilzer@apple.com>
3558
3559         clang-tidy: Fix unnecessary parameter copies in ParallelHelperPool.cpp
3560         <https://webkit.org/b/192666>
3561         <rdar://problem/46697952>
3562
3563         Reviewed by Alex Christensen.
3564
3565         * wtf/ParallelHelperPool.cpp:
3566         (WTF::ParallelHelperClient::ParallelHelperClient): Use rvalue
3567         reference and WTFMove().
3568         (WTF::ParallelHelperClient::setTask): Ditto.
3569         (WTF::ParallelHelperClient::runTaskInParallel): Ditto.
3570         (WTF::ParallelHelperClient::runTask): Use const reference.
3571         * wtf/ParallelHelperPool.h: Update declarations to match
3572         implementations.
3573
3574 2018-12-12  Alex Christensen  <achristensen@webkit.org>
3575
3576         Implement safe browsing in WebKit on WatchOS
3577         https://bugs.webkit.org/show_bug.cgi?id=192641
3578         <rdar://problem/46376188>
3579
3580         Reviewed by Geoff Garen.
3581
3582         * wtf/Platform.h:
3583         WatchOS has safe browsing, too!
3584
3585 2018-12-11  Fujii Hironori  <Hironori.Fujii@sony.com>
3586
3587         [Win][Clang] Fix compilation warnings of WTF
3588         https://bugs.webkit.org/show_bug.cgi?id=192583
3589
3590         Reviewed by Alex Christensen.
3591
3592         clang-cl reports the following warnings.
3593
3594         > [92/206] Building CXX object Source\WTF\wtf\CMakeFiles\WTF.dir\StackBounds.cpp.obj
3595         > ..\..\Source\WTF\wtf\StackBounds.cpp(163,48):  warning: missing field 'AllocationBase' initializer [-Wmissing-field-initializers]
3596         >     MEMORY_BASIC_INFORMATION stackOrigin = { 0 };
3597         >                                                ^
3598         > 1 warning generated.
3599         > [160/206] Building CXX object Source\WTF\wtf\CMakeFiles\WTF.dir\win\RunLoopWin.cpp.obj
3600         > ..\..\Source\WTF\wtf\win\RunLoopWin.cpp(34,54):  warning: ISO C++11 does not allow conversion from string literal to 'const LPWSTR' (aka 'wchar_t *const') [-Wwritable-strings]
3601         > static const LPWSTR kRunLoopMessageWindowClassName = L"RunLoopMessageWindow";
3602         >                                                      ^
3603         > ..\..\Source\WTF\wtf\win\RunLoopWin.cpp(86,32):  warning: missing field 'lpfnWndProc' initializer [-Wmissing-field-initializers]
3604         >     WNDCLASS windowClass = { 0 };
3605         >                                ^
3606         > 2 warnings generated.
3607         > [175/206] Building CXX object Source\WTF\wtf\CMakeFiles\WTF.dir\DateMath.cpp.obj
3608         > ..\..\Source\WTF\wtf\DateMath.cpp(125,20):  warning: unused function 'getLocalTime' [-Wunused-function]
3609         > static inline void getLocalTime(const time_t* localTime, struct tm* localTM)
3610         >                    ^
3611         > 1 warning generated.
3612
3613         * wtf/DateMath.cpp:
3614         (WTF::getLocalTime): Defined only if used.
3615         * wtf/StackBounds.cpp:
3616         (WTF::StackBounds::currentThreadStackBoundsInternal): Initialize stackOrigin with '{ }'.
3617         * wtf/win/RunLoopWin.cpp: Change the type of kRunLoopMessageWindowClassName to LPCWSTR.
3618         (WTF::RunLoop::registerRunLoopMessageWindowClass): Initialize windowClass with '{ }'.
3619
3620 2018-12-11  Andy Estes  <aestes@apple.com>
3621
3622         Introduce makeBlockPtr for lambdas
3623         https://bugs.webkit.org/show_bug.cgi?id=192594
3624
3625         Reviewed by Alex Christensen.
3626
3627         BlockPtr<...>::fromCallable is cumbersome because it requires repeating the callable's
3628         signature as a class template argument. This patch introduces an overload of makeBlockPtr
3629         that deduces the correct BlockPtr instantiation from a lambda's operator() signature.
3630
3631         * wtf/BlockPtr.h:
3632         (WTF::makeBlockPtr):
3633
3634         Adopted makeBlockPtr.
3635
3636         * wtf/cocoa/WorkQueueCocoa.cpp:
3637         (WTF::WorkQueue::dispatch):
3638         (WTF::WorkQueue::dispatchAfter):
3639         (WTF::WorkQueue::concurrentApply):
3640
3641 2018-12-10  Don Olmstead  <don.olmstead@sony.com>
3642
3643         Move ENABLE_RESOURCE_LOAD_STATISTICS to FeatureDefines.xcconfig
3644         https://bugs.webkit.org/show_bug.cgi?id=192573
3645
3646         Reviewed by Simon Fraser.
3647
3648         Remove ENABLE_RESOURCE_LOAD_STATISTICS from Platform.h and instead rely
3649         on it being set in FeatureDefines.xcconfig.
3650
3651         * wtf/Platform.h:
3652
3653 2018-12-10  Alexey Proskuryakov  <ap@apple.com>
3654
3655         Move ENABLE_SEC_ITEM_SHIM out of WebKit's config.h
3656         https://bugs.webkit.org/show_bug.cgi?id=192428
3657
3658         Reviewed by Tim Horton.
3659
3660         * wtf/Platform.h:
3661
3662 2018-12-10  Alexey Proskuryakov  <ap@apple.com>
3663
3664         Move more macros out of WebKit's config.h
3665         https://bugs.webkit.org/show_bug.cgi?id=192430
3666
3667         Reviewed by Tim Horton.
3668
3669         * wtf/Platform.h:
3670
3671 2018-12-09  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
3672
3673         Unreviewed, fix build failure on GCC 8.2, part 2
3674
3675         Add RefCountedArray::assign, and use it instead of operator= internally.
3676         We should have operator=(const RefCountedArray&) since it will be automatically generated
3677         if we do not have correct implementation here.
3678
3679         * wtf/RefCountedArray.h:
3680         (WTF::RefCountedArray::operator=):
3681         (WTF::RefCountedArray::assign):
3682
3683 2018-12-09  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
3684
3685         Unreviewed, fix build failure on GCC 8.2
3686
3687         We remove operator=<PtrTraits> call since it is not necessary.
3688         This is a workaround. It seems that GCC 8.2 fails to parse this specialization.
3689
3690         * wtf/RefCountedArray.h:
3691
3692 2018-12-08  Darin Adler  <darin@apple.com>
3693
3694         Fix stray-semicolon warning seen with a new version of clang in Xcode
3695         https://bugs.webkit.org/show_bug.cgi?id=192534
3696
3697         Reviewed by Alexey Proskuryakov.
3698
3699         * wtf/Lock.h: Removed an unneeded semicolon.
3700
3701 2018-12-08  Adrian Perez de Castro  <aperez@igalia.com>
3702
3703         [WTF] Debug build fails due conflicting abort() method
3704         https://bugs.webkit.org/show_bug.cgi?id=192491
3705
3706         Reviewed by Michael Catanzaro.
3707
3708         * wtf/Assertions.h: Use namespaced std::abort() insted of plain abort() to avoid clashes
3709         inside classes which have an ::abort() method, but only when __cplusplus is defined to
3710         allow inclusion of the header in plain C sources.
3711
3712 2018-12-07  Andy Estes  <aestes@apple.com>
3713
3714         [Cocoa] Add optional variants of SOFT_LINK_CLASS_FOR_SOURCE
3715         https://bugs.webkit.org/show_bug.cgi?id=192498
3716
3717         Reviewed by Tim Horton.
3718
3719         Added SOFT_LINK_CLASS_FOR_SOURCE_OPTIONAL and SOFT_LINK_CLASS_FOR_SOURCE_OPTIONAL_WITH_EXPORT,
3720         which behave like their non-optional variants but do not require their classes to exist.
3721
3722         * wtf/cocoa/SoftLinking.h:
3723
3724 2018-12-06  Alexey Proskuryakov  <ap@apple.com>
3725
3726         Move USE_NEW_THEME out of WebCore's config.h
3727         https://bugs.webkit.org/show_bug.cgi?id=192426
3728
3729         Reviewed by Tim Horton.
3730
3731         * wtf/Platform.h:
3732
3733 2018-12-04  Carlos Garcia Campos  <cgarcia@igalia.com>
3734
3735         [SOUP] Move URLSoup back to WebCore after r238771
3736         https://bugs.webkit.org/show_bug.cgi?id=192306
3737
3738         Reviewed by Michael Catanzaro.
3739
3740         In r238771 URL was moved from WebCore to WTF, including the soup implementation. Unfortunately that added
3741         libsoup as a new dependency of libjavascriptcoregtk.
3742
3743         * wtf/PlatformGTK.cmake:
3744         * wtf/PlatformWPE.cmake:
3745         * wtf/URL.h:
3746         * wtf/glib/URLGLib.cpp: Copied from Source/WTF/wtf/glib/URLSoup.cpp.
3747
3748 2018-12-03  Don Olmstead  <don.olmstead@sony.com>
3749
3750         Fix some unused parameter warnings
3751         https://bugs.webkit.org/show_bug.cgi?id=192336
3752
3753         Reviewed by Fujii Hironori.
3754
3755         * wtf/StackTrace.cpp:
3756         (WTFGetBacktrace):
3757         (WTF::StackTrace::demangle):
3758         * wtf/generic/MemoryPressureHandlerGeneric.cpp:
3759         (WTF::MemoryPressureHandler::holdOff):
3760         (WTF::MemoryPressureHandler::respondToMemoryPressure):
3761
3762 2018-12-01  Alexey Proskuryakov  <ap@apple.com>
3763
3764         Modernize version check for _suppressedAutoAddedHTTPHeaders
3765         https://bugs.webkit.org/show_bug.cgi?id=192175
3766
3767         Reviewed by Tim Horton.
3768
3769         * wtf/Platform.h:
3770
3771 2018-11-30  Alex Christensen  <achristensen@webkit.org>
3772
3773         Fix Windows build after r238771
3774         https://bugs.webkit.org/show_bug.cgi?id=190234
3775
3776         * wtf/URLParser.h:
3777         Just make defaultPortForProtocol public so we don't have to worry about DLL linkage.
3778
3779 2018-11-30  Alex Christensen  <achristensen@webkit.org>
3780
3781         Move URL from WebCore to WTF
3782         https://bugs.webkit.org/show_bug.cgi?id=190234
3783
3784         Reviewed by Keith Miller.
3785
3786         * WTF.xcodeproj/project.pbxproj:
3787         * wtf/CMakeLists.txt:
3788         * wtf/Forward.h:
3789         * wtf/PlatformGTK.cmake:
3790         * wtf/PlatformMac.cmake:
3791         * wtf/PlatformWPE.cmake:
3792         * wtf/PlatformWin.cmake:
3793         * wtf/URL.cpp: Renamed from Source/WebCore/platform/URL.cpp.
3794         (WTF::URL::protocolIs):
3795         * wtf/URL.h: Renamed from Source/WebCore/platform/URL.h.
3796         * wtf/URLHash.h: Renamed from Source/WebCore/platform/URLHash.h.
3797         (WTF::URLHash::hash):
3798         (WTF::URLHash::equal):
3799         * wtf/URLParser.cpp: Renamed from Source/WebCore/platform/URLParser.cpp.
3800         (WTF::URLParser::isInUserInfoEncodeSet):
3801         (WTF::URLParser::parseAuthority):
3802         * wtf/URLParser.h: Renamed from Source/WebCore/platform/URLParser.h.
3803         (WTF::URLParser::URLParser):
3804         (WTF::URLParser::result):
3805         * wtf/cf/CFURLExtras.cpp: Renamed from Source/WebCore/platform/cf/CFURLExtras.cpp.
3806         * wtf/cf/CFURLExtras.h: Renamed from Source/WebCore/platform/cf/CFURLExtras.h.
3807         * wtf/cf/URLCF.cpp: Renamed from Source/WebCore/platform/cf/URLCF.cpp.
3808         * wtf/cocoa/NSURLExtras.h: Copied from Source/WebCore/loader/archive/ArchiveResourceCollection.h.
3809         * wtf/cocoa/NSURLExtras.mm: Copied from Source/WebCore/platform/mac/WebCoreNSURLExtras.mm.
3810         (WTF::isArmenianLookalikeCharacter):
3811         (WTF::isArmenianScriptCharacter):
3812         (WTF::isASCIIDigitOrValidHostCharacter):
3813         (WTF::isLookalikeCharacter):
3814         (WTF::whiteListIDNScript):
3815         (WTF::readIDNScriptWhiteListFile):
3816         (WTF::allCharactersInIDNScriptWhiteList):
3817         (WTF::isSecondLevelDomainNameAllowedByTLDRules):
3818         (WTF::isRussianDomainNameCharacter):
3819         (WTF::allCharactersAllowedByTLDRules):
3820         (WTF::mapHostNameWithRange):
3821         (WTF::hostNameNeedsDecodingWithRange):
3822         (WTF::hostNameNeedsEncodingWithRange):
3823         (WTF::decodeHostNameWithRange):
3824         (WTF::encodeHostNameWithRange):
3825         (WTF::decodeHostName):
3826         (WTF::encodeHostName):
3827         (WTF::collectRangesThatNeedMapping):
3828         (WTF::collectRangesThatNeedEncoding):
3829         (WTF::collectRangesThatNeedDecoding):
3830         (WTF::applyHostNameFunctionToMailToURLString):
3831         (WTF::applyHostNameFunctionToURLString):
3832         (WTF::mapHostNames):
3833         (WTF::stringByTrimmingWhitespace):
3834         (WTF::URLByTruncatingOneCharacterBeforeComponent):
3835         (WTF::URLByRemovingResourceSpecifier):
3836         (WTF::URLWithData):
3837         (WTF::dataWithUserTypedString):
3838         (WTF::URLWithUserTypedString):
3839         (WTF::URLWithUserTypedStringDeprecated):
3840         (WTF::hasQuestionMarkOnlyQueryString):
3841         (WTF::dataForURLComponentType):
3842         (WTF::URLByRemovingComponentAndSubsequentCharacter):
3843         (WTF::URLByRemovingUserInfo):
3844         (WTF::originalURLData):
3845         (WTF::createStringWithEscapedUnsafeCharacters):
3846         (WTF::userVisibleString):
3847         (WTF::isUserVisibleURL):
3848         (WTF::rangeOfURLScheme):
3849         (WTF::looksLikeAbsoluteURL):
3850         * wtf/cocoa/URLCocoa.mm: Renamed from Source/WebCore/platform/mac/URLMac.mm.
3851         (WTF::URL::URL):
3852         (WTF::URL::createCFURL const):
3853         * wtf/glib/GUniquePtrSoup.h: Renamed from Source/WebCore/platform/network/soup/GUniquePtrSoup.h.
3854         * wtf/glib/URLSoup.cpp: Renamed from Source/WebCore/platform/soup/URLSoup.cpp.
3855
3856 2018-11-30  Alexey Proskuryakov  <ap@apple.com>
3857
3858         Move USE_CFNETWORK_IGNORE_HSTS to its proper place
3859         https://bugs.webkit.org/show_bug.cgi?id=192173
3860
3861         Reviewed by Tim Horton.
3862
3863         * wtf/Platform.h: Also renamed it to better match other version checks.
3864
3865 2018-11-29  Alexey Proskuryakov  <ap@apple.com>
3866
3867         Modernize the check for kCFURLRequestContentDecoderSkipURLCheck existence
3868         https://bugs.webkit.org/show_bug.cgi?id=192041
3869
3870         Reviewed by Tim Horton.
3871
3872         * wtf/Platform.h:
3873
3874 2018-11-28  Mark Lam  <mark.lam@apple.com>
3875
3876         ENABLE_SEPARATED_WX_HEAP needs to be defined in Platform.h.
3877         https://bugs.webkit.org/show_bug.cgi?id=192110
3878         <rdar://problem/46317746>
3879
3880         Reviewed by Saam Barati.
3881
3882         Contrary my previous claim in r238564, ENABLE_SEPARATED_WX_HEAP needs to be
3883         defined in Platform.h because it is also needed in WebCore for the CSS JIT.  Also
3884         contrary to my previous claim, ENABLE(FAST_JIT_PERMISSIONS) is defined for WebCore
3885         (and other projects) as well as JSC.  Hence, there's no reason why
3886         ENABLE_SEPARATED_WX_HEAP cannot be defined in Platform.h.
3887
3888         * wtf/Platform.h:
3889
3890 2018-11-28  Keith Rollin  <krollin@apple.com>
3891
3892         Update generate-unified-source-bundles.rb to generate .xcfilelist files
3893         https://bugs.webkit.org/show_bug.cgi?id=192029
3894         <rdar://problem/46285918>
3895
3896         Reviewed by Alex Christensen.
3897
3898         Update generate-unified-source-bundles.rb to generate output for
3899         .xcfilelist files. These files are used to indicate the sets of input
3900         and output files to Run Script build phases in Xcode. By invoking
3901         generate-unified-source-bundles.rb with -generate-xcfilelists, the
3902         script generates these .xcfilelist files. These .xcfilelist files can
3903         then be used to specify the inputs and outputs of the Generate Unified
3904         Sources build phases.
3905
3906         * Scripts/generate-unified-source-bundles.rb:
3907
3908 2018-11-28  Alexey Proskuryakov  <ap@apple.com>
3909
3910         Remove another OS version check from NetworkDataTaskCocoa.mm
3911         https://bugs.webkit.org/show_bug.cgi?id=192046
3912
3913         Reviewed by Alex Christensen.
3914
3915         * wtf/Platform.h:
3916
3917 2018-11-28  Alexey Proskuryakov  <ap@apple.com>
3918
3919         Modernize version checks for same site cookie support
3920         https://bugs.webkit.org/show_bug.cgi?id=192054
3921
3922         Reviewed by Tim Horton.
3923
3924         * wtf/Platform.h:
3925
3926 2018-11-27  Alexey Proskuryakov  <ap@apple.com>
3927
3928         Modernize the check for async _saveCookies existence
3929         https://bugs.webkit.org/show_bug.cgi?id=191987
3930
3931         Reviewed by Dean Jackson.
3932
3933         * wtf/Platform.h: Added a specific macro for this. Not changing the behavior here,
3934         although it seems very likely that we want to do the same on other iOS family OSes.
3935
3936 2018-11-26  Fujii Hironori  <Hironori.Fujii@sony.com>
3937
3938         [Win][Clang] SOFT_LINK reports warning: implicit conversion between pointer-to-function and pointer-to-object is a Microsoft extension [-Wmicrosoft-cast]
3939         https://bugs.webkit.org/show_bug.cgi?id=191960
3940
3941         Reviewed by Alex Christensen.
3942
3943         * wtf/win/SoftLinking.h: Do reinterpret_cast<void*> a function
3944         pointer argument of EncodePointer. Changed the type of stored
3945         function pointer returned by EncodePointer.
3946
3947 2018-11-26  Sam Weinig  <sam@webkit.org>
3948
3949         Streamline ListHashSet use in floating object code
3950         https://bugs.webkit.org/show_bug.cgi?id=191957
3951
3952         Reviewed by Alex Christensen.
3953
3954         * wtf/ListHashSet.h:
3955         Reverses the order of the template arguments for the find() and contains()
3956         overload that allow specifying a hash translator to allow the compiler to
3957         deduce type T. This simplifies call sites and matches other WTF containers.
3958
3959 2018-11-25  Michael Catanzaro  <mcatanzaro@igalia.com>
3960
3961         CRASH() should call abort() except on Darwin and in developer builds
3962         https://bugs.webkit.org/show_bug.cgi?id=184408
3963
3964         Reviewed by Daniel Bates.
3965
3966         CRASH() should call abort() except on Darwin and in developer builds, as discussed on
3967         webkit-dev. This should be slightly nicer than dereferencing 0xbadbeef.
3968
3969         On Darwin, CRASH() uses a breakpoint trap, which seems to corrupt the stack on Linux, so we
3970         can't do that.
3971
3972         Continue to call WTFCrash() in developer mode, and make no changes to WTFCrash(), since it
3973         is reportedly useful in nightmare scenarios where core dumps are unavailable.
3974
3975         We also have to define CRASH_UNDER_CONSTEXPR_CONTEXT(). It's a bit odd that it's possible to
3976         use a non-constexpr function here, but it works. Currently this macro uses WTFCrash(), which
3977         is also non-constexpr.
3978
3979         * wtf/Assertions.h:
3980
3981 2018-11-25  Michael Catanzaro  <mcatanzaro@igalia.com>
3982
3983         Unreviewed, rolling out r238469.
3984
3985         Broke the build
3986
3987         Reverted changeset:
3988
3989         "CRASH() should call abort() except on Darwin and in developer
3990         builds"
3991         https://bugs.webkit.org/show_bug.cgi?id=184408
3992         https://trac.webkit.org/changeset/238469
3993
3994 2018-11-24  Andy Estes  <aestes@apple.com>
3995
3996         [Cocoa] SOFT_LINK_CLASS_FOR_{HEADER,SOURCE} should generate a more concise getter function
3997         https://bugs.webkit.org/show_bug.cgi?id=191899
3998
3999         Reviewed by Dean Jackson.
4000
4001         Currently, SOFT_LINK_CLASS_FOR_HEADER declares a class getter function that includes the
4002         framework name. For example, NSView would have a class getter named
4003         namespace::get_AppKit_NSViewClass().
4004
4005         Including the framework name in the getter is unnecessary. Objective-C classes already exist
4006         in a global namespace, so there is no need to disambiguate class names by framework. This
4007         patch elides the framework name from the getter function. For example, NSView would now have
4008         a getter named namespace::getNSViewClass().
4009
4010         * wtf/cocoa/SoftLinking.h:
4011
4012 2018-11-24  Michael Catanzaro  <mcatanzaro@igalia.com>
4013
4014         CRASH() should call abort() except on Darwin and in developer builds
4015         https://bugs.webkit.org/show_bug.cgi?id=184408
4016
4017         Reviewed by Daniel Bates.
4018
4019         CRASH() should call abort() except on Darwin and in developer builds, as discussed on
4020         webkit-dev. This should be slightly nicer than dereferencing 0xbadbeef.
4021
4022         On Darwin, CRASH() uses a breakpoint trap, which seems to corrupt the stack on Linux, so we
4023         can't do that.
4024
4025         Continue to call WTFCrash() in developer mode, and make no changes to WTFCrash(), since it
4026         is reportedly useful in nightmare scenarios where core dumps are unavailable.
4027
4028         * wtf/Assertions.h:
4029
4030 2018-11-23  Sam Weinig  <sam@webkit.org>
4031
4032         Add raw pointer overloads to ListHashSet via SmartPtr specialized functions
4033         https://bugs.webkit.org/show_bug.cgi?id=191936
4034
4035         Reviewed by Zalan Bujtas.
4036
4037         Adds overloads for find, contains, insertBefore and remove that take raw pointers
4038         when the value type V of a ListHashSet is true for the predicate IsSmartPtr<V>::value.
4039         This brings the interface to ListHashSet closer inline with HashSet, HashMap and HashCountedSet
4040         which already have this functionality. Like in the other collections, this is especially
4041         useful when using std::unique_ptr<> as the value, since there would be no way to pass it
4042         to these functions. One difference between this set of overloads is the inclusion of insertBefore,
4043         which is unique to ListHashSet. As would be expected, this specialization only changes the first
4044         parameter, the one that needs to be found, to support a raw pointer.  
4045
4046         * wtf/ListHashSet.h:
4047         (WTF::U>::find):
4048         (WTF::U>::find const):
4049         (WTF::U>::contains const):
4050         (WTF::U>::insertBefore):
4051         (WTF::U>::remove):
4052
4053 2018-11-21  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
4054
4055         [JSC] Drop ARM_TRADITIONAL support in LLInt, baseline JIT, and DFG
4056         https://bugs.webkit.org/show_bug.cgi?id=191675
4057
4058         Reviewed by Mark Lam.
4059
4060         * wtf/InlineASM.h:
4061         * wtf/Platform.h:
4062
4063 2018-11-21  Andy Estes  <aestes@apple.com>
4064
4065         [Cocoa] Create a soft-linking file for PassKit
4066         https://bugs.webkit.org/show_bug.cgi?id=191875
4067         <rdar://problem/46203215>
4068
4069         Reviewed by Myles Maxfield.
4070
4071         * wtf/Platform.h: Defined USE_PASSKIT.
4072         * wtf/cocoa/SoftLinking.h: Added _WITH_EXPORT variants of SOFT_LINK_FRAMEWORK_FOR_SOURCE,
4073         SOFT_LINK_PRIVATE_FRAMEWORK_FOR_SOURCE, SOFT_LINK_CLASS_FOR_SOURCE,
4074         SOFT_LINK_FUNCTION_FOR_SOURCE, and SOFT_LINK_CONSTANT_FOR_SOURCE.
4075
4076 2018-11-21  Dominik Infuehr  <dinfuehr@igalia.com>
4077
4078         Enable JIT on ARM/Linux
4079         https://bugs.webkit.org/show_bug.cgi?id=191548
4080
4081         Reviewed by Yusuke Suzuki.
4082
4083         Enable JIT by default on ARMv7/Linux after it was disabled with
4084         recent bytcode format change.
4085
4086         * wtf/Platform.h:
4087
4088 2018-11-14  Keith Rollin  <krollin@apple.com>
4089
4090         Fix #end vs. #endif typo.
4091         https://bugs.webkit.org/show_bug.cgi?id=191668
4092         <rdar://problem/46081704>
4093
4094         Reviewed by Alexey Proskuryakov.
4095
4096         Source/WebCore/SourcesCocoa.txt had a #end that should have been a
4097         #endif. Fix this, an add a check to generate-unified-source-bundles.rb
4098         to detect similar typos.
4099
4100         * Scripts/generate-unified-source-bundles.rb:
4101
4102 2018-11-12  Mark Lam  <mark.lam@apple.com>
4103
4104         Add OOM detection to StringPrototype's substituteBackreferences().
4105         https://bugs.webkit.org/show_bug.cgi?id=191563
4106         <rdar://problem/45720428>
4107
4108         Reviewed by Saam Barati.
4109
4110         Enhanced StringBuilder::toString() to skip the shrinkToFit(), reifyString(), and
4111         the hasOverflowed() check if m_string is not null.  When m_string is not null,
4112         the StringBuilder either only has a single String in m_string (with m_buffer being 
4113         null), or reifyString() has already been called (resulting in a non-null m_string
4114         with a possibly non-null m_buffer).
4115
4116         We can skip the overflow check because:
4117         1. if the StringBuilder only has a single String, then there cannot be an overflow.
4118         2. if reifyString() has already been called, then the hasOverflowed() checked has
4119            already been done because every code path that calls reifyString() first does
4120            the hasOverflowed() check.
4121
4122         We can skip shrinkToFit() because it only applies to m_buffer.
4123         1. if the StringBuilder only has a single String, then there's no m_buffer to shrink.
4124         2. if reifyString() has already been called, then we either came down
4125            a. the toString() path with a null m_string previously, where we would have
4126               already called shrinkToFit() before reifyString(), or
4127            b. the toStringPreserveCapacity() path where we don't want to shrinkToFit().
4128
4129         We can skip reifyString() because:
4130         1. if the StringBuilder only has a single String, then the string is already reified.
4131         2. if reifyString() has been already called, then the string is already reified.
4132
4133         Note that if m_string is the null string and m_buffer is null, reifyString() will
4134         replace it with the empty string.  For this reason, we cannot solely check for
4135         !m_buffer because we need to reify the null string into the empty string.
4136
4137         Note also that if m_string is null and m_buffer is non-null, reifyString() will
4138         create a String and set m_string to it.  However, m_buffer remains non-null.
4139         For this reason, we cannot assert !m_buffer alone when m_string is non-null.
4140         We add a m_isReified flag (only when assertions are enabled) to track the reified
4141         case where both m_buffer and m_string are non-null.
4142
4143         * wtf/text/StringBuilder.cpp:
4144         (WTF::StringBuilder::reifyString const):
4145         * wtf/text/StringBuilder.h:
4146         (WTF::StringBuilder::toString):
4147
4148 2018-11-10  Benjamin Poulain  <benjamin@webkit.org>
4149
4150         Fix a fixme: rename wtfObjcMsgSend to wtfObjCMsgSend
4151         https://bugs.webkit.org/show_bug.cgi?id=191492
4152
4153         Reviewed by Alex Christensen.
4154
4155         Because renaming ObjcRuntimeExtras.h to ObjCRuntimeExtras.h only changes
4156         the cases, some systems have issues with applying this patch.
4157
4158         To work around the problem, the change is made is two patches, first rename to
4159         WTFObjCRuntimeExtras.h, then back to ObjCRuntimeExtras.h.
4160
4161         * WTF.xcodeproj/project.pbxproj:
4162         * wtf/CMakeLists.txt:
4163         * wtf/WTFObjCRuntimeExtras.h: Renamed from Source/WTF/wtf/ObjcRuntimeExtras.h.
4164         (wtfObjCMsgSend):
4165
4166 2018-11-09  Keith Miller  <keith_miller@apple.com>
4167
4168         LLInt VectorSizeOffset should be based on offset extraction
4169         https://bugs.webkit.org/show_bug.cgi?id=191468
4170
4171         Reviewed by Yusuke Suzuki.
4172
4173         Make things friends with LLIntOffsetsExtractor.
4174
4175         * wtf/RefCountedArray.h:
4176         * wtf/Vector.h:
4177
4178 2018-11-09  Jim Mason  <jmason@ibinx.com>
4179
4180         [WTF] Changes in bug 188867 break non-Linux Unix builds
4181         https://bugs.webkit.org/show_bug.cgi?id=191380
4182
4183         The intention of 188867 was to split out platform-specific
4184         heap query/release code.  Any unsupported platform
4185         would use a generic, no-op stub.  However, wtf/PlatformGTK.cmake
4186         ended up sending all non-Linux platforms through the Linux
4187         implementation, which breaks the build for those platforms.
4188         This includes any user of the GTK target which is not Linux,
4189         such as the *BSDs, Solaris, etc.
4190
4191         Reviewed by Yusuke Suzuki.
4192
4193         * wtf/PlatformGTK.cmake: Updated to include Linux-specific
4194         code only for Linux; all other platforms use the generic stub.
4195
4196 2018-11-06  Geoffrey Garen  <ggaren@apple.com>
4197
4198         Removed mbmalloc target from WTF
4199         https://bugs.webkit.org/show_bug.cgi?id=191313
4200
4201         Reviewed by Saam Barati.
4202
4203         For benchmarking, WTF::fastMalloc is no longer meaningfully different
4204         from bmalloc. (And bmalloc has its own mbmalloc target.)
4205
4206         * Configurations/mbmalloc.xcconfig: Removed.
4207         * WTF.xcodeproj/project.pbxproj:
4208         * wtf/mbmalloc.cpp: Removed.
4209
4210 2018-11-08  Alexey Proskuryakov  <ap@apple.com>
4211
4212         Re-add PLATFORM(IOS), now with the strict meaning
4213         https://bugs.webkit.org/show_bug.cgi?id=191281
4214
4215         Reviewed by Tim Horton.
4216
4217         * wtf/Platform.h: No change in behavior. Some of the macros look a bit weird
4218         when expanded, it might be that the values are incorrect for some flavors of iOS family.
4219
4220 2018-11-08  Dean Jackson  <dino@apple.com>
4221
4222         Add a String literal that returns a String
4223         https://bugs.webkit.org/show_bug.cgi?id=191425
4224         <rdar://problem/45914556>
4225
4226         Reviewed by Sam Weinig.
4227
4228         Add a new String literal, _str, that will return a String type.
4229         This is useful when ""_s won't work, such as for things that