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