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