fb553bd61867f80672d2c74ba579e6d94a8f336c
[WebKit-https.git] / Source / WTF / ChangeLog
1 2018-09-09  Fujii Hironori  <Hironori.Fujii@sony.com>
2
3         Add specialized template declarations of HashTraits and DefaultHash to detect misuse
4         https://bugs.webkit.org/show_bug.cgi?id=189044
5
6         Reviewed by Yusuke Suzuki.
7
8         * wtf/BitVector.h: Removed unnecessary HashTraits declaration.
9         * wtf/MetaAllocatorPtr.h: Ditto.
10         * wtf/IndexSparseSet.h: Removed unused #include <wtf/HashTraits.h>.
11         * wtf/LoggingHashMap.h: Removed unused #include <wtf/LoggingHashTraits.h>.
12         * wtf/StackShot.h: Added #include <wtf/HashTraits.h> because this header uses SimpleClassHashTraits.
13         Removed unnecessary HashTraits declaration.
14
15 2018-09-07  Commit Queue  <commit-queue@webkit.org>
16
17         Unreviewed, rolling out r235784.
18         https://bugs.webkit.org/show_bug.cgi?id=189421
19
20         RunLoopCF does not agree to the fix (Requested by yusukesuzuki
21         on #webkit).
22
23         Reverted changeset:
24
25         "[RunLoopGeneric] OneShotTimer should be inactive when fired."
26         https://bugs.webkit.org/show_bug.cgi?id=189335
27         https://trac.webkit.org/changeset/235784
28
29 2018-09-07  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>
30
31         [RunLoopGeneric] OneShotTimer should be inactive when fired.
32         https://bugs.webkit.org/show_bug.cgi?id=189335
33
34         Reviewed by Yusuke Suzuki.
35
36         * wtf/generic/RunLoopGeneric.cpp:
37         (WTF::RunLoop::TimerBase::ScheduledTask::fired):
38         (WTF::RunLoop::TimerBase::isActive const):
39
40         Deactivate one-shot timer before invoking its callback. 
41
42 2018-09-05  Brent Fulgham  <bfulgham@apple.com>
43
44         The width of an empty or nullptr TextRun should be zero
45         https://bugs.webkit.org/show_bug.cgi?id=189154
46         <rdar://problem/43685926>
47
48         Reviewed by Zalan Bujtas.
49
50         Most accessors in WTFString.cpp, such as isAllASCII(), hash(), etc., perform a nullptr check
51         before using m_impl, but is8Bit() does not.
52
53         This patch adds a check in the is8Bit() implementation to be consistent with other methods,
54         and to address a small number of crashes observed in testing.
55
56         * wtf/text/WTFString.h:
57         (WTF::String::is8Bit const):
58
59 2018-09-05  Mark Lam  <mark.lam@apple.com>
60
61         Remove unused bad_optional_access implementation.
62         https://bugs.webkit.org/show_bug.cgi?id=189297
63
64         Reviewed by David Kilzer.
65
66         This is a speculative fix for resolving build errors arising from conflicting
67         definitions of bad_optional_access when building WebKit with the latest clang.
68
69         * wtf/Optional.h:
70         (std::bad_optional_access::bad_optional_access): Deleted.
71
72 2018-09-04  Michael Saboff  <msaboff@apple.com>
73
74         YARR: JIT RegExps with back references
75         https://bugs.webkit.org/show_bug.cgi?id=180874
76
77         Reviewed by Filip Pizlo.
78
79         Added ENABLE_YARR_JIT_BACKREFERENCES to enable RegExp JIT'ing of back references
80         for 64 bit platforms only.
81
82         * wtf/Platform.h:
83
84 2018-08-31  Antti Koivisto  <antti@apple.com>
85
86         Replace OptionSet |= and -= operators with add() and remove() functions
87         https://bugs.webkit.org/show_bug.cgi?id=189169
88
89         Reviewed by Anders Carlsson.
90
91         Improve code readability.
92
93         * wtf/OptionSet.h:
94         (WTF::OptionSet::add):
95         (WTF::OptionSet::remove):
96         (WTF::OptionSet::operator==):
97         (WTF::OptionSet::operator!=):
98         (WTF::OptionSet::operator|=): Deleted.
99         (WTF::OptionSet::operator-=): Deleted.
100         * wtf/ProcessPrivilege.cpp:
101         (WTF::addProcessPrivilege):
102         (WTF::removeProcessPrivilege):
103
104 2018-08-31  David Kilzer  <ddkilzer@apple.com>
105
106         REGRESSION (r226407): Remove unused BlockStack.h
107         <https://webkit.org/b/189189>
108
109         Reviewed by Yusuke Suzuki.
110
111         * WTF.xcodeproj/project.pbxproj: Remove references to BlockStack.h.
112         * wtf/BlockStack.h: Remove.
113         * wtf/CMakeLists.txt: Remove references to BlockStack.h.
114
115 2018-08-30  Don Olmstead  <don.olmstead@sony.com>
116
117         [CMake] Replace AVFoundationSupport.py using CMake
118         https://bugs.webkit.org/show_bug.cgi?id=182891
119
120         Reviewed by Per Arne Vollan.
121
122         Rely on CMake values for the added HAVE_* checks.
123
124         * wtf/Platform.h:
125
126 2018-08-30  Tim Horton  <timothy_horton@apple.com>
127
128         Bundle unified sources more tightly in projects with deep directory structures
129         https://bugs.webkit.org/show_bug.cgi?id=189009
130
131         Reviewed by Simon Fraser.
132
133         * Scripts/generate-unified-source-bundles.rb:
134         It turns out our plan to switch unified source bundle every time the directory
135         changes is not a good fit for projects like WebKit2 with many small directories.
136         It leaves many unified source bundles with only a single source file,
137         achieving only ~40% density.
138
139         Instead, switch unified source bundles every time the top-level directory changes.
140         This still achieves the goal of *usually* only rebuilding the one top-level
141         directory you touched, and increases source bundle density wildly, to ~95%.
142
143         * wtf/Platform.h:
144
145 2018-08-29  David Kilzer  <ddkilzer@apple.com>
146
147         Rename wtf/text/mac/StringMac.mm to wtf/text/cococa/StringCococa.mm
148         <https://webkit.org/b/189082>
149
150         Reviewed by Sam Weinig.
151
152         Includes a drive-by fix for a webkit-style warning:
153
154             ERROR: Source/WTF/wtf/text/cocoa/StringCocoa.mm:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
155
156         * WTF.xcodeproj/project.pbxproj: Update for move and rename.
157         * wtf/PlatformMac.cmake: Add missing cocoa/StringCocoa.mm source
158         file.  Drive-by fix for rename of
159         TextBreakIteratorInternalICUMac.mm to
160         TextBreakIteratorInternalICUCocoa.cpp.
161         * wtf/text/cocoa/StringCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringMac.mm.
162         (WTF::String::String):
163
164 2018-08-27  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
165
166         [WebAssembly] Parse wasm modules in a streaming fashion
167         https://bugs.webkit.org/show_bug.cgi?id=188943
168
169         Reviewed by Mark Lam.
170
171         Add maxByteLength function to get the maximum size for T.
172
173         * wtf/LEBDecoder.h:
174         (WTF::LEBDecoder::maxByteLength):
175         (WTF::LEBDecoder::decodeUInt):
176         (WTF::LEBDecoder::decodeInt):
177
178 2018-08-27  Keith Rollin  <krollin@apple.com>
179
180         Unreviewed build fix -- disable LTO for production builds
181
182         * Configurations/Base.xcconfig:
183
184 2018-08-27  Aditya Keerthi  <akeerthi@apple.com>
185
186         Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
187         https://bugs.webkit.org/show_bug.cgi?id=188931
188
189         Reviewed by Wenson Hsieh.
190
191         * wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
192
193 2018-08-27  Keith Rollin  <krollin@apple.com>
194
195         Build system support for LTO
196         https://bugs.webkit.org/show_bug.cgi?id=187785
197         <rdar://problem/42353132>
198
199         Reviewed by Dan Bernstein.
200
201         Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
202         LTO.
203
204         * Configurations/Base.xcconfig:
205         * Configurations/DebugRelease.xcconfig:
206
207 2018-08-25  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
208
209         Shrink size of XMLHttpRequest
210         https://bugs.webkit.org/show_bug.cgi?id=188944
211
212         Reviewed by Saam Barati.
213
214         StringBuilder is included in XMLHttpRequest. We reduce the size of StringBuilder too
215         by reordering members.
216
217         * wtf/text/StringBuilder.h:
218         (WTF::StringBuilder::StringBuilder):
219
220 2018-08-24  Tim Horton  <timothy_horton@apple.com>
221
222         Improve unified source generator script logging and error messages
223         https://bugs.webkit.org/show_bug.cgi?id=188932
224
225         Reviewed by Simon Fraser.
226
227         * Scripts/generate-unified-source-bundles.rb:
228         Add the ability to explain why you're getting usage() instead of just printing it.
229         Capitalize log messages, and improve the wording in a few places.
230
231 2018-08-24  Antti Koivisto  <antti@apple.com>
232
233         Allow creating WeakPtrs to const objects
234         https://bugs.webkit.org/show_bug.cgi?id=188785
235
236         Reviewed by Geoff Garen.
237
238         const Foo foo;
239         WeakPtr<const Foo> weakConstFoo = makeWeakPtr(foo);
240
241         * wtf/WeakPtr.h:
242         (WTF::WeakPtrFactory::createWeakPtr const):
243
244         Add a separate factory function for const T.
245         The underlying WeakReference is kept non-const in all cases.
246
247 2018-08-23  David Fenton  <david_fenton@apple.com>
248
249         Unreviewed, rolling out r235129.
250
251         broke internal builds
252
253         Reverted changeset:
254
255         "Allow creating WeakPtrs to const objects"
256         https://bugs.webkit.org/show_bug.cgi?id=188785
257         https://trac.webkit.org/changeset/235129
258
259 2018-08-23  Don Olmstead  <don.olmstead@sony.com>
260
261         [CMake] Add HAVE_MALLOC_TRIM definition
262         https://bugs.webkit.org/show_bug.cgi?id=188897
263
264         Reviewed by Konstantin Tokarev.
265
266         Use HAVE(MALLOC_TRIM) check instead of __GLIBC__.
267
268         * wtf/linux/MemoryPressureHandlerLinux.cpp:
269         (WTF::MemoryPressureHandler::platformReleaseMemory):
270
271 2018-08-23  Don Olmstead  <don.olmstead@sony.com>
272
273         [WTF] Add generic implementation for Memory querying
274         https://bugs.webkit.org/show_bug.cgi?id=188867
275         <rdar://problem/43630726>
276
277         Unreviewed build fix.
278
279         Adding MemoryPressureHandler::memoryMeasurementTimerFired was done
280         prematurely.
281
282         * wtf/generic/MemoryPressureHandlerGeneric.cpp:
283         (WTF::MemoryPressureHandler::memoryMeasurementTimerFired): Deleted.
284
285 2018-08-22  Don Olmstead  <don.olmstead@sony.com>
286
287         [WTF] Add generic implementation for Memory querying
288         https://bugs.webkit.org/show_bug.cgi?id=188867
289
290         Reviewed by Fujii Hironori.
291
292         Moves generic implementation of MemoryPressureHandler from
293         MemoryPressureHandler.cpp into MemoryPressureHandlerGeneric
294         and generic implementation of memoryFootprint from
295         MemoryFootprintLinux.cpp to MemoryFootprintGeneric.
296
297         * wtf/MemoryPressureHandler.cpp:
298         (WTF::MemoryPressureHandler::install): Deleted.
299         (WTF::MemoryPressureHandler::uninstall): Deleted.
300         (WTF::MemoryPressureHandler::respondToMemoryPressure): Deleted.
301         (WTF::MemoryPressureHandler::platformReleaseMemory): Deleted.
302         (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage): Deleted.
303         * wtf/PlatformJSCOnly.cmake:
304         * wtf/generic/MemoryFootprintGeneric.cpp: Added.
305         (WTF::memoryFootprint):
306         * wtf/generic/MemoryPressureHandlerGeneric.cpp: Added.
307         (WTF::MemoryPressureHandler::memoryMeasurementTimerFired):
308         (WTF::MemoryPressureHandler::platformReleaseMemory):
309         (WTF::MemoryPressureHandler::install):
310         (WTF::MemoryPressureHandler::uninstall):
311         (WTF::MemoryPressureHandler::holdOff):
312         (WTF::MemoryPressureHandler::respondToMemoryPressure):
313         (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
314         * wtf/linux/CurrentProcessMemoryStatus.cpp:
315         * wtf/linux/CurrentProcessMemoryStatus.h:
316         * wtf/linux/MemoryFootprintLinux.cpp:
317         (WTF::computeMemoryFootprint):
318         (WTF::memoryFootprint):
319         * wtf/linux/MemoryPressureHandlerLinux.cpp:
320
321 2018-08-21  Antti Koivisto  <antti@apple.com>
322
323         Allow creating WeakPtrs to const objects
324         https://bugs.webkit.org/show_bug.cgi?id=188785
325
326         Reviewed by Geoffrey Garen.
327
328         const Foo foo;
329         WeakPtr<const Foo> weakConstFoo = makeWeakPtr(foo);
330
331         * wtf/WeakPtr.h:
332         (WTF::WeakPtrFactory::createWeakPtr const):
333
334         Add a separate factory function for const T.
335         The underlying WeakReference is kept non-const in all cases.
336
337 2018-08-21  Carlos Garcia Campos  <cgarcia@igalia.com>
338
339         [Linux] Cache the memory footprint and only update it after 1 second
340         https://bugs.webkit.org/show_bug.cgi?id=188791
341
342         Reviewed by Yusuke Suzuki.
343
344         Getting the memory footprint is an expensive operation in Linux. When called multiple times, the CPU usage is
345         too much (see bug #188787). We could cache the result for at least 1 second to ensure we don't call it more than
346         once per second.
347
348         * wtf/linux/MemoryFootprintLinux.cpp:
349         (WTF::forEachLine):
350         (WTF::computeMemoryFootprint):
351         (WTF::memoryFootprint):
352
353 2018-08-20  Saam barati  <sbarati@apple.com>
354
355         Inline DataView accesses into DFG/FTL
356         https://bugs.webkit.org/show_bug.cgi?id=188573
357         <rdar://problem/43286746>
358
359         Reviewed by Michael Saboff.
360
361         * wtf/TriState.h:
362
363 2018-08-19  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
364
365         [WTF] Add WTF::unalignedLoad and WTF::unalignedStore
366         https://bugs.webkit.org/show_bug.cgi?id=188716
367
368         Reviewed by Darin Adler.
369
370         While some CPUs allow unaligned accesses to memory, doing it in C++ with `reinterpret_cast<>` is
371         undefined behavior. This patch adds WTF::{unalignedLoad,unalignedStore} helper functions, which
372         can load from and store to the pointer in an unaligned manner.
373         Actual implementation uses `memcpy`. This can be optimized to direct unaligned access operations
374         in supported CPUs like x86. Even though a CPU does not support unaligned accesses, memcpy is still
375         safe and the compiler emits appropriate code.
376
377         We name these functions `unalignedLoad` and `unalignedStore` instead of `loadUnaligned` and `storeUnaligned`
378         in order to align them to `atomicLoad` and `atomicStore`.
379
380         * WTF.xcodeproj/project.pbxproj:
381         * wtf/CMakeLists.txt:
382         * wtf/UnalignedAccess.h: Added.
383         (WTF::unalignedLoad):
384         (WTF::unalignedStore):
385         * wtf/text/StringCommon.h:
386         (WTF::equal):
387         (WTF::loadUnaligned): Deleted.
388
389 2018-08-17  David Kilzer  <ddkilzer@apple.com>
390
391         WTF's internal std::optional implementation should release assert on all bad accesses
392         <https://webkit.org/b/187669>
393
394         Reviewed by Ryosuke Niwa.
395
396         * wtf/Assertions.h:
397         (RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT): Add macro definitions.
398         * wtf/Optional.h:
399         (std::optional::operator -> const):
400         (std::optional::operator ->):
401         (std::optional::operator * const):
402         (std::optional::operator *):
403         (std::optional::value const):
404         (std::optional::value):
405         (std::optional<T::operator-> const):
406         (std::optional<T::operator* const):
407         (std::optional<T::value const):
408         - Change ASSERT_UNDER_CONSTEXPR_CONTEXT() macros to
409           RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT() macros.
410
411 2018-08-16  Andy Estes  <aestes@apple.com>
412
413         [watchOS] Upstream Proximity Networking (nee Wi-Fi Assertions)
414         https://bugs.webkit.org/show_bug.cgi?id=188664
415
416         Reviewed by Tim Horton.
417
418         * wtf/FeatureDefines.h: Defined ENABLE_PROXIMITY_NETWORKING to 1 on watchOS.
419
420 2018-08-16  Alex Christensen  <achristensen@webkit.org>
421
422         Re-introduce assertion removed in r234890
423         https://bugs.webkit.org/show_bug.cgi?id=188611
424
425         Reviewed by Geoffrey Garen.
426
427         * wtf/text/WTFString.h:
428
429 2018-08-16  Antti Koivisto  <antti@apple.com>
430
431         Use OptionSet for ActivityState::Flags
432         https://bugs.webkit.org/show_bug.cgi?id=188554
433
434         Reviewed by Brent Fulgham.
435
436         * wtf/OptionSet.h:
437         (WTF::OptionSet::operator^):
438
439         Add xor operator, useful for finding changes between sets.
440
441 2018-08-15  Ben Richards  <benton_richards@apple.com>
442
443         We should cache the compiled sandbox profile in a data vault
444         https://bugs.webkit.org/show_bug.cgi?id=184991
445
446         Reviewed by Ryosuke Niwa.
447
448         Added trace points for sandbox initialization and exposed functions needed for sandbox caching
449
450         * wtf/SystemTracing.h:
451         * wtf/spi/darwin/SandboxSPI.h:
452
453 2018-08-15  Michael Catanzaro  <mcatanzaro@igalia.com>
454
455         [WPE][GTK] WaylandCompositor fails to properly remove surface from its page map
456         https://bugs.webkit.org/show_bug.cgi?id=188520
457
458         Reviewed by Alex Christensen.
459
460         Add a comment pointing to CanMakeWeakPtr, since it's useful and I very nearly missed it.
461
462         * wtf/WeakPtr.h:
463
464 2018-08-14  Saam barati  <sbarati@apple.com>
465
466         HashMap<Ref<P>, V> asserts when V is not zero for its empty value
467         https://bugs.webkit.org/show_bug.cgi?id=188582
468
469         Reviewed by Sam Weinig.
470
471         The issue happened when we'd fill the hash table buffer with empty values. We
472         would iterate the buffer and invoke placement new with the incoming value being the
473         empty value. For Ref, this means that, we'd call its move constructor, which calls
474         leakRef(), which asserts that the Ref's pointer is not null. We'd like to keep
475         this assert since it catches bugs where you leakRef() more than once or WTFMove
476         an already moved Ref.
477         
478         This patch fixes this issue by adding a new trait for constructing an empty
479         value. We use that in HashTable instead of directly calling placement new.
480
481         * wtf/HashTable.h:
482         (WTF::HashTableBucketInitializer<false>::initialize):
483         * wtf/HashTraits.h:
484         (WTF::GenericHashTraits::constructEmptyValue):
485         (WTF::HashTraits<Ref<P>>::constructEmptyValue):
486         (WTF::KeyValuePairHashTraits::constructEmptyValue):
487
488 2018-08-14  Fujii Hironori  <Hironori.Fujii@sony.com>
489
490         Unreviewed, rolling out r234859.
491
492         Windows ports can't compile
493
494         Reverted changeset:
495
496         "Use a Variant instead of a union in CSSSelector"
497         https://bugs.webkit.org/show_bug.cgi?id=188559
498         https://trac.webkit.org/changeset/234859
499
500 2018-08-14  Alex Christensen  <achristensen@webkit.org>
501
502         isValidCSSSelector is unsafe to be called from a non-main thread
503         https://bugs.webkit.org/show_bug.cgi?id=188581
504         <rdar://problem/40517358>
505
506         Reviewed by Sam Weinig.
507
508         * wtf/Vector.h:
509         (WTF::minCapacity>::isolatedCopy):
510
511 2018-08-14  Alex Christensen  <achristensen@webkit.org>
512
513         Use a Variant instead of a union in CSSSelector
514         https://bugs.webkit.org/show_bug.cgi?id=188559
515
516         Reviewed by Antti Koivisto.
517
518         * wtf/Variant.h:
519         Add packing macros to make it so Variant-containing structures don't always have 7 bytes of padding per Variant.
520
521 2018-08-13  Don Olmstead  <don.olmstead@sony.com>
522
523         Meaning of OptionSet::contains is unclear when used with OptionSet argument
524         https://bugs.webkit.org/show_bug.cgi?id=188501
525         <rdar://problem/43246242>
526
527         Reviewed by Simon Fraser.
528
529         MSVC is unable to compile contains using an initializer_list within a lambda.
530
531         * wtf/OptionSet.h:
532         (WTF::OptionSet::contains const):
533
534 2018-08-13  Antti Koivisto  <antti@apple.com>
535
536         Meaning of OptionSet::contains is unclear when used with OptionSet argument
537         https://bugs.webkit.org/show_bug.cgi?id=188501
538
539         Reviewed by Anders Carlsson.
540
541         The existing behavior is "contains any" but it is not very clear from the name.
542
543         * wtf/OptionSet.h:
544         (WTF::OptionSet::contains const):
545
546         This is now for testing a single option only.
547
548         (WTF::OptionSet::containsAny const):
549         (WTF::OptionSet::containsAll const):
550
551         Add separate functions for OptionSet argument.
552
553 2018-08-13  Commit Queue  <commit-queue@webkit.org>
554
555         Unreviewed, rolling out r234747.
556         https://bugs.webkit.org/show_bug.cgi?id=188524
557
558         plugin processes crash on launch (Requested by smfr on
559         #webkit).
560
561         Reverted changeset:
562
563         "We should cache the compiled sandbox profile in a data vault"
564         https://bugs.webkit.org/show_bug.cgi?id=184991
565         https://trac.webkit.org/changeset/234747
566
567 2018-08-10  Ryosuke Niwa  <rniwa@webkit.org>
568
569         [macOS] Multiple third party apps crash due to the thread safety check in TimerBase::setNextFireTime
570         https://bugs.webkit.org/show_bug.cgi?id=188480
571
572         Reviewed by Simon Fraser.
573
574         Added the SDK version for macOS Mojave.
575
576         * wtf/spi/darwin/dyldSPI.h:
577
578 2018-08-10  Antti Koivisto  <antti@apple.com>
579
580         Use OptionSet for various RenderLayer flags
581         https://bugs.webkit.org/show_bug.cgi?id=188472
582
583         Reviewed by Simon Fraser.
584
585         * wtf/MathExtras.h:
586         (hasOneBitSet):
587         (hasZeroOrOneBitsSet):
588         (hasTwoOrMoreBitsSet):
589
590         Make constexpr.
591
592         * wtf/OptionSet.h:
593         (WTF::OptionSet::OptionSet):
594
595         Always use constexpr, no need for separate debug versions with C++14.
596
597 2018-08-09  Ben Richards  <benton_richards@apple.com>
598
599         We should cache the compiled sandbox profile in a data vault
600         https://bugs.webkit.org/show_bug.cgi?id=184991
601
602         Reviewed by Ryosuke Niwa.
603
604         Added trace points for sandbox initialization and exposed functions needed for sandbox caching
605
606         * wtf/SystemTracing.h:
607         * wtf/spi/darwin/SandboxSPI.h:
608
609 2018-08-09  Saam Barati  <sbarati@apple.com>
610
611         memoryFootprint should return size_t not optional<size_t>
612         https://bugs.webkit.org/show_bug.cgi?id=188444
613
614         Reviewed by Simon Fraser.
615
616         We're now going to return zero instead of returning nullopt on failure.
617         There was a lot of code dancing around memoryFootprint failing for no
618         good reason.
619         
620         Users of this API were previously doing this on failure:
621         - Treating it as zero (this was the most common user).
622         - Crashing.
623         - Bailing out early and not changing our memory pressure state. This change
624         has the effect that instead of not changing our memory pressure state on
625         failure, we will go back to thinking we're not under memory pressure. Since
626         we relied on this API not failing to do anything useful (like kill the process
627         or release memory), this won't change our behavior here in a meaningful way.
628
629         * wtf/MemoryFootprint.h:
630         * wtf/MemoryPressureHandler.cpp:
631         (WTF::MemoryPressureHandler::currentMemoryUsagePolicy):
632         (WTF::MemoryPressureHandler::shrinkOrDie):
633         (WTF::MemoryPressureHandler::measurementTimerFired):
634         * wtf/cocoa/MemoryFootprintCocoa.cpp:
635         (WTF::memoryFootprint):
636         * wtf/linux/MemoryFootprintLinux.cpp:
637         (WTF::memoryFootprint):
638         * wtf/linux/MemoryPressureHandlerLinux.cpp:
639         (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
640         * wtf/win/MemoryFootprintWin.cpp:
641         (WTF::memoryFootprint):
642
643 2018-08-05  Darin Adler  <darin@apple.com>
644
645         [Cocoa] More tweaks and refactoring to prepare for ARC
646         https://bugs.webkit.org/show_bug.cgi?id=188245
647
648         Reviewed by Dan Bernstein.
649
650         * WTF.xcodeproj/project.pbxproj: Updated for rename: FoundationSPI.h -> objcSPI.h.
651
652         * wtf/BlockPtr.h: Added missing include of "StdLibExtras.h".
653         Also re-sorted includes.
654
655         * wtf/HashFunctions.h: Add function for "__unsafe_unretained id".
656         * wtf/HashTraits.h: Add traits for "__unsafe_unretained id".
657
658         * wtf/PlatformMac.cmake: Updated for rename: FoundationSPI.h -> objcSPI.h.
659
660         * wtf/WeakObjCPtr.h: Use mutable instead of const_cast, and write a version
661         that uses __weak explicitly under ARC. Also moved function declarations from
662         here to objcSPI.h.
663
664         * wtf/cocoa/AutodrainedPool.cpp: Updated include for rename: FoundationSPI.h -> objcSPI.h.
665
666         * wtf/spi/cocoa/objcSPI.h: Renamed from FoundationSPI.h and added the
667         additional functions used by WeakObjCPtr.h. Also changed to both include the
668         internal header and the function definitions when compiling with
669         USE(APPLE_INTERNAL_SDK), helping us check that function definitions match.
670
671 2018-08-07  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
672
673         Shrink size of PropertyCondition by packing UniquedStringImpl* and Kind
674         https://bugs.webkit.org/show_bug.cgi?id=188328
675
676         Reviewed by Saam Barati.
677
678         This patch adds CompactPointerTuple, which can pack a pointer and 8bit value into 8bytes.
679         In 32bit architecture, it just has two fields for a pointer and 8bit value. In 64bit architecture,
680         we use upper 5bits (zeros because of the effective width of virtual address) and lower 3bits (zeros
681         because of the alignment ensured by static_assert) to pack 8bit value into the pointer data. Since
682         even the 5-level page tables use 57bit effective address, this strategy works well.
683
684         * WTF.xcodeproj/project.pbxproj:
685         * wtf/CMakeLists.txt:
686         * wtf/CompactPointerTuple.h: Added.
687         (WTF::CompactPointerTuple::encodeType):
688         (WTF::CompactPointerTuple::decodeType):
689         (WTF::CompactPointerTuple::CompactPointerTuple):
690         (WTF::CompactPointerTuple::pointer const):
691         (WTF::CompactPointerTuple::setPointer):
692         (WTF::CompactPointerTuple::type const):
693         (WTF::CompactPointerTuple::setType):
694         * wtf/Platform.h:
695
696 2018-08-07  Ryan Haddad  <ryanhaddad@apple.com>
697
698         Unreviewed, suppress warnings to fix the build.
699
700         * wtf/SHA1.cpp:
701         (WTF::SHA1::SHA1):
702         (WTF::SHA1::addBytes):
703         (WTF::SHA1::computeHash):
704
705 2018-08-07  Karo Gyoker  <karogyoker2+webkit@gmail.com>
706
707         Hardcoded LFENCE instruction
708         https://bugs.webkit.org/show_bug.cgi?id=188145
709
710         Reviewed by Filip Pizlo.
711
712         Remove lfence instruction because it is crashing systems without SSE2 and
713         this is not the way how WebKit mitigates Spectre.
714
715         * wtf/Atomics.h:
716         (WTF::crossModifyingCodeFence):
717         (WTF::speculationFence): Deleted.
718         (WTF::x86_lfence): Deleted.
719
720 2018-08-07  Antti Koivisto  <antti@apple.com>
721
722         Web process never leaves memory pressured state if caused by process size limit
723         https://bugs.webkit.org/show_bug.cgi?id=188299
724         <rdar://problem/42157442>
725
726         Reviewed by Darin Adler.
727
728         For vm memory pressure warnings we get notified when exiting the state and we can clear
729         the isUnderMemoryPressure bit. However as a compatibility behavior we were also notified using
730         the same event when approaching the process size limit. In this case there is no "all clear"
731         event so we'd stay in pressured state forever, leading to unnecessarily degraded user experience.
732
733         * WTF.xcodeproj/project.pbxproj:
734         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
735         (WTF::MemoryPressureHandler::install):
736
737         Install a handler for process size limit events. This disables the compatibility behavior,
738         vm pressure events will be received for vm pressure only.
739
740         Process size limit events are treated as one-shot. We do cleanups based on criticality but
741         don't enter the pressured state.
742
743         (WTF::MemoryPressureHandler::uninstall):
744         (WTF::MemoryPressureHandler::holdOff):
745         * wtf/spi/darwin/DispatchSPI.h: Added.
746
747 2018-08-06  Alex Christensen  <achristensen@webkit.org>
748
749         Use enum classes and OptionSets for PaintPhase and PaintBehavior
750         https://bugs.webkit.org/show_bug.cgi?id=188323
751
752         Reviewed by Simon Fraser.
753
754         * wtf/OptionSet.h:
755         (WTF::OptionSet::OptionSet):
756         Allow a zero-valued enum value in the OptionSet constructor.
757
758 2018-08-06  Ryan Haddad  <ryanhaddad@apple.com>
759
760         Unreviewed, rolling out r234569.
761
762         Breaks internal builds.
763
764         Reverted changeset:
765
766         "We should cache the compiled sandbox profile in a data vault"
767         https://bugs.webkit.org/show_bug.cgi?id=184991
768         https://trac.webkit.org/changeset/234569
769
770 2018-08-03  Ryan Haddad  <ryanhaddad@apple.com>
771
772         Unreviewed, fix the build by ignoring some deprecation warnings.
773
774         * wtf/MD5.cpp:
775         (WTF::MD5::MD5):
776         (WTF::MD5::addBytes):
777         (WTF::MD5::checksum):
778
779 2018-08-03  Ben Richards  <benton_richards@apple.com>
780
781         We should cache the compiled sandbox profile in a data vault
782         https://bugs.webkit.org/show_bug.cgi?id=184991
783
784         Reviewed by Ryosuke Niwa.
785
786         Added trace points for sandbox initialization and exposed functions needed for sandbox caching
787
788         * wtf/SystemTracing.h:
789         * wtf/spi/darwin/SandboxSPI.h:
790
791 2018-08-02  Saam Barati  <sbarati@apple.com>
792
793         Reading instructionPointer from PlatformRegisters may fail when using pointer tagging
794         https://bugs.webkit.org/show_bug.cgi?id=188271
795         <rdar://problem/42850884>
796
797         Reviewed by Michael Saboff.
798
799         * wtf/PtrTag.h:
800         (WTF::isTaggedWith):
801         (WTF::usesPointerTagging):
802
803 2018-08-02  Alex Christensen  <achristensen@webkit.org>
804
805         Add some Variant types to Forward.h
806         https://bugs.webkit.org/show_bug.cgi?id=188250
807
808         * wtf/Forward.h:
809
810 2018-08-02  David Fenton  <david_fenton@apple.com>
811
812         Unreviewed, rolling out r234489.
813
814         Caused 50+ crashes and 60+ API failures on iOS
815
816         Reverted changeset:
817
818         "[WTF] Rename String::format to String::deprecatedFormat"
819         https://bugs.webkit.org/show_bug.cgi?id=188191
820         https://trac.webkit.org/changeset/234489
821
822 2018-08-01  Tomas Popela  <tpopela@redhat.com>
823
824         [WTF] Rename String::format to String::deprecatedFormat
825         https://bugs.webkit.org/show_bug.cgi?id=188191
826
827         Reviewed by Darin Adler.
828
829         It should be replaced with string concatenation.
830
831         * wtf/Assertions.cpp:
832         * wtf/JSONValues.cpp:
833         * wtf/WorkQueue.cpp:
834         (WTF::WorkQueue::concurrentApply):
835         * wtf/dtoa.cpp:
836         (WTF::dtoa):
837         * wtf/text/WTFString.cpp:
838         (WTF::String::deprecatedFormat):
839         (WTF::String::format): Deleted.
840         * wtf/text/WTFString.h:
841
842 2018-07-31  Tomas Popela  <tpopela@redhat.com>
843
844         [WTF] String::formatWithArguments() is unused
845         https://bugs.webkit.org/show_bug.cgi?id=187955
846
847         Reviewed by Darin Adler.
848
849         This method is unused, remove it.
850
851         * wtf/text/WTFString.cpp:
852         (WTF::String::formatWithArguments): Deleted.
853         * wtf/text/WTFString.h:
854
855 2018-07-28  Mark Lam  <mark.lam@apple.com>
856
857         Gardening: build fix for internal builds.
858         https://bugs.webkit.org/show_bug.cgi?id=188123
859         <rdar://problem/42672268>
860
861         Not reviewed.
862
863         Some code is relying on RELEASE_ASSERT (without extra crash info arguments)
864         being purely inlined and not require linkage to an external symbol.  This patch
865         restores this property of the original RELEASE_ASSERT.
866
867         This means moving the variant of WTFCrashWithInfo that does not take extra args
868         to Assertions.h and making it an "inline" function.  When compiling with clang,
869         we also specify __attribute__((optnone)) to force the function out of being an
870         inline function (each linkage unit will get a copy of the function).  This causes
871         the 1st 4 arguments of WTFCrashWithInfo (e.g. line number) to still be captured
872         in the argument registers for crash diagnostics.
873
874         * wtf/Assertions.cpp:
875         (WTFCrashWithInfo):
876         * wtf/Assertions.h:
877
878 2018-07-27  Mark Lam  <mark.lam@apple.com>
879
880         Add some crash info to Heap::checkConn() RELEASE_ASSERTs.
881         https://bugs.webkit.org/show_bug.cgi?id=188123
882         <rdar://problem/42672268>
883
884         Reviewed by Keith Miller.
885
886         1. Rename STUFF_FOR_CRASH_REGISTERx to CRASH_GPRx.  These are only used in
887            locally in Assertions.cpp.  There is little to no chance of a name collision,
888            and the shorter names will be much easier to read and grok in the code.
889
890         2. Added an additional 2 registers so that we can pass more info.
891
892         3. Change the WTFCrashWithInfo() implementations to issue only a single asm
893            statement so that the compiler does not inadvertently move values out of the
894            CRASH_GPRs that we want them to be in.
895
896         4. Use register targeting for local variables to get the compiler to put our
897            desired values in specific registers.  For how this works, see
898            https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html#Local-Register-Variables
899
900            "The only supported use for this feature is to specify registers for input and
901            output operands when calling Extended asm (see Extended Asm).  This may be
902            necessary if the constraints for a particular machine don’t provide sufficient
903            control to select the desired register."
904
905         5. Enhance ASSERT, ASSERT_UNUSED, RELEASE_ASSERT, RELEASE_ASSERT_NOT_REACHED to
906            accept crash info arguments.  We no longer need to use an if statement with a
907            call to CRASH_WITH_INFO instead of these assertions.  The only case not handled
908            yet is one where we might want to dataLog some info before the crash.  I'll
909            add that functionality in a subsequent patch.
910
911         6. Move UNREACHABLE_FOR_PLATFORM to the bottom of Assertions.h because it depends
912            on the definition of RELEASE_ASSERT_NOT_REACHED, which now depends on the
913            definiton of CRASH_WITH_INFO.
914
915         * wtf/Assertions.cpp:
916         (WTFCrashWithInfo):
917         * wtf/Assertions.h:
918
919 2018-07-27  Alex Christensen  <achristensen@webkit.org>
920
921         Make CompletionHandler more const correct
922         https://bugs.webkit.org/show_bug.cgi?id=186543
923
924         Reviewed by Saam Barati.
925
926         * wtf/CompletionHandler.h:
927         (WTF::CompletionHandler<Out):
928         Calling a CompletionHandler mutates it. Make the code reflect that.
929
930 2018-07-27  Simon Fraser  <simon.fraser@apple.com>
931
932         Be more conservative with compositing layer creation when memory is low
933         https://bugs.webkit.org/show_bug.cgi?id=187866
934         rdar://problem/42366345
935
936         Reviewed by Zalan Bujtas.
937         
938         When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
939         compositing layers. We avoid compositing for these situations:
940         1. Layers with 3D transforms which are affine (like translateZ(0)).
941         2. Layers with will-change
942         3. Layers for canvases (other than WebGL/WebGPU)
943         
944         We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
945         falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
946         Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
947         
948         Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
949         flakily falling into a different mode, and so that we can impose the conservative
950         mode for testing.
951
952         * wtf/MemoryPressureHandler.cpp:
953         (WTF::thresholdForPolicy):
954         (WTF::MemoryPressureHandler::currentMemoryUsagePolicy):
955         * wtf/MemoryPressureHandler.h:
956
957 2018-07-26  Andy VanWagoner  <andy@vanwagoner.family>
958
959         [INTL] Remove INTL sub-feature compile flags
960         https://bugs.webkit.org/show_bug.cgi?id=188081
961
962         Reviewed by Michael Catanzaro.
963
964         Removed INTL sub-feature compile flags, and an old unused i18n flag.
965
966         * wtf/FeatureDefines.h:
967
968 2018-07-26  Chris Dumez  <cdumez@apple.com>
969
970         It should be possible to use WTF::CallbackAggregator from a background thread
971         https://bugs.webkit.org/show_bug.cgi?id=188084
972
973         Reviewed by Alex Christensen.
974
975         Make WTF::CallbackAggregator usable on background threads by updating its destructor to call the
976         completion handler on whatever thread it is destroyed on, instead of always dispatching to the
977         main thread before calling the completion handler.
978
979         Existing CallbackAggregator users that deal with threads have been updated to make sure they
980         destroy the CallbackAggregator on the expected thread.
981
982         This will allow us to use CallbackAggregator in the ResourceLoadStatisticsMemoryStore, which lives
983         on a background WorkQueue.
984
985         * wtf/CallbackAggregator.h:
986         (WTF::CallbackAggregator::~CallbackAggregator):
987         (WTF::CallbackAggregator::CallbackAggregator):
988
989 2018-07-26  Ross Kirsling  <ross.kirsling@sony.com>
990
991         String(View) should have a splitAllowingEmptyEntries function instead of a flag parameter
992         https://bugs.webkit.org/show_bug.cgi?id=187963
993
994         Reviewed by Alex Christensen.
995
996         * wtf/Assertions.cpp:
997         Update split/splitAllowingEmptyEntries usage.
998
999         * wtf/text/StringView.h:
1000         (WTF::StringView::splitAllowingEmptyEntries const):
1001         * wtf/text/WTFString.cpp:
1002         (WTF::String::splitInternal const):
1003         (WTF::String::split const):
1004         (WTF::String::splitAllowingEmptyEntries const):
1005         * wtf/text/WTFString.h:
1006         (WTF::String::split const):
1007         Introduce splitAllowingEmptyEntries instead of boolean or enum parameter.
1008
1009 2018-07-26  Sam Weinig  <sam@webkit.org>
1010
1011         Remove unused/undefined String::appendInternal
1012         https://bugs.webkit.org/show_bug.cgi?id=188063
1013
1014         Reviewed by Daniel Bates.
1015
1016         * wtf/text/WTFString.h:
1017         String::appendInternal is declared in WTFString.h, but is never used
1018         and and never even defined. Remove it.
1019
1020 2018-07-26  Commit Queue  <commit-queue@webkit.org>
1021
1022         Unreviewed, rolling out r234181 and r234189.
1023         https://bugs.webkit.org/show_bug.cgi?id=188075
1024
1025         These are not needed right now (Requested by thorton on
1026         #webkit).
1027
1028         Reverted changesets:
1029
1030         "Enable Web Content Filtering on watchOS"
1031         https://bugs.webkit.org/show_bug.cgi?id=187979
1032         https://trac.webkit.org/changeset/234181
1033
1034         "HAVE(PARENTAL_CONTROLS) should be true on watchOS"
1035         https://bugs.webkit.org/show_bug.cgi?id=187985
1036         https://trac.webkit.org/changeset/234189
1037
1038 2018-07-04  Darin Adler  <darin@apple.com>
1039
1040         Improve WebGPU implementation, including using Metal Objective-C protocols more simply and correctly
1041         https://bugs.webkit.org/show_bug.cgi?id=187333
1042
1043         Reviewed by Sam Weinig.
1044
1045         * wtf/Compiler.h: Added OBJC_PROTOCOL, a macro for convieniently treating an
1046         Objective-C protocol in a way that lets it be mentioned in a C++ source file.
1047         This is the rough equivalent of OBJC_CLASS, but for protocols.
1048
1049         * wtf/Platform.h: Added USE(METAL), alongside USE(OPENGL) and the like.
1050         Now used in the WebGPU platform layer to guard the Metal-specific code.
1051
1052 2018-07-26  Tomas Popela  <tpopela@redhat.com>
1053
1054         [WTF] Coverity scan issues
1055         https://bugs.webkit.org/show_bug.cgi?id=186800
1056
1057         Reviewed by Brent Fulgham.
1058
1059         * wtf/CheckedArithmetic.h: Swap the operands to multiply().
1060         * wtf/ThreadSpecific.h: Initialize the m_key variable.
1061         * wtf/dtoa.cpp: Initialize the next variable.
1062
1063 2018-07-25  Tomas Popela  <tpopela@redhat.com>
1064
1065         Correctly close the variable argument list
1066         https://bugs.webkit.org/show_bug.cgi?id=186758
1067
1068         Reviewed by Michael Catanzaro.
1069
1070         The argcCopy is not ended when we early return. Also don't call
1071         va_end() on args because it's closed in caller.
1072
1073         * wtf/text/WTFString.cpp:
1074         (WTF::createWithFormatAndArguments):
1075
1076 2018-07-24  Tim Horton  <timothy_horton@apple.com>
1077
1078         HAVE(PARENTAL_CONTROLS) should be true on watchOS
1079         https://bugs.webkit.org/show_bug.cgi?id=187985
1080         <rdar://problem/42559346>
1081
1082         Reviewed by Andy Estes.
1083
1084         * wtf/Platform.h:
1085
1086 2018-07-24  Daniel Bates  <dabates@apple.com>
1087
1088         Move-constructing NeverDestroyed should move construct underlying object instead of copy constructing it
1089         https://bugs.webkit.org/show_bug.cgi?id=187971
1090
1091         Reviewed by Saam Barati.
1092
1093         Fixes an issue where move constructing a NeverDestroyed<T> would always copy construct T into
1094         the destination storage buffer regardless of whether T is move constructable. For example:
1095
1096         {
1097             static NeverDestroyed<T> x;
1098             static NeverDestroyed<T> y { WTFMove(x) }; // currently makes a copy of x's T even if T is move constructable
1099         }
1100
1101         Currently the NeverDestroyed<T> instantiates T into the destination storage buffer by WTFMove()ing
1102         the NeverDestroyed<T> into it, implicitly converting it to const T& by way of const T& conversion
1103         operator. As a result the compiler picks the copy constructor for T to invoke instead of evaluating
1104         whether T can be move constructed. Instead we should explicitly WTFMove() the underlying T so that
1105         the compiler can choose to either move-construct T or copy construct it.
1106
1107         A side benefit of this change it is now possible to invoke makeNeverDestroyed() with the result
1108         of a function that returns a move-only type (e.g. RenderStyle):
1109
1110         static auto sharedStyle = makeNeverDestroyed([] {
1111             auto style = RenderStyle::create();
1112             ...
1113             return style;
1114         }());
1115
1116         * wtf/NeverDestroyed.h:
1117         (WTF::NeverDestroyed::NeverDestroyed):
1118
1119 2018-07-24  Ryan Haddad  <ryanhaddad@apple.com>
1120
1121         Unreviewed, rolling out r234121.
1122
1123         Caused perf test failures.
1124
1125         Reverted changeset:
1126
1127         "We should cache the compiled sandbox profile in a data vault"
1128         https://bugs.webkit.org/show_bug.cgi?id=184991
1129         https://trac.webkit.org/changeset/234121
1130
1131 2018-07-24  Thibault Saunier  <tsaunier@igalia.com>
1132
1133         [GStreamer] Implement bitrate modulation support in GStreamer based libwebrtc Encoders
1134         https://bugs.webkit.org/show_bug.cgi?id=187643
1135
1136         Reviewed by Philippe Normand.
1137
1138         Added support for GRegex in GRefPtr.
1139
1140         Source/WTF:
1141         * wtf/glib/GRefPtr.cpp:
1142         (WTF::refGPtr):
1143         (WTF::derefGPtr):
1144         * wtf/glib/GRefPtr.h:
1145
1146 2018-07-23  Ross Kirsling  <ross.kirsling@sony.com>
1147
1148         WTF::StringView::split should have an allowEmptyEntries flag
1149         https://bugs.webkit.org/show_bug.cgi?id=187864
1150
1151         Reviewed by Konstantin Tokarev.
1152
1153         * wtf/text/StringView.cpp:
1154         (WTF::StringView::SplitResult::Iterator::findNextSubstring):
1155         (WTF::StringView::SplitResult::Iterator::operator++):
1156         * wtf/text/StringView.h:
1157         (WTF::StringView::split const):
1158         (WTF::StringView::SplitResult::SplitResult):
1159         (WTF::StringView::SplitResult::Iterator::operator== const):
1160         We can't mimic String::split completely, because this one's iterator-based --
1161         achieve desired behavior by adding m_allowEmptyEntries to SplitResult and m_isDone to its Iterator.
1162         (The latter keeps us from hitting begin() == end() prematurely on a final empty entry.)
1163
1164 2018-07-23  Ben Richards  <benton_richards@apple.com>
1165
1166         We should cache the compiled sandbox profile in a data vault
1167         https://bugs.webkit.org/show_bug.cgi?id=184991
1168
1169         Reviewed by Ryosuke Niwa.
1170
1171         Added trace points for sandbox initialization and exposed functions needed for sandbox caching
1172
1173         * wtf/SystemTracing.h:
1174         * wtf/spi/darwin/SandboxSPI.h:
1175
1176 2018-06-06  Filip Pizlo  <fpizlo@apple.com>
1177
1178         We should support CreateThis in the FTL
1179         https://bugs.webkit.org/show_bug.cgi?id=164904
1180
1181         Reviewed by Yusuke Suzuki.
1182
1183         * wtf/TinyPtrSet.h:
1184         (WTF::TinyPtrSet::operator!= const):
1185
1186 2018-07-21  Yusuke Suzuki  <utatane.tea@gmail.com>
1187
1188         [JSC] Use Function / ScopedLambda / RecursableLambda instead of std::function
1189         https://bugs.webkit.org/show_bug.cgi?id=187472
1190
1191         Reviewed by Mark Lam.
1192
1193         * wtf/ScopedLambda.h:
1194         (WTF::ScopedLambda<ResultType):
1195
1196 2018-07-18  Michael Catanzaro  <mcatanzaro@igalia.com>
1197
1198         Switch CMake ports back to C++ 14
1199         https://bugs.webkit.org/show_bug.cgi?id=187744
1200
1201         Reviewed by Ryosuke Niwa.
1202
1203         Always use WTF's internal std::optional implementation, since std::optional is not part of
1204         C++ 14.
1205
1206         * wtf/Optional.h:
1207
1208 2018-07-17  Keith Miller  <keith_miller@apple.com>
1209
1210         Revert r233630 since it broke internal wasm benchmarks
1211         https://bugs.webkit.org/show_bug.cgi?id=187746
1212
1213         Unreviewed revert.
1214
1215         * wtf/TriState.h:
1216
1217 2018-07-14  Kocsen Chung  <kocsen_chung@apple.com>
1218
1219         Ensure WebKit stack is ad-hoc signed
1220         https://bugs.webkit.org/show_bug.cgi?id=187667
1221
1222         Reviewed by Alexey Proskuryakov.
1223
1224         * Configurations/Base.xcconfig:
1225
1226 2018-07-14  David Kilzer  <ddkilzer@apple.com>
1227
1228         Replace TR2_OPTIONAL_ASSERTED_EXPRESSION macro in <wtf/Optional.h>
1229         <https://webkit.org/b/187672>
1230
1231         Reviewed by Frédéric Wang.
1232
1233         * wtf/Optional.h:
1234         (std::optional::operator -> const):
1235         (std::optional::operator * const):
1236         (std::optional<T::operator-> const):
1237         (std::optional<T::operator* const):
1238         - Replace TR2_OPTIONAL_ASSERTED_EXPRESSION macro with
1239           ASSERT_UNDER_CONSTEXPR_CONTEXT macro and return statement.
1240
1241 2018-07-13  Mark Lam  <mark.lam@apple.com>
1242
1243         Signal.cpp's activeThreads() should only create its ThreadGroup once.
1244         https://bugs.webkit.org/show_bug.cgi?id=187634
1245         <rdar://problem/40662311>
1246
1247         Reviewed by Yusuke Suzuki.
1248
1249         registerThreadForMachExceptionHandling() is relying on the activeThreads()
1250         ThreadGroup being a singleton.
1251
1252         * wtf/threads/Signals.cpp:
1253         (WTF::activeThreads):
1254
1255 2018-07-12  David Kilzer  <ddkilzer@apple.com>
1256
1257         Revert: iOS port should define HAVE_RUNLOOP_TIMER
1258         <https://webkit.org/b/187370>
1259
1260         * wtf/Platform.h: This is only needed on macOS when using
1261         -[WebView scheduleInRunLoop:forMode:] and
1262         -[WebView unscheduleFromRunLoop:forMode:] to make WK1 WebViews
1263         load synchronously using -loadHTMLString: or -loadData:.
1264
1265 2018-07-12  Per Arne Vollan  <pvollan@apple.com>
1266
1267         Add compile guard for enabling NSRunLoop in the WebContent process.
1268         https://bugs.webkit.org/show_bug.cgi?id=187563
1269
1270         Reviewed by Chris Dumez.
1271
1272         * wtf/FeatureDefines.h:
1273
1274 2018-07-09  Zan Dobersek  <zdobersek@igalia.com>
1275
1276         Unreviewed follow-up to r233660.
1277
1278         * wtf/linux/MemoryFootprintLinux.cpp:
1279         (WTF::memoryFootprint): Revert accidental change of logical OR into a bitwise OR.
1280
1281 2018-07-09  Youenn Fablet  <youenn@apple.com>
1282
1283         StringView operator==(char*) should check the length of the string
1284         https://bugs.webkit.org/show_bug.cgi?id=187422
1285
1286         Reviewed by Chris Dumez.
1287
1288         Update StringView operator== to ensure that any character raw pointer comparison actually check the length of the raw pointer string.
1289         This patch mimicks the behavior of String.
1290         For instance, comparing a StringView with "he\0llo" and "he" will give the same result.
1291
1292         * wtf/linux/MemoryFootprintLinux.cpp:
1293         (WTF::memoryFootprint):
1294         * wtf/text/StringView.h:
1295         (WTF::operator==):
1296         (WTF::operator!=):
1297         (WTF::equal):
1298         (WTF::StringView::stripLeadingAndTrailingMatchedCharacters):
1299
1300 2018-07-09  Yusuke Suzuki  <utatane.tea@gmail.com>
1301
1302         [WTF] Annotate RunLoop::Timer fast-allocated
1303         https://bugs.webkit.org/show_bug.cgi?id=187473
1304
1305         Reviewed by Saam Barati.
1306
1307         It is allocated by std::unique_ptr for MemoryPressureHandler. And it uses system malloc now.
1308
1309         * wtf/RunLoop.h:
1310
1311 2018-07-08  Yusuke Suzuki  <utatane.tea@gmail.com>
1312
1313         [JSC] Optimize padding of UnlinkedCodeBlock to shrink
1314         https://bugs.webkit.org/show_bug.cgi?id=187448
1315
1316         Reviewed by Saam Barati.
1317
1318         * wtf/TriState.h:
1319
1320 2018-07-07  David Kilzer  <ddkilzer@apple.com>
1321
1322         iOS port should define HAVE_RUNLOOP_TIMER
1323         <https://webkit.org/b/187370>
1324
1325         Reviewed by Simon Fraser.
1326
1327         * wtf/Platform.h:
1328         (HAVE_DTRACE): Remove unused macro since r200568.
1329         (HAVE_RUNLOOP_TIMER): Define for PLATFORM(COCOA), not just
1330         PLATFORM(MAC).  Alphabetize macros.
1331
1332 2018-07-07  Yusuke Suzuki  <utatane.tea@gmail.com>
1333
1334         [linux] ASSERT: Using an alternative signal stack is not supported. Consider disabling the concurrent GC.
1335         https://bugs.webkit.org/show_bug.cgi?id=187297
1336
1337         Reviewed by Mark Lam.
1338
1339         This patch relaxes the JSC's limitation: accepting an alternative signal stack mechanism.
1340
1341         * wtf/ThreadingPthreads.cpp:
1342         (WTF::getApproximateStackPointer):
1343         Fix approximate stack pointer function to make it valid.
1344
1345         (WTF::Thread::signalHandlerSuspendResume):
1346         Use StackBounds::contains to check whether the given stack pointer is in range of StackBounds.
1347         If it is out of range, it seems that this stack pointer is pointing an alternative signal stack.
1348
1349         (WTF::Thread::suspend):
1350         Repeatedly retry suspension by using Thread::yield().
1351
1352         (WTF::isOnAlternativeSignalStack): Deleted.
1353
1354 2018-07-06  Frederic Wang  <fwang@igalia.com>
1355
1356         WTF's internal std::optional implementation should abort() on bad optional access
1357         https://bugs.webkit.org/show_bug.cgi?id=186536
1358
1359         Reviewed by Michael Catanzaro.
1360
1361         Currently, some ports built with recent compilers will cause the program to abort when one
1362         tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
1363         However, most ports still use WTF's internal std::optional implementation, which does not
1364         verify illegal access. Hence it's not possible for developers working on these ports to
1365         detect issues like bugs #186189, #186535, #186752, #186753, #187139, #187145, #187243 or
1366         #187382.
1367         WTF's version of std::optional was introduced in bug #164199 but it was not possible to
1368         verify the availability of the value inside constexpr member functions because the assert
1369         might involve asm declarations. This commit introduces a new ASSERT_UNDER_CONSTEXPR_CONTEXT
1370         macro (a simplified version of ASSERT that can be used in constexpr context) and uses it in
1371         WTF's implementation of std::optional.
1372
1373         * wtf/Assertions.h: Define ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of ASSERT that can be
1374         used in constexpr context (in particular avoids asm declarations).
1375         * wtf/Optional.h:
1376         (std::optional::operator ->): Add an assert to ensure the optional value is available.
1377         (std::optional::operator *): Ditto.
1378         (std::optional::value const): Ditto.
1379         (std::optional::value): Ditto.
1380         (std::optional<T::value const): Ditto.
1381
1382 2018-07-05  Commit Queue  <commit-queue@webkit.org>
1383
1384         Unreviewed, rolling out r233417 and r233418.
1385         https://bugs.webkit.org/show_bug.cgi?id=187364
1386
1387         Introduced an occasional crash on Google Drive (Requested by
1388         rniwa on #webkit).
1389
1390         Reverted changesets:
1391
1392         "WTF's internal std::optional implementation should abort() on
1393         bad optional access"
1394         https://bugs.webkit.org/show_bug.cgi?id=186536
1395         https://trac.webkit.org/changeset/233417
1396
1397         "WTF's internal std::optional implementation should abort() on
1398         bad optional access"
1399         https://bugs.webkit.org/show_bug.cgi?id=186536
1400         https://trac.webkit.org/changeset/233418
1401
1402 2018-07-04  Guillaume Emont  <guijemont@igalia.com>
1403
1404         FunctionTraits: Make cCallArity() constant on 32-bits.
1405         https://bugs.webkit.org/show_bug.cgi?id=187292
1406
1407         Reviewed by Yusuke Suzuki.
1408
1409         On X86, in Source/JavaScriptCore/jit/CCallHelpers.h we have a
1410         static_assert that uses cCallArity(), so it needs to be constant to
1411         avoid a compilation error. This is achieved by changing an ASSERT into
1412         a static_assert.
1413
1414
1415         * wtf/FunctionTraits.h:
1416         (WTF::slotsForCCallArgument):
1417
1418 2018-07-04  Tim Horton  <timothy_horton@apple.com>
1419
1420         Introduce PLATFORM(IOSMAC)
1421         https://bugs.webkit.org/show_bug.cgi?id=187315
1422
1423         Reviewed by Dan Bernstein.
1424
1425         * Configurations/Base.xcconfig:
1426         * wtf/FeatureDefines.h:
1427         * wtf/Platform.h:
1428
1429 2018-07-02  Alicia Boya García  <aboya@igalia.com>
1430
1431         [Linux] Fix memory leak in WTF::forEachLine()
1432         https://bugs.webkit.org/show_bug.cgi?id=187174
1433
1434         Reviewed by Žan Doberšek.
1435
1436         * wtf/linux/MemoryFootprintLinux.cpp:
1437         (WTF::forEachLine):
1438
1439 2018-07-02  Frederic Wang  <fwang@igalia.com>
1440
1441         WTF's internal std::optional implementation should abort() on bad optional access
1442         https://bugs.webkit.org/show_bug.cgi?id=186536
1443
1444         Reviewed by Michael Catanzaro.
1445
1446         Currently, some ports built with recent compilers will cause the program to abort when one
1447         tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
1448         However, most ports still use WTF's internal std::optional implementation, which does not
1449         verify illegal access. Hence it's not possible for developers working on these ports to
1450         detect issues like bugs #186189, #186535, #186752, #186753, #187139, #187145 or #187243.
1451         WTF's version of std::optional was introduced in bug #164199 but it was not possible to
1452         verify the availability of the value inside constexpr member functions because the assert
1453         might involve asm declarations. This commit introduces a new
1454         RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT macro (a simplified version of RELEASE_ASSERT that can
1455         be used in constexpr context) and uses it in WTF's implementation of std::optional.
1456
1457         * wtf/Assertions.h: Define RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of
1458         RELEASE_ASSERT that can be used in constexpr context (in particular avoids asm declarations).
1459         * wtf/Optional.h:
1460         (std::optional::operator ->): Add an assert to ensure the optional value is available.
1461         (std::optional::operator *): Ditto.
1462         (std::optional::value const): Ditto.
1463         (std::optional::value): Ditto.
1464         (std::optional<T::value const): Ditto.
1465
1466 2018-07-01  Yusuke Suzuki  <utatane.tea@gmail.com>
1467
1468         [WTF] RandomDevice should be initialized inside std::call_once
1469         https://bugs.webkit.org/show_bug.cgi?id=186017
1470
1471         Reviewed by Darin Adler.
1472
1473         While Linux ports uses mutex-guarded static variables, Mac ports do not.
1474         So we should guard static variables' initialization by using std::call_once.
1475         This patch does it for RandomDevice.
1476
1477         * wtf/OSRandomSource.cpp:
1478         (WTF::cryptographicallyRandomValuesFromOS):
1479         * wtf/RandomDevice.h: Small fix for OS(FUCHSIA).
1480
1481 2018-07-01  Myles C. Maxfield  <mmaxfield@apple.com>
1482
1483         [Cocoa] LastResort in the font family list causes emoji with joiners to be rendered as multiple .notdef characters
1484         https://bugs.webkit.org/show_bug.cgi?id=187209
1485         <rdar://problem/40920785>
1486
1487         Reviewed by Darin Adler.
1488
1489         * wtf/unicode/CharacterNames.h:
1490
1491 2018-06-23  Darin Adler  <darin@apple.com>
1492
1493         [Cocoa] Improve ARC compatibility of more code in JavaScriptCore
1494         https://bugs.webkit.org/show_bug.cgi?id=186973
1495
1496         Reviewed by Dan Bernstein.
1497
1498         * WTF.xcodeproj/project.pbxproj: Added CFXPCBridgeSPI.h, fixed a few
1499         other small problems in the project file, and let Xcode fix a few too.
1500
1501         * wtf/cocoa/Entitlements.h: Added hasEntitlement function with overloads
1502         for an audit token and an XPC connection.
1503         * wtf/cocoa/Entitlements.mm:
1504         (WTF::hasEntitlement): Added, with overloads for a SecTask, an audit token,
1505         and an XPC connection.
1506         (WTF::processHasEntitlement): Refactored to use the function above.
1507
1508         * wtf/spi/cocoa/CFXPCBridgeSPI.h: Added.
1509
1510 2018-06-30  Adam Barth  <abarth@webkit.org>
1511
1512         Port JavaScriptCore to OS(FUCHSIA)
1513         https://bugs.webkit.org/show_bug.cgi?id=187223
1514
1515         Reviewed by Daniel Bates.
1516
1517         * wtf/Platform.h: Fuchsia uses mcontext_t to provide machine context.
1518
1519 2018-06-30  Adam Barth  <abarth@webkit.org>
1520
1521         Port WTF to OS(FUCHSIA)
1522         https://bugs.webkit.org/show_bug.cgi?id=187221
1523
1524         Reviewed by Yusuke Suzuki.
1525
1526         * wtf/FastMalloc.cpp: Fuchsia does not have resource.h
1527         (WTF::fastMallocStatistics): Skip collecting stats without resource.h
1528         * wtf/InlineASM.h: Fuchsia uses ELF
1529         * wtf/Platform.h: Define OS(FUCHSIA) as an OS(UNIX) variant
1530         * wtf/RandomDevice.cpp: Call zx_cprng_draw for crypographic randomness
1531         (WTF::RandomDevice::cryptographicallyRandomValues):
1532         * wtf/ThreadingPthreads.cpp: Fuchsia does not have pthread_setschedparam
1533         (WTF::Thread::changePriority):
1534         * wtf/unix/CPUTimeFuchsia.cpp: Added.
1535
1536 2018-06-30  Commit Queue  <commit-queue@webkit.org>
1537
1538         Unreviewed, rolling out r233391.
1539         https://bugs.webkit.org/show_bug.cgi?id=187217
1540
1541         This patch broke Windows ports (Requested by fredw on
1542         #webkit).
1543
1544         Reverted changeset:
1545
1546         "WTF's internal std::optional implementation should abort() on
1547         bad optional access"
1548         https://bugs.webkit.org/show_bug.cgi?id=186536
1549         https://trac.webkit.org/changeset/233391
1550
1551 2018-06-29  Frederic Wang  <fwang@igalia.com>
1552
1553         WTF's internal std::optional implementation should abort() on bad optional access
1554         https://bugs.webkit.org/show_bug.cgi?id=186536
1555
1556         Reviewed by Michael Catanzaro.
1557
1558         Currently, some ports built with recent compilers will cause the program to abort when one
1559         tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
1560         However, most ports still use WTF's internal std::optional implementation, which does not
1561         verify illegal access. Hence it's not possible for developers working on these ports to
1562         detect issues like bugs #186189, #186535, #186752, #186753, #187139 or #187145. WTF's version
1563         of std::optional was introduced in bug #164199 but it was not possible to verify the
1564         availability of the value inside constexpr member functions because the assert might involve
1565         asm declarations. This commit introduces a new RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT macro
1566         (a simplified version of RELEASE_ASSERT that can be used in constexpr context) and uses it in
1567         WTF's implementation of std::optional.
1568
1569         * wtf/Assertions.h: Define RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of
1570         RELEASE_ASSERT that can be used in constexpr context (in particular avoids asm declarations).
1571         * wtf/Optional.h:
1572         (std::optional::operator ->): Add an assert to ensure the optional value is available.
1573         (std::optional::operator *): Ditto.
1574         (std::optional::value const): Ditto. 
1575         (std::optional::value): Ditto.
1576         (std::optional<T::value const): Ditto.
1577
1578 2018-06-29  Darin Adler  <darin@apple.com>
1579
1580         [Cocoa] reduce unnecessary use of .mm source files in WTF, spruce up some implementation details
1581         https://bugs.webkit.org/show_bug.cgi?id=186924
1582
1583         Reviewed by Anders Carlsson.
1584
1585         * WTF.xcodeproj/project.pbxproj: Update for file and directory renames, file type changes,
1586         and deletions.
1587
1588         * wtf/MemoryPressureHandler.cpp:
1589         (WTF::MemoryPressureHandler::holdOff): Deleted empty placeholder; this one is not needed.
1590
1591         * wtf/PlatformMac.cmake: Update for file and directory renames, file type changes,
1592         and deletions.
1593
1594         * wtf/cocoa/CPUTimeCocoa.cpp: Renamed from Source/WTF/wtf/cocoa/CPUTimeCocoa.mm.
1595
1596         * wtf/text/cocoa/StringImplCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringImplMac.mm.
1597         Also removed an unneeded include.
1598
1599         * wtf/text/cocoa/StringViewCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringViewObjC.mm.
1600
1601         * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: Renamed from
1602         Source/WTF/wtf/text/mac/TextBreakIteratorInternalICUMac.mm.
1603
1604 2018-06-28  Olivia Barnett  <obarnett@apple.com>
1605
1606         Find in page for typographic quotes does not find low (German) quotes
1607         https://bugs.webkit.org/show_bug.cgi?id=187164
1608         <rdar://problem/29612785>
1609
1610         Reviewed by Tim Horton.
1611
1612         Added Unicode definitions for German quotation marks.
1613
1614         * wtf/unicode/CharacterNames.h:
1615
1616 2018-06-27  Jonathan Bedard  <jbedard@apple.com>
1617
1618         Enable WebKit iOS 12 build
1619         https://bugs.webkit.org/show_bug.cgi?id=187024
1620         <rdar://problem/39759057>
1621
1622         Reviewed by David Kilzer.
1623
1624         * wtf/spi/darwin/XPCSPI.h: Add endpoint and connection declarations.
1625
1626 2018-06-25  David Fenton  <david_fenton@apple.com>
1627
1628         Unreviewed, rolling out r233120.
1629
1630         caused regression in ios API tests
1631
1632         Reverted changeset:
1633
1634         "[Cocoa] reduce unnecessary use of .mm source files in WTF,
1635         spruce up some implementation details"
1636         https://bugs.webkit.org/show_bug.cgi?id=186924
1637         https://trac.webkit.org/changeset/233120
1638
1639 2018-06-25  Alicia Boya García  <aboya@igalia.com>
1640
1641         Fix ASAN_ENABLED in GCC
1642         https://bugs.webkit.org/show_bug.cgi?id=186957
1643
1644         Reviewed by Michael Catanzaro.
1645
1646         ASAN_ENABLED used to rely on Clang-specific features for detection.
1647         This patch enables ASAN_ENABLED to work on GCC too.
1648
1649         It also fixes compilation errors and warnings that were triggered when
1650         compiling code guarded by ASAN_ENABLED in gcc.
1651
1652         * wtf/Compiler.h:
1653         * wtf/Vector.h:
1654         (WTF::VectorBuffer::endOfBuffer):
1655
1656 2018-06-22  Darin Adler  <darin@apple.com>
1657
1658         [Cocoa] Convert the small bit of Objective-C++ code in WTF to ARC
1659         https://bugs.webkit.org/show_bug.cgi?id=186961
1660
1661         Reviewed by Anders Carlsson.
1662
1663         * Configurations/Base.xcconfig: Turn on ARC.
1664
1665         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
1666         (WTF::MemoryPressureHandler::uninstall): Remove calls to dispatch_release.
1667         (WTF::MemoryPressureHandler::holdOff): Ditto.
1668
1669         * wtf/mac/MainThreadMac.mm:
1670         (WTF::initializeMainThreadPlatform): Remove call to retain.
1671         (WTF::initializeWebThreadPlatform): Ditto.
1672
1673 2018-06-22  Yusuke Suzuki  <utatane.tea@gmail.com>
1674
1675         [WTF] Use Ref<> for the result type of non-failing factory functions
1676         https://bugs.webkit.org/show_bug.cgi?id=186920
1677
1678         Reviewed by Darin Adler.
1679
1680         Use Ref<> instead of RefPtr<> if the `create` function do not return nullptr.
1681
1682         * wtf/AutomaticThread.cpp:
1683         (WTF::AutomaticThreadCondition::create):
1684         (WTF::AutomaticThread::AutomaticThread):
1685         * wtf/AutomaticThread.h:
1686         * wtf/ParallelHelperPool.cpp:
1687         (WTF::ParallelHelperPool::Thread::Thread):
1688         * wtf/ParallelHelperPool.h:
1689         * wtf/WorkerPool.cpp:
1690         (WTF::WorkerPool::WorkerPool):
1691         * wtf/WorkerPool.h:
1692         * wtf/win/WorkQueueWin.cpp:
1693         (WTF::TimerContext::create):
1694         (WTF::WorkQueue::dispatchAfter):
1695
1696 2018-06-23  Yusuke Suzuki  <utatane.tea@gmail.com>
1697
1698         [WTF] Add user-defined literal for ASCIILiteral
1699         https://bugs.webkit.org/show_bug.cgi?id=186839
1700
1701         Reviewed by Darin Adler.
1702
1703         This patch adds user-defined literal for ASCIILiteral. We can create ASCIILiteral in the form of `"Hello World"_s`.
1704         And we remove public ASCIILiteral constructor. This change ensures that ASCIILiteral is created from literal.
1705
1706         * WTF.xcodeproj/project.pbxproj:
1707         * wtf/CMakeLists.txt:
1708         * wtf/Indenter.h:
1709         (WTF::Indenter::Indenter):
1710         * wtf/Logger.h:
1711         (WTF::LogArgument::toString):
1712         * wtf/MediaTime.cpp:
1713         (WTF::toJSONStringInternal):
1714         (WTF::MediaTimeRange::toJSONString const):
1715         * wtf/linux/MemoryFootprintLinux.cpp:
1716         (WTF::memoryFootprint):
1717         * wtf/text/ASCIILiteral.cpp: Copied from Source/WebCore/css/CSSUnsetValue.cpp.
1718         (WTF::ASCIILiteral::dump const):
1719         * wtf/text/ASCIILiteral.h: Copied from Source/WTF/wtf/Indenter.h.
1720         (WTF::ASCIILiteral::operator const char* const):
1721         (WTF::ASCIILiteral::fromLiteralUnsafe):
1722         (WTF::ASCIILiteral::null):
1723         (WTF::ASCIILiteral::characters const):
1724         (WTF::ASCIILiteral::ASCIILiteral):
1725         (WTF::StringLiterals::operator _s):
1726         * wtf/text/WTFString.cpp:
1727         (asciiDebug):
1728         * wtf/text/WTFString.h:
1729         (WTF::operator==):
1730         (WTF::operator!=):
1731         (WTF::ASCIILiteral::ASCIILiteral): Deleted.
1732         (WTF::ASCIILiteral::operator const char*): Deleted.
1733         * wtf/unix/LanguageUnix.cpp:
1734         (WTF::platformLanguage):
1735
1736 2018-06-22  Darin Adler  <darin@apple.com>
1737
1738         [Cocoa] reduce unnecessary use of .mm source files in WTF, spruce up some implementation details
1739         https://bugs.webkit.org/show_bug.cgi?id=186924
1740
1741         Reviewed by Anders Carlsson.
1742
1743         * WTF.xcodeproj/project.pbxproj: Update for file and directory renames, file type changes,
1744         and deletions.
1745
1746         * wtf/MemoryPressureHandler.cpp:
1747         (WTF::MemoryPressureHandler::holdOff): Deleted empty placeholder; this one is not needed.
1748
1749         * wtf/PlatformMac.cmake: Update for file and directory renames, file type changes,
1750         and deletions.
1751
1752         * wtf/cocoa/CPUTimeCocoa.cpp: Renamed from Source/WTF/wtf/cocoa/CPUTimeCocoa.mm.
1753         Reworked math to make better use of the Seconds class.
1754
1755         * wtf/text/WTFString.h: Added a new inline version of the constructor that takes an NSString.
1756         This is identical to the one that takes a CFStringRef, so no need to keep both.
1757
1758         * wtf/text/cocoa/StringImplCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringImplMac.mm.
1759         Also removed an unneeded include.
1760
1761         * wtf/text/cocoa/StringViewCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringViewObjC.mm.
1762
1763         * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: Renamed from
1764         Source/WTF/wtf/text/mac/TextBreakIteratorInternalICUMac.mm.
1765
1766         * wtf/text/mac/StringMac.mm: Removed.
1767
1768 2018-06-21  Carlos Garcia Campos  <cgarcia@igalia.com>
1769
1770         [GLIB] improve get_type() fast path in WEBKIT_DEFINE_TYPE
1771         https://bugs.webkit.org/show_bug.cgi?id=186885
1772
1773         Reviewed by Anders Carlsson.
1774
1775         This is a backport of glib commit
1776         https://gitlab.gnome.org/GNOME/glib/commit/e924f777369710221c3e0a9d7bf40392a27d1fa4
1777
1778         "The -fstack-protector-strong used in many distributions by default has a
1779         rather drastic slowdown of the fast path in generated _get_type()
1780         functions using G_DEFINE_* macros. The amount can vary by architecture,
1781         GCC version, and compiler flags.
1782
1783         To work around this, and ensure a higher probability that our fast-path
1784         will match what we had previously, we need to break out the slow-path
1785         (registering the type) into a secondary function that is not a candidate
1786         for inlining.
1787
1788         This ensures that the common case (type registered, return the GType id)
1789         is the hot path and handled in the prologue of the generated assembly even
1790         when -fstack-protector-strong is enabled."
1791
1792         * wtf/glib/WTFGType.h:
1793
1794 2018-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>
1795
1796         [GTK][WPE][Nicosia] Add name for Nicosia Painting Threads
1797         https://bugs.webkit.org/show_bug.cgi?id=186836
1798
1799         Reviewed by Carlos Garcia Campos.
1800
1801         AutomaticThread can take a name for the generated threads now.
1802         This patch adds the above ability to WorkerPool.
1803
1804         * wtf/WorkerPool.cpp:
1805         (WTF::WorkerPool::WorkerPool):
1806         * wtf/WorkerPool.h:
1807         (WTF::WorkerPool::create):
1808         (WTF::WorkerPool::name const):
1809
1810 2018-06-18  Jiewen Tan  <jiewen_tan@apple.com>
1811
1812         Add a graceful exit for AuthenticationManager::initializeConnection
1813         https://bugs.webkit.org/show_bug.cgi?id=186632
1814         <rdar://problem/41041033>
1815
1816         Reviewed by Brent Fulgham.
1817
1818         * wtf/spi/darwin/XPCSPI.h:
1819
1820 2018-06-18  Carlos Alberto Lopez Perez  <clopez@igalia.com>
1821
1822         [WTF] Remove workarounds needed to support libstdc++-4
1823         https://bugs.webkit.org/show_bug.cgi?id=186762
1824
1825         Reviewed by Michael Catanzaro.
1826
1827         Revert r226299, r226300 r226301 and r226302-
1828
1829         * wtf/StdLibExtras.h:
1830
1831 2018-06-12  Darin Adler  <darin@apple.com>
1832
1833         [Cocoa] Make some RetainPtr refinements to get more ready for ARC
1834         https://bugs.webkit.org/show_bug.cgi?id=186526
1835
1836         Reviewed by Anders Carlsson.
1837
1838         * wtf/RetainPtr.h: Improved the definition of autorelease so it does
1839         the right thing for both Objective-C types and non-Objective-C types.
1840         Also added bridgingAutorelease for when we want to autorelease as
1841         part of converting from a CF type to an Objective-C type. The two
1842         advantages of bridgingAutorelease are that it does not require an
1843         additional explicit __bridge cast and that it does not prevent the
1844         ARC objc_autoreleaseReturnValue optimization the way that doing an
1845         autorelease on the CF type would.
1846
1847         * wtf/text/mac/StringImplMac.mm:
1848         (WTF::StringImpl::operator NSString *): Use bridgingAutorelease.
1849
1850 2018-06-15  Basuke Suzuki  <Basuke.Suzuki@sony.com>
1851
1852         [WinCairo] Move unrelated features of WorkQueueWin into IPC::Connection
1853         https://bugs.webkit.org/show_bug.cgi?id=186582
1854
1855         Remove unrelated feature from WorkQueueWin.
1856
1857         Reviewed by Brent Fulgham.
1858
1859         * wtf/PlatformWin.cmake: Remove WorkItemContext.*
1860         * wtf/WorkQueue.cpp:
1861         * wtf/WorkQueue.h:
1862         * wtf/win/Win32Handle.h:
1863         * wtf/win/WorkItemContext.cpp: Removed.
1864         * wtf/win/WorkItemContext.h: Removed.
1865         * wtf/win/WorkQueueWin.cpp:
1866         (WTF::WorkQueue::handleCallback): Deleted.
1867         (WTF::WorkQueue::registerHandle): Deleted.
1868         (WTF::WorkQueue::unregisterAndCloseHandle): Deleted.
1869         (WTF::WorkQueue::unregisterWaitAndDestroyItemSoon): Deleted.
1870         (WTF::WorkQueue::unregisterWaitAndDestroyItemCallback): Deleted.
1871
1872 2018-06-13  Keith Miller  <keith_miller@apple.com>
1873
1874         AutomaticThread should have a way to provide a thread name
1875         https://bugs.webkit.org/show_bug.cgi?id=186604
1876
1877         Reviewed by Filip Pizlo.
1878
1879         AutomaticThread now has a virtual method to get a name, which can be
1880         overridden to provide a custom name to the thread.
1881
1882         * wtf/AutomaticThread.cpp:
1883         (WTF::AutomaticThread::start):
1884         * wtf/AutomaticThread.h:
1885         * wtf/WorkerPool.cpp:
1886
1887 2018-06-11  Saam Barati  <sbarati@apple.com>
1888
1889         The NaturalLoops algorithm only works when the list of blocks in a loop is de-duplicated
1890         https://bugs.webkit.org/show_bug.cgi?id=184829
1891
1892         Reviewed by Michael Saboff.
1893
1894         This patch switches NaturalLoops to walking over a block's predecessors
1895         instead of successors when building the initial list of loops and their
1896         headers. The algorithm broke down when we had a footer block with multiple
1897         control flow edges pointing to the same header. This made the loop data
1898         structure contain multiple entries for the same basic block. The algorithm
1899         breaks down when we end up in this state, since it means our way of detecting
1900         what loop is more inner is broken, since that check uses a loop's size.
1901
1902         * wtf/NaturalLoops.h:
1903         (WTF::NaturalLoop::addBlock):
1904         (WTF::NaturalLoops::NaturalLoops):
1905
1906 2018-06-11  Keith Rollin  <krollin@apple.com>
1907
1908         Add logging around internalError(const URL&)
1909         https://bugs.webkit.org/show_bug.cgi?id=186369
1910         <rdar://problem/40872046>
1911
1912         Reviewed by Brent Fulgham.
1913
1914         There are times when we receive bug reports where the user says that
1915         they are simply shown a page saying an internal error occurred. To
1916         help understand the circumstances of that error, add some logging to
1917         internalError() in WebErrors.cpp. This logging logs at the Error level
1918         that internalError() was called and then logs a backtrace.
1919
1920         * wtf/Assertions.cpp:
1921         * wtf/Assertions.h:
1922
1923 2018-06-11  Michael Saboff  <msaboff@apple.com>
1924
1925         JavaScriptCore: Disable 32-bit JIT on Windows
1926         https://bugs.webkit.org/show_bug.cgi?id=185989
1927
1928         Reviewed by Mark Lam.
1929
1930         Fixed the CLOOP so it can work when COMPUTED_GOTOs are not supported.
1931
1932         * wtf/Platform.h:
1933
1934 2018-06-09  Dan Bernstein  <mitz@apple.com>
1935
1936         [Xcode] Clean up and modernize some build setting definitions
1937         https://bugs.webkit.org/show_bug.cgi?id=186463
1938
1939         Reviewed by Sam Weinig.
1940
1941         * Configurations/Base.xcconfig: Removed definition for macOS 10.11.
1942         * Configurations/DebugRelease.xcconfig: Ditto.
1943
1944 2018-06-08  Darin Adler  <darin@apple.com>
1945
1946         [Cocoa] Remove all uses of NSAutoreleasePool as part of preparation for ARC
1947         https://bugs.webkit.org/show_bug.cgi?id=186436
1948
1949         Reviewed by Anders Carlsson.
1950
1951         * WTF.xcodeproj/project.pbxproj: Added FoundationSPI.h.
1952
1953         * wtf/AutodrainedPool.h: Streamlined header a bit, added some comments.
1954
1955         * wtf/PlatformMac.cmake: Added FoundationSPI.h.
1956
1957         * wtf/cocoa/AutodrainedPool.cpp: Moved here from AutodrainedPoolMac.mm.
1958         (WTF::AutodrainedPool::AutodrainedPool): Use objc_autoreleasePoolPush/Pop instead of
1959         the NSAutoreleasePool class.
1960         (WTF::AutodrainedPool::~AutodrainedPool): Ditto.
1961
1962          * wtf/spi/cocoa/FoundationSPI.h: Moved from Source/WebCore/PAL/pal/spi/cocoa/FoundationSPI.h.
1963          Changed both include and declarations so it's the objc_autoreleasePoolPush/Pop instead
1964          of the higher level NS functions that call them.
1965
1966 2018-06-08  Brian Burg  <bburg@apple.com>
1967
1968         [Cocoa] Web Automation: include browser name and version in listing for automation targets
1969         https://bugs.webkit.org/show_bug.cgi?id=186204
1970         <rdar://problem/36950423>
1971
1972         Reviewed by Darin Adler.
1973
1974         * wtf/spi/cf/CFBundleSPI.h: Add needed infoDictionary key values.
1975
1976 2018-06-07  Yusuke Suzuki  <utatane.tea@gmail.com>
1977
1978         [WTF] Add WorkerPool
1979         https://bugs.webkit.org/show_bug.cgi?id=174569
1980
1981         Reviewed by Carlos Garcia Campos.
1982
1983         This patch adds WorkerPool, which is a thread pool that consists of AutomaticThread.
1984         Since it is based on AutomaticThread, this WorkerPool can take `timeout`: once `timeout`
1985         passes without any tasks, threads in WorkerPool will be destroyed.
1986
1987         We add shouldSleep handler to AutomaticThread to make destruction of threads in WorkerPool moderate.
1988         Without this, all threads are destroyed at once after `timeout` passes.
1989
1990         * WTF.xcodeproj/project.pbxproj:
1991         * wtf/AutomaticThread.cpp:
1992         (WTF::AutomaticThread::AutomaticThread):
1993         (WTF::AutomaticThread::start):
1994         * wtf/AutomaticThread.h:
1995         * wtf/CMakeLists.txt:
1996         * wtf/WorkerPool.cpp: Added.
1997         (WTF::WorkerPool::WorkerPool):
1998         (WTF::WorkerPool::~WorkerPool):
1999         (WTF::WorkerPool::shouldSleep):
2000         (WTF::WorkerPool::postTask):
2001         * wtf/WorkerPool.h: Added.
2002         (WTF::WorkerPool::create):
2003
2004 2018-06-07  Chris Dumez  <cdumez@apple.com>
2005
2006         Add base class to get WeakPtrFactory member and avoid some boilerplate code
2007         https://bugs.webkit.org/show_bug.cgi?id=186407
2008
2009         Reviewed by Brent Fulgham.
2010
2011         Add CanMakeWeakPtr base class to get WeakPtrFactory member and its getter, in
2012         order to avoid some boilerplate code in every class needing a WeakPtrFactory.
2013         This also gets rid of old-style createWeakPtr() methods in favor of the newer
2014         makeWeakPtr().
2015
2016         * wtf/WeakPtr.h:
2017         (WTF::CanMakeWeakPtr::weakPtrFactory const):
2018         (WTF::CanMakeWeakPtr::weakPtrFactory):
2019
2020 2018-06-07  Tadeu Zagallo  <tzagallo@apple.com>
2021
2022         Don't try to allocate JIT memory if we don't have the JIT entitlement
2023         https://bugs.webkit.org/show_bug.cgi?id=182605
2024         <rdar://problem/38271229>
2025
2026         Reviewed by Mark Lam.
2027
2028         Move processHasEntitlement from Source/WebKit/Shared/mac/SandboxUtilities.h
2029         into WTF so JavaScriptCore can also use it.
2030
2031         * WTF.xcodeproj/project.pbxproj:
2032         * wtf/PlatformMac.cmake:
2033         * wtf/cocoa/Entitlements.cpp:
2034         (WTF::processHasEntitlement):
2035         * wtf/cocoa/Entitlements.h:
2036         * wtf/spi/cocoa/SecuritySPI.h:
2037
2038 2018-06-05  Darin Adler  <darin@apple.com>
2039
2040         [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers
2041         https://bugs.webkit.org/show_bug.cgi?id=186324
2042
2043         Reviewed by Anders Carlsson.
2044
2045         * WTF.xcodeproj/project.pbxproj: Removed DispatchPtr.h.
2046         * wtf/BlockPtr.h: Remove unneeded checks for __OBJC__. Added some use
2047         of WTFMove.
2048         * wtf/CMakeLists.txt: Removed DispatchPtr.h.
2049         * wtf/DispatchPtr.h: Removed. We no longer need to support Mavericks.
2050         * wtf/OSObjectPtr.h: Remove unneeded checks for __OBJC__. Added some use
2051         of WTFMove.
2052
2053 2018-06-05  Darin Adler  <darin@apple.com>
2054
2055         [Cocoa] More preparation for ARC, focusing on WebKit and smart pointers
2056         https://bugs.webkit.org/show_bug.cgi?id=186314
2057
2058         Reviewed by Anders Carlsson.
2059
2060         * wtf/BlockPtr.h: Put Block_copy/release calls into #if since they are
2061         not needed under ARC.
2062
2063         * wtf/OSObjectPtr.h: Added constructor and assignment operator so we can
2064         work with OS objects without adopting them.
2065
2066 2018-06-05  Darin Adler  <darin@apple.com>
2067
2068         [Cocoa] Improve some soft linking compatibility with ARC
2069         https://bugs.webkit.org/show_bug.cgi?id=186309
2070
2071         Reviewed by Anders Carlsson.
2072
2073         * wtf/cocoa/SoftLinking.h: Updated the SOFT_LINK_CONSTANT family of
2074         macros to use a const type. This increases the chance that they will
2075         work without triggering ARC compilation errors since it's easier to
2076         get the type right for read-only access than for read/write.
2077
2078 2018-06-05  Youenn Fablet  <youenn@apple.com>
2079
2080         ServiceWorker registration should store any script fetched through importScripts
2081         https://bugs.webkit.org/show_bug.cgi?id=182444
2082         <rdar://problem/37164835>
2083
2084         Reviewed by Chris Dumez.
2085
2086         * wtf/persistence/PersistentCoders.h:
2087
2088 2018-06-04  Darin Adler  <darin@apple.com>
2089
2090         [Cocoa] Improve smart pointer support for ARC (OSObjectPtr/DispatchPtr)
2091         https://bugs.webkit.org/show_bug.cgi?id=186300
2092
2093         Reviewed by Daniel Bates.
2094
2095         * wtf/DispatchPtr.h: Don't call dispatch_retain or dispatch_release
2096         since ARC will automatically do it for us in the same places we are
2097         doing it here.
2098
2099         * wtf/OSObjectPtr.h:
2100         (WTF::retainOSObject): Don't call os_retain since ARC will do it.
2101         (WTF::releaseOSObject): Don't call os_release since ARC will do it.
2102
2103 2018-05-31  Commit Queue  <commit-queue@webkit.org>
2104
2105         Unreviewed, rolling out r232212.
2106         https://bugs.webkit.org/show_bug.cgi?id=186153
2107
2108         broke build (Requested by alexchristensen on #webkit).
2109
2110         Reverted changeset:
2111
2112         "JavaScriptCore: Disable 32-bit JIT on Windows"
2113         https://bugs.webkit.org/show_bug.cgi?id=185989
2114         https://trac.webkit.org/changeset/232212
2115
2116 2018-05-30  Keith Miller  <keith_miller@apple.com>
2117
2118         LLInt get_by_id prototype caching doesn't properly handle changes
2119         https://bugs.webkit.org/show_bug.cgi?id=186112
2120
2121         Reviewed by Filip Pizlo.
2122
2123         Mark some methods const.
2124
2125         * wtf/Bag.h:
2126         (WTF::Bag::begin const):
2127         (WTF::Bag::end const):
2128         (WTF::Bag::unwrappedHead const):
2129         (WTF::Bag::end): Deleted.
2130         (WTF::Bag::unwrappedHead): Deleted.
2131
2132 2018-05-30  Alex Christensen  <achristensen@webkit.org>
2133
2134         Reduce String allocations
2135         https://bugs.webkit.org/show_bug.cgi?id=186059
2136
2137         Reviewed by Darin Adler.
2138
2139         * wtf/text/StringView.cpp:
2140         (WTF::convertASCIICase):
2141         (WTF::StringView::convertToASCIILowercase const):
2142         (WTF::StringView::convertToASCIIUppercase const):
2143         * wtf/text/StringView.h:
2144         * wtf/text/cf/StringViewCF.cpp:
2145         (WTF::StringView::createCFString const):
2146
2147 2018-05-30  Dominik Infuehr  <dinfuehr@igalia.com>
2148
2149         [MIPS] Fix build on MIPS32r1
2150         https://bugs.webkit.org/show_bug.cgi?id=185944
2151
2152         Reviewed by Yusuke Suzuki.
2153
2154         Added WTF_MIPS_ISA_REV_AT_LEAST to test for certain release or later.
2155
2156         * wtf/Platform.h:
2157
2158 2018-05-29  Tim Horton  <timothy_horton@apple.com>
2159
2160         Fix the build
2161         https://bugs.webkit.org/show_bug.cgi?id=186078
2162
2163         Unreviewed build fix.
2164
2165         * wtf/Platform.h:
2166
2167 2018-05-29  Saam Barati  <sbarati@apple.com>
2168
2169         JSC should put bmalloc's scavenger into mini mode
2170         https://bugs.webkit.org/show_bug.cgi?id=185988
2171
2172         Reviewed by Michael Saboff.
2173
2174         * wtf/FastMalloc.cpp:
2175         (WTF::fastEnableMiniMode):
2176         * wtf/FastMalloc.h:
2177
2178 2018-05-29  Yusuke Suzuki  <utatane.tea@gmail.com>
2179
2180         Unreviewed, follow-up after r232244
2181         https://bugs.webkit.org/show_bug.cgi?id=186023
2182
2183         _BitScanReverse64 is available only in X86_64 and ARM.
2184
2185         * wtf/MathExtras.h:
2186         (WTF::clz64):
2187
2188 2018-05-27  Yusuke Suzuki  <utatane.tea@gmail.com>
2189
2190         [WTF] Add clz32 / clz64 for MSVC
2191         https://bugs.webkit.org/show_bug.cgi?id=186023
2192
2193         Reviewed by Daniel Bates.
2194
2195         This patch adds efficient implementations of clz32 and clz64 for MSVC.
2196         While MSVC has _lzcnt intrinsic, it is only valid if the CPU has lzcnt instruction.
2197         Instead of checking cpuid here, we just use _BitScanReverse and _BitScanReverse64.
2198
2199         * wtf/MathExtras.h:
2200         (WTF::clz32):
2201         (WTF::clz64):
2202
2203 2018-05-26  Filip Pizlo  <fpizlo@apple.com>
2204
2205         testair sometimes crashes due to races in initialization of ARC4RandomNumberGenerator
2206         https://bugs.webkit.org/show_bug.cgi?id=186014
2207
2208         Reviewed by Yusuke Suzuki.
2209         
2210         testair launches a bunch of threads and the threads do B3 things that use random numbers.
2211         Sometimes two threads will initialize the random number generator at the same time, because
2212         that's what happens when you use static NeverDestroyed<>.
2213         
2214         This changes that code to use std::call_once to initialize the shared
2215         ARC4RandomNumberGenerator.
2216         
2217         Also, this adds a diagnostic message to the lock's assertion. This assertion was the symptom
2218         of the race, and knowing the state of the lock when the assertion fired gave a darn good clue
2219         about what was going on: the lock's value was 0 at time of unlock, implying that another
2220         thread reinitialized the lock to zero by rerunning the constructor.
2221
2222         * wtf/CryptographicallyRandomNumber.cpp:
2223         * wtf/LockAlgorithmInlines.h:
2224         (WTF::Hooks>::unlockSlow):
2225
2226 2018-05-25  Michael Saboff  <msaboff@apple.com>
2227
2228         JavaScriptCore: Disable 32-bit JIT on Windows
2229         https://bugs.webkit.org/show_bug.cgi?id=185989
2230
2231         Reviewed by Saam Barati.
2232
2233         * wtf/Platform.h:
2234
2235 2018-05-24  Carlos Alberto Lopez Perez  <clopez@igalia.com>
2236
2237         [GTK][WPE] Memory pressure monitor doesn't reliable notify all the subprocesses
2238         https://bugs.webkit.org/show_bug.cgi?id=184261
2239
2240         Reviewed by Carlos Garcia Campos.
2241
2242         Receive the memory pressure notifications from the UIProcess memory monitor via WebKit IPC.
2243
2244         * wtf/MemoryPressureHandler.h:
2245         * wtf/linux/MemoryPressureHandlerLinux.cpp:
2246         (WTF::MemoryPressureHandler::triggerMemoryPressureEvent):
2247         (WTF::MemoryPressureHandler::install):
2248         (WTF::MemoryPressureHandler::uninstall):
2249
2250 2018-05-24  Jiewen Tan  <jiewen_tan@apple.com>
2251
2252         Adopt SecKeyProxy SPI in certificate based challenge response code
2253         https://bugs.webkit.org/show_bug.cgi?id=185848
2254         <rdar://problem/34586181>
2255
2256         Reviewed by Alex Christensen.
2257
2258         Add a condition macro to determine if SecKeyProxy SPI exists.
2259
2260         * wtf/Platform.h:
2261
2262 2018-05-23  Eric Carlson  <eric.carlson@apple.com>
2263
2264         Avoid loading AVFoundation to check supported MIME types if possible
2265         https://bugs.webkit.org/show_bug.cgi?id=185839
2266         <rdar://problem/40182010>
2267
2268         Reviewed by Jer Noble.
2269
2270         * wtf/cocoa/SoftLinking.h: Add SOFT_LINK_FRAMEWORK_OPTIONAL_PREFLIGHT.
2271
2272 2018-05-23  Filip Pizlo  <fpizlo@apple.com>
2273
2274         Speed up JetStream/base64
2275         https://bugs.webkit.org/show_bug.cgi?id=185914
2276
2277         Reviewed by Michael Saboff.
2278         
2279         Make Vector<>::append ALWAYS_INLINE.
2280
2281         * wtf/Vector.h:
2282         (WTF::Vector::append):
2283         (WTF::minCapacity>::expandCapacity):
2284         (WTF::minCapacity>::append):
2285         (WTF::minCapacity>::tryAppend):
2286
2287 2018-05-23  Michael Saboff  <msaboff@apple.com>
2288
2289         Date.parse() doesn't properly handle input outside of ES Spec limits
2290         https://bugs.webkit.org/show_bug.cgi?id=185868
2291
2292         Reviewed by Mark Lam.
2293
2294         Clamped date creation to +/-100,000,000 days relative to midnight at the beginning
2295         of 01 January, 1970 UTC as per ecma262/#sec-time-values-and-time-range and
2296         ecma262/#sec-date-time-string-format.
2297
2298         * wtf/DateMath.cpp:
2299         (WTF::ymdhmsToSeconds):
2300         (WTF::parseES5DateFromNullTerminatedCharacters):
2301
2302 2018-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>
2303
2304         Prohibit shrinking the FastBitVector
2305         https://bugs.webkit.org/show_bug.cgi?id=181020
2306
2307         Reviewed by Oliver Hunt.
2308
2309         Prohibit shrinking the FastBitVector. It's not prepared for this and the current usage does
2310         not require it.
2311
2312         * wtf/FastBitVector.cpp:
2313         (WTF::FastBitVectorWordOwner::resizeSlow):
2314
2315 2018-05-22  Mark Lam  <mark.lam@apple.com>
2316
2317         StringImpl utf8 conversion should not fail silently.
2318         https://bugs.webkit.org/show_bug.cgi?id=185888
2319         <rdar://problem/40464506>
2320
2321         Reviewed by Filip Pizlo.
2322
2323         * WTF.xcodeproj/project.pbxproj:
2324         * wtf/CMakeLists.txt:
2325         * wtf/PrintStream.cpp:
2326         (WTF::printExpectedCStringHelper):
2327         (WTF::printInternal):
2328         * wtf/text/StringImpl.cpp:
2329         (WTF::StringImpl::utf8Impl):
2330         (WTF::StringImpl::utf8ForCharacters):
2331         (WTF::StringImpl::tryUtf8ForRange const):
2332         (WTF::StringImpl::tryUtf8 const):
2333         (WTF::StringImpl::utf8 const):
2334         (WTF::StringImpl::utf8ForRange const): Deleted.
2335         * wtf/text/StringImpl.h:
2336         * wtf/text/StringView.cpp:
2337         (WTF::StringView::tryUtf8 const):
2338         (WTF::StringView::utf8 const):
2339         * wtf/text/StringView.h:
2340         * wtf/text/UTF8ConversionError.h: Added.
2341         * wtf/text/WTFString.cpp:
2342         (WTF::String::tryUtf8 const):
2343         (WTF::String::utf8 const):
2344         * wtf/text/WTFString.h:
2345
2346 2018-05-22  Chris Dumez  <cdumez@apple.com>
2347
2348         Regression(AsyncPolicyDelegates): Box.app login Window is blank
2349         https://bugs.webkit.org/show_bug.cgi?id=185832
2350         <rdar://problem/40307871>
2351
2352         Reviewed by Geoffrey Garen.
2353
2354         Moved WeakObjCPtr.h from WebKit2 to WTF with RetainPtr.h, so that it can be used
2355         in WebKitLegacy code.
2356
2357         * WTF.xcodeproj/project.pbxproj:
2358         * wtf/WeakObjCPtr.h: Renamed from Source/WebKit/Shared/mac/WeakObjCPtr.h.
2359
2360 2018-05-22  Filip Pizlo  <fpizlo@apple.com>
2361
2362         Get rid of TLCs
2363         https://bugs.webkit.org/show_bug.cgi?id=185846
2364
2365         Rubber stamped by Geoffrey Garen.
2366
2367         * wtf/Platform.h:
2368
2369 2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>
2370
2371         Unreviewed, rolling out r232052.
2372
2373         Breaks internal builds.
2374
2375         Reverted changeset:
2376
2377         "Use more C++17"
2378         https://bugs.webkit.org/show_bug.cgi?id=185176
2379         https://trac.webkit.org/changeset/232052
2380
2381 2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>
2382
2383         Use more C++17
2384         https://bugs.webkit.org/show_bug.cgi?id=185176
2385
2386         Reviewed by JF Bastien.
2387
2388         * Configurations/Base.xcconfig:
2389         * wtf/StdLibExtras.h:
2390
2391 2018-05-18  Filip Pizlo  <fpizlo@apple.com>
2392
2393         DFG should inline InstanceOf ICs
2394         https://bugs.webkit.org/show_bug.cgi?id=185695
2395
2396         Reviewed by Yusuke Suzuki.
2397         
2398         I found myself needing a way to represent bottom/false/true/top, so I created it.
2399
2400         * WTF.xcodeproj/project.pbxproj:
2401         * wtf/BooleanLattice.h: Added.
2402         (WTF::lubBooleanLattice):
2403         (WTF::printInternal):
2404         * wtf/CMakeLists.txt:
2405
2406 2018-05-17  Jiewen Tan  <jiewen_tan@apple.com>
2407
2408         Convert CertificateInfo into Credential in UI Process instead of Networking Process
2409         https://bugs.webkit.org/show_bug.cgi?id=185662
2410         <rdar://problem/40275561>
2411
2412         Reviewed by Alex Christensen.
2413
2414         Remove marco HAVE_SEC_IDENTITY since it is no longer useful.
2415
2416         * wtf/Platform.h:
2417
2418 2018-05-17  Zalan Bujtas  <zalan@apple.com>
2419
2420         Add ASSERT_NOT_IMPLEMENTED_YET() macro
2421         https://bugs.webkit.org/show_bug.cgi?id=185713
2422
2423         Reviewed by Antti Koivisto.
2424
2425         To mark unimplemented code paths.
2426
2427         * wtf/Assertions.cpp:
2428         * wtf/Assertions.h:
2429
2430 2018-05-16  Andy VanWagoner  <andy@vanwagoner.family>
2431
2432         Add support for Intl NumberFormat formatToParts
2433         https://bugs.webkit.org/show_bug.cgi?id=185375
2434
2435         Reviewed by Yusuke Suzuki.
2436
2437         Add flag for NumberFormat formatToParts.
2438
2439         * wtf/FeatureDefines.h:
2440
2441 2018-05-16  Yusuke Suzuki  <utatane.tea@gmail.com>
2442
2443         Unreviewed, follow-up after r231762
2444         https://bugs.webkit.org/show_bug.cgi?id=185589
2445
2446         Addresses darin's suggestions to improve timeClip.
2447
2448         * wtf/DateMath.cpp:
2449         (WTF::timeClip):
2450
2451 2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
2452
2453         [Win] Use C++17 in MSVC
2454         https://bugs.webkit.org/show_bug.cgi?id=185232
2455
2456         Reviewed by Alex Christensen.
2457
2458         Disable some WebKit defined C++17 features for MSVC.
2459
2460         * wtf/StdLibExtras.h:
2461
2462 2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
2463
2464         [JSC] timeClip(-0) should produce +0
2465         https://bugs.webkit.org/show_bug.cgi?id=185589
2466
2467         Reviewed by Saam Barati.
2468
2469         According to the spec[1], timeClip(-0) should produce +0.
2470         We achieve this by adding 0.0 to the result of trunc(t).
2471
2472         [1]: https://tc39.github.io/ecma262/#sec-timeclip
2473
2474         * wtf/DateMath.cpp:
2475         (WTF::timeClip):
2476
2477 2018-05-13  Geoffrey Garen  <ggaren@apple.com>
2478
2479         Simplified Mach exception handling
2480         https://bugs.webkit.org/show_bug.cgi?id=185595
2481
2482         Reviewed by Keith Miller.
2483
2484         * wtf/threads/Signals.cpp:
2485         (WTF::startMachExceptionHandlerThread): Use mach_msg_server_once instead
2486         of duplicating its functionality. Separate error handling logic from
2487         program logic to help program logic stand out. Use
2488         DISPATCH_TARGET_QUEUE_* instead of explicitly fetching a queue.
2489
2490         Also, we don't need the high priority queue. The kernel donates a
2491         priority voucher from the exception thread to the receiver thread, and
2492         mach_msg_server_once takes care to forward that voucher.
2493
2494 2018-05-14  Zan Dobersek  <zdobersek@igalia.com>
2495
2496         [GTK] REGRESSION(r231170) Build broken with Clang 5.0
2497         https://bugs.webkit.org/show_bug.cgi?id=185198
2498
2499         Reviewed by Michael Catanzaro.
2500
2501         * wtf/Compiler.h:
2502         * wtf/Forward.h: Delete the std::optional forward declaration that is
2503         potentially incompatible with definition provided by the standard library.
2504         * wtf/Hasher.h:
2505         * wtf/StdLibExtras.h: In addition to the remaining C++14 configurations,
2506         also use custom std::in_place_t implementation when compiling with
2507         libstdc++ 6.x, which doesn't provide its own.
2508
2509 2018-05-13  Filip Pizlo  <fpizlo@apple.com>
2510
2511         Disable pointer poisoning
2512         https://bugs.webkit.org/show_bug.cgi?id=185586
2513
2514         Reviewed by Yusuke Suzuki.
2515         
2516         This seems like a 0.3% speed-up on microbenchmarks. It seems like it may be a small speed-up on
2517         other tests, too.
2518
2519         * wtf/Platform.h:
2520
2521 2018-05-11  Chris Dumez  <cdumez@apple.com>
2522
2523         REGRESSION (async policy delegate): Revoking an object URL immediately after triggering download breaks file download
2524         https://bugs.webkit.org/show_bug.cgi?id=185531
2525         <rdar://problem/39909589>
2526
2527         Reviewed by Geoffrey Garen.
2528
2529         Add a default constructor for CompletionHandlerCallingScope, for convenience.
2530
2531         * wtf/CompletionHandler.h:
2532
2533 2018-05-11  Saam Barati  <sbarati@apple.com>
2534
2535         Don't allocate value profiles when the JIT is disabled
2536         https://bugs.webkit.org/show_bug.cgi?id=185525
2537
2538         Reviewed by Michael Saboff.
2539
2540         * wtf/RefCountedArray.h:
2541         (WTF::RefCountedArray::RefCountedArray):
2542
2543 2018-05-10  Tim Horton  <timothy_horton@apple.com>
2544
2545         Fix the build after r231393
2546         https://bugs.webkit.org/show_bug.cgi?id=185519
2547         <rdar://problem/40131741>
2548
2549         Reviewed by Simon Fraser.
2550
2551         * wtf/Platform.h:
2552
2553 2018-05-09  Michael Catanzaro  <mcatanzaro@igalia.com>
2554
2555         [WPE] Build cleanly with GCC 8 and ICU 60
2556         https://bugs.webkit.org/show_bug.cgi?id=185462
2557
2558         Reviewed by Carlos Alberto Lopez Perez.
2559
2560         * wtf/HashTable.h:
2561         (WTF::HashTableBucketInitializer<true>::initialize): Since -Wclass-memaccess warning. This
2562         is probably safe enough, since it's for an empty bucket.
2563         * wtf/StdLibExtras.h:
2564         (WTF::bitwise_cast): Silence -Wclass-memaccess as we use type traits to ensure safety here.
2565         * wtf/Vector.h: Ditto, all uses are safe.
2566         * wtf/glib/WTFGType.h: Silence -Wcast-function-type.
2567
2568 2018-05-09  Yusuke Suzuki  <utatane.tea@gmail.com>
2569
2570         [ARMv7] Drop ARMv7 disassembler in favor of capstone
2571         https://bugs.webkit.org/show_bug.cgi?id=185423
2572
2573         Reviewed by Michael Catanzaro.
2574
2575         Remove USE_ARMV7_DISASSEMBLER. Just use Capstone.
2576
2577         * wtf/Platform.h:
2578
2579 2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>
2580
2581         [JSC][GTK][JSCONLY] Use capstone disassembler
2582         https://bugs.webkit.org/show_bug.cgi?id=185283
2583
2584         Reviewed by Michael Catanzaro.
2585
2586         Add USE_CAPSTONE used for MIPS and ARM.
2587
2588         * wtf/Platform.h:
2589
2590 2018-05-09  Antti Koivisto  <antti@apple.com>
2591
2592         Add OptionSet::operator& and operator bool
2593         https://bugs.webkit.org/show_bug.cgi?id=185306
2594
2595         Reviewed by Anders Carlsson.
2596
2597         This is primarily to allow writing
2598
2599             if (options & Option:A)
2600
2601         instead of
2602
2603             if (options.contains(Option:A))
2604
2605         This is consistent with other OptionSet operators.
2606
2607         * wtf/OptionSet.h:
2608         (WTF::OptionSet::operator bool):
2609         (WTF::OptionSet::operator&):
2610
2611         Also remove T versions of operator| and operator-, they are not needed due to
2612         implicit conversion from T to OptionSet<T>.
2613
2614 2018-05-06  Filip Pizlo  <fpizlo@apple.com>
2615
2616         InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values
2617         https://bugs.webkit.org/show_bug.cgi?id=185365
2618
2619         Reviewed by Saam Barati.
2620         
2621         Fix some inlining goof-ups.
2622         
2623         Rolling back in after fixing cloop build.
2624
2625         * wtf/TinyPtrSet.h:
2626         (WTF::TinyPtrSet::add):
2627         (WTF::TinyPtrSet::merge):
2628         (WTF::TinyPtrSet::addOutOfLine):
2629         (WTF::TinyPtrSet::mergeOtherOutOfLine):
2630
2631 2018-05-08  Dean Jackson  <dino@apple.com>
2632
2633         Use thumbnails in System Previews
2634         https://bugs.webkit.org/show_bug.cgi?id=185397
2635         <rdar://problem/40039376>
2636
2637         Reviewed by Jon Lee.
2638
2639         SYSTEM_PREVIEW is only available on some platforms.
2640
2641         * wtf/Platform.h:
2642
2643 2018-05-08  Ryan Haddad  <ryanhaddad@apple.com>
2644
2645         Unreviewed, rolling out r231468.
2646
2647         Broke the CLoop build
2648
2649         Reverted changeset:
2650
2651         "InPlaceAbstractState::beginBasicBlock shouldn't have to clear
2652         any abstract values"
2653         https://bugs.webkit.org/show_bug.cgi?id=185365
2654         https://trac.webkit.org/changeset/231468
2655
2656 2018-05-07  Yusuke Suzuki  <utatane.tea@gmail.com>
2657
2658         [JSCONLY] Enable ARMv7 DFG
2659         https://bugs.webkit.org/show_bug.cgi?id=185415
2660
2661         Reviewed by Mark Lam.
2662
2663         Enable ARMv7 DFG JIT by default on Linux and FreeBSD.
2664
2665         * wtf/Platform.h:
2666
2667 2018-05-06  Filip Pizlo  <fpizlo@apple.com>
2668
2669         InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values
2670         https://bugs.webkit.org/show_bug.cgi?id=185365
2671
2672         Reviewed by Saam Barati.
2673         
2674         Fix some inlining goof-ups.
2675
2676         * wtf/TinyPtrSet.h:
2677         (WTF::TinyPtrSet::add):
2678         (WTF::TinyPtrSet::merge):
2679         (WTF::TinyPtrSet::addOutOfLine):
2680         (WTF::TinyPtrSet::mergeOtherOutOfLine):
2681
2682 2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>
2683
2684         [WTF] Embed default atomic string table in Thread
2685         https://bugs.webkit.org/show_bug.cgi?id=185349
2686
2687         Reviewed by Darin Adler.
2688
2689         Do not need to allocate AtomicStringTable separate from Thread
2690         since the table's lifetime is completely the same as Thread.
2691
2692         This patch just embeds it as a data member of Thread.
2693
2694         * wtf/Threading.cpp:
2695         (WTF::Thread::initializeInThread):
2696         (WTF::Thread::didExit):
2697         * wtf/Threading.h:
2698         * wtf/text/AtomicStringTable.cpp:
2699         (WTF::AtomicStringTable::create): Deleted.
2700         (WTF::AtomicStringTable::destroy): Deleted.
2701         * wtf/text/AtomicStringTable.h:
2702
2703 2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>
2704
2705         [WTF] Use static initializers for WTF::Mutex and WTF::ThreadCondition
2706         https://bugs.webkit.org/show_bug.cgi?id=185361
2707
2708         Reviewed by Sam Weinig.
2709
2710         Use static initializers for WTF::Mutex and WTF::ThreadCondition to make
2711         constructors of them simple and constexpr.
2712
2713         * wtf/ThreadingPrimitives.h:
2714         * wtf/ThreadingPthreads.cpp:
2715         (WTF::Mutex::Mutex): Deleted.
2716         (WTF::ThreadCondition::ThreadCondition): Deleted.
2717         * wtf/ThreadingWin.cpp:
2718         (WTF::Mutex::Mutex): Deleted.
2719         (WTF::ThreadCondition::ThreadCondition): Deleted.
2720
2721 2018-05-04  Tim Horton  <timothy_horton@apple.com>
2722
2723         Shift to a lower-level framework for simplifying URLs
2724         https://bugs.webkit.org/show_bug.cgi?id=185334
2725
2726         Reviewed by Dan Bernstein.
2727
2728         * wtf/Platform.h:
2729
2730 2018-05-04  Eric Carlson  <eric.carlson@apple.com>
2731
2732         Log media time range as JSON
2733         https://bugs.webkit.org/show_bug.cgi?id=185321
2734         <rdar://problem/39986746>
2735
2736         Reviewed by Youenn Fablet.
2737
2738         * wtf/MediaTime.cpp:
2739         (WTF::toJSONStringInternal): Extract guts of MediaTime::toJSONString to this static function
2740         so it can be used by MediaTimeRange::toJSONString as well.
2741         (WTF::MediaTime::toJSONString const):
2742         (WTF::MediaTimeRange::toJSONString const):
2743         * wtf/MediaTime.h:
2744
2745 2018-05-04  Antti Koivisto  <antti@apple.com>
2746
2747         OptionsSet initializer list constructor should be constexpr
2748         https://bugs.webkit.org/show_bug.cgi?id=185298
2749
2750         Reviewed by Anders Carlsson.
2751
2752         * wtf/OptionSet.h:
2753         (WTF::OptionSet::OptionSet):
2754
2755 2018-05-03  Yusuke Suzuki  <utatane.tea@gmail.com>
2756
2757         Use default std::optional if it is provided
2758         https://bugs.webkit.org/show_bug.cgi?id=185159
2759
2760         Reviewed by Michael Catanzaro.
2761
2762         * wtf/Expected.h:
2763         * wtf/Optional.h:
2764         Do not use <optional> for clang currently.
2765         (WTF::valueOrCompute):
2766
2767 2018-05-03  Filip Pizlo  <fpizlo@apple.com>
2768
2769         Strings should not be allocated in a gigacage
2770         https://bugs.webkit.org/show_bug.cgi?id=185218
2771
2772         Reviewed by Saam Barati.
2773         
2774         * WTF.xcodeproj/project.pbxproj:
2775         * wtf/Deque.h:
2776         * wtf/Forward.h:
2777         * wtf/Gigacage.h:
2778         (Gigacage::name):
2779         (Gigacage::basePtr):
2780         * wtf/Vector.h:
2781         (WTF::VectorBufferBase::allocateBuffer):
2782         (WTF::VectorBufferBase::tryAllocateBuffer):
2783         (WTF::VectorBufferBase::reallocateBuffer):
2784         (WTF::VectorBufferBase::deallocateBuffer):
2785         (WTF::minCapacity>::Vector):
2786         (WTF::=):
2787         (WTF::minCapacity>::contains const):
2788         (WTF::minCapacity>::findMatching const):
2789         (WTF::minCapacity>::find const):
2790         (WTF::minCapacity>::reverseFind const):
2791         (WTF::minCapacity>::appendIfNotContains):
2792         (WTF::minCapacity>::fill):
2793         (WTF::minCapacity>::appendRange):
2794         (WTF::minCapacity>::expandCapacity):
2795         (WTF::minCapacity>::tryExpandCapacity):
2796         (WTF::minCapacity>::resize):
2797         (WTF::minCapacity>::resizeToFit):
2798         (WTF::minCapacity>::shrink):
2799         (WTF::minCapacity>::grow):
2800         (WTF::minCapacity>::asanSetInitialBufferSizeTo):
2801         (WTF::minCapacity>::asanSetBufferSizeToFullCapacity):
2802         (WTF::minCapacity>::asanBufferSizeWillChangeTo):
2803         (WTF::minCapacity>::reserveCapacity):
2804         (WTF::minCapacity>::tryReserveCapacity):
2805         (WTF::minCapacity>::reserveInitialCapacity):
2806         (WTF::minCapacity>::shrinkCapacity):
2807         (WTF::minCapacity>::append):
2808         (WTF::minCapacity>::tryAppend):
2809         (WTF::minCapacity>::constructAndAppend):
2810         (WTF::minCapacity>::tryConstructAndAppend):
2811         (WTF::minCapacity>::appendSlowCase):
2812         (WTF::minCapacity>::constructAndAppendSlowCase):
2813         (WTF::minCapacity>::tryConstructAndAppendSlowCase):
2814         (WTF::minCapacity>::uncheckedAppend):
2815         (WTF::minCapacity>::appendVector):
2816         (WTF::minCapacity>::insert):
2817         (WTF::minCapacity>::insertVector):
2818         (WTF::minCapacity>::remove):
2819         (WTF::minCapacity>::removeFirst):
2820         (WTF::minCapacity>::removeFirstMatching):
2821         (WTF::minCapacity>::removeAll):
2822         (WTF::minCapacity>::removeAllMatching):
2823         (WTF::minCapacity>::reverse):
2824         (WTF::minCapacity>::map const):
2825         (WTF::minCapacity>::releaseBuffer):
2826         (WTF::minCapacity>::checkConsistency):
2827         (WTF::swap):
2828         (WTF::operator==):
2829         (WTF::operator!=):
2830         (WTF::removeRepeatedElements):
2831         (WTF::Malloc>::Vector): Deleted.
2832         (WTF::Malloc>::contains const): Deleted.
2833         (WTF::Malloc>::findMatching const): Deleted.
2834         (WTF::Malloc>::find const): Deleted.
2835         (WTF::Malloc>::reverseFind const): Deleted.
2836         (WTF::Malloc>::appendIfNotContains): Deleted.
2837         (WTF::Malloc>::fill): Deleted.
2838         (WTF::Malloc>::appendRange): Deleted.
2839         (WTF::Malloc>::expandCapacity): Deleted.
2840         (WTF::Malloc>::tryExpandCapacity): Deleted.
2841         (WTF::Malloc>::resize): Deleted.
2842         (WTF::Malloc>::resizeToFit): Deleted.
2843         (WTF::Malloc>::shrink): Deleted.
2844         (WTF::Malloc>::grow): Deleted.
2845         (WTF::Malloc>::asanSetInitialBufferSizeTo): Deleted.
2846         (WTF::Malloc>::asanSetBufferSizeToFullCapacity): Deleted.
2847         (WTF::Malloc>::asanBufferSizeWillChangeTo): Deleted.
2848         (WTF::Malloc>::reserveCapacity): Deleted.
2849         (WTF::Malloc>::tryReserveCapacity): Deleted.
2850         (WTF::Malloc>::reserveInitialCapacity): Deleted.
2851         (WTF::Malloc>::shrinkCapacity): Deleted.
2852         (WTF::Malloc>::append): Deleted.
2853         (WTF::Malloc>::tryAppend): Deleted.
2854         (WTF::Malloc>::constructAndAppend): Deleted.
2855         (WTF::Malloc>::tryConstructAndAppend): Deleted.
2856         (WTF::Malloc>::appendSlowCase): Deleted.
2857         (WTF::Malloc>::constructAndAppendSlowCase): Deleted.
2858         (WTF::Malloc>::tryConstructAndAppendSlowCase): Deleted.
2859         (WTF::Malloc>::uncheckedAppend): Deleted.
2860         (WTF::Malloc>::appendVector): Deleted.
2861         (WTF::Malloc>::insert): Deleted.
2862         (WTF::Malloc>::insertVector): Deleted.
2863         (WTF::Malloc>::remove): Deleted.
2864         (WTF::Malloc>::removeFirst): Deleted.
2865         (WTF::Malloc>::removeFirstMatching): Deleted.
2866         (WTF::Malloc>::removeAll): Deleted.
2867         (WTF::Malloc>::removeAllMatching): Deleted.
2868         (WTF::Malloc>::reverse): Deleted.
2869         (WTF::Malloc>::map const): Deleted.
2870         (WTF::Malloc>::releaseBuffer): Deleted.
2871         (WTF::Malloc>::checkConsistency): Deleted.
2872         * wtf/text/AtomicStringImpl.h:
2873         * wtf/text/CString.cpp:
2874         (WTF::CStringBuffer::createUninitialized):
2875         * wtf/text/CString.h:
2876         * wtf/text/StringBuffer.h:
2877         (WTF::StringBuffer::StringBuffer):
2878         (WTF::StringBuffer::~StringBuffer):
2879         (WTF::StringBuffer::resize):
2880         * wtf/text/StringImpl.cpp:
2881         (WTF::StringImpl::~StringImpl):
2882         (WTF::StringImpl::destroy):
2883         (WTF::StringImpl::createUninitializedInternalNonEmpty):
2884         (WTF::StringImpl::reallocateInternal):
2885         (WTF::StringImpl::releaseAssertCaged const): Deleted.
2886         * wtf/text/StringImpl.h:
2887         (WTF::StringImpl::createSubstringSharingImpl):
2888         (WTF::StringImpl::tryCreateUninitialized):
2889         (WTF::StringImpl::adopt):
2890         (WTF::StringImpl::assertCaged const): Deleted.
2891         * wtf/text/StringMalloc.cpp: Removed.
2892         * wtf/text/StringMalloc.h: Removed.
2893         * wtf/text/StringVector.h: Removed.
2894         * wtf/text/SymbolImpl.h:
2895         * wtf/text/UniquedStringImpl.h:
2896         * wtf/text/WTFString.h:
2897         (WTF::String::adopt):
2898         (WTF::String::assertCaged const): Deleted.
2899         (WTF::String::releaseAssertCaged const): Deleted.
2900
2901 2018-05-03  Wenson Hsieh  <wenson_hsieh@apple.com>
2902
2903         Ads in NYTimes app are shifted downwards by the scroll view's top content inset
2904         https://bugs.webkit.org/show_bug.cgi?id=185251
2905         <rdar://problem/39062357>
2906
2907         Reviewed by Tim Horton.
2908
2909         Add a new DYLD_IOS_VERSION macro definition for previous or non-internal SDKs.
2910
2911         * wtf/spi/darwin/dyldSPI.h:
2912
2913 2018-05-03  Ryan Haddad  <ryanhaddad@apple.com>
2914
2915         Unreviewed, rolling out r231197.
2916
2917         The test added with this change crashes on the 32-bit JSC bot.
2918
2919         Reverted changeset:
2920
2921         "Correctly detect string overflow when using the 'Function'
2922         constructor"
2923         https://bugs.webkit.org/show_bug.cgi?id=184883
2924         https://trac.webkit.org/changeset/231197
2925
2926 2018-05-03  Commit Queue  <commit-queue@webkit.org>
2927
2928         Unreviewed, rolling out r231223 and r231288.
2929         https://bugs.webkit.org/show_bug.cgi?id=185256
2930
2931         The change in r231223 breaks internal builds, and r231288 is a
2932         dependent change. (Requested by ryanhaddad on #webkit).
2933
2934         Reverted changesets:
2935
2936         "Use default std::optional if it is provided"
2937         https://bugs.webkit.org/show_bug.cgi?id=185159
2938         https://trac.webkit.org/changeset/231223
2939
2940         "Use pointer instead of
2941         std::optional<std::reference_wrapper<>>"
2942         https://bugs.webkit.org/show_bug.cgi?id=185186
2943         https://trac.webkit.org/changeset/231288
2944
2945 2018-05-02  Commit Queue  <commit-queue@webkit.org>
2946
2947         Unreviewed, rolling out r231251.
2948         https://bugs.webkit.org/show_bug.cgi?id=185229
2949
2950         __cpp_lib_optional should be used after including <optional>
2951         since it is defined in <optional> (Requested by yusukesuzuki
2952         on #webkit).
2953
2954         Reverted changeset:
2955
2956         "Follow-up build fix for r231223"
2957         https://bugs.webkit.org/show_bug.cgi?id=185159
2958         https://trac.webkit.org/changeset/231251
2959
2960 2018-05-02  Jonathan Bedard  <jbedard@apple.com>
2961
2962         Follow-up build fix for r231223
2963         https://bugs.webkit.org/show_bug.cgi?id=185159
2964         <rdar://problem/39891074>
2965
2966         Unreviewed build fix.
2967
2968         We should be consistent about when we include <optional> vs define our own.
2969
2970         * wtf/Optional.h:
2971
2972 2018-05-02  Jer Noble  <jer.noble@apple.com>
2973
2974         Enable HAVE_AVKIT for the MINIMAL_SIMULATOR
2975         https://bugs.webkit.org/show_bug.cgi?id=185183
2976
2977         Reviewed by Daniel Bates.
2978
2979         * wtf/Platform.h:
2980
2981 2018-05-01  Yusuke Suzuki  <utatane.tea@gmail.com>
2982
2983         Use default std::optional if it is provided
2984         https://bugs.webkit.org/show_bug.cgi?id=185159
2985
2986         Reviewed by JF Bastien.
2987
2988         Now C++17 flag is enabled. It means that any standard libraries can use <optional> internally.
2989         If we define std::optional regardless of the existence of the standard library's <optional>,
2990         it causes compile errors. For example, in GCC 7 (specifically GCC 7.3.0) environment,
2991         <optional> is included in <unordered_map>.
2992         We do not define std::optional in WebKit side if <optional> is offered.
2993
2994         And we also remove std::optional<T&> use since this is not accepted in C++17. Use
2995         std::optional<std::reference_wrapper<T>> instead.
2996
2997         * wtf/Expected.h:
2998         constexpr does not mean const in C++17.
2999
3000         * wtf/Optional.h:
3001         Do not define std::optional if <optional> is provided.
3002
3003         (WTF::valueOrCompute):
3004
3005 2018-05-01  Robin Morisset  <rmorisset@apple.com>
3006
3007         Correctly detect string overflow when using the 'Function' constructor
3008         https://bugs.webkit.org/show_bug.cgi?id=184883
3009         <rdar://problem/36320331>
3010
3011         Reviewed by Filip Pizlo.
3012
3013         I added new tryAppend methods alongside the old append methods in StringBuilder, that return a boolean (true means success, false means an overflow happened).
3014         I made new methods instead of just adapting the existing ones (and reverted such a change on appendQuotedJSONString) so that callers that rely on the old behaviour (a hard CRASH() on overflow) don't silently start failing.
3015
3016         * wtf/text/StringBuilder.cpp:
3017         (WTF::StringBuilder::allocateBufferUpConvert):
3018         (WTF::StringBuilder::tryAllocateBufferUpConvert):
3019         (WTF::StringBuilder::appendUninitialized):
3020         (WTF::StringBuilder::append):
3021         (WTF::StringBuilder::tryAppend):
3022         * wtf/text/StringBuilder.h:
3023         (WTF::StringBuilder::tryAppend):
3024         (WTF::StringBuilder::append):
3025         (WTF::StringBuilder::tryAppendLiteral):
3026         * wtf/text/StringBuilderJSON.cpp:
3027         (WTF::StringBuilder::appendQuotedJSONString):
3028         (WTF::StringBuilder::tryAppendQuotedJSONString):
3029
3030 2018-04-30  Mark Lam  <mark.lam@apple.com>
3031
3032         Apply PtrTags to the MetaAllocator and friends.
3033         https://bugs.webkit.org/show_bug.cgi?id=185110
3034         <rdar://problem/39533895>
3035
3036         Reviewed by Saam Barati.
3037
3038         1. Introduce a MetaAllocatorPtr smart pointer to do pointer tagging.
3039         2. Use MetaAllocatorPtr in MetaAllocator and MetaAllocatorHandle.
3040
3041         * WTF.xcodeproj/project.pbxproj:
3042         * wtf/CMakeLists.txt:
3043         * wtf/MetaAllocator.cpp:
3044         (WTF::MetaAllocator::release):
3045         (WTF::MetaAllocatorHandle::MetaAllocatorHandle):
3046         (WTF::MetaAllocatorHandle::shrink):
3047         (WTF::MetaAllocatorHandle::dump const):
3048         (WTF::MetaAllocator::allocate):
3049         (WTF::MetaAllocator::findAndRemoveFreeSpace):
3050         (WTF::MetaAllocator::addFreeSpaceFromReleasedHandle):
3051         (WTF::MetaAllocator::addFreshFreeSpace):
3052         (WTF::MetaAllocator::debugFreeSpaceSize):
3053         (WTF::MetaAllocator::addFreeSpace):
3054         (WTF::MetaAllocator::allocFreeSpaceNode):
3055         * wtf/MetaAllocator.h:
3056         (WTF::MetaAllocatorTracker::find):
3057         (WTF::MetaAllocator::FreeSpaceNode::FreeSpaceNode):
3058         (WTF::MetaAllocator::FreeSpaceNode::sizeInBytes):
3059         (WTF::MetaAllocator::FreeSpaceNode::key):
3060         * wtf/MetaAllocatorHandle.h:
3061         (WTF::MetaAllocatorHandle::start const):
3062         (WTF::MetaAllocatorHandle::end const):
3063         (WTF::MetaAllocatorHandle::startAsInteger const):
3064         (WTF::MetaAllocatorHandle::endAsInteger const):
3065         (WTF::MetaAllocatorHandle::sizeInBytes const):
3066         (WTF::MetaAllocatorHandle::containsIntegerAddress const):
3067         (WTF::MetaAllocatorHandle::key):
3068         * wtf/MetaAllocatorPtr.h: Added.
3069         (WTF::MetaAllocatorPtr::MetaAllocatorPtr):
3070         (WTF::MetaAllocatorPtr:: const):
3071         (WTF::MetaAllocatorPtr::operator bool const):
3072         (WTF::MetaAllocatorPtr::operator! const):
3073         (WTF::MetaAllocatorPtr::operator== const):
3074         (WTF::MetaAllocatorPtr::operator!= const):
3075         (WTF::MetaAllocatorPtr::operator+ const):
3076         (WTF::MetaAllocatorPtr::operator- const):
3077         (WTF::MetaAllocatorPtr::operator+=):
3078         (WTF::MetaAllocatorPtr::operator-=):
3079         (WTF::MetaAllocatorPtr::isEmptyValue const):
3080         (WTF::MetaAllocatorPtr::isDeletedValue const):
3081         (WTF::MetaAllocatorPtr::hash const):
3082         (WTF::MetaAllocatorPtr::emptyValue):
3083         (WTF::MetaAllocatorPtr::deletedValue):
3084         (WTF::MetaAllocatorPtrHash::hash):
3085         (WTF::MetaAllocatorPtrHash::equal):
3086         * wtf/PtrTag.h:
3087
3088 2018-04-30  JF Bastien  <jfbastien@apple.com>
3089
3090         Use some C++17 features
3091         https://bugs.webkit.org/show_bug.cgi?id=185135
3092
3093         Reviewed by Alex Christensen.
3094
3095         * wtf/StdLibExtras.h: libstdc++ doesn't say it's C++17 when it
3096         defines std::conjunction. Use the feature test macro instead.
3097
3098 2018-04-30  Yusuke Suzuki  <utatane.tea@gmail.com>
3099
3100         Use WordLock instead of std::mutex for Threading
3101         https://bugs.webkit.org/show_bug.cgi?id=185121
3102
3103         Reviewed by Geoffrey Garen.
3104
3105         Before r231151, WordLock depends on ThreadSpecific. It means that our Threading implementation
3106         cannot use this lock since Threading primitives could touch these locks after ThreadSpecific
3107         for that WordLock is destroyed.
3108
3109         Now WordLock is changed not to use ThreadSpecific. So it does not depend on our Threading
3110         mechanism and our Threading can start using WordLock internally.
3111
3112         This patch changes WTF::Thread and WTF::ThreadGroup to use WordLock instead of std::mutex.
3113
3114         And add constexpr to explicitly describe that Lock, Condition, and WordLock constructors are constexpr.
3115
3116         * wtf/Condition.h:
3117         * wtf/Lock.h:
3118         * wtf/ThreadGroup.h:
3119         (WTF::ThreadGroup::getLock):
3120         * wtf/Threading.cpp:
3121         (WTF::Thread::didExit):
3122         (WTF::Thread::addToThreadGroup):
3123         (WTF::Thread::removeFromThreadGroup):
3124         * wtf/Threading.h:
3125         * wtf/ThreadingPthreads.cpp:
3126         (WTF::Thread::changePriority):
3127         (WTF::Thread::waitForCompletion):
3128         (WTF::Thread::detach):
3129         (WTF::Thread::signal):
3130         (WTF::Thread::establishPlatformSpecificHandle):
3131         * wtf/ThreadingWin.cpp:
3132         (WTF::Thread::changePriority):
3133         (WTF::Thread::waitForCompletion):
3134         (WTF::Thread::detach):
3135         (WTF::Thread::establishPlatformSpecificHandle):
3136         (WTF::Thread::initializeTLSKey):
3137         (WTF::Thread::currentDying):
3138         (WTF::Thread::get):
3139         (WTF::Thread::initializeTLS):
3140         (WTF::Thread::destructTLS):
3141         (WTF::threadMapMutex): Deleted.
3142         * wtf/WordLock.h:
3143
3144 2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>
3145
3146         [CMake] Require GCC 6
3147         https://bugs.webkit.org/show_bug.cgi?id=184985
3148
3149         Reviewed by Alex Christensen.
3150
3151         Stop enforcing GCC version in Compiler.h. It's better to do this in the build system. And I
3152         don't like having the same check in two different places.
3153
3154         * wtf/Compiler.h:
3155
3156 2018-04-29  Geoffrey Garen  <ggaren@apple.com>
3157
3158         WordLock doesn't need per-thread data
3159         https://bugs.webkit.org/show_bug.cgi?id=185119
3160
3161         Reviewed by Yusuke Suzuki.
3162
3163         The stack is per-thread data, so we can stack-allocate our ThreadData.
3164
3165         This eliminates malloc() and high-level WTF threading primitives from
3166         WordLock, making WordLock more portable to non-WTF code, including
3167         bmalloc.
3168
3169         (NOTE: This patch makes the bug fixed in r231148 100% reproducible.)
3170
3171         * wtf/WordLock.cpp:
3172         (WTF::WordLock::lockSlow): Allocate ThreadData on the stack.
3173
3174 2018-04-28  Geoffrey Garen  <ggaren@apple.com>
3175
3176         Fixed a very unlikely race condition in WTF::WordLock
3177         https://bugs.webkit.org/show_bug.cgi?id=185117
3178
3179         Reviewed by Saam Barati.
3180
3181         The race goes like this:
3182
3183         Thread L is in lockSlowCase() and thread U is in unlockSlowCase();
3184
3185         - U acquires queueHead->parkingLock.
3186         - U sets queueHead->shouldPark = false
3187         - U releases queueHead->parkingLock.
3188         - L spuriously wakes up from queueHead->parkingLock.wait()
3189         - L acquires queueHead->parkingLock.
3190         - L notices that queueHead->shouldPark = false, and acquires the WordLock
3191         - L finishes all its work and exits, freeing queueHead
3192         - U notifies queueHead->parkingLock (after free) and crashes or deadlocks
3193
3194         These conditions are currently so unlikely that I don't know how to test
3195         them. I noticed this race because I changed WordLock's allocation pattern
3196         to allow queueHead to be freed more often, and I crashed / deadlocked 100%.
3197
3198         Shout out to <http://en.cppreference.com/w/cpp/thread/condition_variable/notify_one>
3199         for explaining this.
3200
3201         * benchmarks/ToyLocks.h: Fixed build.
3202
3203         * wtf/WordLock.cpp:
3204         (WTF::WordLock::unlockSlow): Hold the lock a little longer to avoid
3205         this race.
3206
3207 2018-04-27  David Kilzer  <ddkilzer@apple.com>
3208
3209         Add logging when SpringBoard enables WebThread
3210         <https://webkit.org/b/185100>
3211         <rdar://problem/39746542>
3212
3213         Reviewed by Daniel Bates.
3214
3215         * wtf/Assertions.h:
3216         (RELEASE_LOG_FAULT): Add macro to call os_log_fault().
3217         * wtf/Platform.h: Drive-by fix to enable USE(OS_LOG) on
3218         public iOS SDKs since <rdar://problem/27758343> was
3219         fixed in iOS 11.0.
3220
3221 2018-04-26  Mark Lam  <mark.lam@apple.com>
3222
3223         Gardening: Speculative build fix for Windows.
3224         https://bugs.webkit.org/show_bug.cgi?id=184976
3225         <rdar://problem/39723901>
3226
3227         Not reviewed.
3228
3229         * wtf/PtrTag.h:
3230         (WTF::makePtrTagHash): Undo last speculative build fix that did not work for 64-bit.
3231
3232 2018-04-26  Andy VanWagoner  <thetalecrafter@gmail.com>
3233
3234         [INTL] Implement Intl.PluralRules
3235         https://bugs.webkit.org/show_bug.cgi?id=184312
3236
3237         Reviewed by JF Bastien.
3238
3239         Added Intl.PluralRules feature flag.
3240
3241         * wtf/FeatureDefines.h:
3242
3243 2018-04-25  Mark Lam  <mark.lam@apple.com>
3244
3245         Gardening: Speculative build fix for Windows 32-bit to compensate for MSVC's lack of smarts.
3246         https://bugs.webkit.org/show_bug.cgi?id=184976
3247         <rdar://problem/39723901>
3248
3249         Not reviewed.
3250
3251         According to https://stackoverflow.com/questions/37658794/integer-constant-overflow-warning-in-constexpr,
3252         disabling the warning around the definition of the function will not disable it
3253         for all clients of the function.
3254
3255         * wtf/PtrTag.h:
3256         (WTF::makePtrTagHash):
3257
3258 2018-04-25  Mark Lam  <mark.lam@apple.com>
3259
3260         Push the definition of PtrTag down to the WTF layer.
3261         https://bugs.webkit.org/show_bug.cgi?id=184976
3262         <rdar://problem/39723901>
3263
3264         Reviewed by Saam Barati.
3265
3266         This is in preparation for doing pointer profiling at the WTF layer as well.
3267         Also deleted an unused ptrTag() function.
3268
3269         * WTF.xcodeproj/project.pbxproj:
3270         * wtf/CMakeLists.txt:
3271         * wtf/PtrTag.h: Copied from Source/JavaScriptCore/runtime/PtrTag.h.
3272         (WTF::makePtrTagHash):
3273         (JSC::ptrTagName): Deleted.
3274         (JSC::tagForPtr): Deleted.
3275         (JSC::ptrTag): Deleted.
3276         (JSC::tagCodePtr): Deleted.
3277         (JSC::untagCodePtr): Deleted.
3278         (JSC::retagCodePtr): Deleted.
3279         (JSC::removeCodePtrTag): Deleted.
3280         (JSC::tagCFunctionPtr): Deleted.
3281         (JSC::untagCFunctionPtr): Deleted.
3282         (JSC::assertIsCFunctionPtr): Deleted.
3283         (JSC::assertIsNullOrCFunctionPtr): Deleted.
3284         (JSC::assertIsNotTagged): Deleted.
3285         (JSC::assertIsTagged): Deleted.
3286         (JSC::assertIsNullOrTagged): Deleted.
3287         (JSC::assertIsTaggedWith): Deleted.
3288         (JSC::assertIsNullOrTaggedWith): Deleted.
3289
3290 2018-04-25  Dean Jackson  <dino@apple.com>
3291
3292         Make a better flag for system preview, and disable it where necessary
3293         https://bugs.webkit.org/show_bug.cgi?id=184968
3294         <rdar://problem/39686506>
3295
3296         Reviewed by Eric Carlson.
3297
3298         Add a new USE(SYSTEM_PREVIEW).
3299
3300         * wtf/Platform.h:
3301
3302 2018-04-24  Commit Queue  <commit-queue@webkit.org>
3303
3304         Unreviewed, rolling out r230971.
3305         https://bugs.webkit.org/show_bug.cgi?id=184939
3306
3307         This fix was not appropriate (Requested by n_wang on #webkit).
3308
3309         Reverted changeset:
3310
3311         "AX: soft link libAccessibility.dylb"
3312         https://bugs.webkit.org/show_bug.cgi?id=184919
3313         https://trac.webkit.org/changeset/230971
3314
3315 2018-04-24  Nan Wang  <n_wang@apple.com>
3316
3317         AX: soft link libAccessibility.dylb
3318         https://bugs.webkit.org/show_bug.cgi?id=184919
3319
3320         Reviewed by Chris Fleizach.
3321
3322         * wtf/cocoa/SoftLinking.h:
3323
3324 2018-04-23  Zalan Bujtas  <zalan@apple.com>
3325
3326         [LayoutFormattingContext] Initial commit.
3327         https://bugs.webkit.org/show_bug.cgi?id=184896
3328
3329         Reviewed by Antti Koivisto.
3330
3331         * wtf/FeatureDefines.h:
3332
3333 2018-04-23  Per Arne Vollan  <pvollan@apple.com>
3334
3335         Deactivate the WindowServer connection for the WebContent process.
3336         https://bugs.webkit.org/show_bug.cgi?id=184451
3337         <rdar://problem/38313938>
3338
3339         Reviewed by Brent Fulgham.
3340
3341         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
3342         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
3343         process startup. After calling this function, every attempt to establish a connection to the
3344         WindowServer from the WebContent process will fail, except for CA render server connections.
3345
3346         * wtf/FeatureDefines.h:
3347
3348 2018-04-20  JF Bastien  <jfbastien@apple.com>
3349
3350         Handle more JSON stringify OOM
3351         https://bugs.webkit.org/show_bug.cgi?id=184846
3352         <rdar://problem/39390672>
3353
3354         Reviewed by Mark Lam.
3355
3356         JSON stringification can OOM easily. Here's another case.
3357
3358         * wtf/text/StringBuilderJSON.cpp:
3359         (WTF::StringBuilder::appendQuotedJSONString):
3360
3361 2018-04-18  Jer Noble  <jer.noble@apple.com>
3362
3363         Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds
3364         https://bugs.webkit.org/show_bug.cgi?id=184762
3365
3366         Reviewed by Dan Bernstein.
3367
3368         * Configurations/Base.xcconfig:
3369
3370 2018-04-20  Daniel Bates  <dabates@apple.com>
3371
3372         Remove code for compilers that did not support NSDMI for aggregates
3373         https://bugs.webkit.org/show_bug.cgi?id=184599
3374
3375         Reviewed by Per Arne Vollan.
3376
3377         Remove workaround for earlier Visual Studio versions that did not support non-static data
3378         member initializers (NSDMI) for aggregates. We have since updated all the build.webkit.org
3379         and EWS bots to a newer version that supports this feature.
3380
3381         * wtf/Compiler.h:
3382
3383 2018-04-19  David Kilzer  <ddkilzer@apple.com>
3384
3385         Enable Objective-C weak references
3386         <https://webkit.org/b/184789>
3387         <rdar://problem/39571716>
3388
3389         Reviewed by Dan Bernstein.
3390
3391         * Configurations/Base.xcconfig:
3392         (CLANG_ENABLE_OBJC_WEAK): Enable.
3393
3394 2018-04-19  Brady Eidson  <beidson@apple.com>
3395
3396         Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them).
3397         <rdar://problem/39533949> and https://bugs.webkit.org/show_bug.cgi?id=184750
3398
3399         Reviewed by Ryosuke Niwa.
3400
3401         * wtf/DebugUtilities.h:
3402         (WTF::debugString):
3403
3404 2018-04-19  Per Arne Vollan  <pvollan@apple.com>
3405
3406         Unreviewed, rolling out r230677.
3407
3408         Introduced Netflix problems.
3409
3410         Reverted changeset:
3411
3412         "Deactivate the WindowServer connection for the WebContent process."
3413         https://bugs.webkit.org/show_bug.cgi?id=184451
3414         https://trac.webkit.org/changeset/230677
3415
3416 2018-04-19  Nan Wang  <n_wang@apple.com>
3417
3418         AX: AOM: respect the accessibility setting for dispatching the accessible events
3419         https://bugs.webkit.org/show_bug.cgi?id=184619
3420
3421         Reviewed by Ryosuke Niwa.
3422
3423         * wtf/Platform.h:
3424
3425 2018-04-18  Ross Kirsling  <ross.kirsling@sony.com>
3426
3427         [Win] Layout Test js/date-constructor.html is failing
3428         https://bugs.webkit.org/show_bug.cgi?id=140945
3429
3430         Reviewed by Per Arne Vollan.
3431
3432         * wtf/DateMath.cpp:
3433         (WTF::calculateDSTOffset):
3434         Move all shared calculations outside of the #if -- including the "jump forward a day" case that had been overlooked.
3435
3436 2018-04-17  Saam Barati  <sbarati@apple.com>
3437
3438         Add system trace points for process launch and for initializeWebProcess
3439         https://bugs.webkit.org/show_bug.cgi?id=184669
3440
3441         Reviewed by Simon Fraser.
3442
3443         This patch adds TracePointCodes to measure process launch time and
3444         WebProcess::initializeWebProcess time.
3445         
3446         It also renames the TracePoint function to tracePoint since WebKit style
3447         does not capitalize the first letter in function names.
3448
3449         * wtf/SystemTracing.h:
3450         (WTF::tracePoint):
3451         (WTF::TraceScope::TraceScope):
3452         (WTF::TraceScope::~TraceScope):
3453         (WTF::TracePoint): Deleted.
3454
3455 2018-04-16  Andy Estes  <aestes@apple.com>
3456
3457         [iOS] Enable WKPDFView by default
3458         https://bugs.webkit.org/show_bug.cgi?id=184675
3459         <rdar://problem/27885452>
3460
3461         Reviewed by Darin Adler.
3462
3463         * wtf/FeatureDefines.h:
3464
3465 2018-04-16  Per Arne Vollan  <pvollan@apple.com>
3466
3467         Deactivate the WindowServer connection for the WebContent process.
3468         https://bugs.webkit.org/show_bug.cgi?id=184451
3469         <rdar://problem/38313938>
3470
3471         Reviewed by Brent Fulgham.
3472
3473         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
3474         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
3475         process startup. After calling this function, every attempt to establish a connection to the
3476         WindowServer from the WebContent process will fail, except for CA render server connections.
3477
3478         * wtf/FeatureDefines.h:
3479
3480 2018-04-14  Commit Queue  <commit-queue@webkit.org>
3481
3482         Unreviewed, rolling out r230659.
3483         https://bugs.webkit.org/show_bug.cgi?id=184633
3484
3485         Landed prematurely (Requested by ap on #webkit).
3486
3487         Reverted changeset:
3488
3489         "Deactivate the WindowServer connection for the WebContent
3490         process."
3491         https://bugs.webkit.org/show_bug.cgi?id=184451
3492         https://trac.webkit.org/changeset/230659
3493
3494 2018-04-14  Per Arne Vollan  <pvollan@apple.com>
3495
3496         Deactivate the WindowServer connection for the WebContent process.
3497         https://bugs.webkit.org/show_bug.cgi?id=184451
3498         <rdar://problem/38313938>
3499
3500         Reviewed by Brent Fulgham.
3501
3502         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
3503         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
3504         process startup. After calling this function, every attempt to establish a connection to the
3505         WindowServer from the WebContent process will fail, except for CA render server connections.
3506
3507         * wtf/FeatureDefines.h:
3508
3509 2018-04-13  Chris Dumez  <cdumez@apple.com>
3510
3511         Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame
3512         https://bugs.webkit.org/show_bug.cgi?id=184591
3513
3514         Reviewed by Sam Weinig.
3515
3516         Add isEmpty() convenience method to SizedIteratorRange.
3517
3518         * wtf/IteratorRange.h:
3519         (WTF::SizedIteratorRange::isEmpty const):
3520
3521 2018-04-13  Brady Eidson  <beidson@apple.com>
3522
3523         Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one.
3524         https://bugs.webkit.org/show_bug.cgi?id=184559
3525
3526         Reviewed by Alex Christensen.
3527
3528         * wtf/DebugUtilities.h:
3529         (WTF::debugString): Add a debug utility to easily construct a "const char*" that is released after a spin of the run loop.
3530           This greatly eases uses our String classes and functions inside of "%s" style environments like printf and LOG.
3531
3532 2018-04-12  Michael Catanzaro  <mcatanzaro@igalia.com>
3533
3534         Remove unused crash hook functionality
3535         https://bugs.webkit.org/show_bug.cgi?id=183369
3536
3537         Reviewed by Alexey Proskuryakov.
3538
3539         WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
3540         can be removed.
3541
3542         * wtf/Assertions.cpp:
3543         * wtf/Assertions.h:
3544
3545 2018-04-11  Said Abou-Hallawa  <sabouhallawa@apple.com>
3546
3547         Unreviewed, rolling out r230523.
3548
3549         Introduced MotionMark regression
3550
3551         Reverted changeset:
3552
3553         "Deactivate the WindowServer connection for the WebContent
3554         process."
3555         https://bugs.webkit.org/show_bug.cgi?id=184451
3556         https://trac.webkit.org/changeset/230523
3557
3558 2018-04-11  Per Arne Vollan  <pvollan@apple.com>
3559
3560         Deactivate the WindowServer connection for the WebContent process.
3561         https://bugs.webkit.org/show_bug.cgi?id=184451
3562         <rdar://problem/38313938>
3563
3564         Reviewed by Brent Fulgham.
3565
3566         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
3567         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
3568         process startup. After calling this function, every attempt to establish a connection to the
3569         WindowServer from the WebContent process will fail, except for CA render server connections.
3570
3571         * wtf/FeatureDefines.h:
3572
3573 2018-04-10  Andy Estes  <aestes@apple.com>
3574
3575         [iOS] Use PDFKit to render PDFs in WKWebView
3576         https://bugs.webkit.org/show_bug.cgi?id=184387
3577
3578         Reviewed by Beth Dakin.
3579
3580         * wtf/FeatureDefines.h: Defined ENABLE_WKLEGACYPDFVIEW and ENABLE_WKPDFVIEW.
3581
3582 2018-04-09  Mark Lam  <mark.lam@apple.com>
3583
3584         Decorate method table entries to support pointer profiling.
3585         https://bugs.webkit.org/show_bug.cgi?id=184430
3586         <rdar://problem/39296190>
3587
3588         Reviewed by Saam Barati.
3589
3590         * wtf/PointerPreparations.h:
3591
3592 2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
3593
3594         Unreviewed, use alignas(void*)
3595         https://bugs.webkit.org/show_bug.cgi?id=183508
3596
3597         Very large alignment is not supported in MSVC.
3598
3599         * wtf/Gigacage.cpp:
3600         * wtf/Gigacage.h:
3601
3602 2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
3603
3604         Use alignas instead of compiler-specific attributes
3605         https://bugs.webkit.org/show_bug.cgi?id=183508
3606
3607         Reviewed by Mark Lam.
3608
3609         Use alignas for g_gigacageBasePtr. We also add reinterpret_cast to fix
3610         compile errors in ARMv7 and MIPS JSCOnly ports.
3611
3612         * wtf/Gigacage.cpp:
3613         * wtf/Gigacage.h:
3614         (Gigacage::basePtrs):
3615
3616 2018-04-06  Saam Barati  <sbarati@apple.com>
3617
3618         bmalloc's tryLargeZeroedMemalignVirtual shouldn't treat the entire virtual size as dirty towards its footprint
3619         https://bugs.webkit.org/show_bug.cgi?id=184207
3620
3621         Reviewed by Mark Lam.
3622
3623         * wtf/Gigacage.cpp:
3624         (Gigacage::freeVirtualPages):
3625
3626 2018-04-05  Yusuke Suzuki  <utatane.tea@gmail.com>
3627
3628         [WTF] Remove StaticLock
3629         https://bugs.webkit.org/show_bug.cgi?id=184332
3630
3631         Reviewed by Mark Lam.
3632
3633         Now, WTF::StaticLock is `using StaticLock = Lock`. Lock just works
3634         in either static storage and dynamic storage. Remove StaticLock and
3635         always use Lock.
3636
3637         We also remove StaticWordLock and StaticReadWriteLock. And we add
3638         WTF::RecursiveLock, which is RecursiveLockAdapter<Lock>.
3639
3640         * wtf/HashTable.cpp:
3641         (WTF::HashTableStats::recordCollisionAtCount):
3642         (WTF::HashTableStats::dumpStats):
3643         * wtf/Language.cpp:
3644         (WTF::userPreferredLanguages):
3645         * wtf/Lock.h:
3646         * wtf/MainThread.cpp:
3647         (WTF::dispatchFunctionsFromMainThread):
3648         (WTF::callOnMainThread):
3649         * wtf/ParkingLot.cpp:
3650         * wtf/ReadWriteLock.h:
3651         * wtf/RecursiveLockAdapter.h:
3652         * wtf/StackStats.cpp:
3653         (WTF::StackStats::CheckPoint::CheckPoint):
3654         (WTF::StackStats::CheckPoint::~CheckPoint):
3655         (WTF::StackStats::probe):
3656         (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
3657         (WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
3658         * wtf/StackStats.h:
3659         * wtf/ThreadMessage.cpp:
3660         (WTF::sendMessageScoped):
3661         * wtf/ThreadingPthreads.cpp:
3662         * wtf/ThreadingWin.cpp:
3663         * wtf/WordLock.h:
3664         * wtf/cf/LanguageCF.cpp:
3665         (WTF::languagePreferencesDidChange):
3666         (WTF::platformUserPreferredLanguages):
3667         * wtf/dtoa.cpp:
3668         * wtf/text/AtomicStringImpl.cpp:
3669         * wtf/text/StringView.cpp:
3670         (WTF::StringView::invalidate):
3671         (WTF::StringView::adoptUnderlyingString):
3672         (WTF::StringView::setUnderlyingString):
3673         * wtf/unicode/icu/CollatorICU.cpp:
3674         (WTF::Collator::Collator):
3675         (WTF::Collator::~Collator):
3676         * wtf/win/LanguageWin.cpp:
3677         (WTF::platformLanguage):
3678
3679 2018-04-04  Brent Fulgham  <bfulgham@apple.com>
3680
3681         Failures from mach port reference handling should be fatal
3682         https://bugs.webkit.org/show_bug.cgi?id=184202
3683         <rdar://problem/37771114>
3684
3685         Reviewed by Anders Carlsson.
3686
3687         * WTF.xcodeproj/project.pbxproj:
3688         * wtf/MachSendRight.h: Copied from WebCore/platform/cocoa/MachSendRight.h.
3689         (WebCore::MachSendRight::operator bool const): Deleted.
3690         (WebCore::MachSendRight::sendRight const): Deleted.
3691         * wtf/PlatformMac.cmake:
3692         * wtf/cocoa/CPUTimeCocoa.mm:
3693         (WTF::CPUTime::forCurrentThread): Do proper cleanup if the port is invalid.
3694         * wtf/cocoa/MachSendRight.cpp: Copied from WebCore/platform/cocoa/MachSendRight.cpp.
3695         (WTF::retainSendRight):
3696         (WTF::releaseSendRight):
3697         (WTF::deallocateSendRightSafely):
3698         (WebCore::retainSendRight): Deleted.
3699         (WebCore::releaseSendRight): Deleted.
3700         (WebCore::MachSendRight::adopt): Deleted.
3701         (WebCore::MachSendRight::create): Deleted.
3702         (WebCore::MachSendRight::MachSendRight): Deleted.
3703         (WebCore::MachSendRight::~MachSendRight): Deleted.
3704         (WebCore::MachSendRight::operator=): Deleted.
3705         (WebCore::MachSendRight::copySendRight const): Deleted.
3706         (WebCore::MachSendRight::leakSendRight): Deleted.
3707
3708 2018-04-04  Youenn Fablet  <youenn@apple.com>
3709
3710         Introduce a ThreadSafeRefCounted parameter to ensure being destroyed on the main thread
3711         https://bugs.webkit.org/show_bug.cgi?id=183988
3712
3713         Reviewed by Darin Adler.
3714
3715         * wtf/ThreadSafeRefCounted.h:
3716         (WTF::ThreadSafeRefCounted::deref const):
3717
3718 2018-04-04  Yusuke Suzuki  <utatane.tea@gmail.com>
3719
3720         [WTF] Remove Atomics.cpp
3721         https://bugs.webkit.org/show_bug.cgi?id=184300
3722
3723         Reviewed by Konstantin Tokarev.
3724
3725         This Atomics.cpp is a workaround for GCC which version is < 4.8.
3726         Our compiler requirement is now 5.0.0. This workaround is no
3727         longer necessary.
3728
3729         * wtf/Atomics.cpp: Removed.
3730         * wtf/CMakeLists.txt:
3731
3732 2018-04-03  Tomas Popela  <tpopela@redhat.com>
3733
3734         Unreviewed, mute the unused parameter compilation warning
3735
3736         Triggered on the PPC64 machine.
3737
3738         * wtf/ThreadingPthreads.cpp:
3739         (WTF::Thread::signalHandlerSuspendResume):
3740
3741 2018-04-03  Tomas Popela  <tpopela@redhat.com>
3742
3743         Unreviewed, fix the unused variable compilation warning
3744
3745         Move the ucontext_t code under the HAVE(MACHINE_CONTEXT). Triggered
3746         on the PPC64 machine.
3747
3748         * wtf/ThreadingPthreads.cpp:
3749         (WTF::Thread::signalHandlerSuspendResume):
3750
3751 2018-04-02  Saam Barati  <sbarati@apple.com>
3752
3753         bmalloc should compute its own estimate of its footprint
3754         https://bugs.webkit.org/show_bug.cgi?id=184121
3755
3756         Reviewed by Filip Pizlo.
3757
3758         * wtf/FastMalloc.cpp:
3759         (WTF::fastCommitAlignedMemory):
3760         (WTF::fastDecommitAlignedMemory):
3761         * wtf/FastMalloc.h:
3762
3763 2018-03-30  Filip Pizlo  <fpizlo@apple.com>
3764
3765         Strings and Vectors shouldn't do index masking
3766         https://bugs.webkit.org/show_bug.cgi?id=184193
3767
3768         Reviewed by Mark Lam.
3769
3770         * wtf/SizeLimits.cpp:
3771         * wtf/Vector.h:
3772         (WTF::VectorBufferBase::allocateBuffer):
3773         (WTF::VectorBufferBase::tryAllocateBuffer):
3774         (WTF::VectorBufferBase::reallocateBuffer):
3775         (WTF::VectorBufferBase::deallocateBuffer):
3776         (WTF::VectorBufferBase::releaseBuffer):
3777         (WTF::VectorBufferBase::VectorBufferBase):
3778         (WTF::VectorBuffer::allocateBuffer):
3779         (WTF::VectorBuffer::tryAllocateBuffer):
3780         (WTF::VectorBuffer::swap):
3781         (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
3782         (WTF::Vector::at):
3783         (WTF::Vector::at const):
3784         (WTF::VectorBufferBase::updateMask): Deleted.
3785         * wtf/text/StringImpl.h:
3786         (WTF::StringImpl::flagIsSymbol):
3787         (WTF::StringImpl::length const):
3788         (WTF::StringImplShape::StringImplShape):
3789         (WTF::StringImpl::at const):
3790         (WTF::StringImpl::tailOffset):
3791         (WTF::StringImpl::maskOffset): Deleted.
3792         (WTF::StringImpl::mask const): Deleted.
3793         * wtf/text/StringView.h:
3794         (WTF::StringView::StringView):
3795         (WTF::StringView::operator=):
3796         (WTF::StringView::initialize):
3797         (WTF::StringView::clear):
3798         (WTF::StringView::operator[] const):
3799         * wtf/text/WTFString.h:
3800         (WTF::String::length const):
3801         (WTF::String::mask const): Deleted.
3802
3803 2018-03-30  Mark Lam  <mark.lam@apple.com>
3804
3805         Add pointer profiling support in baseline JIT and supporting files.
3806         https://bugs.webkit.org/show_bug.cgi?id=184200
3807         <rdar://problem/39057300>
3808
3809         Reviewed by Filip Pizlo.
3810
3811         * wtf/PointerPreparations.h:
3812         - Remove WTF_PREPARE_FUNCTION_POINTER_FOR_EXECUTION.  It is no longer needed.
3813
3814 2018-03-30  JF Bastien  <jfbastien@apple.com>
3815
3816         WorkQueueWin: don't move rvalues
3817         https://bugs.webkit.org/show_bug.cgi?id=184190
3818         <rdar://problem/39049850>
3819
3820         Reviewed by Mark Lam.
3821
3822         As part of #184167 optional is now more frequently an rvalue
3823         reference, and moving its .value() is not a thing that should be
3824         done anymore.
3825
3826         * wtf/win/WorkQueueWin.cpp:
3827         (WTF::WorkQueue::unregisterAndCloseHandle):
3828
3829 2018-03-30  JF Bastien  <jfbastien@apple.com>
3830
3831         Remove CXX_REFERENCE_QUALIFIED_FUNCTIONS and optional's equivalent
3832         https://bugs.webkit.org/show_bug.cgi?id=184167
3833         <rdar://problem/39023130>
3834
3835         Reviewed by Yusuke Suzuki.
3836
3837         Remove COMPILER_SUPPORTS(CXX_REFERENCE_QUALIFIED_FUNCTIONS), it's
3838         supported by all compilers WebKit supports (it's a C++11 feature,
3839         *detection* of it with __has_extension was added to clang on May
3840         13th 2011, and VS2015 / GCC support it).
3841
3842         Optional.h had a similar thing, ditch it too.
3843
3844         * wtf/Compiler.h:
3845         * wtf/Optional.h:
3846         (std::optional::contained_val const):
3847         (std::optional::contained_val):
3848         * wtf/Ref.h:
3849         * wtf/RefPtr.h:
3850         * wtf/text/WTFString.cpp:
3851         * wtf/text/WTFString.h:
3852
3853 2018-03-30  JF Bastien  <jfbastien@apple.com>
3854
3855         Introduce WTF_LAZY_INSTANTIATE
3856         https://bugs.webkit.org/show_bug.cgi?id=184169
3857         <rdar://problem/39023385>
3858
3859         Reviewed by Mark Lam.
3860
3861         As part of #184164 I'm adding some forwarding methods to
3862         WTF::String. These need to forward RetainPtr and CString, and
3863         usually that would require #include'ing RetainPtr.h and CString.h
3864         to WTFString.h which isn't really something we should do.
3865
3866         Introduce WTF_LAZY_INSTANTIATE to forward-declare functions which
3867         just pass parameters to another function, and return whatever that
3868         other function returned, without having to include the return's /
3869         parameters' type header.
3870
3871         Try it out here: godbolt.org/g/oV8G5Q
3872
3873         * wtf/Forward.h:
3874
3875 2018-03-29  JF Bastien  <jfbastien@apple.com>
3876
3877         Use Forward.h instead of forward-declaring WTF::String
3878         https://bugs.webkit.org/show_bug.cgi?id=184172
3879         <rdar://problem/39026146>
3880
3881         Reviewed by Yusuke Suzuki.
3882
3883         As part of #184164 I'm changing WTF::String, and the forward
3884         declarations are just wrong because I'm making it templated. We
3885         should use Forward.h anyways, so do that instead.
3886
3887         * wtf/Forward.h:
3888         * wtf/HashTraits.h:
3889         * wtf/PrintStream.h:
3890
3891 2018-03-29  Yusuke Suzuki  <utatane.tea@gmail.com>
3892
3893         Remove WTF_EXPORTDATA and JS_EXPORTDATA
3894         https://bugs.webkit.org/show_bug.cgi?id=184170
3895
3896         Reviewed by JF Bastien.
3897
3898         Replace WTF_EXPORTDATA and JS_EXPORTDATA with
3899         WTF_EXPORT_PRIVATE and JS_EXPORT_PRIVATE respectively.
3900
3901         * wtf/ExportMacros.h:
3902         * wtf/Gigacage.h:
3903         * wtf/HashTable.h:
3904         * wtf/Threading.h:
3905         * wtf/text/AtomicString.cpp:
3906         * wtf/text/AtomicString.h:
3907         * wtf/text/StringImpl.h:
3908
3909 2018-03-29  Ross Kirsling  <ross.kirsling@sony.com>
3910
3911         MSVC __forceinline slows down JSC release build fivefold after r229391
3912         https://bugs.webkit.org/show_bug.cgi?id=184062
3913
3914         Reviewed by Alex Christensen.
3915
3916         * wtf/Compiler.h:
3917         Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.
3918
3919 2018-03-29  JF Bastien  <jfbastien@apple.com>
3920
3921         Remove WTF_EXPORT_STRING_API
3922         https://bugs.webkit.org/show_bug.cgi?id=184168
3923         <rdar://problem/39023253>
3924
3925         Reviewed by Yusuke Suzuki.
3926
3927         Remove WTF_EXPORT_STRING_API as requested by a FIXME, and use
3928         WTF_EXPORT_PRIVATE instead.
3929
3930         * wtf/ExportMacros.h:
3931         * wtf/text/AtomicString.h:
3932         * wtf/text/AtomicStringImpl.h:
3933         * wtf/text/StringImpl.h:
3934         * wtf/text/StringView.h:
3935         * wtf/text/SymbolImpl.h:
3936         * wtf/text/WTFString.h:
3937
3938 2018-03-29  Commit Queue  <commit-queue@webkit.org>
3939
3940         Unreviewed, rolling out r230062.
3941         https://bugs.webkit.org/show_bug.cgi?id=184128
3942
3943         Broke mac port. web content process crashes while loading any
3944         web page (Requested by rniwa on #webkit).
3945
3946         Reverted changeset:
3947
3948         "MSVC __forceinline slows down JSC release build fivefold
3949         after r229391"
3950         https://bugs.webkit.org/show_bug.cgi?id=184062
3951         https://trac.webkit.org/changeset/230062
3952
3953 2018-03-28  Ross Kirsling  <ross.kirsling@sony.com>
3954
3955         MSVC __forceinline slows down JSC release build fivefold after r229391
3956         https://bugs.webkit.org/show_bug.cgi?id=184062
3957
3958         Reviewed by Alex Christensen.
3959
3960         * wtf/Compiler.h:
3961         Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.
3962
3963 2018-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
3964
3965         [Win] Assertions.h: VC doesn't support GCC extension ##__VA_ARGS__
3966         https://bugs.webkit.org/show_bug.cgi?id=184076
3967
3968         Reviewed by Alex Christensen.
3969
3970         ##__VA_ARGS__ is used to define RELEASE_LOG, RELEASE_LOG_ERROR,
3971         RELEASE_LOG_IF, RELEASE_LOG_ERROR_IF, RELEASE_LOG_WITH_LEVEL,
3972         RELEASE_LOG_WITH_LEVEL_IF and RELEASE_LOG_INFO_IF.
3973
3974         A macro using ##__VA_ARGS__,
3975
3976           #define foo(format, ...) bar(format, ##__VA_ARGS__)
3977
3978         can be defined without ##__VA_ARGS__:
3979
3980           #define foo(...) bar(__VA_ARGS__)
3981
3982         * wtf/Assertions.h: Use __VA_ARGS__ instead of ##__VA_ARGS__.
3983
3984 2018-03-28  Brent Fulgham  <bfulgham@apple.com>
3985
3986         Avoid uninitialized mach ports
3987         https://bugs.webkit.org/show_bug.cgi?id=184090
3988         <rdar://problem/37261129>
3989
3990         Reviewed by Chris Dumez.
3991
3992         It is possible for mach_port_allocate to return an error, but we rarely check its return value. The value
3993         of the argument passed to mach_port_allocate is not guaranteed to be valid when it returns an error, so
3994         there is a potential for us to try to use invalid ports.
3995
3996         We should always check return values, and ensure that the mach port variables we seek to initialize are
3997         kept in a valid state.
3998
3999         Reviewed by Chris Dumez.
4000
4001         * wtf/Threading.h: Initialize mach port.
4002
4003 2018-03-28  Robin Morisset  <rmorisset@apple.com>
4004
4005         appendQuotedJSONString stops on arithmetic overflow instead of propagating it upwards
4006         https://bugs.webkit.org/show_bug.cgi?id=183894
4007
4008         Reviewed by Saam Barati.
4009
4010         appendQuotedJSONString now returns a bool indicating whether it succeeded, instead of silently failing when given a string too large
4011         to fit in 4GB.
4012
4013         * wtf/text/StringBuilder.h:
4014         * wtf/text/StringBuilderJSON.cpp:
4015         (WTF::StringBuilder::appendQuotedJSONString):
4016
4017 2018-03-27  Per Arne Vollan  <pvollan@apple.com>
4018
4019         The layout test fast/canvas/webgl/read-pixels-test.html is timing out.
4020         https://bugs.webkit.org/show_bug.cgi?id=183923
4021         <rdar://problem/38756869>
4022
4023         Reviewed by Brent Fulgham.
4024
4025         Add compile guard for blocking of the WindowServer in the WebProcess.
4026
4027         * wtf/FeatureDefines.h:
4028
4029 2018-03-26  Tim Horton  <timothy_horton@apple.com>
4030
4031         Add and adopt HAVE(CORE_ANIMATION_RENDER_SERVER)
4032         https://bugs.webkit.org/show_bug.cgi?id=184026
4033         <rdar://problem/38883321>
4034
4035         Reviewed by Sam Weinig.
4036
4037         * wtf/Platform.h:
4038
4039 2018-03-26  Yusuke Suzuki  <utatane.tea@gmail.com>
4040
4041         We should have SSE4 detection in the X86 MacroAssembler.
4042         https://bugs.webkit.org/show_bug.cgi?id=165363
4043
4044         Reviewed by JF Bastien.
4045
4046         GCC 5 supports clobbering PIC registers in inline ASM [1,2].
4047
4048         [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47602
4049         [2]: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=216154
4050
4051         * wtf/Atomics.h:
4052         (WTF::x86_cpuid):
4053
4054 2018-03-26  Antoine Quint  <graouts@apple.com>
4055
4056         [ASan] Allow Ref<> to be swapped
4057         https://bugs.webkit.org/show_bug.cgi?id=184017
4058         <rdar://problem/36336787>
4059
4060         Reviewed by JF Bastien.
4061
4062         Unpoison a Ref in various calls just like in ~Ref so that sorting a Vector<Ref<>> works with ASan on.
4063
4064         * wtf/Ref.h:
4065         (WTF::Ref::assignToHashTableEmptyValue):
4066         (WTF::=):
4067         (WTF::U>::replace):
4068
4069 2018-03-26  Brent Fulgham  <bfulgham@apple.com>
4070
4071         Warn against cookie access in the WebContent process using ProcessPrivilege assertions
4072         https://bugs.webkit.org/show_bug.cgi?id=183911
4073         <rdar://problem/38762306>
4074
4075         Reviewed by Youenn Fablet.
4076
4077         Extend the ProcessPrivilege API with the ability to add and remove individual
4078         privileges.
4079
4080         * wtf/ProcessPrivilege.cpp:
4081         (WTF::addProcessPrivilege):
4082         (WTF::removeProcessPrivilege):
4083         * wtf/ProcessPrivilege.h:
4084
4085 2018-03-25  Carlos Alberto Lopez Perez  <clopez@igalia.com>
4086
4087         WebProcess memory monitor: use %zu format specifier for size_t
4088         https://bugs.webkit.org/show_bug.cgi?id=183997
4089
4090         Reviewed by Michael Catanzaro.
4091
4092         usse %zu format specifier for size_t instead of %lu.
4093
4094         * wtf/MemoryPressureHandler.cpp:
4095         (WTF::MemoryPressureHandler::shrinkOrDie):
4096         (WTF::MemoryPressureHandler::measurementTimerFired):
4097
4098 2018-03-25  Tim Horton  <timothy_horton@apple.com>
4099
4100         Add and adopt ENABLE(AIRPLAY_PICKER)
4101         https://bugs.webkit.org/show_bug.cgi?id=183992
4102
4103         Reviewed by Daniel Bates.
4104
4105         * wtf/FeatureDefines.h:
4106
4107 2018-03-23  Tim Horton  <timothy_horton@apple.com>
4108
4109         Introduce and adopt HAVE(AUDIO_TOOLBOX_AUDIO_SESSION)
4110         https://bugs.webkit.org/show_bug.cgi?id=183954
4111         <rdar://problem/38808858>
4112
4113         Reviewed by Dan Bernstein.
4114
4115         * wtf/Platform.h:
4116
4117 2018-03-23  David Kilzer  <ddkilzer@apple.com>
4118
4119         Stop using dispatch_set_target_queue()
4120         <https://webkit.org/b/183908>
4121         <rdar://problem/33553533>
4122
4123         Reviewed by Daniel Bates.
4124
4125         * wtf/cocoa/WorkQueueCocoa.cpp:
4126         (WTF::WorkQueue::platformInitialize): Remove !HAVE(QOS_CLASSES)
4127         code path since it's never used now that HAVE(QOS_CLASSES) is
4128         equivalent to PLATFORM(COCOA) in <wtf/Platform.h>.
4129
4130 2018-03-23  Carlos Alberto Lopez Perez  <clopez@igalia.com>
4131
4132         WebProcess memory monitor thresholds should be better tuned for embedded systems.
4133         https://bugs.webkit.org/show_bug.cgi?id=183773
4134
4135         Reviewed by Yusuke Suzuki.
4136
4137         Take into account the total system RAM for the thresholds calculation.
4138
4139         For systems with more than 3GB the conservative and strict thresholds remain as they are,
4140         but for systems with less RAM the thresholds are dynamically configured as follows:
4141
4142         - Conservative threshold (release non critical memory) if WebProcess using more than 33% of the total RAM.
4143         - Strict threshold (release all possible memory) if WebProcess using more than 50% of the total RAM.
4144
4145         The Kill threshold is also modified. Now it is capped at 90% of the total RAM.
4146
4147         * wtf/MemoryPressureHandler.cpp:
4148         (WTF::thresholdForMemoryKillWithProcessState):
4149         (WTF::thresholdForPolicy):
4150         (WTF::MemoryPressureHandler::shrinkOrDie):
4151
4152 2018-03-23  Yusuke Suzuki  <utatane.tea@gmail.com>
4153
4154         [WTF] Add standard containers with FastAllocator specialization
4155         https://bugs.webkit.org/show_bug.cgi?id=183789
4156
4157         Reviewed by Darin Adler.
4158
4159         Sometimes we want standard containers due to various reasons.
4160         For example, WTF::HashMap lacks the ability to hold all the
4161         integer keys since it uses 0 for empty value and -1 for deleted
4162         value. However, using std::containers use std::allocator without
4163         specialization.
4164
4165         This patch introduces WTF::{StdMap, StdSet, StdList, StdUnorderedMap, StdUnorderedSet}.
4166         They are standard containers with FastAllocator specialization.
4167
4168         * WTF.xcodeproj/project.pbxproj:
4169         * wtf/CMakeLists.txt:
4170         * wtf/StdList.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
4171         * wtf/StdMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
4172         * wtf/StdSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
4173         * wtf/StdUnorderedMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
4174         * wtf/StdUnorderedSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
4175
4176 2018-03-22  Tim Horton  <timothy_horton@apple.com>
4177
4178         Adopt USE(OPENGL[_ES]) in more places
4179         https://bugs.webkit.org/show_bug.cgi?id=183882
4180         <rdar://problem/37912195>
4181
4182         Reviewed by Dan Bernstein.
4183
4184         * wtf/Platform.h:
4185
4186 2018-03-20  Brent Fulgham  <bfulgham@apple.com>
4187
4188         Create an assertion mechanism to ensure proper WebCore use in each WebKit Process
4189         https://bugs.webkit.org/show_bug.cgi?id=183806
4190         <rdar://problem/38694251>
4191
4192         Reviewed by Ryosuke Niwa.
4193
4194         Part of our security improvements involve better isolation between the different WebKit
4195         processes (UIProcess, WebContent, Networking, Storage, etc.).
4196
4197         We need an assertion language we can use to protect certain critical APIs and code paths
4198         against accidental misuse.
4199
4200         This patch adds a new enum type meant to represent different categories of program logic
4201         that we do not want used in the wrong process.
4202
4203         This first patch just creates these types and makes them available. New assertions using
4204         these values will be added as we complete our work ensuring proper process isolation.
4205
4206         In a method we want to protect, we can add an assertion describing the process privileges
4207         needed to execute the code. For example, for cookie access we might use this:
4208
4209             ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies);
4210
4211         At the launch of the UIProcess we would use this method to ensure all privileges are available:
4212
4213             setProcessPrivileges(allPrivileges());
4214
4215         In the network process, during platform initialization, we would use something like this:
4216
4217             setProcessPrivileges({ ProcessPrivilege::CanAccessRawCookies, ProcessPrivilege::CanAccessCredentials });
4218
4219         In the WebContent process, we would not set any privileges. We could just leave it as the
4220         default initialization, or use this:
4221
4222             setProcessPrivileges({ });
4223
4224         Later, when we attempt to execute the initial code, we would expect an assertion for the
4225         WebContent process, while Network and UIProcess pass the assertion.
4226
4227         * WTF.xcodeproj/project.pbxproj: Add new files.
4228         * wtf/CMakeLists.txt: Ditto.
4229         * wtf/ProcessPrivilege.cpp: Added.
4230         (WTF::processPrivileges):
4231         (WTF::setProcessPrivileges):
4232         (WTF::hasProcessPrivilege):
4233         * wtf/ProcessPrivilege.h: Added.
4234
4235 2018-03-20  Tim Horton  <timothy_horton@apple.com>
4236
4237         Introduce HAVE_MEDIA_PLAYER and HAVE_CORE_VIDEO
4238         https://bugs.webkit.org/show_bug.cgi?id=183803
4239         <rdar://problem/38690487>
4240
4241         Reviewed by Sam Weinig.
4242
4243         * wtf/Platform.h:
4244
4245 2018-03-20  Brian Burg  <bburg@apple.com>
4246
4247         SLEEP_THREAD_FOR_DEBUGGER should not use fancy number literals
4248         https://bugs.webkit.org/show_bug.cgi?id=183792
4249
4250         Reviewed by Timothy Hatcher.
4251
4252         * wtf/DebugUtilities.h: Remove the '_s' since this won't
4253         compile when included by files compiled as Objective-C++.
4254
4255 2018-03-20  Tim Horton  <timothy_horton@apple.com>
4256
4257         Add and adopt WK_PLATFORM_NAME and adjust default feature defines
4258         https://bugs.webkit.org/show_bug.cgi?id=183758
4259         <rdar://problem/38017644>
4260
4261         Reviewed by Dan Bernstein.
4262
4263         * wtf/FeatureDefines.h:
4264
4265 2018-03-19  Eric Carlson  <eric.carlson@apple.com>
4266
4267         [Extra zoom mode] Require fullscreen for video playback
4268         https://bugs.webkit.org/show_bug.cgi?id=183742
4269         <rdar://problem/38235862>
4270
4271         Reviewed by Jer Noble.
4272
4273         * wtf/Platform.h:
4274
4275 2018-03-15  Tim Horton  <timothy_horton@apple.com>
4276
4277         Avoid defining commonly-named system macros on all Cocoa platforms
4278         https://bugs.webkit.org/show_bug.cgi?id=183687
4279
4280         Reviewed by Dan Bernstein.
4281
4282         * wtf/Platform.h:
4283
4284 2018-03-14  Tim Horton  <timothy_horton@apple.com>
4285
4286         Fix the build after r229387
4287         https://bugs.webkit.org/show_bug.cgi?id=183639
4288         <rdar://problem/38448568>
4289
4290         Reviewed by Dean Jackson.
4291
4292         * wtf/Platform.h:
4293
4294 2018-03-13  Tim Horton  <timothy_horton@apple.com>
4295
4296         Add and adopt WK_ALTERNATE_FRAMEWORKS_DIR in WTF and bmalloc
4297         https://bugs.webkit.org/show_bug.cgi?id=183576
4298         <rdar://problem/38396766>
4299
4300         Reviewed by Dan Bernstein.
4301
4302         * Configurations/Base.xcconfig:
4303         * Configurations/CopyWTFHeaders.xcconfig:
4304         * Configurations/WTF.xcconfig:
4305         * Configurations/mbmalloc.xcconfig:
4306
4307 2018-03-13  Michael Catanzaro  <mcatanzaro@igalia.com>
4308
4309         Unreviewed, fix typo in a comment
4310
4311         * wtf/Platform.h:
4312
4313 2018-03-12  Don Olmstead  <don.olmstead@sony.com>
4314
4315         [CMake][Win] Forwarding headers of WTF and PAL are copied twice in Visual Studio builds
4316         https://bugs.webkit.org/show_bug.cgi?id=183240
4317
4318         Reviewed by Alex Christensen.
4319
4320         * wtf/CMakeLists.txt:
4321         * wtf/PlatformGTK.cmake:
4322         * wtf/PlatformJSCOnly.cmake:
4323         * wtf/PlatformMac.cmake:
4324         * wtf/PlatformWPE.cmake:
4325         * wtf/PlatformWin.cmake:
4326
4327 2018-03-12&nb