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