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