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