Ads in NYTimes app are shifted downwards by the scroll view's top content inset
[WebKit-https.git] / Source / WTF / ChangeLog
1 2018-05-03  Wenson Hsieh  <wenson_hsieh@apple.com>
2
3         Ads in NYTimes app are shifted downwards by the scroll view's top content inset
4         https://bugs.webkit.org/show_bug.cgi?id=185251
5         <rdar://problem/39062357>
6
7         Reviewed by Tim Horton.
8
9         Add a new DYLD_IOS_VERSION macro definition for previous or non-internal SDKs.
10
11         * wtf/spi/darwin/dyldSPI.h:
12
13 2018-05-03  Ryan Haddad  <ryanhaddad@apple.com>
14
15         Unreviewed, rolling out r231197.
16
17         The test added with this change crashes on the 32-bit JSC bot.
18
19         Reverted changeset:
20
21         "Correctly detect string overflow when using the 'Function'
22         constructor"
23         https://bugs.webkit.org/show_bug.cgi?id=184883
24         https://trac.webkit.org/changeset/231197
25
26 2018-05-03  Commit Queue  <commit-queue@webkit.org>
27
28         Unreviewed, rolling out r231223 and r231288.
29         https://bugs.webkit.org/show_bug.cgi?id=185256
30
31         The change in r231223 breaks internal builds, and r231288 is a
32         dependent change. (Requested by ryanhaddad on #webkit).
33
34         Reverted changesets:
35
36         "Use default std::optional if it is provided"
37         https://bugs.webkit.org/show_bug.cgi?id=185159
38         https://trac.webkit.org/changeset/231223
39
40         "Use pointer instead of
41         std::optional<std::reference_wrapper<>>"
42         https://bugs.webkit.org/show_bug.cgi?id=185186
43         https://trac.webkit.org/changeset/231288
44
45 2018-05-02  Commit Queue  <commit-queue@webkit.org>
46
47         Unreviewed, rolling out r231251.
48         https://bugs.webkit.org/show_bug.cgi?id=185229
49
50         __cpp_lib_optional should be used after including <optional>
51         since it is defined in <optional> (Requested by yusukesuzuki
52         on #webkit).
53
54         Reverted changeset:
55
56         "Follow-up build fix for r231223"
57         https://bugs.webkit.org/show_bug.cgi?id=185159
58         https://trac.webkit.org/changeset/231251
59
60 2018-05-02  Jonathan Bedard  <jbedard@apple.com>
61
62         Follow-up build fix for r231223
63         https://bugs.webkit.org/show_bug.cgi?id=185159
64         <rdar://problem/39891074>
65
66         Unreviewed build fix.
67
68         We should be consistent about when we include <optional> vs define our own.
69
70         * wtf/Optional.h:
71
72 2018-05-02  Jer Noble  <jer.noble@apple.com>
73
74         Enable HAVE_AVKIT for the MINIMAL_SIMULATOR
75         https://bugs.webkit.org/show_bug.cgi?id=185183
76
77         Reviewed by Daniel Bates.
78
79         * wtf/Platform.h:
80
81 2018-05-01  Yusuke Suzuki  <utatane.tea@gmail.com>
82
83         Use default std::optional if it is provided
84         https://bugs.webkit.org/show_bug.cgi?id=185159
85
86         Reviewed by JF Bastien.
87
88         Now C++17 flag is enabled. It means that any standard libraries can use <optional> internally.
89         If we define std::optional regardless of the existence of the standard library's <optional>,
90         it causes compile errors. For example, in GCC 7 (specifically GCC 7.3.0) environment,
91         <optional> is included in <unordered_map>.
92         We do not define std::optional in WebKit side if <optional> is offered.
93
94         And we also remove std::optional<T&> use since this is not accepted in C++17. Use
95         std::optional<std::reference_wrapper<T>> instead.
96
97         * wtf/Expected.h:
98         constexpr does not mean const in C++17.
99
100         * wtf/Optional.h:
101         Do not define std::optional if <optional> is provided.
102
103         (WTF::valueOrCompute):
104
105 2018-05-01  Robin Morisset  <rmorisset@apple.com>
106
107         Correctly detect string overflow when using the 'Function' constructor
108         https://bugs.webkit.org/show_bug.cgi?id=184883
109         <rdar://problem/36320331>
110
111         Reviewed by Filip Pizlo.
112
113         I added new tryAppend methods alongside the old append methods in StringBuilder, that return a boolean (true means success, false means an overflow happened).
114         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.
115
116         * wtf/text/StringBuilder.cpp:
117         (WTF::StringBuilder::allocateBufferUpConvert):
118         (WTF::StringBuilder::tryAllocateBufferUpConvert):
119         (WTF::StringBuilder::appendUninitialized):
120         (WTF::StringBuilder::append):
121         (WTF::StringBuilder::tryAppend):
122         * wtf/text/StringBuilder.h:
123         (WTF::StringBuilder::tryAppend):
124         (WTF::StringBuilder::append):
125         (WTF::StringBuilder::tryAppendLiteral):
126         * wtf/text/StringBuilderJSON.cpp:
127         (WTF::StringBuilder::appendQuotedJSONString):
128         (WTF::StringBuilder::tryAppendQuotedJSONString):
129
130 2018-04-30  Mark Lam  <mark.lam@apple.com>
131
132         Apply PtrTags to the MetaAllocator and friends.
133         https://bugs.webkit.org/show_bug.cgi?id=185110
134         <rdar://problem/39533895>
135
136         Reviewed by Saam Barati.
137
138         1. Introduce a MetaAllocatorPtr smart pointer to do pointer tagging.
139         2. Use MetaAllocatorPtr in MetaAllocator and MetaAllocatorHandle.
140
141         * WTF.xcodeproj/project.pbxproj:
142         * wtf/CMakeLists.txt:
143         * wtf/MetaAllocator.cpp:
144         (WTF::MetaAllocator::release):
145         (WTF::MetaAllocatorHandle::MetaAllocatorHandle):
146         (WTF::MetaAllocatorHandle::shrink):
147         (WTF::MetaAllocatorHandle::dump const):
148         (WTF::MetaAllocator::allocate):
149         (WTF::MetaAllocator::findAndRemoveFreeSpace):
150         (WTF::MetaAllocator::addFreeSpaceFromReleasedHandle):
151         (WTF::MetaAllocator::addFreshFreeSpace):
152         (WTF::MetaAllocator::debugFreeSpaceSize):
153         (WTF::MetaAllocator::addFreeSpace):
154         (WTF::MetaAllocator::allocFreeSpaceNode):
155         * wtf/MetaAllocator.h:
156         (WTF::MetaAllocatorTracker::find):
157         (WTF::MetaAllocator::FreeSpaceNode::FreeSpaceNode):
158         (WTF::MetaAllocator::FreeSpaceNode::sizeInBytes):
159         (WTF::MetaAllocator::FreeSpaceNode::key):
160         * wtf/MetaAllocatorHandle.h:
161         (WTF::MetaAllocatorHandle::start const):
162         (WTF::MetaAllocatorHandle::end const):
163         (WTF::MetaAllocatorHandle::startAsInteger const):
164         (WTF::MetaAllocatorHandle::endAsInteger const):
165         (WTF::MetaAllocatorHandle::sizeInBytes const):
166         (WTF::MetaAllocatorHandle::containsIntegerAddress const):
167         (WTF::MetaAllocatorHandle::key):
168         * wtf/MetaAllocatorPtr.h: Added.
169         (WTF::MetaAllocatorPtr::MetaAllocatorPtr):
170         (WTF::MetaAllocatorPtr:: const):
171         (WTF::MetaAllocatorPtr::operator bool const):
172         (WTF::MetaAllocatorPtr::operator! const):
173         (WTF::MetaAllocatorPtr::operator== const):
174         (WTF::MetaAllocatorPtr::operator!= const):
175         (WTF::MetaAllocatorPtr::operator+ const):
176         (WTF::MetaAllocatorPtr::operator- const):
177         (WTF::MetaAllocatorPtr::operator+=):
178         (WTF::MetaAllocatorPtr::operator-=):
179         (WTF::MetaAllocatorPtr::isEmptyValue const):
180         (WTF::MetaAllocatorPtr::isDeletedValue const):
181         (WTF::MetaAllocatorPtr::hash const):
182         (WTF::MetaAllocatorPtr::emptyValue):
183         (WTF::MetaAllocatorPtr::deletedValue):
184         (WTF::MetaAllocatorPtrHash::hash):
185         (WTF::MetaAllocatorPtrHash::equal):
186         * wtf/PtrTag.h:
187
188 2018-04-30  JF Bastien  <jfbastien@apple.com>
189
190         Use some C++17 features
191         https://bugs.webkit.org/show_bug.cgi?id=185135
192
193         Reviewed by Alex Christensen.
194
195         * wtf/StdLibExtras.h: libstdc++ doesn't say it's C++17 when it
196         defines std::conjunction. Use the feature test macro instead.
197
198 2018-04-30  Yusuke Suzuki  <utatane.tea@gmail.com>
199
200         Use WordLock instead of std::mutex for Threading
201         https://bugs.webkit.org/show_bug.cgi?id=185121
202
203         Reviewed by Geoffrey Garen.
204
205         Before r231151, WordLock depends on ThreadSpecific. It means that our Threading implementation
206         cannot use this lock since Threading primitives could touch these locks after ThreadSpecific
207         for that WordLock is destroyed.
208
209         Now WordLock is changed not to use ThreadSpecific. So it does not depend on our Threading
210         mechanism and our Threading can start using WordLock internally.
211
212         This patch changes WTF::Thread and WTF::ThreadGroup to use WordLock instead of std::mutex.
213
214         And add constexpr to explicitly describe that Lock, Condition, and WordLock constructors are constexpr.
215
216         * wtf/Condition.h:
217         * wtf/Lock.h:
218         * wtf/ThreadGroup.h:
219         (WTF::ThreadGroup::getLock):
220         * wtf/Threading.cpp:
221         (WTF::Thread::didExit):
222         (WTF::Thread::addToThreadGroup):
223         (WTF::Thread::removeFromThreadGroup):
224         * wtf/Threading.h:
225         * wtf/ThreadingPthreads.cpp:
226         (WTF::Thread::changePriority):
227         (WTF::Thread::waitForCompletion):
228         (WTF::Thread::detach):
229         (WTF::Thread::signal):
230         (WTF::Thread::establishPlatformSpecificHandle):
231         * wtf/ThreadingWin.cpp:
232         (WTF::Thread::changePriority):
233         (WTF::Thread::waitForCompletion):
234         (WTF::Thread::detach):
235         (WTF::Thread::establishPlatformSpecificHandle):
236         (WTF::Thread::initializeTLSKey):
237         (WTF::Thread::currentDying):
238         (WTF::Thread::get):
239         (WTF::Thread::initializeTLS):
240         (WTF::Thread::destructTLS):
241         (WTF::threadMapMutex): Deleted.
242         * wtf/WordLock.h:
243
244 2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>
245
246         [CMake] Require GCC 6
247         https://bugs.webkit.org/show_bug.cgi?id=184985
248
249         Reviewed by Alex Christensen.
250
251         Stop enforcing GCC version in Compiler.h. It's better to do this in the build system. And I
252         don't like having the same check in two different places.
253
254         * wtf/Compiler.h:
255
256 2018-04-29  Geoffrey Garen  <ggaren@apple.com>
257
258         WordLock doesn't need per-thread data
259         https://bugs.webkit.org/show_bug.cgi?id=185119
260
261         Reviewed by Yusuke Suzuki.
262
263         The stack is per-thread data, so we can stack-allocate our ThreadData.
264
265         This eliminates malloc() and high-level WTF threading primitives from
266         WordLock, making WordLock more portable to non-WTF code, including
267         bmalloc.
268
269         (NOTE: This patch makes the bug fixed in r231148 100% reproducible.)
270
271         * wtf/WordLock.cpp:
272         (WTF::WordLock::lockSlow): Allocate ThreadData on the stack.
273
274 2018-04-28  Geoffrey Garen  <ggaren@apple.com>
275
276         Fixed a very unlikely race condition in WTF::WordLock
277         https://bugs.webkit.org/show_bug.cgi?id=185117
278
279         Reviewed by Saam Barati.
280
281         The race goes like this:
282
283         Thread L is in lockSlowCase() and thread U is in unlockSlowCase();
284
285         - U acquires queueHead->parkingLock.
286         - U sets queueHead->shouldPark = false
287         - U releases queueHead->parkingLock.
288         - L spuriously wakes up from queueHead->parkingLock.wait()
289         - L acquires queueHead->parkingLock.
290         - L notices that queueHead->shouldPark = false, and acquires the WordLock
291         - L finishes all its work and exits, freeing queueHead
292         - U notifies queueHead->parkingLock (after free) and crashes or deadlocks
293
294         These conditions are currently so unlikely that I don't know how to test
295         them. I noticed this race because I changed WordLock's allocation pattern
296         to allow queueHead to be freed more often, and I crashed / deadlocked 100%.
297
298         Shout out to <http://en.cppreference.com/w/cpp/thread/condition_variable/notify_one>
299         for explaining this.
300
301         * benchmarks/ToyLocks.h: Fixed build.
302
303         * wtf/WordLock.cpp:
304         (WTF::WordLock::unlockSlow): Hold the lock a little longer to avoid
305         this race.
306
307 2018-04-27  David Kilzer  <ddkilzer@apple.com>
308
309         Add logging when SpringBoard enables WebThread
310         <https://webkit.org/b/185100>
311         <rdar://problem/39746542>
312
313         Reviewed by Daniel Bates.
314
315         * wtf/Assertions.h:
316         (RELEASE_LOG_FAULT): Add macro to call os_log_fault().
317         * wtf/Platform.h: Drive-by fix to enable USE(OS_LOG) on
318         public iOS SDKs since <rdar://problem/27758343> was
319         fixed in iOS 11.0.
320
321 2018-04-26  Mark Lam  <mark.lam@apple.com>
322
323         Gardening: Speculative build fix for Windows.
324         https://bugs.webkit.org/show_bug.cgi?id=184976
325         <rdar://problem/39723901>
326
327         Not reviewed.
328
329         * wtf/PtrTag.h:
330         (WTF::makePtrTagHash): Undo last speculative build fix that did not work for 64-bit.
331
332 2018-04-26  Andy VanWagoner  <thetalecrafter@gmail.com>
333
334         [INTL] Implement Intl.PluralRules
335         https://bugs.webkit.org/show_bug.cgi?id=184312
336
337         Reviewed by JF Bastien.
338
339         Added Intl.PluralRules feature flag.
340
341         * wtf/FeatureDefines.h:
342
343 2018-04-25  Mark Lam  <mark.lam@apple.com>
344
345         Gardening: Speculative build fix for Windows 32-bit to compensate for MSVC's lack of smarts.
346         https://bugs.webkit.org/show_bug.cgi?id=184976
347         <rdar://problem/39723901>
348
349         Not reviewed.
350
351         According to https://stackoverflow.com/questions/37658794/integer-constant-overflow-warning-in-constexpr,
352         disabling the warning around the definition of the function will not disable it
353         for all clients of the function.
354
355         * wtf/PtrTag.h:
356         (WTF::makePtrTagHash):
357
358 2018-04-25  Mark Lam  <mark.lam@apple.com>
359
360         Push the definition of PtrTag down to the WTF layer.
361         https://bugs.webkit.org/show_bug.cgi?id=184976
362         <rdar://problem/39723901>
363
364         Reviewed by Saam Barati.
365
366         This is in preparation for doing pointer profiling at the WTF layer as well.
367         Also deleted an unused ptrTag() function.
368
369         * WTF.xcodeproj/project.pbxproj:
370         * wtf/CMakeLists.txt:
371         * wtf/PtrTag.h: Copied from Source/JavaScriptCore/runtime/PtrTag.h.
372         (WTF::makePtrTagHash):
373         (JSC::ptrTagName): Deleted.
374         (JSC::tagForPtr): Deleted.
375         (JSC::ptrTag): Deleted.
376         (JSC::tagCodePtr): Deleted.
377         (JSC::untagCodePtr): Deleted.
378         (JSC::retagCodePtr): Deleted.
379         (JSC::removeCodePtrTag): Deleted.
380         (JSC::tagCFunctionPtr): Deleted.
381         (JSC::untagCFunctionPtr): Deleted.
382         (JSC::assertIsCFunctionPtr): Deleted.
383         (JSC::assertIsNullOrCFunctionPtr): Deleted.
384         (JSC::assertIsNotTagged): Deleted.
385         (JSC::assertIsTagged): Deleted.
386         (JSC::assertIsNullOrTagged): Deleted.
387         (JSC::assertIsTaggedWith): Deleted.
388         (JSC::assertIsNullOrTaggedWith): Deleted.
389
390 2018-04-25  Dean Jackson  <dino@apple.com>
391
392         Make a better flag for system preview, and disable it where necessary
393         https://bugs.webkit.org/show_bug.cgi?id=184968
394         <rdar://problem/39686506>
395
396         Reviewed by Eric Carlson.
397
398         Add a new USE(SYSTEM_PREVIEW).
399
400         * wtf/Platform.h:
401
402 2018-04-24  Commit Queue  <commit-queue@webkit.org>
403
404         Unreviewed, rolling out r230971.
405         https://bugs.webkit.org/show_bug.cgi?id=184939
406
407         This fix was not appropriate (Requested by n_wang on #webkit).
408
409         Reverted changeset:
410
411         "AX: soft link libAccessibility.dylb"
412         https://bugs.webkit.org/show_bug.cgi?id=184919
413         https://trac.webkit.org/changeset/230971
414
415 2018-04-24  Nan Wang  <n_wang@apple.com>
416
417         AX: soft link libAccessibility.dylb
418         https://bugs.webkit.org/show_bug.cgi?id=184919
419
420         Reviewed by Chris Fleizach.
421
422         * wtf/cocoa/SoftLinking.h:
423
424 2018-04-23  Zalan Bujtas  <zalan@apple.com>
425
426         [LayoutFormattingContext] Initial commit.
427         https://bugs.webkit.org/show_bug.cgi?id=184896
428
429         Reviewed by Antti Koivisto.
430
431         * wtf/FeatureDefines.h:
432
433 2018-04-23  Per Arne Vollan  <pvollan@apple.com>
434
435         Deactivate the WindowServer connection for the WebContent process.
436         https://bugs.webkit.org/show_bug.cgi?id=184451
437         <rdar://problem/38313938>
438
439         Reviewed by Brent Fulgham.
440
441         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
442         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
443         process startup. After calling this function, every attempt to establish a connection to the
444         WindowServer from the WebContent process will fail, except for CA render server connections.
445
446         * wtf/FeatureDefines.h:
447
448 2018-04-20  JF Bastien  <jfbastien@apple.com>
449
450         Handle more JSON stringify OOM
451         https://bugs.webkit.org/show_bug.cgi?id=184846
452         <rdar://problem/39390672>
453
454         Reviewed by Mark Lam.
455
456         JSON stringification can OOM easily. Here's another case.
457
458         * wtf/text/StringBuilderJSON.cpp:
459         (WTF::StringBuilder::appendQuotedJSONString):
460
461 2018-04-18  Jer Noble  <jer.noble@apple.com>
462
463         Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds
464         https://bugs.webkit.org/show_bug.cgi?id=184762
465
466         Reviewed by Dan Bernstein.
467
468         * Configurations/Base.xcconfig:
469
470 2018-04-20  Daniel Bates  <dabates@apple.com>
471
472         Remove code for compilers that did not support NSDMI for aggregates
473         https://bugs.webkit.org/show_bug.cgi?id=184599
474
475         Reviewed by Per Arne Vollan.
476
477         Remove workaround for earlier Visual Studio versions that did not support non-static data
478         member initializers (NSDMI) for aggregates. We have since updated all the build.webkit.org
479         and EWS bots to a newer version that supports this feature.
480
481         * wtf/Compiler.h:
482
483 2018-04-19  David Kilzer  <ddkilzer@apple.com>
484
485         Enable Objective-C weak references
486         <https://webkit.org/b/184789>
487         <rdar://problem/39571716>
488
489         Reviewed by Dan Bernstein.
490
491         * Configurations/Base.xcconfig:
492         (CLANG_ENABLE_OBJC_WEAK): Enable.
493
494 2018-04-19  Brady Eidson  <beidson@apple.com>
495
496         Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them).
497         <rdar://problem/39533949> and https://bugs.webkit.org/show_bug.cgi?id=184750
498
499         Reviewed by Ryosuke Niwa.
500
501         * wtf/DebugUtilities.h:
502         (WTF::debugString):
503
504 2018-04-19  Per Arne Vollan  <pvollan@apple.com>
505
506         Unreviewed, rolling out r230677.
507
508         Introduced Netflix problems.
509
510         Reverted changeset:
511
512         "Deactivate the WindowServer connection for the WebContent process."
513         https://bugs.webkit.org/show_bug.cgi?id=184451
514         https://trac.webkit.org/changeset/230677
515
516 2018-04-19  Nan Wang  <n_wang@apple.com>
517
518         AX: AOM: respect the accessibility setting for dispatching the accessible events
519         https://bugs.webkit.org/show_bug.cgi?id=184619
520
521         Reviewed by Ryosuke Niwa.
522
523         * wtf/Platform.h:
524
525 2018-04-18  Ross Kirsling  <ross.kirsling@sony.com>
526
527         [Win] Layout Test js/date-constructor.html is failing
528         https://bugs.webkit.org/show_bug.cgi?id=140945
529
530         Reviewed by Per Arne Vollan.
531
532         * wtf/DateMath.cpp:
533         (WTF::calculateDSTOffset):
534         Move all shared calculations outside of the #if -- including the "jump forward a day" case that had been overlooked.
535
536 2018-04-17  Saam Barati  <sbarati@apple.com>
537
538         Add system trace points for process launch and for initializeWebProcess
539         https://bugs.webkit.org/show_bug.cgi?id=184669
540
541         Reviewed by Simon Fraser.
542
543         This patch adds TracePointCodes to measure process launch time and
544         WebProcess::initializeWebProcess time.
545         
546         It also renames the TracePoint function to tracePoint since WebKit style
547         does not capitalize the first letter in function names.
548
549         * wtf/SystemTracing.h:
550         (WTF::tracePoint):
551         (WTF::TraceScope::TraceScope):
552         (WTF::TraceScope::~TraceScope):
553         (WTF::TracePoint): Deleted.
554
555 2018-04-16  Andy Estes  <aestes@apple.com>
556
557         [iOS] Enable WKPDFView by default
558         https://bugs.webkit.org/show_bug.cgi?id=184675
559         <rdar://problem/27885452>
560
561         Reviewed by Darin Adler.
562
563         * wtf/FeatureDefines.h:
564
565 2018-04-16  Per Arne Vollan  <pvollan@apple.com>
566
567         Deactivate the WindowServer connection for the WebContent process.
568         https://bugs.webkit.org/show_bug.cgi?id=184451
569         <rdar://problem/38313938>
570
571         Reviewed by Brent Fulgham.
572
573         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
574         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
575         process startup. After calling this function, every attempt to establish a connection to the
576         WindowServer from the WebContent process will fail, except for CA render server connections.
577
578         * wtf/FeatureDefines.h:
579
580 2018-04-14  Commit Queue  <commit-queue@webkit.org>
581
582         Unreviewed, rolling out r230659.
583         https://bugs.webkit.org/show_bug.cgi?id=184633
584
585         Landed prematurely (Requested by ap on #webkit).
586
587         Reverted changeset:
588
589         "Deactivate the WindowServer connection for the WebContent
590         process."
591         https://bugs.webkit.org/show_bug.cgi?id=184451
592         https://trac.webkit.org/changeset/230659
593
594 2018-04-14  Per Arne Vollan  <pvollan@apple.com>
595
596         Deactivate the WindowServer connection for the WebContent process.
597         https://bugs.webkit.org/show_bug.cgi?id=184451
598         <rdar://problem/38313938>
599
600         Reviewed by Brent Fulgham.
601
602         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
603         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
604         process startup. After calling this function, every attempt to establish a connection to the
605         WindowServer from the WebContent process will fail, except for CA render server connections.
606
607         * wtf/FeatureDefines.h:
608
609 2018-04-13  Chris Dumez  <cdumez@apple.com>
610
611         Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame
612         https://bugs.webkit.org/show_bug.cgi?id=184591
613
614         Reviewed by Sam Weinig.
615
616         Add isEmpty() convenience method to SizedIteratorRange.
617
618         * wtf/IteratorRange.h:
619         (WTF::SizedIteratorRange::isEmpty const):
620
621 2018-04-13  Brady Eidson  <beidson@apple.com>
622
623         Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one.
624         https://bugs.webkit.org/show_bug.cgi?id=184559
625
626         Reviewed by Alex Christensen.
627
628         * wtf/DebugUtilities.h:
629         (WTF::debugString): Add a debug utility to easily construct a "const char*" that is released after a spin of the run loop.
630           This greatly eases uses our String classes and functions inside of "%s" style environments like printf and LOG.
631
632 2018-04-12  Michael Catanzaro  <mcatanzaro@igalia.com>
633
634         Remove unused crash hook functionality
635         https://bugs.webkit.org/show_bug.cgi?id=183369
636
637         Reviewed by Alexey Proskuryakov.
638
639         WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
640         can be removed.
641
642         * wtf/Assertions.cpp:
643         * wtf/Assertions.h:
644
645 2018-04-11  Said Abou-Hallawa  <sabouhallawa@apple.com>
646
647         Unreviewed, rolling out r230523.
648
649         Introduced MotionMark regression
650
651         Reverted changeset:
652
653         "Deactivate the WindowServer connection for the WebContent
654         process."
655         https://bugs.webkit.org/show_bug.cgi?id=184451
656         https://trac.webkit.org/changeset/230523
657
658 2018-04-11  Per Arne Vollan  <pvollan@apple.com>
659
660         Deactivate the WindowServer connection for the WebContent process.
661         https://bugs.webkit.org/show_bug.cgi?id=184451
662         <rdar://problem/38313938>
663
664         Reviewed by Brent Fulgham.
665
666         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
667         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
668         process startup. After calling this function, every attempt to establish a connection to the
669         WindowServer from the WebContent process will fail, except for CA render server connections.
670
671         * wtf/FeatureDefines.h:
672
673 2018-04-10  Andy Estes  <aestes@apple.com>
674
675         [iOS] Use PDFKit to render PDFs in WKWebView
676         https://bugs.webkit.org/show_bug.cgi?id=184387
677
678         Reviewed by Beth Dakin.
679
680         * wtf/FeatureDefines.h: Defined ENABLE_WKLEGACYPDFVIEW and ENABLE_WKPDFVIEW.
681
682 2018-04-09  Mark Lam  <mark.lam@apple.com>
683
684         Decorate method table entries to support pointer profiling.
685         https://bugs.webkit.org/show_bug.cgi?id=184430
686         <rdar://problem/39296190>
687
688         Reviewed by Saam Barati.
689
690         * wtf/PointerPreparations.h:
691
692 2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
693
694         Unreviewed, use alignas(void*)
695         https://bugs.webkit.org/show_bug.cgi?id=183508
696
697         Very large alignment is not supported in MSVC.
698
699         * wtf/Gigacage.cpp:
700         * wtf/Gigacage.h:
701
702 2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
703
704         Use alignas instead of compiler-specific attributes
705         https://bugs.webkit.org/show_bug.cgi?id=183508
706
707         Reviewed by Mark Lam.
708
709         Use alignas for g_gigacageBasePtr. We also add reinterpret_cast to fix
710         compile errors in ARMv7 and MIPS JSCOnly ports.
711
712         * wtf/Gigacage.cpp:
713         * wtf/Gigacage.h:
714         (Gigacage::basePtrs):
715
716 2018-04-06  Saam Barati  <sbarati@apple.com>
717
718         bmalloc's tryLargeZeroedMemalignVirtual shouldn't treat the entire virtual size as dirty towards its footprint
719         https://bugs.webkit.org/show_bug.cgi?id=184207
720
721         Reviewed by Mark Lam.
722
723         * wtf/Gigacage.cpp:
724         (Gigacage::freeVirtualPages):
725
726 2018-04-05  Yusuke Suzuki  <utatane.tea@gmail.com>
727
728         [WTF] Remove StaticLock
729         https://bugs.webkit.org/show_bug.cgi?id=184332
730
731         Reviewed by Mark Lam.
732
733         Now, WTF::StaticLock is `using StaticLock = Lock`. Lock just works
734         in either static storage and dynamic storage. Remove StaticLock and
735         always use Lock.
736
737         We also remove StaticWordLock and StaticReadWriteLock. And we add
738         WTF::RecursiveLock, which is RecursiveLockAdapter<Lock>.
739
740         * wtf/HashTable.cpp:
741         (WTF::HashTableStats::recordCollisionAtCount):
742         (WTF::HashTableStats::dumpStats):
743         * wtf/Language.cpp:
744         (WTF::userPreferredLanguages):
745         * wtf/Lock.h:
746         * wtf/MainThread.cpp:
747         (WTF::dispatchFunctionsFromMainThread):
748         (WTF::callOnMainThread):
749         * wtf/ParkingLot.cpp:
750         * wtf/ReadWriteLock.h:
751         * wtf/RecursiveLockAdapter.h:
752         * wtf/StackStats.cpp:
753         (WTF::StackStats::CheckPoint::CheckPoint):
754         (WTF::StackStats::CheckPoint::~CheckPoint):
755         (WTF::StackStats::probe):
756         (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
757         (WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
758         * wtf/StackStats.h:
759         * wtf/ThreadMessage.cpp:
760         (WTF::sendMessageScoped):
761         * wtf/ThreadingPthreads.cpp:
762         * wtf/ThreadingWin.cpp:
763         * wtf/WordLock.h:
764         * wtf/cf/LanguageCF.cpp:
765         (WTF::languagePreferencesDidChange):
766         (WTF::platformUserPreferredLanguages):
767         * wtf/dtoa.cpp:
768         * wtf/text/AtomicStringImpl.cpp:
769         * wtf/text/StringView.cpp:
770         (WTF::StringView::invalidate):
771         (WTF::StringView::adoptUnderlyingString):
772         (WTF::StringView::setUnderlyingString):
773         * wtf/unicode/icu/CollatorICU.cpp:
774         (WTF::Collator::Collator):
775         (WTF::Collator::~Collator):
776         * wtf/win/LanguageWin.cpp:
777         (WTF::platformLanguage):
778
779 2018-04-04  Brent Fulgham  <bfulgham@apple.com>
780
781         Failures from mach port reference handling should be fatal
782         https://bugs.webkit.org/show_bug.cgi?id=184202
783         <rdar://problem/37771114>
784
785         Reviewed by Anders Carlsson.
786
787         * WTF.xcodeproj/project.pbxproj:
788         * wtf/MachSendRight.h: Copied from WebCore/platform/cocoa/MachSendRight.h.
789         (WebCore::MachSendRight::operator bool const): Deleted.
790         (WebCore::MachSendRight::sendRight const): Deleted.
791         * wtf/PlatformMac.cmake:
792         * wtf/cocoa/CPUTimeCocoa.mm:
793         (WTF::CPUTime::forCurrentThread): Do proper cleanup if the port is invalid.
794         * wtf/cocoa/MachSendRight.cpp: Copied from WebCore/platform/cocoa/MachSendRight.cpp.
795         (WTF::retainSendRight):
796         (WTF::releaseSendRight):
797         (WTF::deallocateSendRightSafely):
798         (WebCore::retainSendRight): Deleted.
799         (WebCore::releaseSendRight): Deleted.
800         (WebCore::MachSendRight::adopt): Deleted.
801         (WebCore::MachSendRight::create): Deleted.
802         (WebCore::MachSendRight::MachSendRight): Deleted.
803         (WebCore::MachSendRight::~MachSendRight): Deleted.
804         (WebCore::MachSendRight::operator=): Deleted.
805         (WebCore::MachSendRight::copySendRight const): Deleted.
806         (WebCore::MachSendRight::leakSendRight): Deleted.
807
808 2018-04-04  Youenn Fablet  <youenn@apple.com>
809
810         Introduce a ThreadSafeRefCounted parameter to ensure being destroyed on the main thread
811         https://bugs.webkit.org/show_bug.cgi?id=183988
812
813         Reviewed by Darin Adler.
814
815         * wtf/ThreadSafeRefCounted.h:
816         (WTF::ThreadSafeRefCounted::deref const):
817
818 2018-04-04  Yusuke Suzuki  <utatane.tea@gmail.com>
819
820         [WTF] Remove Atomics.cpp
821         https://bugs.webkit.org/show_bug.cgi?id=184300
822
823         Reviewed by Konstantin Tokarev.
824
825         This Atomics.cpp is a workaround for GCC which version is < 4.8.
826         Our compiler requirement is now 5.0.0. This workaround is no
827         longer necessary.
828
829         * wtf/Atomics.cpp: Removed.
830         * wtf/CMakeLists.txt:
831
832 2018-04-03  Tomas Popela  <tpopela@redhat.com>
833
834         Unreviewed, mute the unused parameter compilation warning
835
836         Triggered on the PPC64 machine.
837
838         * wtf/ThreadingPthreads.cpp:
839         (WTF::Thread::signalHandlerSuspendResume):
840
841 2018-04-03  Tomas Popela  <tpopela@redhat.com>
842
843         Unreviewed, fix the unused variable compilation warning
844
845         Move the ucontext_t code under the HAVE(MACHINE_CONTEXT). Triggered
846         on the PPC64 machine.
847
848         * wtf/ThreadingPthreads.cpp:
849         (WTF::Thread::signalHandlerSuspendResume):
850
851 2018-04-02  Saam Barati  <sbarati@apple.com>
852
853         bmalloc should compute its own estimate of its footprint
854         https://bugs.webkit.org/show_bug.cgi?id=184121
855
856         Reviewed by Filip Pizlo.
857
858         * wtf/FastMalloc.cpp:
859         (WTF::fastCommitAlignedMemory):
860         (WTF::fastDecommitAlignedMemory):
861         * wtf/FastMalloc.h:
862
863 2018-03-30  Filip Pizlo  <fpizlo@apple.com>
864
865         Strings and Vectors shouldn't do index masking
866         https://bugs.webkit.org/show_bug.cgi?id=184193
867
868         Reviewed by Mark Lam.
869
870         * wtf/SizeLimits.cpp:
871         * wtf/Vector.h:
872         (WTF::VectorBufferBase::allocateBuffer):
873         (WTF::VectorBufferBase::tryAllocateBuffer):
874         (WTF::VectorBufferBase::reallocateBuffer):
875         (WTF::VectorBufferBase::deallocateBuffer):
876         (WTF::VectorBufferBase::releaseBuffer):
877         (WTF::VectorBufferBase::VectorBufferBase):
878         (WTF::VectorBuffer::allocateBuffer):
879         (WTF::VectorBuffer::tryAllocateBuffer):
880         (WTF::VectorBuffer::swap):
881         (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
882         (WTF::Vector::at):
883         (WTF::Vector::at const):
884         (WTF::VectorBufferBase::updateMask): Deleted.
885         * wtf/text/StringImpl.h:
886         (WTF::StringImpl::flagIsSymbol):
887         (WTF::StringImpl::length const):
888         (WTF::StringImplShape::StringImplShape):
889         (WTF::StringImpl::at const):
890         (WTF::StringImpl::tailOffset):
891         (WTF::StringImpl::maskOffset): Deleted.
892         (WTF::StringImpl::mask const): Deleted.
893         * wtf/text/StringView.h:
894         (WTF::StringView::StringView):
895         (WTF::StringView::operator=):
896         (WTF::StringView::initialize):
897         (WTF::StringView::clear):
898         (WTF::StringView::operator[] const):
899         * wtf/text/WTFString.h:
900         (WTF::String::length const):
901         (WTF::String::mask const): Deleted.
902
903 2018-03-30  Mark Lam  <mark.lam@apple.com>
904
905         Add pointer profiling support in baseline JIT and supporting files.
906         https://bugs.webkit.org/show_bug.cgi?id=184200
907         <rdar://problem/39057300>
908
909         Reviewed by Filip Pizlo.
910
911         * wtf/PointerPreparations.h:
912         - Remove WTF_PREPARE_FUNCTION_POINTER_FOR_EXECUTION.  It is no longer needed.
913
914 2018-03-30  JF Bastien  <jfbastien@apple.com>
915
916         WorkQueueWin: don't move rvalues
917         https://bugs.webkit.org/show_bug.cgi?id=184190
918         <rdar://problem/39049850>
919
920         Reviewed by Mark Lam.
921
922         As part of #184167 optional is now more frequently an rvalue
923         reference, and moving its .value() is not a thing that should be
924         done anymore.
925
926         * wtf/win/WorkQueueWin.cpp:
927         (WTF::WorkQueue::unregisterAndCloseHandle):
928
929 2018-03-30  JF Bastien  <jfbastien@apple.com>
930
931         Remove CXX_REFERENCE_QUALIFIED_FUNCTIONS and optional's equivalent
932         https://bugs.webkit.org/show_bug.cgi?id=184167
933         <rdar://problem/39023130>
934
935         Reviewed by Yusuke Suzuki.
936
937         Remove COMPILER_SUPPORTS(CXX_REFERENCE_QUALIFIED_FUNCTIONS), it's
938         supported by all compilers WebKit supports (it's a C++11 feature,
939         *detection* of it with __has_extension was added to clang on May
940         13th 2011, and VS2015 / GCC support it).
941
942         Optional.h had a similar thing, ditch it too.
943
944         * wtf/Compiler.h:
945         * wtf/Optional.h:
946         (std::optional::contained_val const):
947         (std::optional::contained_val):
948         * wtf/Ref.h:
949         * wtf/RefPtr.h:
950         * wtf/text/WTFString.cpp:
951         * wtf/text/WTFString.h:
952
953 2018-03-30  JF Bastien  <jfbastien@apple.com>
954
955         Introduce WTF_LAZY_INSTANTIATE
956         https://bugs.webkit.org/show_bug.cgi?id=184169
957         <rdar://problem/39023385>
958
959         Reviewed by Mark Lam.
960
961         As part of #184164 I'm adding some forwarding methods to
962         WTF::String. These need to forward RetainPtr and CString, and
963         usually that would require #include'ing RetainPtr.h and CString.h
964         to WTFString.h which isn't really something we should do.
965
966         Introduce WTF_LAZY_INSTANTIATE to forward-declare functions which
967         just pass parameters to another function, and return whatever that
968         other function returned, without having to include the return's /
969         parameters' type header.
970
971         Try it out here: godbolt.org/g/oV8G5Q
972
973         * wtf/Forward.h:
974
975 2018-03-29  JF Bastien  <jfbastien@apple.com>
976
977         Use Forward.h instead of forward-declaring WTF::String
978         https://bugs.webkit.org/show_bug.cgi?id=184172
979         <rdar://problem/39026146>
980
981         Reviewed by Yusuke Suzuki.
982
983         As part of #184164 I'm changing WTF::String, and the forward
984         declarations are just wrong because I'm making it templated. We
985         should use Forward.h anyways, so do that instead.
986
987         * wtf/Forward.h:
988         * wtf/HashTraits.h:
989         * wtf/PrintStream.h:
990
991 2018-03-29  Yusuke Suzuki  <utatane.tea@gmail.com>
992
993         Remove WTF_EXPORTDATA and JS_EXPORTDATA
994         https://bugs.webkit.org/show_bug.cgi?id=184170
995
996         Reviewed by JF Bastien.
997
998         Replace WTF_EXPORTDATA and JS_EXPORTDATA with
999         WTF_EXPORT_PRIVATE and JS_EXPORT_PRIVATE respectively.
1000
1001         * wtf/ExportMacros.h:
1002         * wtf/Gigacage.h:
1003         * wtf/HashTable.h:
1004         * wtf/Threading.h:
1005         * wtf/text/AtomicString.cpp:
1006         * wtf/text/AtomicString.h:
1007         * wtf/text/StringImpl.h:
1008
1009 2018-03-29  Ross Kirsling  <ross.kirsling@sony.com>
1010
1011         MSVC __forceinline slows down JSC release build fivefold after r229391
1012         https://bugs.webkit.org/show_bug.cgi?id=184062
1013
1014         Reviewed by Alex Christensen.
1015
1016         * wtf/Compiler.h:
1017         Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.
1018
1019 2018-03-29  JF Bastien  <jfbastien@apple.com>
1020
1021         Remove WTF_EXPORT_STRING_API
1022         https://bugs.webkit.org/show_bug.cgi?id=184168
1023         <rdar://problem/39023253>
1024
1025         Reviewed by Yusuke Suzuki.
1026
1027         Remove WTF_EXPORT_STRING_API as requested by a FIXME, and use
1028         WTF_EXPORT_PRIVATE instead.
1029
1030         * wtf/ExportMacros.h:
1031         * wtf/text/AtomicString.h:
1032         * wtf/text/AtomicStringImpl.h:
1033         * wtf/text/StringImpl.h:
1034         * wtf/text/StringView.h:
1035         * wtf/text/SymbolImpl.h:
1036         * wtf/text/WTFString.h:
1037
1038 2018-03-29  Commit Queue  <commit-queue@webkit.org>
1039
1040         Unreviewed, rolling out r230062.
1041         https://bugs.webkit.org/show_bug.cgi?id=184128
1042
1043         Broke mac port. web content process crashes while loading any
1044         web page (Requested by rniwa on #webkit).
1045
1046         Reverted changeset:
1047
1048         "MSVC __forceinline slows down JSC release build fivefold
1049         after r229391"
1050         https://bugs.webkit.org/show_bug.cgi?id=184062
1051         https://trac.webkit.org/changeset/230062
1052
1053 2018-03-28  Ross Kirsling  <ross.kirsling@sony.com>
1054
1055         MSVC __forceinline slows down JSC release build fivefold after r229391
1056         https://bugs.webkit.org/show_bug.cgi?id=184062
1057
1058         Reviewed by Alex Christensen.
1059
1060         * wtf/Compiler.h:
1061         Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.
1062
1063 2018-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
1064
1065         [Win] Assertions.h: VC doesn't support GCC extension ##__VA_ARGS__
1066         https://bugs.webkit.org/show_bug.cgi?id=184076
1067
1068         Reviewed by Alex Christensen.
1069
1070         ##__VA_ARGS__ is used to define RELEASE_LOG, RELEASE_LOG_ERROR,
1071         RELEASE_LOG_IF, RELEASE_LOG_ERROR_IF, RELEASE_LOG_WITH_LEVEL,
1072         RELEASE_LOG_WITH_LEVEL_IF and RELEASE_LOG_INFO_IF.
1073
1074         A macro using ##__VA_ARGS__,
1075
1076           #define foo(format, ...) bar(format, ##__VA_ARGS__)
1077
1078         can be defined without ##__VA_ARGS__:
1079
1080           #define foo(...) bar(__VA_ARGS__)
1081
1082         * wtf/Assertions.h: Use __VA_ARGS__ instead of ##__VA_ARGS__.
1083
1084 2018-03-28  Brent Fulgham  <bfulgham@apple.com>
1085
1086         Avoid uninitialized mach ports
1087         https://bugs.webkit.org/show_bug.cgi?id=184090
1088         <rdar://problem/37261129>
1089
1090         Reviewed by Chris Dumez.
1091
1092         It is possible for mach_port_allocate to return an error, but we rarely check its return value. The value
1093         of the argument passed to mach_port_allocate is not guaranteed to be valid when it returns an error, so
1094         there is a potential for us to try to use invalid ports.
1095
1096         We should always check return values, and ensure that the mach port variables we seek to initialize are
1097         kept in a valid state.
1098
1099         Reviewed by Chris Dumez.
1100
1101         * wtf/Threading.h: Initialize mach port.
1102
1103 2018-03-28  Robin Morisset  <rmorisset@apple.com>
1104
1105         appendQuotedJSONString stops on arithmetic overflow instead of propagating it upwards
1106         https://bugs.webkit.org/show_bug.cgi?id=183894
1107
1108         Reviewed by Saam Barati.
1109
1110         appendQuotedJSONString now returns a bool indicating whether it succeeded, instead of silently failing when given a string too large
1111         to fit in 4GB.
1112
1113         * wtf/text/StringBuilder.h:
1114         * wtf/text/StringBuilderJSON.cpp:
1115         (WTF::StringBuilder::appendQuotedJSONString):
1116
1117 2018-03-27  Per Arne Vollan  <pvollan@apple.com>
1118
1119         The layout test fast/canvas/webgl/read-pixels-test.html is timing out.
1120         https://bugs.webkit.org/show_bug.cgi?id=183923
1121         <rdar://problem/38756869>
1122
1123         Reviewed by Brent Fulgham.
1124
1125         Add compile guard for blocking of the WindowServer in the WebProcess.
1126
1127         * wtf/FeatureDefines.h:
1128
1129 2018-03-26  Tim Horton  <timothy_horton@apple.com>
1130
1131         Add and adopt HAVE(CORE_ANIMATION_RENDER_SERVER)
1132         https://bugs.webkit.org/show_bug.cgi?id=184026
1133         <rdar://problem/38883321>
1134
1135         Reviewed by Sam Weinig.
1136
1137         * wtf/Platform.h:
1138
1139 2018-03-26  Yusuke Suzuki  <utatane.tea@gmail.com>
1140
1141         We should have SSE4 detection in the X86 MacroAssembler.
1142         https://bugs.webkit.org/show_bug.cgi?id=165363
1143
1144         Reviewed by JF Bastien.
1145
1146         GCC 5 supports clobbering PIC registers in inline ASM [1,2].
1147
1148         [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47602
1149         [2]: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=216154
1150
1151         * wtf/Atomics.h:
1152         (WTF::x86_cpuid):
1153
1154 2018-03-26  Antoine Quint  <graouts@apple.com>
1155
1156         [ASan] Allow Ref<> to be swapped
1157         https://bugs.webkit.org/show_bug.cgi?id=184017
1158         <rdar://problem/36336787>
1159
1160         Reviewed by JF Bastien.
1161
1162         Unpoison a Ref in various calls just like in ~Ref so that sorting a Vector<Ref<>> works with ASan on.
1163
1164         * wtf/Ref.h:
1165         (WTF::Ref::assignToHashTableEmptyValue):
1166         (WTF::=):
1167         (WTF::U>::replace):
1168
1169 2018-03-26  Brent Fulgham  <bfulgham@apple.com>
1170
1171         Warn against cookie access in the WebContent process using ProcessPrivilege assertions
1172         https://bugs.webkit.org/show_bug.cgi?id=183911
1173         <rdar://problem/38762306>
1174
1175         Reviewed by Youenn Fablet.
1176
1177         Extend the ProcessPrivilege API with the ability to add and remove individual
1178         privileges.
1179
1180         * wtf/ProcessPrivilege.cpp:
1181         (WTF::addProcessPrivilege):
1182         (WTF::removeProcessPrivilege):
1183         * wtf/ProcessPrivilege.h:
1184
1185 2018-03-25  Carlos Alberto Lopez Perez  <clopez@igalia.com>
1186
1187         WebProcess memory monitor: use %zu format specifier for size_t
1188         https://bugs.webkit.org/show_bug.cgi?id=183997
1189
1190         Reviewed by Michael Catanzaro.
1191
1192         usse %zu format specifier for size_t instead of %lu.
1193
1194         * wtf/MemoryPressureHandler.cpp:
1195         (WTF::MemoryPressureHandler::shrinkOrDie):
1196         (WTF::MemoryPressureHandler::measurementTimerFired):
1197
1198 2018-03-25  Tim Horton  <timothy_horton@apple.com>
1199
1200         Add and adopt ENABLE(AIRPLAY_PICKER)
1201         https://bugs.webkit.org/show_bug.cgi?id=183992
1202
1203         Reviewed by Daniel Bates.
1204
1205         * wtf/FeatureDefines.h:
1206
1207 2018-03-23  Tim Horton  <timothy_horton@apple.com>
1208
1209         Introduce and adopt HAVE(AUDIO_TOOLBOX_AUDIO_SESSION)
1210         https://bugs.webkit.org/show_bug.cgi?id=183954
1211         <rdar://problem/38808858>
1212
1213         Reviewed by Dan Bernstein.
1214
1215         * wtf/Platform.h:
1216
1217 2018-03-23  David Kilzer  <ddkilzer@apple.com>
1218
1219         Stop using dispatch_set_target_queue()
1220         <https://webkit.org/b/183908>
1221         <rdar://problem/33553533>
1222
1223         Reviewed by Daniel Bates.
1224
1225         * wtf/cocoa/WorkQueueCocoa.cpp:
1226         (WTF::WorkQueue::platformInitialize): Remove !HAVE(QOS_CLASSES)
1227         code path since it's never used now that HAVE(QOS_CLASSES) is
1228         equivalent to PLATFORM(COCOA) in <wtf/Platform.h>.
1229
1230 2018-03-23  Carlos Alberto Lopez Perez  <clopez@igalia.com>
1231
1232         WebProcess memory monitor thresholds should be better tuned for embedded systems.
1233         https://bugs.webkit.org/show_bug.cgi?id=183773
1234
1235         Reviewed by Yusuke Suzuki.
1236
1237         Take into account the total system RAM for the thresholds calculation.
1238
1239         For systems with more than 3GB the conservative and strict thresholds remain as they are,
1240         but for systems with less RAM the thresholds are dynamically configured as follows:
1241
1242         - Conservative threshold (release non critical memory) if WebProcess using more than 33% of the total RAM.
1243         - Strict threshold (release all possible memory) if WebProcess using more than 50% of the total RAM.
1244
1245         The Kill threshold is also modified. Now it is capped at 90% of the total RAM.
1246
1247         * wtf/MemoryPressureHandler.cpp:
1248         (WTF::thresholdForMemoryKillWithProcessState):
1249         (WTF::thresholdForPolicy):
1250         (WTF::MemoryPressureHandler::shrinkOrDie):
1251
1252 2018-03-23  Yusuke Suzuki  <utatane.tea@gmail.com>
1253
1254         [WTF] Add standard containers with FastAllocator specialization
1255         https://bugs.webkit.org/show_bug.cgi?id=183789
1256
1257         Reviewed by Darin Adler.
1258
1259         Sometimes we want standard containers due to various reasons.
1260         For example, WTF::HashMap lacks the ability to hold all the
1261         integer keys since it uses 0 for empty value and -1 for deleted
1262         value. However, using std::containers use std::allocator without
1263         specialization.
1264
1265         This patch introduces WTF::{StdMap, StdSet, StdList, StdUnorderedMap, StdUnorderedSet}.
1266         They are standard containers with FastAllocator specialization.
1267
1268         * WTF.xcodeproj/project.pbxproj:
1269         * wtf/CMakeLists.txt:
1270         * wtf/StdList.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
1271         * wtf/StdMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
1272         * wtf/StdSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
1273         * wtf/StdUnorderedMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
1274         * wtf/StdUnorderedSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
1275
1276 2018-03-22  Tim Horton  <timothy_horton@apple.com>
1277
1278         Adopt USE(OPENGL[_ES]) in more places
1279         https://bugs.webkit.org/show_bug.cgi?id=183882
1280         <rdar://problem/37912195>
1281
1282         Reviewed by Dan Bernstein.
1283
1284         * wtf/Platform.h:
1285
1286 2018-03-20  Brent Fulgham  <bfulgham@apple.com>
1287
1288         Create an assertion mechanism to ensure proper WebCore use in each WebKit Process
1289         https://bugs.webkit.org/show_bug.cgi?id=183806
1290         <rdar://problem/38694251>
1291
1292         Reviewed by Ryosuke Niwa.
1293
1294         Part of our security improvements involve better isolation between the different WebKit
1295         processes (UIProcess, WebContent, Networking, Storage, etc.).
1296
1297         We need an assertion language we can use to protect certain critical APIs and code paths
1298         against accidental misuse.
1299
1300         This patch adds a new enum type meant to represent different categories of program logic
1301         that we do not want used in the wrong process.
1302
1303         This first patch just creates these types and makes them available. New assertions using
1304         these values will be added as we complete our work ensuring proper process isolation.
1305
1306         In a method we want to protect, we can add an assertion describing the process privileges
1307         needed to execute the code. For example, for cookie access we might use this:
1308
1309             ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies);
1310
1311         At the launch of the UIProcess we would use this method to ensure all privileges are available:
1312
1313             setProcessPrivileges(allPrivileges());
1314
1315         In the network process, during platform initialization, we would use something like this:
1316
1317             setProcessPrivileges({ ProcessPrivilege::CanAccessRawCookies, ProcessPrivilege::CanAccessCredentials });
1318
1319         In the WebContent process, we would not set any privileges. We could just leave it as the
1320         default initialization, or use this:
1321
1322             setProcessPrivileges({ });
1323
1324         Later, when we attempt to execute the initial code, we would expect an assertion for the
1325         WebContent process, while Network and UIProcess pass the assertion.
1326
1327         * WTF.xcodeproj/project.pbxproj: Add new files.
1328         * wtf/CMakeLists.txt: Ditto.
1329         * wtf/ProcessPrivilege.cpp: Added.
1330         (WTF::processPrivileges):
1331         (WTF::setProcessPrivileges):
1332         (WTF::hasProcessPrivilege):
1333         * wtf/ProcessPrivilege.h: Added.
1334
1335 2018-03-20  Tim Horton  <timothy_horton@apple.com>
1336
1337         Introduce HAVE_MEDIA_PLAYER and HAVE_CORE_VIDEO
1338         https://bugs.webkit.org/show_bug.cgi?id=183803
1339         <rdar://problem/38690487>
1340
1341         Reviewed by Sam Weinig.
1342
1343         * wtf/Platform.h:
1344
1345 2018-03-20  Brian Burg  <bburg@apple.com>
1346
1347         SLEEP_THREAD_FOR_DEBUGGER should not use fancy number literals
1348         https://bugs.webkit.org/show_bug.cgi?id=183792
1349
1350         Reviewed by Timothy Hatcher.
1351
1352         * wtf/DebugUtilities.h: Remove the '_s' since this won't
1353         compile when included by files compiled as Objective-C++.
1354
1355 2018-03-20  Tim Horton  <timothy_horton@apple.com>
1356
1357         Add and adopt WK_PLATFORM_NAME and adjust default feature defines
1358         https://bugs.webkit.org/show_bug.cgi?id=183758
1359         <rdar://problem/38017644>
1360
1361         Reviewed by Dan Bernstein.
1362
1363         * wtf/FeatureDefines.h:
1364
1365 2018-03-19  Eric Carlson  <eric.carlson@apple.com>
1366
1367         [Extra zoom mode] Require fullscreen for video playback
1368         https://bugs.webkit.org/show_bug.cgi?id=183742
1369         <rdar://problem/38235862>
1370
1371         Reviewed by Jer Noble.
1372
1373         * wtf/Platform.h:
1374
1375 2018-03-15  Tim Horton  <timothy_horton@apple.com>
1376
1377         Avoid defining commonly-named system macros on all Cocoa platforms
1378         https://bugs.webkit.org/show_bug.cgi?id=183687
1379
1380         Reviewed by Dan Bernstein.
1381
1382         * wtf/Platform.h:
1383
1384 2018-03-14  Tim Horton  <timothy_horton@apple.com>
1385
1386         Fix the build after r229387
1387         https://bugs.webkit.org/show_bug.cgi?id=183639
1388         <rdar://problem/38448568>
1389
1390         Reviewed by Dean Jackson.
1391
1392         * wtf/Platform.h:
1393
1394 2018-03-13  Tim Horton  <timothy_horton@apple.com>
1395
1396         Add and adopt WK_ALTERNATE_FRAMEWORKS_DIR in WTF and bmalloc
1397         https://bugs.webkit.org/show_bug.cgi?id=183576
1398         <rdar://problem/38396766>
1399
1400         Reviewed by Dan Bernstein.
1401
1402         * Configurations/Base.xcconfig:
1403         * Configurations/CopyWTFHeaders.xcconfig:
1404         * Configurations/WTF.xcconfig:
1405         * Configurations/mbmalloc.xcconfig:
1406
1407 2018-03-13  Michael Catanzaro  <mcatanzaro@igalia.com>
1408
1409         Unreviewed, fix typo in a comment
1410
1411         * wtf/Platform.h:
1412
1413 2018-03-12  Don Olmstead  <don.olmstead@sony.com>
1414
1415         [CMake][Win] Forwarding headers of WTF and PAL are copied twice in Visual Studio builds
1416         https://bugs.webkit.org/show_bug.cgi?id=183240
1417
1418         Reviewed by Alex Christensen.
1419
1420         * wtf/CMakeLists.txt:
1421         * wtf/PlatformGTK.cmake:
1422         * wtf/PlatformJSCOnly.cmake:
1423         * wtf/PlatformMac.cmake:
1424         * wtf/PlatformWPE.cmake:
1425         * wtf/PlatformWin.cmake:
1426
1427 2018-03-12  Yusuke Suzuki  <utatane.tea@gmail.com>
1428
1429         Unreviewed, include time.h
1430         https://bugs.webkit.org/show_bug.cgi?id=183312
1431
1432         Attempt to fix oss-fuzz build.
1433
1434         * wtf/CurrentTime.cpp:
1435         * wtf/unix/CPUTimeUnix.cpp:
1436
1437 2018-03-12  Yoav Weiss  <yoav@yoav.ws>
1438
1439         Runtime flag for link prefetch and remove link subresource.
1440         https://bugs.webkit.org/show_bug.cgi?id=183540
1441
1442         Reviewed by Chris Dumez.
1443
1444         Remove the LINK_PREFETCH build time flag.
1445
1446         * wtf/FeatureDefines.h:
1447
1448 2018-03-12  Mark Lam  <mark.lam@apple.com>
1449
1450         Make a NativeFunction into a class to support pointer profiling.
1451         https://bugs.webkit.org/show_bug.cgi?id=183573
1452         <rdar://problem/38384697>
1453
1454         Reviewed by Filip Pizlo.
1455
1456         Changed Poisoned so that it can be used on tagged pointers as well.
1457
1458         * wtf/Poisoned.h:
1459
1460 2018-03-11  Filip Pizlo  <fpizlo@apple.com>
1461
1462         Split DirectArguments into JSValueOOB and JSValueStrict parts
1463         https://bugs.webkit.org/show_bug.cgi?id=183458
1464
1465         Reviewed by Yusuke Suzuki.
1466
1467         * wtf/MathExtras.h:
1468         (WTF::dynamicPoison): Deleted.
1469
1470 2018-03-11  Yusuke Suzuki  <utatane.tea@gmail.com>
1471
1472         [Win] Use SRWLOCK and CONDITION_VARIABLE to simplify implementation
1473         https://bugs.webkit.org/show_bug.cgi?id=183541
1474
1475         Reviewed by Darin Adler.
1476
1477         After Windows Vista, Windows offers SRWLOCK and CONDITION_VARIABLE.
1478         They can simplify the implementation of our WTF::Mutex and WTF::ThreadCondition.
1479
1480         C++ std::mutex and std::condition_variable uses std::chrono for their timed
1481         functions. Since std::chrono is not overflow-aware, we cannot reliably use
1482         this functionalities. This is why we still keep WTF::Mutex and WTF::ThreadCondition.
1483         They are used for ParkingLot.
1484
1485         * wtf/ThreadingPrimitives.h:
1486         * wtf/ThreadingWin.cpp:
1487         (WTF::Mutex::Mutex):
1488         (WTF::Mutex::~Mutex):
1489         (WTF::Mutex::lock):
1490         (WTF::Mutex::tryLock):
1491         (WTF::Mutex::unlock):
1492         (WTF::absoluteTimeToWaitTimeoutInterval):
1493         (WTF::ThreadCondition::ThreadCondition):
1494         (WTF::ThreadCondition::~ThreadCondition):
1495         (WTF::ThreadCondition::wait):
1496         (WTF::ThreadCondition::timedWait):
1497         (WTF::ThreadCondition::signal):
1498         (WTF::ThreadCondition::broadcast):
1499         (WTF::PlatformCondition::timedWait): Deleted.
1500         (WTF::PlatformCondition::signal): Deleted.
1501
1502 2018-03-10  Commit Queue  <commit-queue@webkit.org>
1503
1504         Unreviewed, rolling out r229436.
1505         https://bugs.webkit.org/show_bug.cgi?id=183542
1506
1507         seems to have regressed wasm compile times by 10% (Requested
1508         by pizlo-mbp on #webkit).
1509
1510         Reverted changeset:
1511
1512         "bmalloc mutex should be adaptive"
1513         https://bugs.webkit.org/show_bug.cgi?id=177839
1514         https://trac.webkit.org/changeset/229436
1515
1516 2018-03-09  Mark Lam  <mark.lam@apple.com>
1517
1518         [Re-landing] Prepare LLInt code to support pointer profiling.
1519         https://bugs.webkit.org/show_bug.cgi?id=183387
1520         <rdar://problem/38199678>
1521
1522         Reviewed by JF Bastien.
1523
1524         * wtf/Platform.h:
1525
1526 2018-03-08  Commit Queue  <commit-queue@webkit.org>
1527
1528         Unreviewed, rolling out r229354 and r229364.
1529         https://bugs.webkit.org/show_bug.cgi?id=183492
1530
1531         Breaks internal builds (Requested by ryanhaddad on #webkit).
1532
1533         Reverted changesets:
1534
1535         "Prepare LLInt code to support pointer profiling."
1536         https://bugs.webkit.org/show_bug.cgi?id=183387
1537         https://trac.webkit.org/changeset/229354
1538
1539         "Add support for ARM64E."
1540         https://bugs.webkit.org/show_bug.cgi?id=183398
1541         https://trac.webkit.org/changeset/229364
1542
1543 2018-03-08  Filip Pizlo  <fpizlo@apple.com>
1544
1545         bmalloc mutex should be adaptive
1546         https://bugs.webkit.org/show_bug.cgi?id=177839
1547
1548         Reviewed by Michael Saboff.
1549         
1550         Add some comments that I thought of while copy-pasting this code.
1551
1552         Reland after failing to reproduce the WasmBench crash that caused it to get rolled out. Maybe that fixed
1553         itself somehow?
1554
1555         * wtf/LockAlgorithmInlines.h:
1556         * wtf/WordLock.cpp:
1557         (WTF::WordLock::unlockSlow):
1558
1559 2018-03-08  Keith Miller  <keith_miller@apple.com>
1560
1561         Disable JIT on Cocoa 32-bit ARM.
1562         https://bugs.webkit.org/show_bug.cgi?id=183426
1563
1564         Reviewed by Michael Saboff.
1565
1566         * wtf/Platform.h:
1567
1568 2018-03-08  Keith Miller  <keith_miller@apple.com>
1569
1570         Use asm instead of __asm__ in WTFBreakpointTrap so MSVC builds
1571         https://bugs.webkit.org/show_bug.cgi?id=183465
1572
1573         Reviewed by Michael Saboff.
1574
1575         * wtf/Assertions.h:
1576
1577 2018-03-07  Filip Pizlo  <fpizlo@apple.com>
1578
1579         Make it possible to randomize register allocation
1580         https://bugs.webkit.org/show_bug.cgi?id=183416
1581
1582         Reviewed by Keith Miller.
1583
1584         * wtf/MathExtras.h:
1585         (WTF::shuffleVector):
1586
1587 2018-03-08  Yusuke Suzuki  <utatane.tea@gmail.com>
1588
1589         [Win] Use __debugbreak for WTFBreakpointTrap
1590         https://bugs.webkit.org/show_bug.cgi?id=183450
1591
1592         Reviewed by Mark Lam.
1593
1594         This patch adds WTFBreakpointTrap() implementation for MSVC by using
1595         __debugbreak. It fixes build failure in Windows due to the use of
1596         WTFBreakpointTrap().
1597
1598         * wtf/Assertions.h:
1599
1600 2018-03-08  Zan Dobersek  <zdobersek@igalia.com>
1601
1602         [GLib] RunLoop::wakeUp(): use a zero value instead of the monotonic time
1603         https://bugs.webkit.org/show_bug.cgi?id=183447
1604
1605         Reviewed by Carlos Garcia Campos.
1606
1607         * wtf/glib/RunLoopGLib.cpp:
1608         (WTF::RunLoop::wakeUp): Micro-optimize the wake-up schedule by using
1609         a zero value as the GSource ready time, instead of retrieving and using
1610         the current monotonic time.
1611
1612 2018-03-08  Tim Horton  <timothy_horton@apple.com>
1613
1614         Don't have Celestial in minimal simulator configuration
1615         https://bugs.webkit.org/show_bug.cgi?id=183432
1616         <rdar://problem/38252985>
1617
1618         Reviewed by Dan Bernstein.
1619
1620         * wtf/Platform.h:
1621
1622 2018-03-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1623
1624         [WTF] Set canInitializeWithMemset = true if T is an integral type
1625         https://bugs.webkit.org/show_bug.cgi?id=183357
1626
1627         Reviewed by Darin Adler.
1628
1629         This patch set `canInitializeWithMemset = true` if T is an integral type.
1630         This can offer a chance to use memset if we use UniqueArray<T> where T is
1631         an integral type. We also rename VectorTypeOperations::initialize to
1632         VectorTypeOperations::initializeIfNonPOD, VectorTypeOperations::forceInitialize
1633         to VectorTypeOperations::initialize respectively.
1634
1635         * wtf/RefCountedArray.h:
1636         (WTF::RefCountedArray::RefCountedArray):
1637         * wtf/UniqueArray.h:
1638         * wtf/Vector.h:
1639         (WTF::VectorTypeOperations::initializeIfNonPOD):
1640         (WTF::VectorTypeOperations::initialize):
1641         (WTF::Vector::Vector):
1642         (WTF::Malloc>::resize):
1643         (WTF::Malloc>::grow):
1644         (WTF::VectorTypeOperations::forceInitialize): Deleted.
1645         * wtf/VectorTraits.h:
1646
1647 2018-03-07  Keith Miller  <keith_miller@apple.com>
1648
1649         Meta-program setupArguments and callOperation
1650         https://bugs.webkit.org/show_bug.cgi?id=183263
1651
1652         Rubber-stamped by Filip Pizlo.
1653
1654         Add a new function traits struct that provides interesting
1655         information about the provided function pointer. Right now it only
1656         provides information for function pointers, in theory we could
1657         also get it to work for other types.
1658
1659         * WTF.xcodeproj/project.pbxproj:
1660         * wtf/Bitmap.h:
1661         (WTF::WordType>::Bitmap):
1662         * wtf/CMakeLists.txt:
1663         * wtf/FunctionTraits.h: Added.
1664         (WTF::slotsForCCallArgument):
1665         (WTF::computeCCallSlots):
1666         (WTF::FunctionTraits<Result):
1667
1668 2018-03-07  Tim Horton  <timothy_horton@apple.com>
1669
1670         Shuffle around some feature flags for minimal simulator mode
1671         https://bugs.webkit.org/show_bug.cgi?id=183419
1672         <rdar://problem/37694987>
1673
1674         Reviewed by Beth Dakin.
1675
1676         * wtf/FeatureDefines.h:
1677         * wtf/Platform.h:
1678
1679 2018-03-06  Mark Lam  <mark.lam@apple.com>
1680
1681         Prepare LLInt code to support pointer profiling.
1682         https://bugs.webkit.org/show_bug.cgi?id=183387
1683         <rdar://problem/38199678>
1684
1685         Reviewed by JF Bastien.
1686
1687         * wtf/Platform.h:
1688
1689 2018-03-06  Commit Queue  <commit-queue@webkit.org>
1690
1691         Unreviewed, rolling out r229330.
1692         https://bugs.webkit.org/show_bug.cgi?id=183379
1693
1694         Broke some Apple internal code (Requested by ap on #webkit).
1695
1696         Reverted changeset:
1697
1698         "Remove unused crash hook functionality"
1699         https://bugs.webkit.org/show_bug.cgi?id=183369
1700         https://trac.webkit.org/changeset/229330
1701
1702 2018-03-06  Michael Catanzaro  <mcatanzaro@igalia.com>
1703
1704         Remove unused crash hook functionality
1705         https://bugs.webkit.org/show_bug.cgi?id=183369
1706
1707         Reviewed by Alexey Proskuryakov.
1708
1709         WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
1710         can be removed.
1711
1712         * wtf/Assertions.cpp:
1713         * wtf/Assertions.h:
1714
1715 2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1716
1717         Fix std::make_unique / new[] using system malloc
1718         https://bugs.webkit.org/show_bug.cgi?id=182975
1719
1720         Reviewed by JF Bastien.
1721
1722         If we use `make_unique<char[]>(num)` or `new char[num]`, allocation is
1723         done by the system malloc instead of bmalloc. This patch fixes this issue
1724         by following three changes.
1725
1726         1. Introduce UniqueArray<T>. It allocates memory from FastMalloc. While C++
1727         array with `new` need to hold the size to call destructor correctly, our
1728         UniqueArray only supports type T which does not have a non trivial destructor.
1729         It reduces the allocation size since we do not need to track the size of the
1730         array compared to standard `new T[]`. This is basically usable if we want to
1731         have raw array which pointer won't be changed even if the container is moved.
1732         In addition, we also extend UniqueArray<T> for types which have non trivial
1733         destructors.
1734
1735         2. Use Vector<T> instead.
1736
1737         3. Annotate allocated types with MAKE_FAST_ALLOCATED. Since it introduces
1738         new[] and delete[] operators, make_unique<T[]>(num) will allocate memory
1739         from FastMalloc.
1740
1741         * WTF.xcodeproj/project.pbxproj:
1742         * wtf/Assertions.cpp:
1743         * wtf/CMakeLists.txt:
1744         * wtf/FastMalloc.h:
1745         (WTF::FastFree::operator() const):
1746         (WTF::FastFree<T::operator() const):
1747         * wtf/MallocPtr.h:
1748         (WTF::MallocPtr::operator bool const):
1749         * wtf/StackShot.h:
1750         (WTF::StackShot::StackShot):
1751         (WTF::StackShot::operator=):
1752         * wtf/SystemFree.h:
1753         (WTF::SystemFree<T::operator() const):
1754         * wtf/UniqueArray.h: Copied from Source/WebKit/Platform/win/LoggingWin.cpp.
1755         (WTF::makeUniqueArray):
1756         * wtf/Vector.h:
1757         (WTF::VectorTypeOperations::forceInitialize):
1758
1759 2018-03-05  Michael Saboff  <msaboff@apple.com>
1760
1761         Start using MAP_JIT for macOS
1762         https://bugs.webkit.org/show_bug.cgi?id=183353
1763
1764         Reviewed by Filip Pizlo.
1765
1766         Unify setting this flag for both iOS and macOS.
1767
1768         * wtf/OSAllocatorPosix.cpp:
1769         (WTF::OSAllocator::reserveAndCommit):
1770
1771 2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1772
1773         Unreviewed, follow-up after r229209
1774         https://bugs.webkit.org/show_bug.cgi?id=183312
1775
1776         Add RELEASE_ASSERT to ensure success.
1777
1778         * wtf/cocoa/CPUTimeCocoa.mm:
1779         (WTF::CPUTime::forCurrentThread):
1780         * wtf/unix/CPUTimeUnix.cpp:
1781         (WTF::CPUTime::forCurrentThread):
1782         * wtf/win/CPUTimeWin.cpp:
1783         (WTF::CPUTime::forCurrentThread):
1784
1785 2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1786
1787         Unreviewed, fix MediaTime test
1788         https://bugs.webkit.org/show_bug.cgi?id=183319
1789
1790         __builtin_xxx_overflow writes overflowed data into ResultType value even if overflow happens.
1791         This is different from the original CheckedArithmetic semantics.
1792
1793         * wtf/CheckedArithmetic.h:
1794
1795 2018-03-04  Yusuke Suzuki  <utatane.tea@gmail.com>
1796
1797         [WTF] Move currentCPUTime and sleep(Seconds) to CPUTime.h and Seconds.h respectively
1798         https://bugs.webkit.org/show_bug.cgi?id=183312
1799
1800         Reviewed by Mark Lam.
1801
1802         1. currentCPUTime to CPUTime.h. It is now defined as CPUTime::forCurrentThread.
1803         We also removes fallback implementation for currentCPUTime since (1) that implementation
1804         is wrong and (2) no environments we support needs this.
1805
1806         2. sleep(Seconds) to Seconds.h. Since sleep(MonotonicTime) and sleep(WallTime) are defined
1807         in MonotonicTime.h and WallTime.h, this code move is natural.
1808
1809         3. Remove wtf/CurrentTime.h since nothing is defined now. But we keep CurrentTime.cpp to
1810         consolidate various time-source implementations in one place.
1811
1812         * WTF.xcodeproj/project.pbxproj:
1813         * benchmarks/ConditionSpeedTest.cpp:
1814         * benchmarks/LockFairnessTest.cpp:
1815         * benchmarks/LockSpeedTest.cpp:
1816         * wtf/CMakeLists.txt:
1817         * wtf/CPUTime.h:
1818         * wtf/CurrentTime.cpp:
1819         (WTF::currentCPUTime): Deleted.
1820         (WTF::sleep): Deleted.
1821         * wtf/CurrentTime.h: Removed.
1822         * wtf/DateMath.cpp:
1823         * wtf/DebugUtilities.h:
1824         * wtf/FastMalloc.cpp:
1825         * wtf/MainThread.cpp:
1826         * wtf/MonotonicTime.cpp:
1827         * wtf/ParkingLot.cpp:
1828         * wtf/Seconds.cpp:
1829         (WTF::sleep):
1830         * wtf/Seconds.h:
1831         * wtf/StackShotProfiler.h:
1832         * wtf/Stopwatch.h:
1833         * wtf/ThreadingPthreads.cpp:
1834         * wtf/ThreadingWin.cpp:
1835         * wtf/cocoa/CPUTimeCocoa.mm:
1836         (WTF::CPUTime::forCurrentThread):
1837         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
1838         * wtf/linux/MemoryPressureHandlerLinux.cpp:
1839         * wtf/unix/CPUTimeUnix.cpp:
1840         (WTF::CPUTime::forCurrentThread):
1841         * wtf/win/CPUTimeWin.cpp:
1842         (WTF::CPUTime::forCurrentThread):
1843         * wtf/win/RunLoopWin.cpp:
1844
1845 2018-03-04  Yusuke Suzuki  <utatane.tea@gmail.com>
1846
1847         [WTF] Use __builtin_xxx_overflow for CheckedArithmetic
1848         https://bugs.webkit.org/show_bug.cgi?id=183319
1849
1850         Reviewed by Darin Adler.
1851
1852         GCC and Clang has the builtins for arithmetic operations with overflow flags.
1853         CheckedArithmetic operations can be done with this builtins. Since the compiler
1854         can use overflow flags, potentially this is more efficient. CheckedArithmetic
1855         already has TestWebKitAPI tests and we ensured the tests pass.
1856
1857         * wtf/CheckedArithmetic.h:
1858
1859 2018-03-02  Yusuke Suzuki  <utatane.tea@gmail.com>
1860
1861         [WTF] Remove RunLoop and RunLoop::Timer's interface using double as seconds
1862         https://bugs.webkit.org/show_bug.cgi?id=183293
1863
1864         Reviewed by Alex Christensen.
1865
1866         This patch mainly drops startRepeating(double) and startOneShot(double) interfaces.
1867         Use startRepeating(Seconds) and startOneShot(Seconds) instead.
1868
1869         * wtf/MemoryPressureHandler.cpp:
1870         (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
1871         * wtf/RunLoop.h:
1872         (WTF::RunLoop::TimerBase::startRepeating):
1873         (WTF::RunLoop::TimerBase::startOneShot):
1874         (WTF::RunLoop::TimerBase::startInternal):
1875         * wtf/RunLoopTimer.h:
1876         * wtf/RunLoopTimerCF.cpp:
1877         (WTF::RunLoopTimerBase::start):
1878         * wtf/cf/RunLoopCF.cpp:
1879         (WTF::RunLoop::runForDuration):
1880         (WTF::RunLoop::TimerBase::start):
1881         * wtf/generic/RunLoopGeneric.cpp:
1882         (WTF::RunLoop::TimerBase::start):
1883         * wtf/glib/RunLoopGLib.cpp:
1884         (WTF::RunLoop::TimerBase::start):
1885         * wtf/win/MemoryPressureHandlerWin.cpp:
1886         (WTF::MemoryPressureHandler::install):
1887         * wtf/win/RunLoopWin.cpp:
1888         (WTF::RunLoop::TimerBase::start):
1889
1890 2018-03-02  Christopher Reid  <chris.reid@sony.com>
1891
1892         Build fix after r229174
1893         https://bugs.webkit.org/show_bug.cgi?id=183301
1894
1895         Reviewed by Alex Christensen.
1896
1897         Updating MemoryPressureHandler::holdOff to use Seconds instead of unsigned.
1898
1899         * wtf/MemoryPressureHandler.cpp:
1900
1901 2018-03-02  Tim Horton  <timothy_horton@apple.com>
1902
1903         Make it possible to build for iOS without Celestial
1904         https://bugs.webkit.org/show_bug.cgi?id=183295
1905         <rdar://problem/38074468>
1906
1907         Reviewed by Dan Bernstein.
1908
1909         * wtf/Platform.h:
1910
1911 2018-03-02  Tim Horton  <timothy_horton@apple.com>
1912
1913         Make it possible to disable WKPDFView
1914         https://bugs.webkit.org/show_bug.cgi?id=183281
1915         <rdar://problem/38060815>
1916
1917         Reviewed by Dan Bates.
1918
1919         * wtf/FeatureDefines.h:
1920
1921 2018-03-02  Yusuke Suzuki  <utatane.tea@gmail.com>
1922
1923         [JSC] Annotate more classes with WTF_MAKE_FAST_ALLOCATED
1924         https://bugs.webkit.org/show_bug.cgi?id=183279
1925
1926         Reviewed by JF Bastien.
1927
1928         * wtf/SimpleStats.h:
1929         * wtf/ThreadGroup.h:
1930
1931 2018-03-01  Yusuke Suzuki  <utatane.tea@gmail.com>
1932
1933         Remove monotonicallyIncreasingTime
1934         https://bugs.webkit.org/show_bug.cgi?id=182911
1935
1936         Reviewed by Michael Catanzaro.
1937
1938         This patch drops monotonicallyIncreasingTime and monotonicallyIncreasingTimeMS.
1939         We have MonotonicTime API instead. This offers strongly typed MonotonicTime,
1940         Seconds etc. This reduces the chance of bugs mixing doubles which represent milliseconds
1941         and seconds.
1942
1943         Large part of this patch is mechanical one: replacing monotonicallyIncreasingTime with
1944         MonotonicTime, using MonotonicTime and Seconds instead of raw doubles.
1945
1946         But this patch actually finds some bugs (but it is a bit difficult to show it as a test).
1947         One is mixing media time (CACurrentMediaTime()) and MonotonicTime. Basically they are
1948         super close because both uses mach_absolute_time(). But they would be slightly different.
1949         So we should not mix them.
1950
1951         The second bug is GraphicsLayer::suspendAnimations(double). While CA ports (Apple, AppleWin,
1952         iOS etc.) use this double as MonotonicTime, GTK and WPE use this double as Seconds (timeOffset).
1953         This patch fixes it and now the signature becomes GraphicsLayer::suspendAnimations(MonotonicTime).
1954
1955         In this patch, we still uses bunch of double for Seconds. But fixing them at this patch increases
1956         the size of this larger and larger. So some of them remains double. This should be fixed in
1957         subsequent patches.
1958
1959         * benchmarks/ConditionSpeedTest.cpp:
1960         * benchmarks/LockSpeedTest.cpp:
1961         * wtf/CurrentTime.cpp:
1962         (WTF::MonotonicTime::now):
1963         (WTF::monotonicallyIncreasingTime): Deleted.
1964         * wtf/CurrentTime.h:
1965         (WTF::monotonicallyIncreasingTimeMS): Deleted.
1966         * wtf/MemoryPressureHandler.h:
1967         * wtf/MonotonicTime.cpp:
1968         (WTF::MonotonicTime::now): Deleted.
1969         * wtf/MonotonicTime.h:
1970         * wtf/ParkingLot.cpp:
1971         * wtf/Seconds.h:
1972         (WTF::Seconds::nan):
1973         * wtf/Stopwatch.h:
1974         (WTF::Stopwatch::reset):
1975         (WTF::Stopwatch::start):
1976         (WTF::Stopwatch::stop):
1977         (WTF::Stopwatch::elapsedTime):
1978         (WTF::Stopwatch::elapsedTimeSince):
1979         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
1980         (WTF::MemoryPressureHandler::holdOff):
1981         (WTF::MemoryPressureHandler::respondToMemoryPressure):
1982         * wtf/linux/MemoryPressureHandlerLinux.cpp:
1983         (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
1984         (WTF::MemoryPressureHandler::holdOff):
1985         (WTF::MemoryPressureHandler::respondToMemoryPressure):
1986         * wtf/win/MemoryPressureHandlerWin.cpp:
1987         (WTF::MemoryPressureHandler::holdOff):
1988
1989 2018-03-02  Dan Bernstein  <mitz@apple.com>
1990
1991         Safari uses WebContent.Development when loading injected bundle embedded in its app bundle
1992         https://bugs.webkit.org/show_bug.cgi?id=183275
1993
1994         Reviewed by Tim Horton.
1995
1996         * wtf/spi/cocoa/SecuritySPI.h: Declared SecTaskGetCodeSignStatus.
1997
1998 2018-02-27  Karlen Simonyan  <szkarlen@gmail.com>
1999
2000         [Win64] JSCOnly compile error using VS2017 and cmake
2001         https://bugs.webkit.org/show_bug.cgi?id=183176
2002
2003         Reviewed by Alex Christensen.
2004
2005         * wtf/PlatformJSCOnly.cmake:
2006
2007 2018-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>
2008
2009         [GStreamer] User current executable name instead of g_get_prgname() for gst_init
2010         https://bugs.webkit.org/show_bug.cgi?id=183119
2011
2012         Reviewed by Philippe Normand.
2013
2014         Add getCurrentExecutableName() helper function to get the name of the current executable.
2015
2016         * wtf/glib/GLibUtilities.cpp:
2017         (getCurrentExecutableName): Get the basename of getCurrentExecutablePath() falling back to g_get_prgname().
2018         * wtf/glib/GLibUtilities.h:
2019
2020 2018-02-23  John Wilander  <wilander@apple.com>
2021
2022         Introduce ITP debug logging as an opt-in developer feature
2023         https://bugs.webkit.org/show_bug.cgi?id=183065
2024         <rdar://problem/37803761>
2025
2026         Reviewed by Brent Fulgham.
2027
2028         * wtf/Assertions.h:
2029             Introduces RELEASE_LOG_INFO() and RELEASE_LOG_INFO_IF().
2030
2031 2018-02-23  Fujii Hironori  <Hironori.Fujii@sony.com>
2032
2033         warning: unused variable 'InitialBufferSize' in Assertions.cpp
2034         https://bugs.webkit.org/show_bug.cgi?id=183076
2035
2036         Reviewed by Yusuke Suzuki.
2037
2038         * wtf/Assertions.cpp: Moved the definition of InitialBufferSize to inside #if.
2039
2040 2018-02-22  Yusuke Suzuki  <utatane.tea@gmail.com>
2041
2042         Remove currentTime() / currentTimeMS()
2043         https://bugs.webkit.org/show_bug.cgi?id=183052
2044
2045         Reviewed by Mark Lam.
2046
2047         This patch removes WTF::currentTime() and WTF::currentTimeMS().
2048         We have fancy WallTime APIs. It has strong types like WallTime and Seconds,
2049         and this reduces the chance of bugs mixing doubles which represent milliseconds
2050         and seconds.
2051
2052         * wtf/Condition.h:
2053         * wtf/CurrentTime.cpp:
2054         (WTF::currentTime):
2055         (WTF::WallTime::now):
2056         * wtf/CurrentTime.h:
2057         (WTF::currentTimeMS): Deleted.
2058         * wtf/DateMath.h:
2059         (WTF::jsCurrentTime):
2060         * wtf/ParkingLot.cpp:
2061         (WTF::ParkingLot::parkConditionallyImpl):
2062         * wtf/ThreadingPrimitives.h:
2063         * wtf/ThreadingPthreads.cpp:
2064         (WTF::ThreadCondition::timedWait):
2065         * wtf/ThreadingWin.cpp:
2066         (WTF::ThreadCondition::timedWait):
2067         (WTF::absoluteTimeToWaitTimeoutInterval):
2068         * wtf/WallTime.cpp:
2069         (WTF::WallTime::now): Deleted.
2070         * wtf/WallTime.h:
2071
2072 2018-02-22  Yusuke Suzuki  <utatane.tea@gmail.com>
2073
2074         Remove sleep(double) and sleepMS(double) interfaces
2075         https://bugs.webkit.org/show_bug.cgi?id=183038
2076
2077         Reviewed by Mark Lam.
2078
2079         This patch removes sleep(double) and sleepMS(double) interfaces.
2080         We can just use sleep(Seconds) instead.
2081
2082         * benchmarks/LockFairnessTest.cpp:
2083         * benchmarks/LockSpeedTest.cpp:
2084         * wtf/CurrentTime.cpp:
2085         (WTF::sleep):
2086         * wtf/CurrentTime.h:
2087         (WTF::sleepMS): Deleted.
2088         * wtf/DebugUtilities.h:
2089         * wtf/Seconds.cpp:
2090         (WTF::sleep): Deleted.
2091         * wtf/Seconds.h:
2092         * wtf/StackShotProfiler.h:
2093
2094 2018-02-21  Don Olmstead  <don.olmstead@sony.com>
2095
2096         [CMake][Win] Use cmakeconfig.h rather than config.h and Platform.h
2097         https://bugs.webkit.org/show_bug.cgi?id=182883
2098
2099         Reviewed by Per Arne Vollan.
2100
2101         * wtf/Platform.h:
2102
2103 2018-02-14  Brian Burg  <bburg@apple.com>
2104
2105         Web Automation: combine session commands to resize and move top-level browsing contexts
2106         https://bugs.webkit.org/show_bug.cgi?id=182749
2107         <rdar://problem/37515170>
2108
2109         Reviewed by Andy Estes.
2110
2111         * wtf/JSONValues.h: add a getDouble() implementation that returns a std::optional<T>
2112         rather than using an out-parameter. I'd like to move more code to this style.
2113
2114 2018-02-20  Tim Horton  <timothy_horton@apple.com>
2115
2116         Introduce HAVE(IOSURFACE_ACCELERATOR)
2117         https://bugs.webkit.org/show_bug.cgi?id=182955
2118         <rdar://problem/37699510>
2119
2120         Reviewed by Sam Weinig.
2121
2122         * wtf/Platform.h:
2123
2124 2018-02-20  Chris Dumez  <cdumez@apple.com>
2125
2126         Provisional load may get committed before receiving the decidePolicyForNavigationResponse response
2127         https://bugs.webkit.org/show_bug.cgi?id=182720
2128         <rdar://problem/37515204>
2129
2130         Reviewed by Alex Christensen.
2131
2132         Add convenience CompletionHandlerCallingScope class which calls its CompletionHandler
2133         when destroyed, and provides a release() methods to manually call the completionHandler.
2134
2135         * wtf/CompletionHandler.h:
2136         (WTF::CompletionHandlerCallingScope::CompletionHandlerCallingScope):
2137         (WTF::CompletionHandlerCallingScope::~CompletionHandlerCallingScope):
2138         (WTF::CompletionHandlerCallingScope::CompletionHandler<void):
2139
2140 2018-02-20  Tim Horton  <timothy_horton@apple.com>
2141
2142         Always inline soft linking functions to work around a clang bug
2143         https://bugs.webkit.org/show_bug.cgi?id=182985
2144         <rdar://problem/37587017>
2145
2146         Reviewed by Dan Bernstein.
2147
2148         * wtf/cocoa/SoftLinking.h:
2149         In some cases, clang will emit a weak extern symbol for a re-declared
2150         symbol that has availability attributes on it. To avoid this, always
2151         inline to avoid emitting a second symbol.
2152
2153 2018-02-16  Dean Jackson  <dino@apple.com>
2154
2155         Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
2156         https://bugs.webkit.org/show_bug.cgi?id=182894
2157
2158         Reviewed by Tim Horton.
2159
2160         If we're on a Cocoa platform, define USE_OPENGL/USE_OPENGL_ES
2161         depending on what we're actually going to use. In this case,
2162         they are exclusive, but it doesn't appear that other platforms
2163         use this approach. Ultimately the idea is to be more concerned
2164         with the type of OpenGL we're using, rather than the platform.
2165
2166         * wtf/Platform.h: Define USE_OPENGL(_ES) for PLATFORM(COCOA).
2167
2168 2018-02-16  Filip Pizlo  <fpizlo@apple.com>
2169
2170         Unreviewed, roll out r228306 (custom memcpy/memset) because the bots say that it was not a
2171         progression.
2172
2173         * WTF.xcodeproj/project.pbxproj:
2174         * wtf/BitVector.cpp:
2175         (WTF::BitVector::setSlow):
2176         (WTF::BitVector::clearAll):
2177         (WTF::BitVector::resizeOutOfLine):
2178         * wtf/BitVector.h:
2179         (WTF::BitVector::OutOfLineBits::numWords const):
2180         (WTF::BitVector::wordCount): Deleted.
2181         * wtf/CMakeLists.txt:
2182         * wtf/ConcurrentBuffer.h:
2183         (WTF::ConcurrentBuffer::growExact):
2184         * wtf/FastBitVector.h:
2185         (WTF::FastBitVectorWordOwner::operator=):
2186         (WTF::FastBitVectorWordOwner::clearAll):
2187         (WTF::FastBitVectorWordOwner::set):
2188         * wtf/FastCopy.h: Removed.
2189         * wtf/FastMalloc.cpp:
2190         (WTF::fastZeroedMalloc):
2191         (WTF::fastStrDup):
2192         (WTF::tryFastZeroedMalloc):
2193         * wtf/FastZeroFill.h: Removed.
2194         * wtf/OSAllocator.h:
2195         (WTF::OSAllocator::reallocateCommitted):
2196         * wtf/StringPrintStream.cpp:
2197         (WTF::StringPrintStream::increaseSize):
2198         * wtf/Vector.h:
2199         * wtf/persistence/PersistentDecoder.cpp:
2200         (WTF::Persistence::Decoder::decodeFixedLengthData):
2201         * wtf/persistence/PersistentEncoder.cpp:
2202         (WTF::Persistence::Encoder::encodeFixedLengthData):
2203         * wtf/text/CString.cpp:
2204         (WTF::CString::init):
2205         (WTF::CString::copyBufferIfNeeded):
2206         * wtf/text/LineBreakIteratorPoolICU.h:
2207         (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
2208         * wtf/text/StringBuilder.cpp:
2209         (WTF::StringBuilder::allocateBuffer):
2210         (WTF::StringBuilder::append):
2211         * wtf/text/StringConcatenate.h:
2212         * wtf/text/StringImpl.h:
2213         (WTF::StringImpl::copyCharacters):
2214         * wtf/text/icu/UTextProvider.cpp:
2215         (WTF::uTextCloneImpl):
2216         * wtf/text/icu/UTextProviderLatin1.cpp:
2217         (WTF::uTextLatin1Clone):
2218         (WTF::openLatin1UTextProvider):
2219         * wtf/threads/Signals.cpp:
2220
2221 2018-02-16  Keith Miller  <keith_miller@apple.com>
2222
2223         Remove unused line from Platform.h
2224         https://bugs.webkit.org/show_bug.cgi?id=182871
2225
2226         Reviewed by Mark Lam.
2227
2228         * wtf/Platform.h:
2229
2230 2018-02-14  Michael Saboff  <msaboff@apple.com>
2231
2232         REGRESSION(225695) : com.apple.WebKit.WebContent at com.apple.JavaScriptCore: JSC::RegExp::match + 630 :: stack overflow
2233         https://bugs.webkit.org/show_bug.cgi?id=182705
2234
2235         Reviewed by Mark Lam.
2236
2237         Moved the setting of ENABLE_YARR_JIT_ALL_PARENS_EXPRESSIONS to Platform.h since more than just the YARR
2238         code needs to know if that feature is enabled.
2239
2240         * wtf/Platform.h:
2241
2242 2018-02-12  Mark Lam  <mark.lam@apple.com>
2243
2244         Add more support for pointer preparations.
2245         https://bugs.webkit.org/show_bug.cgi?id=182703
2246         <rdar://problem/37469451>
2247
2248         Reviewed by Saam Barati.
2249
2250         * wtf/PointerPreparations.h:
2251
2252 2018-02-09  Ross Kirsling  <ross.kirsling@sony.com>
2253
2254         Use REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port.
2255         https://bugs.webkit.org/show_bug.cgi?id=182623
2256
2257         Reviewed by Alex Christensen.
2258
2259         * wtf/Platform.h:
2260         Simplify #if.
2261
2262 2018-02-08  Filip Pizlo  <fpizlo@apple.com>
2263
2264         Experiment with alternative implementation of memcpy/memset
2265         https://bugs.webkit.org/show_bug.cgi?id=182563
2266
2267         Reviewed by Michael Saboff and Mark Lam.
2268         
2269         Adds a faster x86_64-specific implementation of memcpy and memset. These versions go by
2270         different names than memcpy/memset and have a different API:
2271         
2272         WTF::fastCopy<T>(T* dst, T* src, size_t N): copies N values of type T from src to dst.
2273         WTF::fastZeroFill(T* dst, size_T N): writes N * sizeof(T) zeroes to dst.
2274         
2275         There are also *Bytes variants that take void* for dst and src and size_t numBytes. Those are
2276         most appropriate in places where the code is already computing bytes.
2277         
2278         These will just call memcpy/memset on platforms where the optimized versions are not supported.
2279         
2280         These new functions are not known to the compiler to be memcpy/memset. This has the effect that
2281         the compiler will not try to replace them with anything else. This could be good or bad:
2282         
2283         - It's *good* if the size is *not known* at compile time. In that case, by my benchmarks, these
2284           versions are faster than either the memcpy/memset call or whatever else the compiler could
2285           emit. This is because of a combination of inlining and the algorithm itself (see below).
2286         
2287         - It's *bad* if the size is *known* at compile time. In that case, the compiler could
2288           potentially emit a fully unrolled memcpy/memset. That might not happen if the size is large
2289           (even if it's known), but in this patch I avoid replacing any memcpy/memset calls when the
2290           size is a constant. In particular, this totally avoids the call overhead -- if the size is
2291           small, then the compiler will emit a nice inlined copy or set. If the size is large, then the
2292           most optimal thing to do is emit the shortest piece of code possible, and that's a call to
2293           memcpy/memset.
2294         
2295         It's unfortunate that you have to choose between them on your own. One way to avoid that might
2296         have been to override the memcpy/memset symbols, so that the compiler can still do its
2297         reasoning. But that's not quite right, since then we would lose inlining in the unknonw-size
2298         case. Also, it's possible that for some unknown-size cases, the compiler could choose to emit
2299         something on its own because it might think that some property of aliasing or alignment could
2300         help it. I think it's a bit better to use our own copy/set implementations even in those cases.
2301         Another way that I tried avoiding this is to detect inside fastCopy/fastZeroFill if the size is
2302         constant. But there is no good way to do that in C++. There is a builtin for doing that inside a
2303         macro, but that feels janky, so I didn't want to do it in this patch.
2304         
2305         The reason why these new fastCopy/fastZeroFill functions are faster is that:
2306         
2307         - They can be inlined. There is no function call. Only a few registers get clobbered. So, the
2308           impact on the quality of the code surrounding the memcpy/memset is smaller.
2309         
2310         - They use type information to select the implementation. For sizes that are multiples of 2, 4,
2311           or 8, the resulting code performs dramatically better on small arrays than memcpy because it
2312           uses fewer cycles. The difference is greatest for 2 and 4 byte types, since memcpy usually
2313           handles small arrays by tiering from a 8-byte word copy loop to a byte copy loop. So, for 2
2314           or 4 byte arrays, we use an algorithm that tiers from 8-byte word down to a 2-byte or 4-byte
2315           (depending on type) copy loop. So, for example, when copying a 16-bit string that has 1, 2, or
2316           3 characters, this means doing 1, 2, or 3 word copies rather than 2, 4, or 6 byte copies. For
2317           8-byte types, the resulting savings are mainly that there is no check to see if a tier-down to
2318           the byte-copy loop is needed -- so really that means reducing code size. 1-byte types don't
2319           get this inherent advantage over memcpy/memset, but they still benefit from all of the other
2320           advantages of these functions. Of course, this advantage isn't inherent to our approach. The
2321           compiler could also notice that the arguments to memcpy/memset have some alignment properties.
2322           It could do it even more generally than we do - for example a copy over bytes where the size
2323           is a multiple of 4 can use the 4-byte word algorithm. But based on my tests, the compiler does
2324           not do this (even though it does other things, like turn a memset call with a zero value
2325           argument into a bzero call).
2326         
2327         - They use a very nicely written word copy/set loop for small arrays. I spent a lot of time
2328           getting the assembly just right. When we use memcpy/memset, sometimes we would optimize the
2329           call by having a fast path word copy loop for small sizes. That's not necessary with this
2330           implementation, since the assembly copy loop gets inlined.
2331         
2332         - They use `rep movs` or `rep stos` for copies of 200 bytes or more. This decision benchmarks
2333           poorly on every synthetic memcpy/memset benchmark I have built, and so unsurprisingly, it's
2334           not what system memcpy/memset does. Most system memcpy/memset implementations end up doing
2335           some SSE for medium-sized copies,. However, I previously found that this decision is bad for
2336           one of the memset calls in GC (see clearArray() and friends in ArrayConventions.h|cpp) - I was
2337           able to make the overhead of that call virtually disappear by doing `rep stos` more
2338           aggressively. The theory behind this change is that it's not just the GC that prefers smaller
2339           `rep` threshold and no SSE. I am betting that `rep`ing more is better when the heap gets
2340           chaotic and the data being copied is used in interesting ways -- hence, synthetic
2341           memcpy/memset benchmarks think it's bad (they don't do enough chaotic memory accesses) while
2342           it's good for real-world uses. Also, when I previously worked on JVMs, I had found that the
2343           best memcpy/memset heuristics when dealing with GC'd objects in a crazy heap were different
2344           than any memcpy/memset in any system library.
2345         
2346         This appears to be a 0.9% speed-up on PLT. I'm not sure if it's more because of the inlining or
2347         the `rep`. I think it's both. I'll leave figuring out the exact tuning for future patches.
2348
2349         * wtf/BitVector.cpp:
2350         (WTF::BitVector::setSlow):
2351         (WTF::BitVector::clearAll):
2352         (WTF::BitVector::resizeOutOfLine):
2353         * wtf/BitVector.h:
2354         (WTF::BitVector::wordCount):
2355         (WTF::BitVector::OutOfLineBits::numWords const):
2356         * wtf/ConcurrentBuffer.h:
2357         (WTF::ConcurrentBuffer::growExact):
2358         * wtf/FastBitVector.h:
2359         (WTF::FastBitVectorWordOwner::operator=):
2360         (WTF::FastBitVectorWordOwner::clearAll):
2361         (WTF::FastBitVectorWordOwner::set):
2362         * wtf/FastCopy.h: Added.
2363         (WTF::fastCopy):
2364         (WTF::fastCopyBytes):
2365         * wtf/FastMalloc.cpp:
2366         (WTF::fastZeroedMalloc):
2367         (WTF::fastStrDup):
2368         (WTF::tryFastZeroedMalloc):
2369         * wtf/FastZeroFill.h: Added.
2370         (WTF::fastZeroFill):
2371         (WTF::fastZeroFillBytes):
2372         * wtf/MD5.cpp:
2373         * wtf/OSAllocator.h:
2374         (WTF::OSAllocator::reallocateCommitted):
2375         * wtf/StringPrintStream.cpp:
2376         (WTF::StringPrintStream::increaseSize):
2377         * wtf/Vector.h:
2378         * wtf/persistence/PersistentDecoder.cpp:
2379         (WTF::Persistence::Decoder::decodeFixedLengthData):
2380         * wtf/persistence/PersistentEncoder.cpp:
2381         (WTF::Persistence::Encoder::encodeFixedLengthData):
2382         * wtf/text/CString.cpp:
2383         (WTF::CString::init):
2384         (WTF::CString::copyBufferIfNeeded):
2385         * wtf/text/LineBreakIteratorPoolICU.h:
2386         (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
2387         * wtf/text/StringBuilder.cpp:
2388         (WTF::StringBuilder::allocateBuffer):
2389         (WTF::StringBuilder::append):
2390         * wtf/text/StringConcatenate.h:
2391         * wtf/text/StringImpl.h:
2392         (WTF::StringImpl::copyCharacters):
2393         * wtf/text/icu/UTextProvider.cpp:
2394         (WTF::uTextCloneImpl):
2395         * wtf/text/icu/UTextProviderLatin1.cpp:
2396         (WTF::uTextLatin1Clone):
2397         (WTF::openLatin1UTextProvider):
2398         * wtf/threads/Signals.cpp:
2399
2400 2018-02-06  Darin Adler  <darin@apple.com>
2401
2402         Event improvements
2403         https://bugs.webkit.org/show_bug.cgi?id=179591
2404
2405         Reviewed by Chris Dumez.
2406
2407         * wtf/text/OrdinalNumber.h: Added som missing const.
2408         * wtf/text/TextPosition.h: Ditto.
2409
2410 2018-02-06  Fujii Hironori  <Hironori.Fujii@sony.com>
2411
2412         [GTK] fast/events/message-channel-gc-4.html is flaky
2413         https://bugs.webkit.org/show_bug.cgi?id=182104
2414
2415         Reviewed by Carlos Garcia Campos.
2416
2417         Revert r228001 because RunLoop::current isn't called in GC thread
2418         anymore since r228152.
2419
2420         * wtf/RunLoop.cpp:
2421         (WTF::RunLoop::current): Removed a template argument
2422         CanBeGCThread::True of ThreadSpecific.
2423
2424 2018-02-05  Konstantin Tokarev  <annulen@yandex.ru>
2425
2426         [cmake] Fix build with ICU configured without collation support
2427         https://bugs.webkit.org/show_bug.cgi?id=182498
2428
2429         Reviewed by Alex Christensen.
2430
2431         WebKit has CollatorDefault.cpp providing necessary stubs when
2432         UCONFIG_NO_COLLATION is defined, however it is not included in cmake
2433         file list.
2434
2435         * wtf/CMakeLists.txt:
2436
2437 2018-02-05  Alicia Boya GarcĂ­a  <aboya@igalia.com>
2438
2439         Fix bug in MediaTime comparison for negative values with different scale.
2440         https://bugs.webkit.org/show_bug.cgi?id=182433
2441
2442         Reviewed by Xabier Rodriguez-Calvar.
2443
2444         * wtf/MediaTime.cpp:
2445         (WTF::MediaTime::compare const):
2446
2447 2018-02-02  Mark Lam  <mark.lam@apple.com>
2448
2449         More ARM64_32 fixes.
2450         https://bugs.webkit.org/show_bug.cgi?id=182441
2451         <rdar://problem/37162310>
2452
2453         Reviewed by Dan Bernstein.
2454
2455         My previous speculative ARM64_32 build fix in copyLCharsFromUCharSource() was wrong.
2456         I've now fixed it to choose the default implementation case instead of the ARM64
2457         case if the target is ARM64_32.
2458
2459         * wtf/text/ASCIIFastPath.h:
2460         (WTF::copyLCharsFromUCharSource):
2461
2462 2018-02-02  Konstantin Tokarev  <annulen@yandex.ru>
2463
2464         Unreviewed build fix for JSCOnly on macOS after r227845.
2465         https://bugs.webkit.org/show_bug.cgi?id=182274
2466
2467         Reverted part of r227845 that moved CommonCryptoSPI.h
2468         handling into PlatformMac, because it is needed for all
2469         ports which can be built on macOS.
2470
2471         * wtf/CMakeLists.txt:
2472         * wtf/PlatformMac.cmake:
2473
2474 2018-02-02  Fujii Hironori  <Hironori.Fujii@sony.com>
2475
2476         [GTK] fast/events/message-channel-gc-4.html is flaky
2477         https://bugs.webkit.org/show_bug.cgi?id=182104
2478
2479         Reviewed by Carlos Garcia Campos.
2480
2481         RELEASE_ASSERT of ThreadSpecific::set fails because
2482         RunLoop::current is called even in GC thread since r227275.
2483
2484         * wtf/RunLoop.cpp:
2485         (WTF::RunLoop::current):
2486         Let the second template argument of ThreadSpecific CanBeGCThread::True.
2487
2488 2018-02-01  Michael Catanzaro  <mcatanzaro@igalia.com>
2489
2490         [WPE][GTK] Make RunLoop::TimerBase robust to its own deletion inside its source callback
2491         https://bugs.webkit.org/show_bug.cgi?id=182271
2492
2493         Reviewed by Carlos Garcia Campos.
2494
2495         RunLoopTimer::fired executes the user's callback, which could delete the RunLoopTimer
2496         itself. But the source callback is not prepared to handle this case. We can detect it
2497         easily, because TimerBase's destructor will call g_source_destroy(), which confusingly
2498         removes the GSource from its GMainContext without actually destroying the GSource. Then we
2499         can check if the GSource is still attached using g_source_is_destroyed().
2500
2501         * wtf/glib/RunLoopGLib.cpp:
2502         (WTF::RunLoop::TimerBase::TimerBase):
2503
2504 2018-01-31  Saam Barati  <sbarati@apple.com>
2505
2506         Replace tryLargeMemalignVirtual with tryLargeZeroedMemalignVirtual and use it to allocate large zeroed memory in Wasm
2507         https://bugs.webkit.org/show_bug.cgi?id=182064
2508         <rdar://problem/36840132>
2509
2510         Reviewed by Geoffrey Garen.
2511
2512         * wtf/Gigacage.cpp:
2513         (Gigacage::tryAllocateZeroedVirtualPages):
2514         (Gigacage::freeVirtualPages):
2515         (Gigacage::tryAllocateVirtualPages): Deleted.
2516         * wtf/Gigacage.h:
2517         * wtf/OSAllocator.h:
2518
2519 2018-01-31  Mark Lam  <mark.lam@apple.com>
2520
2521         Fix some ARM64_32 build failures.
2522         https://bugs.webkit.org/show_bug.cgi?id=182356
2523         <rdar://problem/37057690>
2524
2525         Reviewed by Michael Saboff.
2526
2527         * wtf/MathExtras.h:
2528         (WTF::dynamicPoison):
2529         * wtf/text/ASCIIFastPath.h:
2530         (WTF::copyLCharsFromUCharSource):
2531
2532 2018-01-30  Mark Lam  <mark.lam@apple.com>
2533
2534         Apply poisoning to TypedArray vector pointers.
2535         https://bugs.webkit.org/show_bug.cgi?id=182155
2536         <rdar://problem/36286266>
2537
2538         Reviewed by JF Bastien.
2539
2540         1. Added the ability to poison a CagedPtr.
2541
2542         2. Prevent CagedPtr from being implicitly instantiated, and add operator= methods
2543            instead.  This is because implicitly instantiated CagedPtrs with a poisoned
2544            trait may silently use a wrong poison value.
2545
2546         * wtf/CagedPtr.h:
2547         (WTF::CagedPtr::CagedPtr):
2548         (WTF::CagedPtr::get const):
2549         (WTF::CagedPtr::operator=):
2550
2551 2018-01-30  Fujii Hironori  <Hironori.Fujii@sony.com>
2552
2553         [Win] Warning fix.
2554         https://bugs.webkit.org/show_bug.cgi?id=177007
2555
2556         Reviewed by Yusuke Suzuki.
2557
2558         A 32 bit integer should not be casted to a pointer directly in 64
2559         bit Windows. It should be casted to a uintptr_t beforehand.
2560
2561         Rules for Using Pointers (Windows)
2562         https://msdn.microsoft.com/library/windows/desktop/aa384242
2563
2564         * wtf/ThreadingWin.cpp (InvalidThread): Casted 0xbbadbeef to uintptr_t.
2565
2566 2018-01-30  Don Olmstead  <don.olmstead@sony.com>
2567
2568         Unreviewed build fix for JSCOnly after r227845.
2569         https://bugs.webkit.org/show_bug.cgi?id=182274
2570
2571         * wtf/PlatformJSCOnly.cmake:
2572
2573 2018-01-30  Don Olmstead  <don.olmstead@sony.com>
2574
2575         [CMake] Make WTF headers copies
2576         https://bugs.webkit.org/show_bug.cgi?id=182274
2577
2578         Reviewed by Alex Christensen.
2579
2580         * wtf/CMakeLists.txt:
2581         * wtf/PlatformGTK.cmake:
2582         * wtf/PlatformJSCOnly.cmake:
2583         * wtf/PlatformMac.cmake:
2584         * wtf/PlatformWPE.cmake:
2585         * wtf/PlatformWin.cmake:
2586
2587 2018-01-30  Mark Lam  <mark.lam@apple.com>
2588
2589         Move ENABLE_POISON to Platform.h.
2590         https://bugs.webkit.org/show_bug.cgi?id=182298
2591         <rdar://problem/37032686>
2592
2593         Reviewed by Michael Saboff and JF Bastien.
2594
2595         ENABLE_POISON belongs in Platform.h to ensure that all places that depend on
2596         ENABLE(POISON) will see it properly defined.
2597
2598         * wtf/Platform.h:
2599         * wtf/Poisoned.h:
2600
2601 2018-01-26  Mark Lam  <mark.lam@apple.com>
2602
2603         Add infrastructure for pointer preparation.
2604         https://bugs.webkit.org/show_bug.cgi?id=182191
2605         <rdar://problem/36889194>
2606
2607         Reviewed by JF Bastien.
2608
2609         * WTF.xcodeproj/project.pbxproj:
2610         * wtf/CMakeLists.txt:
2611         * wtf/PointerPreparations.h: Added.
2612
2613 2018-01-26  Chris Nardi  <cnardi@chromium.org>
2614
2615         Addressing post-review comments after r226614
2616         https://bugs.webkit.org/show_bug.cgi?id=182151
2617
2618         Reviewed by Myles C. Maxfield.
2619
2620         * wtf/text/StringImpl.h:
2621         (WTF::isSpaceOrNewline):
2622         * wtf/text/TextBreakIterator.cpp:
2623         (WTF::numCodeUnitsInGraphemeClusters):
2624         * wtf/text/TextBreakIterator.h:
2625
2626 2018-01-26  Filip Pizlo  <fpizlo@apple.com>
2627
2628         Fix style - need to use C comments.
2629
2630         * wtf/Platform.h:
2631
2632 2018-01-26  Filip Pizlo  <fpizlo@apple.com>
2633
2634         Disable TLS-based TLCs
2635         https://bugs.webkit.org/show_bug.cgi?id=182175
2636
2637         Reviewed by Saam Barati.
2638
2639         Add a flag for TLS-based TLCs and set it to 0. We can re-enable this feature when we need to use TLCs for
2640         actual thread-local allocation and when we fix the fact that WebCore context switches JSC VMs without telling
2641         us.
2642
2643         * wtf/Platform.h:
2644
2645 2018-01-25  Filip Pizlo  <fpizlo@apple.com>
2646
2647         Unreviewed, fix windows build.
2648
2649         * wtf/MathExtras.h:
2650         (WTF::opaque):
2651
2652 2018-01-24  Filip Pizlo  <fpizlo@apple.com>
2653
2654         DirectArguments should protect itself using dynamic poisoning and precise index masking
2655         https://bugs.webkit.org/show_bug.cgi?id=182086
2656
2657         Reviewed by Saam Barati.
2658         
2659         Add helpers for:
2660         
2661         Dynamic poisoning: this means arranging to have the pointer you will dereference become an
2662         invalid pointer if the type check you were relying on would have failed.
2663         
2664         Precise index masking: a variant of index masking that does not depend on distancing. I figured
2665         I'd just try this first for DirectArguments, since I didn't think that arguments[i] was ever
2666         hot enough to warrant anything better. Turns out that in all of the benchmarks that care about
2667         arguments performance, we optimize things to the point that the index masking isn't on a hot
2668         path anymore. Turns out, it's neutral!
2669
2670         * wtf/MathExtras.h:
2671         (WTF::preciseIndexMask):
2672         (WTF::dynamicPoison):
2673
2674 2018-01-25  Jer Noble  <jer.noble@apple.com>
2675
2676         Unreviewed build fix after r227631; make USE_VIDEOTOOLBOX universally enabled on iOS.
2677
2678         * wtf/Platform.h:
2679
2680 2018-01-25  Jer Noble  <jer.noble@apple.com>
2681
2682         Move ImageDecoderAVFObjC from using AVSampleBufferGenerator to AVAssetReaderOutput for parsing
2683         https://bugs.webkit.org/show_bug.cgi?id=182091
2684
2685         Reviewed by Eric Carlson.
2686
2687         * wtf/Platform.h:
2688
2689 2018-01-25  Mark Lam  <mark.lam@apple.com>
2690
2691         Rename the Poisoned::isPoisoned constant to Poisoned::isPoisonedType.
2692         https://bugs.webkit.org/show_bug.cgi?id=182143
2693         <rdar://problem/36880970>
2694
2695         Reviewed by JF Bastien.
2696
2697         This is so that it doesn't conflict with the isPoisoned() debugging methods that
2698         are normally not built.  Also renamed PoisonedUniquePtr::isPoisonedUniquePtr to
2699         PoisonedUniquePtr::isPoisonedUniquePtrType to be consistent.
2700
2701         * wtf/Poisoned.h:
2702         * wtf/PoisonedUniquePtr.h:
2703
2704 2018-01-25  Filip Pizlo  <fpizlo@apple.com>
2705
2706         JSC GC should support TLCs (thread local caches)
2707         https://bugs.webkit.org/show_bug.cgi?id=181559
2708
2709         Reviewed by Mark Lam and Saam Barati.
2710
2711         * wtf/Bitmap.h: Just fixing a compile error.
2712
2713 2018-01-25  Commit Queue  <commit-queue@webkit.org>
2714
2715         Unreviewed, rolling out r227592.
2716         https://bugs.webkit.org/show_bug.cgi?id=182110
2717
2718         it made ARM64 (Linux and iOS) crash (Requested by pizlo-mbp on
2719         #webkit).
2720
2721         Reverted changeset:
2722
2723         "JSC GC should support TLCs (thread local caches)"
2724         https://bugs.webkit.org/show_bug.cgi?id=181559
2725         https://trac.webkit.org/changeset/227592
2726
2727 2018-01-20  Filip Pizlo  <fpizlo@apple.com>
2728
2729         JSC GC should support TLCs (thread local caches)
2730         https://bugs.webkit.org/show_bug.cgi?id=181559
2731
2732         Reviewed by Mark Lam and Saam Barati.
2733
2734         * wtf/Bitmap.h: Just fixing a compile error.
2735
2736 2018-01-23  Mark Lam  <mark.lam@apple.com>
2737
2738         Update Poisoned pointers to take a Poison class instead of a uintptr_t&.
2739         https://bugs.webkit.org/show_bug.cgi?id=182017
2740         <rdar://problem/36795513>
2741
2742         Reviewed by Filip Pizlo and JF Bastien.
2743
2744         This paves the way for custom poison values which we'll need for use in
2745         TypedArrays later.
2746
2747         * wtf/Bag.h:
2748         * wtf/DumbPtrTraits.h:
2749         (WTF::DumbPtrTraits::poison): Deleted.
2750         * wtf/DumbValueTraits.h:
2751         (WTF::DumbValueTraits::poison): Deleted.
2752         * wtf/Poisoned.h:
2753         (WTF::Poison::key):
2754         (WTF::Poisoned::swap):
2755         (WTF::Poisoned::poison const):
2756         (WTF::Poisoned::unpoison const):
2757         (WTF::Poisoned::poison):
2758         (WTF::Poisoned::unpoison):
2759         (WTF::PoisonedPtrTraits::swap):
2760         (WTF::PoisonedValueTraits::swap):
2761         (WTF::PoisonedPtrTraits::poison): Deleted.
2762         (WTF::PoisonedValueTraits::poison): Deleted.
2763         * wtf/PoisonedUniquePtr.h:
2764         * wtf/Ref.h:
2765         * wtf/RefCountedArray.h:
2766         * wtf/RefPtr.h:
2767         * wtf/WTFAssertions.cpp:
2768
2769 2018-01-23  Alex Christensen  <achristensen@webkit.org>
2770
2771         Remove pre-Sierra-OS-specific code in WTF and JavaScriptCore
2772         https://bugs.webkit.org/show_bug.cgi?id=182028
2773
2774         Reviewed by Keith Miller.
2775
2776         * wtf/Platform.h:
2777         * wtf/mac/AppKitCompatibilityDeclarations.h:
2778         * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
2779         (WTF::MainThreadFunctionTracker::singleton): Deleted.
2780         (WTF::MainThreadFunctionTracker::callOnMainThread): Deleted.
2781         (WTF::MainThreadFunctionTracker::cancelCallOnMainThread): Deleted.
2782         (WTF::MainThreadFunctionTracker::addFunction): Deleted.
2783         (WTF::MainThreadFunctionTracker::removeIdentifier): Deleted.
2784         (WTF::MainThreadFunctionTracker::removeFunctions): Deleted.
2785         (WTF::callOnMainThread): Deleted.
2786         (WTF::cancelCallOnMainThread): Deleted.
2787         * wtf/spi/cocoa/SecuritySPI.h:
2788         * wtf/spi/darwin/dyldSPI.h:
2789         * wtf/text/icu/TextBreakIteratorICU.h:
2790         (WTF::TextBreakIteratorICU::TextBreakIteratorICU):
2791         (WTF::caretRules): Deleted.
2792
2793 2018-01-23  Filip Pizlo  <fpizlo@apple.com>
2794
2795         JSC should use a speculation fence on VM entry/exit
2796         https://bugs.webkit.org/show_bug.cgi?id=181991
2797
2798         Reviewed by JF Bastien and Mark Lam.
2799         
2800         Implement speculationFence as lfence on x86 and isb on ARM64. I'm not sure if isb is
2801         appropriate for all ARM64's.
2802
2803         * wtf/Atomics.h:
2804         (WTF::speculationFence):
2805         (WTF::x86_lfence):
2806
2807 2018-01-22  Alex Christensen  <achristensen@webkit.org>
2808
2809         Begin removing QTKit code
2810         https://bugs.webkit.org/show_bug.cgi?id=181951
2811
2812         Reviewed by Jer Noble.
2813
2814         * wtf/Platform.h:
2815
2816 2018-01-21  Wenson Hsieh  <wenson_hsieh@apple.com>
2817
2818         Add a new feature flag for EXTRA_ZOOM_MODE and reintroduce AdditionalFeatureDefines.h
2819         https://bugs.webkit.org/show_bug.cgi?id=181918
2820
2821         Reviewed by Tim Horton.
2822
2823         Include AdditionalFeatureDefines.h, if possible. This allows WebKitAdditions to override
2824         the value of certain feature flags in the OpenSource WebKit repository.
2825
2826         * wtf/Platform.h:
2827
2828 2018-01-19  Alex Christensen  <achristensen@webkit.org>
2829
2830         Fix jsc-only build
2831         https://bugs.webkit.org/show_bug.cgi?id=181874
2832
2833         Reviewed by JF Bastien.
2834
2835         This makes "build-webkit --jsc-only" work on Mac!
2836
2837         * wtf/PlatformJSCOnly.cmake:
2838
2839 2018-01-19  Keith Miller  <keith_miller@apple.com>
2840
2841         HaveInternalSDK includes should be "#include?"
2842         https://bugs.webkit.org/show_bug.cgi?id=179670
2843
2844         Reviewed by Dan Bernstein.
2845
2846         * Configurations/Base.xcconfig:
2847
2848 2018-01-19  Alexey Proskuryakov  <ap@apple.com>
2849
2850         Update XPCSPI.h
2851         https://bugs.webkit.org/show_bug.cgi?id=181827
2852         rdar://problem/36393031
2853
2854         Reviewed by Daniel Bates.
2855
2856         * wtf/spi/darwin/XPCSPI.h:
2857
2858 2018-01-18  Chris Dumez  <cdumez@apple.com>
2859
2860         We should be able to terminate service workers that are unresponsive
2861         https://bugs.webkit.org/show_bug.cgi?id=181563
2862         <rdar://problem/35280031>
2863
2864         Reviewed by Alex Christensen.
2865
2866         * wtf/ObjectIdentifier.h:
2867         (WTF::ObjectIdentifier::loggingString const):
2868         Allow using loggingString() from RELEASE_LOG().
2869
2870 2018-01-18  Dan Bernstein  <mitz@apple.com>
2871
2872         [Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
2873         https://bugs.webkit.org/show_bug.cgi?id=181803
2874
2875         Reviewed by Tim Horton.
2876
2877         * Configurations/Base.xcconfig: Updated.
2878         * Configurations/DebugRelease.xcconfig: Updated.
2879
2880 2018-01-17  Daniel Bates  <dabates@apple.com>
2881
2882         REGRESSION (r222795): Cardiogram never signs in
2883         https://bugs.webkit.org/show_bug.cgi?id=181693
2884         <rdar://problem/36286293>
2885
2886         Reviewed by Ryosuke Niwa.
2887
2888         Add macro define for future iOS.
2889
2890         * wtf/spi/darwin/dyldSPI.h:
2891
2892 2018-01-17  Per Arne Vollan  <pvollan@apple.com>
2893
2894         [Win] Compile error: 'wtf/text/icu/TextBreakIteratorICU.h' not found.
2895         https://bugs.webkit.org/show_bug.cgi?id=181744
2896         <rdar://problem/36582562>
2897
2898         Reviewed by Alex Christensen.
2899
2900         Add WTF folders to forwarding headers directories.
2901
2902         * wtf/PlatformWin.cmake:
2903
2904 2018-01-16  Per Arne Vollan  <pvollan@apple.com>
2905
2906         [Win] JSC compile error in runtime/DateConversion.cpp.
2907         https://bugs.webkit.org/show_bug.cgi?id=181690
2908         <rdar://problem/36480409>
2909  
2910         Reviewed by Brent Fulgham.
2911
2912         Add 'text/win' folder to list of forwarding headers directories.
2913  
2914         * wtf/PlatformWin.cmake:
2915
2916 2018-01-15  Michael Catanzaro  <mcatanzaro@igalia.com>
2917
2918         Improve use of ExportMacros
2919         https://bugs.webkit.org/show_bug.cgi?id=181652
2920
2921         Reviewed by Konstantin Tokarev.
2922
2923         * wtf/ExportMacros.h: Simplify the #defines in this file.
2924         * wtf/Platform.h: Remove unneeded define. Remove comment that expects all ports to
2925           eventually enable the export macros. WPE will never want these. We don't currently want
2926           them for GTK either, though how we link GTK has been in flux recently.
2927
2928 2018-01-15  JF Bastien  <jfbastien@apple.com>
2929
2930         Remove makePoisonedUnique
2931         https://bugs.webkit.org/show_bug.cgi?id=181630
2932         <rdar://problem/36498623>
2933
2934         Reviewed by Mark Lam.
2935
2936         I added a conversion from std::unique_ptr, so we can just use
2937         std::make_unique and it'll auto-poison when converted.
2938
2939         * wtf/PoisonedUniquePtr.h:
2940         (WTF::makePoisonedUnique): Deleted.
2941
2942 2018-01-13  Mark Lam  <mark.lam@apple.com>
2943
2944         Replace all use of ConstExprPoisoned with Poisoned.
2945         https://bugs.webkit.org/show_bug.cgi?id=181542
2946         <rdar://problem/36442138>
2947
2948         Reviewed by JF Bastien.
2949
2950         1. Removed ConstExprPoisoned and its artifacts.
2951
2952         2. Consolidated Poisoned into PoisonedImpl.  PoisonedImpl is not more.
2953
2954         3. Changed all clients of ConstExprPoisoned to use Poisoned instead.
2955
2956         4. Worked around the GCC and Clang compiler bug that confuses an intptr_t&
2957            template arg with intptr_t.
2958            See use of std::enable_if_t<Other::isPoisoned> in Poisoned.h.
2959
2960         5. Removed ENABLE(MIXED_POISON) since we now have a workaround (3) that makes it
2961            possible to use the mixed poison code.
2962
2963         6. Also fixed broken implementation of comparison operators in Poisoned.
2964
2965         * wtf/Bag.h:
2966         * wtf/DumbPtrTraits.h:
2967         (WTF::DumbPtrTraits::poison):
2968         * wtf/DumbValueTraits.h:
2969         (WTF::DumbValueTraits::poison):
2970         * wtf/Poisoned.h:
2971         (WTF::Poisoned::Poisoned):
2972         (WTF::Poisoned::operator== const):
2973         (WTF::Poisoned::operator!= const):
2974         (WTF::Poisoned::operator< const):
2975         (WTF::Poisoned::operator<= const):
2976         (WTF::Poisoned::operator> const):
2977         (WTF::Poisoned::operator>= const):
2978         (WTF::Poisoned::operator=):
2979         (WTF::Poisoned::swap):
2980         (WTF::swap):
2981         (WTF::PoisonedPtrTraits::poison):
2982         (WTF::PoisonedPtrTraits::swap):
2983         (WTF::PoisonedValueTraits::poison):
2984         (WTF::PoisonedValueTraits::swap):
2985         (WTF::PoisonedImpl::PoisonedImpl): Deleted.
2986         (WTF::PoisonedImpl::assertIsPoisoned const): Deleted.
2987         (WTF::PoisonedImpl::assertIsNotPoisoned const): Deleted.
2988         (WTF::PoisonedImpl::unpoisoned const): Deleted.
2989         (WTF::PoisonedImpl::clear): Deleted.
2990         (WTF::PoisonedImpl::operator* const): Deleted.
2991         (WTF::PoisonedImpl::operator-> const): Deleted.
2992         (WTF::PoisonedImpl::bits const): Deleted.
2993         (WTF::PoisonedImpl::operator! const): Deleted.
2994         (WTF::PoisonedImpl::operator bool const): Deleted.
2995         (WTF::PoisonedImpl::operator== const): Deleted.
2996         (WTF::PoisonedImpl::operator!= const): Deleted.
2997         (WTF::PoisonedImpl::operator< const): Deleted.
2998         (WTF::PoisonedImpl::operator<= const): Deleted.
2999         (WTF::PoisonedImpl::operator> const): Deleted.
3000         (WTF::PoisonedImpl::operator>= const): Deleted.
3001         (WTF::PoisonedImpl::operator=): Deleted.
3002         (WTF::PoisonedImpl::swap): Deleted.
3003         (WTF::PoisonedImpl::exchange): Deleted.
3004         (WTF::PoisonedImpl::poison): Deleted.
3005         (WTF::PoisonedImpl::unpoison): Deleted.
3006         (WTF::constExprPoisonRandom): Deleted.
3007         (WTF::makeConstExprPoison): Deleted.
3008         (WTF::ConstExprPoisonedPtrTraits::exchange): Deleted.
3009         (WTF::ConstExprPoisonedPtrTraits::swap): Deleted.
3010         (WTF::ConstExprPoisonedPtrTraits::unwrap): Deleted.
3011         (WTF::ConstExprPoisonedValueTraits::exchange): Deleted.
3012         (WTF::ConstExprPoisonedValueTraits::swap): Deleted.
3013         (WTF::ConstExprPoisonedValueTraits::unwrap): Deleted.
3014         * wtf/PoisonedUniquePtr.h:
3015         (WTF::PoisonedUniquePtr::PoisonedUniquePtr):
3016         (WTF::PoisonedUniquePtr::operator=):
3017         * wtf/Ref.h:
3018         * wtf/RefCountedArray.h:
3019         (WTF::RefCountedArray::RefCountedArray):
3020         * wtf/RefPtr.h:
3021         * wtf/WTFAssertions.cpp:
3022
3023 2018-01-12  JF Bastien  <jfbastien@apple.com>
3024
3025         PoisonedWriteBarrier
3026         https://bugs.webkit.org/show_bug.cgi?id=181599
3027         <rdar://problem/36474351>
3028
3029         Reviewed by Mark Lam.
3030
3031         Supporting changes needed to allow poisoning of WriteBarrier
3032         objects.
3033
3034         * WTF.xcodeproj/project.pbxproj:
3035         * wtf/DumbPtrTraits.h:
3036         * wtf/DumbValueTraits.h: Copied from Source/WTF/wtf/DumbPtrTraits.h.
3037         (WTF::DumbValueTraits::exchange):
3038         (WTF::DumbValueTraits::swap):
3039         (WTF::DumbValueTraits::unwrap):
3040         * wtf/Forward.h:
3041         * wtf/Poisoned.h:
3042         (WTF::ConstExprPoisonedValueTraits::exchange):
3043         (WTF::ConstExprPoisonedValueTraits::swap):
3044         (WTF::ConstExprPoisonedValueTraits::unwrap):
3045
3046 2018-01-11  Basuke Suzuki  <Basuke.Suzuki@sony.com>
3047
3048         Remove noexcept from definition of std::tie()
3049         https://bugs.webkit.org/show_bug.cgi?id=181577
3050
3051         Reviewed by Yusuke Suzuki.
3052
3053         * wtf/StdLibExtras.h:
3054         (WTF::tie):
3055
3056 2018-01-11  Filip Pizlo  <fpizlo@apple.com>
3057
3058         Reserve a fast TLS key for GC TLC
3059         https://bugs.webkit.org/show_bug.cgi?id=181539
3060
3061         Reviewed by Alexey Proskuryakov.
3062         
3063         Who knew that thread-local caches would be a mitigation for timing attacks. Here's how it
3064         works: if we have TLCs then we can "context switch" them when we "context switch" origins. 
3065         This allows us to put some minimal distance between objects from different origins, which
3066         gives us the ability to allow small overflows when doing certain bounds checks without
3067         creating a useful Spectre information leak.
3068         
3069         So I think that means we have to implement thread-local caches (also known as thread-local
3070         allocation buffers, but I prefer the TLC terminology).
3071
3072         * wtf/FastTLS.h:
3073
3074 2018-01-04  Filip Pizlo  <fpizlo@apple.com>
3075
3076         CodeBlocks should be in IsoSubspaces
3077         https://bugs.webkit.org/show_bug.cgi?id=180884
3078
3079         Reviewed by Saam Barati.
3080         
3081         Deque<>::contains() is helpful for a debug ASSERT.
3082
3083         * wtf/Deque.h:
3084         (WTF::inlineCapacity>::contains):
3085
3086 2018-01-11  JF Bastien  <jfbastien@apple.com>
3087
3088         NFC reorder headers
3089         https://bugs.webkit.org/show_bug.cgi?id=181521
3090
3091         Reviewed by Darin Adler.
3092
3093         Follow-up on r226752. I misunderstood the header include order
3094         style. No functional change.
3095
3096         * wtf/Poisoned.h:
3097         * wtf/PoisonedUniquePtr.h:
3098
3099 2018-01-10  JF Bastien  <jfbastien@apple.com>
3100
3101         Poison small JSObject derivatives which only contain pointers
3102         https://bugs.webkit.org/show_bug.cgi?id=181483
3103         <rdar://problem/36407127>
3104
3105         Reviewed by Mark Lam.
3106
3107         The associated JSC poisoning change requires some template
3108         "improvements" to our poisoning machinery. Worth noting is that
3109         I'm making PoisonedUniquePtr move-assignable and
3110         move-constructible from unique_ptr, which makes it a better
3111         drop-in replacement because we don't need to use
3112         makePoisonedUniquePtr. This means function-locals can be
3113         unique_ptr and get the nice RAII pattern, and once the function is
3114         done you can just move to the class' PoisonedUniquePtr without
3115         worrying.
3116
3117         * wtf/Poisoned.h:
3118         (WTF::PoisonedImpl::PoisonedImpl):
3119         * wtf/PoisonedUniquePtr.h:
3120         (WTF::PoisonedUniquePtr::PoisonedUniquePtr):
3121         (WTF::PoisonedUniquePtr::operator=):
3122
3123 2018-01-10  Don Olmstead  <don.olmstead@sony.com>
3124
3125         Add nullptr_t specialization of poison
3126         https://bugs.webkit.org/show_bug.cgi?id=181469
3127
3128         Reviewed by JF Bastien.
3129
3130         * wtf/Poisoned.h:
3131         (WTF::PoisonedImpl::poison):
3132
3133 2018-01-10  Commit Queue  <commit-queue@webkit.org>
3134
3135         Unreviewed, rolling out r226667 and r226673.
3136         https://bugs.webkit.org/show_bug.cgi?id=181488
3137
3138         This caused a flaky crash. (Requested by mlewis13 on #webkit).
3139
3140         Reverted changesets:
3141
3142         "CodeBlocks should be in IsoSubspaces"
3143         https://bugs.webkit.org/show_bug.cgi?id=180884
3144         https://trac.webkit.org/changeset/226667
3145
3146         "REGRESSION (r226667): CodeBlocks should be in IsoSubspaces"
3147         https://bugs.webkit.org/show_bug.cgi?id=180884
3148         https://trac.webkit.org/changeset/226673
3149
3150 2018-01-04  Filip Pizlo  <fpizlo@apple.com>
3151
3152         CodeBlocks should be in IsoSubspaces
3153         https://bugs.webkit.org/show_bug.cgi?id=180884
3154
3155         Reviewed by Saam Barati.
3156         
3157         Deque<>::contains() is helpful for a debug ASSERT.
3158
3159         * wtf/Deque.h:
3160         (WTF::inlineCapacity>::contains):
3161
3162 2018-01-08  Don Olmstead  <don.olmstead@sony.com>
3163
3164         Add WTF_EXPORTs to UniStdExtras
3165         https://bugs.webkit.org/show_bug.cgi?id=181415
3166
3167         Reviewed by Alex Christensen.
3168
3169         * wtf/UniStdExtras.h:
3170
3171 2018-01-07  Mark Lam  <mark.lam@apple.com>
3172
3173         Apply poisoning to more pointers in JSC.
3174         https://bugs.webkit.org/show_bug.cgi?id=181096
3175         <rdar://problem/36182970>
3176
3177         Reviewed by JF Bastien.
3178
3179         Added support for PoisonedBag and PoisonedRefCountedArray.
3180
3181         * wtf/Bag.h:
3182         (WTF::Private::BagNode::BagNode):
3183         (WTF::Bag::Bag):
3184         (WTF::Bag::operator=):
3185         (WTF::Bag::clear):
3186         (WTF::Bag::add):
3187         (WTF::Bag::begin):
3188         (WTF::Bag::unwrappedHead):
3189         (WTF::Bag::Node::Node): Deleted.
3190         * wtf/BagToHashMap.h:
3191         (WTF::toHashMap):
3192         * wtf/Poisoned.h:
3193         (WTF::constExprPoisonRandom):
3194         (WTF::makeConstExprPoison):
3195         * wtf/RefCountedArray.h:
3196         (WTF::RefCountedArray::RefCountedArray):
3197         (WTF::RefCountedArray::clone const):
3198         (WTF::RefCountedArray::operator=):
3199         (WTF::RefCountedArray::~RefCountedArray):
3200         (WTF::RefCountedArray::refCount const):
3201         (WTF::RefCountedArray::size const):
3202         (WTF::RefCountedArray::data):
3203         (WTF::RefCountedArray::begin):
3204         (WTF::RefCountedArray::end):
3205         (WTF::RefCountedArray::data const):
3206         (WTF::RefCountedArray::begin const):
3207         (WTF::RefCountedArray::operator== const):
3208         (WTF::RefCountedArray::Header::fromPayload):
3209         * wtf/WTFAssertions.cpp:
3210
3211 2018-01-05  JF Bastien  <jfbastien@apple.com>
3212
3213         WebAssembly: poison JS object's secrets
3214         https://bugs.webkit.org/show_bug.cgi?id=181339
3215         <rdar://problem/36325001>
3216
3217         Reviewed by Mark Lam.
3218
3219         swapping a poisoned pointer with a non-poisoned one (as is done in
3220         JSWebAssembyMemory::adopt) was missing.
3221
3222         * wtf/Poisoned.h:
3223         (WTF::PoisonedImpl::swap):
3224         (WTF::ConstExprPoisonedPtrTraits::swap):
3225
3226 2018-01-05  David Kilzer  <ddkilzer@apple.com>
3227
3228         Re-enable -Wcast-qual in WebCore for Apple ports
3229         <https://webkit.org/b/177895>
3230         <rdar://problem/34960830>
3231
3232         Reviewed by Joseph Pecoraro.
3233
3234         * wtf/RetainPtr.h:
3235         (WTF::RetainPtr::fromStorageTypeHelper const): Add const_cast<>
3236         operator here since some CFTypes are not defined as const
3237         pointers, which triggers a warning in C++ source with
3238         -Wcast-qual when casting from CFTypeRef back to the original
3239         type.  Note that we use const_cast<CF_BRIDGED_TYPE(id) void*>()
3240         here (and in TypeCastsCF.h below) since this is what CFTypeRef
3241         is defined as in CFBase.h, but without the 'const' modifier.
3242         (WTF::RetainPtr::fromStorageType const): Ditto.
3243
3244         * wtf/cf/TypeCastsCF.h: Use #pragma once.
3245         (WTF_DECLARE_CF_TYPE_TRAIT): Rename from DECLARE_CF_TYPE_TRAIT.
3246         Don't #undef it so that it can be used in other source files.
3247         (WTF_DECLARE_CF_MUTABLE_TYPE_TRAIT): Add new macro that is used
3248         for declaring CFMutable types.  The CFTypeID for CF_Foo_ and
3249         CFMutable_Foo_ are the same, so we have to use a different macro
3250         to declare type traits for those types.
3251         (WTF::dynamic_cf_cast): Add assertion to catch issues in Debug
3252         builds.
3253         (WTF::checked_cf_cast): Inline code from WTF::dynamic_cf_cast
3254         and change behavior to be more consistent between Debug and
3255         Release builds, as well as other "checked" functions.
3256         Previously this function would return nullptr in Release builds
3257         if nullptr or the wrong type of object was passed in, but crash
3258         in both cases on Debug builds.  The new behavior always returns
3259         nullptr if nullptr was passed in (but never crashes), and always
3260         crashes if the wrong type of object is passed in.
3261
3262 2018-01-04  Keith Miller  <keith_miller@apple.com>
3263
3264         TypedArrays and Wasm should use index masking.
3265         https://bugs.webkit.org/show_bug.cgi?id=181313
3266
3267         Reviewed by Michael Saboff.
3268
3269         * wtf/MathExtras.h:
3270         (WTF::computeIndexingMask):
3271
3272 2018-01-03  Michael Saboff  <msaboff@apple.com>
3273
3274         Disable SharedArrayBuffers from Web API
3275         https://bugs.webkit.org/show_bug.cgi?id=181266
3276
3277         Reviewed by Saam Barati.
3278
3279         Turn off SharedArrayBuffers using a compile time flag ENABLE_SHARED_ARRAY_BUFFER.
3280
3281         * wtf/Platform.h:
3282
3283 2017-12-28  Yusuke Suzuki  <utatane.tea@gmail.com>
3284
3285         Remove std::chrono completely
3286         https://bugs.webkit.org/show_bug.cgi?id=181186
3287
3288         Reviewed by Alex Christensen.
3289
3290         std::chrono's overflow unaware design is dangerous[1]. Even small code like
3291         `condition.wait_for(std::chrono::seconds::max())` is broken in some platforms
3292         due to overflow of std::chrono::time_point. So we intentionally avoid using
3293         std::chrono, and use WallTime, MonotonicTime, Seconds instead.
3294
3295         This patch removes all the remaining use of std::chrono from WebKit tree.
3296
3297         [1]: https://lists.webkit.org/pipermail/webkit-dev/2016-May/028242.html
3298
3299         * wtf/CrossThreadCopier.h:
3300         Remove std::chrono support from cross thread copiers.
3301         * wtf/Forward.h:
3302         * wtf/MonotonicTime.h:
3303         (WTF::MonotonicTime::isolatedCopy const):
3304         Add isolatedCopy function.
3305         * wtf/RunLoop.h:
3306         (WTF::RunLoop::TimerBase::startRepeating):
3307         (WTF::RunLoop::TimerBase::startOneShot):
3308         Just remove these helpers.
3309         * wtf/Seconds.h:
3310         (WTF::Seconds::isolatedCopy const):
3311         Add isolatedCopy function.
3312         * wtf/WallTime.h:
3313         (WTF::WallTime::isolatedCopy const):
3314         Add isolatedCopy function.
3315         * wtf/persistence/PersistentCoders.h:
3316         (WTF::Persistence::Coder<Seconds>::encode):
3317         (WTF::Persistence::Coder<Seconds>::decode):
3318         (WTF::Persistence::Coder<WallTime>::encode):
3319         (WTF::Persistence::Coder<WallTime>::decode):
3320         Add persistent coder support for Seconds and WallTime.
3321         (WTF::Persistence::Coder<std::chrono::system_clock::time_point>::encode): Deleted.
3322         (WTF::Persistence::Coder<std::chrono::system_clock::time_point>::decode): Deleted.
3323         Remove std::chrono support from persistent coders.
3324
3325 2018-01-02  Mark Lam  <mark.lam@apple.com>
3326
3327         Refactoring: Rename DummyClass to DummyStruct because it's a struct.
3328         https://bugs.webkit.org/show_bug.cgi?id=181230
3329
3330         Reviewed by JF Bastien.
3331
3332         * wtf/WTFAssertions.cpp:
3333
3334 2018-01-02  Mark Lam  <mark.lam@apple.com>
3335
3336         Ensure that poisoned pointers do not look like double or int32 JSValues.
3337         https://bugs.webkit.org/show_bug.cgi?id=181221
3338         <rdar://problem/36248638>
3339
3340         Reviewed by JF Bastien.
3341
3342         Changed poison values to ensure that poisoned bits (i.e. pointer ^ poison)
3343         satisfies the following conditions:
3344         1. bits 48-63 are 0: this ensures that poisoned bits look like a pointer and
3345            not a double or int32 JSValue.
3346         2. bits 32-47 are not completely 0.
3347         3. bit 2 is never 0: this ensures that the poisoned value of a non-null pointer
3348            will never be null.
3349         4. bit 0-1 is always 0: this ensures that clients can still use the 2 bottom
3350            bits of the poisoned value as flag bits (just like they were able to do with
3351            pointer values).  The only difference is that bit 2 can no longer be used for
3352            flag bits because poisoned values need it to always be set.
3353
3354         * WTF.xcodeproj/project.pbxproj:
3355         * wtf/CMakeLists.txt:
3356         * wtf/PointerAsserts.cpp: Removed.
3357
3358         * wtf/Poisoned.cpp:
3359         (WTF::makePoison):
3360         - Updated to satisfy the above requirements.
3361         
3362         * wtf/Poisoned.h:
3363         (WTF::makeConstExprPoison):
3364         (WTF::makePoison): Deleted.
3365
3366         * wtf/WTFAssertions.cpp: Copied from Source/WTF/wtf/PointerAsserts.cpp.
3367         - Renamed from PointerAsserts.cpp because we assert more things than just
3368           pointers here.
3369         - Added some assertions to test makeConstExprPoison() to ensure that it satisfies
3370           the above requirements.
3371
3372 2017-12-28  Yusuke Suzuki  <utatane.tea@gmail.com>
3373
3374         Remove std::chrono if it is not used for ArgumentCoder or PersistentCoder
3375         https://bugs.webkit.org/show_bug.cgi?id=181174
3376
3377         Reviewed by Konstantin Tokarev.
3378
3379         Make WallTime more constexpr friendly. This change is already applied to MonoTonicTime.
3380
3381         We would like to move std::{isfinite,isinf,isnan} overloadings from std:: to each class scope in a separate patch[1].
3382
3383         [1]: https://bugs.webkit.org/show_bug.cgi?id=181183
3384
3385         * wtf/WallTime.h:
3386         (WTF::WallTime::WallTime):
3387         (WTF::WallTime::fromRawSeconds):
3388         (WTF::WallTime::infinity):
3389         (WTF::WallTime::secondsSinceEpoch const):
3390         (WTF::WallTime::operator bool const):
3391         (WTF::WallTime::operator+ const):
3392         (WTF::WallTime::operator- const):
3393         (WTF::WallTime::operator== const):
3394         (WTF::WallTime::operator!= const):
3395         (WTF::WallTime::operator< const):
3396         (WTF::WallTime::operator> const):
3397         (WTF::WallTime::operator<= const):
3398         (WTF::WallTime::operator>= const):
3399
3400 2017-12-28  Fujii Hironori  <Hironori.Fujii@sony.com>
3401
3402         [Win][CMake] Use add_custom_command to copy each forwarding header files
3403         https://bugs.webkit.org/show_bug.cgi?id=180921
3404
3405         Reviewed by Brent Fulgham.
3406
3407         * wtf/PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
3408
3409 2017-12-27  Yusuke Suzuki  <utatane.tea@gmail.com>
3410
3411         [WTF] Add clock_gettime based monotonicallyIncreasingTime implementation for Linux and BSDs
3412         https://bugs.webkit.org/show_bug.cgi?id=181175
3413
3414         Reviewed by Michael Catanzaro.
3415
3416         Use platform-provided POSIX APIs to get monotonic time.
3417
3418         * wtf/CurrentTime.cpp:
3419         (WTF::monotonicallyIncreasingTime):
3420
3421 2017-12-26  Carlos Alberto Lopez Perez  <clopez@igalia.com>
3422
3423         REGRESSION(r225769): Build error with constexpr std::max // std::min in libdstdc++4
3424         https://bugs.webkit.org/show_bug.cgi?id=181160
3425
3426         Reviewed by Myles C. Maxfield.
3427
3428         In libstdc++-4 std::max and std::min are not annotated with constexpr.
3429         This patch adds a WTF::min and WTF::max for using where a constexpr result is expected.
3430         Related: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60271
3431
3432         * wtf/StdLibExtras.h:
3433         (WTF::min):
3434         (WTF::max):
3435
3436 2017-12-26  Yusuke Suzuki  <utatane.tea@gmail.com>
3437
3438         [JSC] Remove std::chrono completely
3439         https://bugs.webkit.org/show_bug.cgi?id=181165
3440
3441         Reviewed by Konstantin Tokarev.
3442
3443         WTF::currentCPUTime now returns WTF::Seconds.
3444         We also add the implementaiton for Linux and FreeBSD.
3445
3446         * wtf/CurrentTime.cpp:
3447         (WTF::currentCPUTime):
3448         * wtf/CurrentTime.h:
3449
3450 2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>
3451
3452         Unreviewed, try to fix the Sierra build after r226277.
3453
3454         The macOS 10.12 SDK does not know about NSControlStateValue and some types of NSLevelIndicatorStyles, so these
3455         need to be declared in a separate section in AppKitCompatibilityDeclarations.h (rather than in the < macOS 10.12
3456         SDK #ifdef).
3457
3458         * wtf/mac/AppKitCompatibilityDeclarations.h:
3459
3460 2017-12-22  Wenson Hsieh  <wenson_hsieh@apple.com>
3461
3462         Fix build failures due to using deprecated AppKit symbols
3463         https://bugs.webkit.org/show_bug.cgi?id=181110
3464         <rdar://problem/36162865>
3465
3466         Reviewed by Dan Bernstein and Tim Horton.
3467
3468         When building with older macOS SDKs where some AppKit constants don't exist, define the modern constants to be
3469         equal to their deprecated counterparts. This allows us to just have the modern types in WebKit sources while
3470         avoiding breakage on old SDKs.
3471
3472         This, along with many other symbols in the compability header, can be removed once WebKit stops supporting macOS
3473         10.11.
3474
3475         * wtf/mac/AppKitCompatibilityDeclarations.h:
3476
3477 2017-12-21  Mark Lam  <mark.lam@apple.com>
3478
3479         Add WTF::PoisonedUniquePtr to replace std::unique_ptr when poisoning is desired.
3480         https://bugs.webkit.org/show_bug.cgi?id=181062
3481         <rdar://problem/36167040>
3482
3483         Reviewed by Chris Dumez.
3484
3485         * WTF.xcodeproj/project.pbxproj:
3486         * wtf/CMakeLists.txt:
3487         * wtf/PointerAsserts.cpp: Copied from Source/WTF/wtf/RefPtr.cpp.
3488         - renamed file because we asserts all kinds of pointers in here, not just RefPtr.
3489         
3490         * wtf/Poisoned.h:
3491         - added a missing #include.
3492         - make constexpr poison values more scrambled.
3493         (WTF::makePoison):
3494
3495         * wtf/PoisonedUniquePtr.h: Added.
3496         (WTF::PoisonedUniquePtr::PoisonedUniquePtr):
3497         (WTF::PoisonedUniquePtr::~PoisonedUniquePtr):
3498         (WTF::PoisonedUniquePtr::create):
3499         (WTF::PoisonedUniquePtr::operator=):
3500         (WTF::PoisonedUniquePtr::get const):
3501         (WTF::PoisonedUniquePtr::operator[] const):
3502         (WTF::PoisonedUniquePtr::clear):
3503         (WTF::PoisonedUniquePtr::destroy):
3504         (WTF::PoisonedUniquePtr::clearWithoutDestroy):
3505         (WTF::makePoisonedUnique):
3506         * wtf/RefPtr.cpp: Removed.
3507
3508 2017-12-21  Jeremy Jones  <jeremyj@apple.com>
3509
3510         Element fullscreen interface should display the location
3511         https://bugs.webkit.org/show_bug.cgi?id=181006
3512         rdar://problem/36143176
3513
3514         Reviewed by Simon Fraser.
3515
3516         Add SecTrustCopyInfo SPI.
3517
3518         * wtf/spi/cocoa/SecuritySPI.h:
3519
3520 2017-12-20  Fujii Hironori  <Hironori.Fujii@sony.com>
3521
3522         [CMake][WTF] Lowercase ForwardingHeaders directory name of WTF
3523         https://bugs.webkit.org/show_bug.cgi?id=181022
3524
3525         Reviewed by Konstantin Tokarev.
3526
3527         * wtf/CMakeLists.txt: Renamed ForwardingHeaders directory name WTF to wtf.
3528         * wtf/PlatformWin.cmake: Ditto.
3529
3530 2017-12-19  Brian Burg  <bburg@apple.com>
3531
3532         SLEEP_THREAD_FOR_DEBUGGER() macro should try to print out the PID of the affected process
3533         https://bugs.webkit.org/show_bug.cgi?id=180947
3534
3535         Reviewed by Joseph Pecoraro.
3536
3537         * wtf/DebugUtilities.h:
3538         - Use sleep() from CurrentTime.h as it is more cross-platform.
3539         - Print a message with the process PID to simplify attaching to sleeping thread.
3540         - Include source location in case multiple such macros are being used.
3541
3542 2017-12-18  Daniel Bates  <dabates@apple.com>
3543
3544         Conditionally forward declare NSMapTable SPI
3545         https://bugs.webkit.org/show_bug.cgi?id=180936
3546         <rdar://problem/35037796>
3547
3548         Reviewed by Dan Bernstein.
3549
3550         * wtf/spi/cocoa/NSMapTableSPI.h:
3551
3552 2017-12-16  Filip Pizlo  <fpizlo@apple.com>
3553
3554         Vector index masking
3555         https://bugs.webkit.org/show_bug.cgi?id=180909
3556
3557         Reviewed by Keith Miller.
3558         
3559         Adds index masking to StringImpl and Vector.
3560         
3561         Perf:
3562         
3563         - 0.4% slower on microbenchmarks.
3564         - Octane totally even.
3565         - Kraken may be 0.8% slower.
3566         - Speedometer is 0.8% slower with p = 0.008.
3567         - membuster is even:
3568             - snap2pre: 0.7% bigger w/ p = 0.26,
3569             - snap2post: 0.3% smaller w/ p = 0.81,
3570             - snap3pre: 1.2% bigger w/ p = 0.63,
3571             - snap3post: 0.4% smaller w/ p = 0.76.
3572
3573         * wtf/MathExtras.h:
3574         (WTF::roundUpToPowerOfTwo):
3575         (WTF::maskForSize):
3576         * wtf/SizeLimits.cpp:
3577         * wtf/Vector.h:
3578         (WTF::VectorBufferBase::allocateBuffer):
3579         (WTF::VectorBufferBase::tryAllocateBuffer):
3580         (WTF::VectorBufferBase::reallocateBuffer):
3581         (WTF::VectorBufferBase::deallocateBuffer):
3582         (WTF::VectorBufferBase::releaseBuffer):
3583         (WTF::VectorBufferBase::VectorBufferBase):
3584         (WTF::VectorBufferBase::updateMask):
3585         (WTF::VectorBuffer::allocateBuffer):
3586         (WTF::VectorBuffer::tryAllocateBuffer):
3587         (WTF::VectorBuffer::swap):
3588         (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
3589         (WTF::Vector::at):
3590         (WTF::Vector::at const):
3591         * wtf/text/StringImpl.h:
3592         (WTF::StringImpl::maskOffset):
3593         (WTF::StringImpl::mask const):
3594         (WTF::StringImplShape::StringImplShape):
3595         (WTF::StringImpl::at const):
3596         (WTF::StringImpl::tailOffset):
3597         * wtf/text/StringView.h:
3598         (WTF::StringView::StringView):
3599         (WTF::StringView::operator=):
3600         (WTF::StringView::initialize):
3601         (WTF::StringView::clear):
3602         (WTF::StringView::operator[] const):
3603         * wtf/text/WTFString.h:
3604         (WTF::String::mask const):
3605
3606 2017-12-18  Claudio Saavedra  <csaavedra@igalia.com>
3607
3608         [GTK][Darwin] Do not define mach exceptions for GTK+
3609
3610         Rubber-stamped by Michael Catanzaro.
3611         * wtf/Platform.h:
3612
3613 2017-12-17  Yusuke Suzuki  <utatane.tea@gmail.com>
3614
3615         [FTL] NewArrayBuffer should be sinked if it is only used for spreading
3616         https://bugs.webkit.org/show_bug.cgi?id=179762
3617
3618         Reviewed by Saam Barati.
3619
3620         We add RecursableLambda<>. This can take a lambda and offer a way
3621         to call this lambda recursively without introducing additional allocations.
3622
3623         C++ lambda is super useful in particular when we need to capture many
3624         variables as references. Passing many arguments to a usual function is not
3625         a good way. But C++ lambda does not allow us to easily call itself recursively.
3626
3627         Our recursableLambda offers `self` function as a first argument of the
3628         given lambda. We can call this `self` recursively.
3629
3630         auto targetFunction = recursableLambda([] (auto self, ...) -> resultType {
3631             self(...);
3632         });
3633
3634         While `std::function<> func = [&func] { ... }` allows recursion, it causes
3635         heap allocation for std::function<>. `auto func = [&func] { ... }` causes
3636         a compile error since we need to deduce an actual type when capturing `func`.
3637
3638         * WTF.xcodeproj/project.pbxproj: