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