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