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