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