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