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