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