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