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