[JSC] Optimize padding of UnlinkedCodeBlock to shrink
[WebKit-https.git] / Source / WTF / ChangeLog
1 2018-07-08  Yusuke Suzuki  <utatane.tea@gmail.com>
2
3         [JSC] Optimize padding of UnlinkedCodeBlock to shrink
4         https://bugs.webkit.org/show_bug.cgi?id=187448
5
6         Reviewed by Saam Barati.
7
8         * wtf/TriState.h:
9
10 2018-07-07  David Kilzer  <ddkilzer@apple.com>
11
12         iOS port should define HAVE_RUNLOOP_TIMER
13         <https://webkit.org/b/187370>
14
15         Reviewed by Simon Fraser.
16
17         * wtf/Platform.h:
18         (HAVE_DTRACE): Remove unused macro since r200568.
19         (HAVE_RUNLOOP_TIMER): Define for PLATFORM(COCOA), not just
20         PLATFORM(MAC).  Alphabetize macros.
21
22 2018-07-07  Yusuke Suzuki  <utatane.tea@gmail.com>
23
24         [linux] ASSERT: Using an alternative signal stack is not supported. Consider disabling the concurrent GC.
25         https://bugs.webkit.org/show_bug.cgi?id=187297
26
27         Reviewed by Mark Lam.
28
29         This patch relaxes the JSC's limitation: accepting an alternative signal stack mechanism.
30
31         * wtf/ThreadingPthreads.cpp:
32         (WTF::getApproximateStackPointer):
33         Fix approximate stack pointer function to make it valid.
34
35         (WTF::Thread::signalHandlerSuspendResume):
36         Use StackBounds::contains to check whether the given stack pointer is in range of StackBounds.
37         If it is out of range, it seems that this stack pointer is pointing an alternative signal stack.
38
39         (WTF::Thread::suspend):
40         Repeatedly retry suspension by using Thread::yield().
41
42         (WTF::isOnAlternativeSignalStack): Deleted.
43
44 2018-07-06  Frederic Wang  <fwang@igalia.com>
45
46         WTF's internal std::optional implementation should abort() on bad optional access
47         https://bugs.webkit.org/show_bug.cgi?id=186536
48
49         Reviewed by Michael Catanzaro.
50
51         Currently, some ports built with recent compilers will cause the program to abort when one
52         tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
53         However, most ports still use WTF's internal std::optional implementation, which does not
54         verify illegal access. Hence it's not possible for developers working on these ports to
55         detect issues like bugs #186189, #186535, #186752, #186753, #187139, #187145, #187243 or
56         #187382.
57         WTF's version of std::optional was introduced in bug #164199 but it was not possible to
58         verify the availability of the value inside constexpr member functions because the assert
59         might involve asm declarations. This commit introduces a new ASSERT_UNDER_CONSTEXPR_CONTEXT
60         macro (a simplified version of ASSERT that can be used in constexpr context) and uses it in
61         WTF's implementation of std::optional.
62
63         * wtf/Assertions.h: Define ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of ASSERT that can be
64         used in constexpr context (in particular avoids asm declarations).
65         * wtf/Optional.h:
66         (std::optional::operator ->): Add an assert to ensure the optional value is available.
67         (std::optional::operator *): Ditto.
68         (std::optional::value const): Ditto.
69         (std::optional::value): Ditto.
70         (std::optional<T::value const): Ditto.
71
72 2018-07-05  Commit Queue  <commit-queue@webkit.org>
73
74         Unreviewed, rolling out r233417 and r233418.
75         https://bugs.webkit.org/show_bug.cgi?id=187364
76
77         Introduced an occasional crash on Google Drive (Requested by
78         rniwa on #webkit).
79
80         Reverted changesets:
81
82         "WTF's internal std::optional implementation should abort() on
83         bad optional access"
84         https://bugs.webkit.org/show_bug.cgi?id=186536
85         https://trac.webkit.org/changeset/233417
86
87         "WTF's internal std::optional implementation should abort() on
88         bad optional access"
89         https://bugs.webkit.org/show_bug.cgi?id=186536
90         https://trac.webkit.org/changeset/233418
91
92 2018-07-04  Guillaume Emont  <guijemont@igalia.com>
93
94         FunctionTraits: Make cCallArity() constant on 32-bits.
95         https://bugs.webkit.org/show_bug.cgi?id=187292
96
97         Reviewed by Yusuke Suzuki.
98
99         On X86, in Source/JavaScriptCore/jit/CCallHelpers.h we have a
100         static_assert that uses cCallArity(), so it needs to be constant to
101         avoid a compilation error. This is achieved by changing an ASSERT into
102         a static_assert.
103
104
105         * wtf/FunctionTraits.h:
106         (WTF::slotsForCCallArgument):
107
108 2018-07-04  Tim Horton  <timothy_horton@apple.com>
109
110         Introduce PLATFORM(IOSMAC)
111         https://bugs.webkit.org/show_bug.cgi?id=187315
112
113         Reviewed by Dan Bernstein.
114
115         * Configurations/Base.xcconfig:
116         * wtf/FeatureDefines.h:
117         * wtf/Platform.h:
118
119 2018-07-02  Alicia Boya García  <aboya@igalia.com>
120
121         [Linux] Fix memory leak in WTF::forEachLine()
122         https://bugs.webkit.org/show_bug.cgi?id=187174
123
124         Reviewed by Žan Doberšek.
125
126         * wtf/linux/MemoryFootprintLinux.cpp:
127         (WTF::forEachLine):
128
129 2018-07-02  Frederic Wang  <fwang@igalia.com>
130
131         WTF's internal std::optional implementation should abort() on bad optional access
132         https://bugs.webkit.org/show_bug.cgi?id=186536
133
134         Reviewed by Michael Catanzaro.
135
136         Currently, some ports built with recent compilers will cause the program to abort when one
137         tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
138         However, most ports still use WTF's internal std::optional implementation, which does not
139         verify illegal access. Hence it's not possible for developers working on these ports to
140         detect issues like bugs #186189, #186535, #186752, #186753, #187139, #187145 or #187243.
141         WTF's version of std::optional was introduced in bug #164199 but it was not possible to
142         verify the availability of the value inside constexpr member functions because the assert
143         might involve asm declarations. This commit introduces a new
144         RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT macro (a simplified version of RELEASE_ASSERT that can
145         be used in constexpr context) and uses it in WTF's implementation of std::optional.
146
147         * wtf/Assertions.h: Define RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of
148         RELEASE_ASSERT that can be used in constexpr context (in particular avoids asm declarations).
149         * wtf/Optional.h:
150         (std::optional::operator ->): Add an assert to ensure the optional value is available.
151         (std::optional::operator *): Ditto.
152         (std::optional::value const): Ditto.
153         (std::optional::value): Ditto.
154         (std::optional<T::value const): Ditto.
155
156 2018-07-01  Yusuke Suzuki  <utatane.tea@gmail.com>
157
158         [WTF] RandomDevice should be initialized inside std::call_once
159         https://bugs.webkit.org/show_bug.cgi?id=186017
160
161         Reviewed by Darin Adler.
162
163         While Linux ports uses mutex-guarded static variables, Mac ports do not.
164         So we should guard static variables' initialization by using std::call_once.
165         This patch does it for RandomDevice.
166
167         * wtf/OSRandomSource.cpp:
168         (WTF::cryptographicallyRandomValuesFromOS):
169         * wtf/RandomDevice.h: Small fix for OS(FUCHSIA).
170
171 2018-07-01  Myles C. Maxfield  <mmaxfield@apple.com>
172
173         [Cocoa] LastResort in the font family list causes emoji with joiners to be rendered as multiple .notdef characters
174         https://bugs.webkit.org/show_bug.cgi?id=187209
175         <rdar://problem/40920785>
176
177         Reviewed by Darin Adler.
178
179         * wtf/unicode/CharacterNames.h:
180
181 2018-06-23  Darin Adler  <darin@apple.com>
182
183         [Cocoa] Improve ARC compatibility of more code in JavaScriptCore
184         https://bugs.webkit.org/show_bug.cgi?id=186973
185
186         Reviewed by Dan Bernstein.
187
188         * WTF.xcodeproj/project.pbxproj: Added CFXPCBridgeSPI.h, fixed a few
189         other small problems in the project file, and let Xcode fix a few too.
190
191         * wtf/cocoa/Entitlements.h: Added hasEntitlement function with overloads
192         for an audit token and an XPC connection.
193         * wtf/cocoa/Entitlements.mm:
194         (WTF::hasEntitlement): Added, with overloads for a SecTask, an audit token,
195         and an XPC connection.
196         (WTF::processHasEntitlement): Refactored to use the function above.
197
198         * wtf/spi/cocoa/CFXPCBridgeSPI.h: Added.
199
200 2018-06-30  Adam Barth  <abarth@webkit.org>
201
202         Port JavaScriptCore to OS(FUCHSIA)
203         https://bugs.webkit.org/show_bug.cgi?id=187223
204
205         Reviewed by Daniel Bates.
206
207         * wtf/Platform.h: Fuchsia uses mcontext_t to provide machine context.
208
209 2018-06-30  Adam Barth  <abarth@webkit.org>
210
211         Port WTF to OS(FUCHSIA)
212         https://bugs.webkit.org/show_bug.cgi?id=187221
213
214         Reviewed by Yusuke Suzuki.
215
216         * wtf/FastMalloc.cpp: Fuchsia does not have resource.h
217         (WTF::fastMallocStatistics): Skip collecting stats without resource.h
218         * wtf/InlineASM.h: Fuchsia uses ELF
219         * wtf/Platform.h: Define OS(FUCHSIA) as an OS(UNIX) variant
220         * wtf/RandomDevice.cpp: Call zx_cprng_draw for crypographic randomness
221         (WTF::RandomDevice::cryptographicallyRandomValues):
222         * wtf/ThreadingPthreads.cpp: Fuchsia does not have pthread_setschedparam
223         (WTF::Thread::changePriority):
224         * wtf/unix/CPUTimeFuchsia.cpp: Added.
225
226 2018-06-30  Commit Queue  <commit-queue@webkit.org>
227
228         Unreviewed, rolling out r233391.
229         https://bugs.webkit.org/show_bug.cgi?id=187217
230
231         This patch broke Windows ports (Requested by fredw on
232         #webkit).
233
234         Reverted changeset:
235
236         "WTF's internal std::optional implementation should abort() on
237         bad optional access"
238         https://bugs.webkit.org/show_bug.cgi?id=186536
239         https://trac.webkit.org/changeset/233391
240
241 2018-06-29  Frederic Wang  <fwang@igalia.com>
242
243         WTF's internal std::optional implementation should abort() on bad optional access
244         https://bugs.webkit.org/show_bug.cgi?id=186536
245
246         Reviewed by Michael Catanzaro.
247
248         Currently, some ports built with recent compilers will cause the program to abort when one
249         tries to access the value of an unset std:optional (i.e. std::nullopt) as specified by C++17.
250         However, most ports still use WTF's internal std::optional implementation, which does not
251         verify illegal access. Hence it's not possible for developers working on these ports to
252         detect issues like bugs #186189, #186535, #186752, #186753, #187139 or #187145. WTF's version
253         of std::optional was introduced in bug #164199 but it was not possible to verify the
254         availability of the value inside constexpr member functions because the assert might involve
255         asm declarations. This commit introduces a new RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT macro
256         (a simplified version of RELEASE_ASSERT that can be used in constexpr context) and uses it in
257         WTF's implementation of std::optional.
258
259         * wtf/Assertions.h: Define RELEASE_ASSERT_UNDER_CONSTEXPR_CONTEXT as a version of
260         RELEASE_ASSERT that can be used in constexpr context (in particular avoids asm declarations).
261         * wtf/Optional.h:
262         (std::optional::operator ->): Add an assert to ensure the optional value is available.
263         (std::optional::operator *): Ditto.
264         (std::optional::value const): Ditto. 
265         (std::optional::value): Ditto.
266         (std::optional<T::value const): Ditto.
267
268 2018-06-29  Darin Adler  <darin@apple.com>
269
270         [Cocoa] reduce unnecessary use of .mm source files in WTF, spruce up some implementation details
271         https://bugs.webkit.org/show_bug.cgi?id=186924
272
273         Reviewed by Anders Carlsson.
274
275         * WTF.xcodeproj/project.pbxproj: Update for file and directory renames, file type changes,
276         and deletions.
277
278         * wtf/MemoryPressureHandler.cpp:
279         (WTF::MemoryPressureHandler::holdOff): Deleted empty placeholder; this one is not needed.
280
281         * wtf/PlatformMac.cmake: Update for file and directory renames, file type changes,
282         and deletions.
283
284         * wtf/cocoa/CPUTimeCocoa.cpp: Renamed from Source/WTF/wtf/cocoa/CPUTimeCocoa.mm.
285
286         * wtf/text/cocoa/StringImplCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringImplMac.mm.
287         Also removed an unneeded include.
288
289         * wtf/text/cocoa/StringViewCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringViewObjC.mm.
290
291         * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: Renamed from
292         Source/WTF/wtf/text/mac/TextBreakIteratorInternalICUMac.mm.
293
294 2018-06-28  Olivia Barnett  <obarnett@apple.com>
295
296         Find in page for typographic quotes does not find low (German) quotes
297         https://bugs.webkit.org/show_bug.cgi?id=187164
298         <rdar://problem/29612785>
299
300         Reviewed by Tim Horton.
301
302         Added Unicode definitions for German quotation marks.
303
304         * wtf/unicode/CharacterNames.h:
305
306 2018-06-27  Jonathan Bedard  <jbedard@apple.com>
307
308         Enable WebKit iOS 12 build
309         https://bugs.webkit.org/show_bug.cgi?id=187024
310         <rdar://problem/39759057>
311
312         Reviewed by David Kilzer.
313
314         * wtf/spi/darwin/XPCSPI.h: Add endpoint and connection declarations.
315
316 2018-06-25  David Fenton  <david_fenton@apple.com>
317
318         Unreviewed, rolling out r233120.
319
320         caused regression in ios API tests
321
322         Reverted changeset:
323
324         "[Cocoa] reduce unnecessary use of .mm source files in WTF,
325         spruce up some implementation details"
326         https://bugs.webkit.org/show_bug.cgi?id=186924
327         https://trac.webkit.org/changeset/233120
328
329 2018-06-25  Alicia Boya García  <aboya@igalia.com>
330
331         Fix ASAN_ENABLED in GCC
332         https://bugs.webkit.org/show_bug.cgi?id=186957
333
334         Reviewed by Michael Catanzaro.
335
336         ASAN_ENABLED used to rely on Clang-specific features for detection.
337         This patch enables ASAN_ENABLED to work on GCC too.
338
339         It also fixes compilation errors and warnings that were triggered when
340         compiling code guarded by ASAN_ENABLED in gcc.
341
342         * wtf/Compiler.h:
343         * wtf/Vector.h:
344         (WTF::VectorBuffer::endOfBuffer):
345
346 2018-06-22  Darin Adler  <darin@apple.com>
347
348         [Cocoa] Convert the small bit of Objective-C++ code in WTF to ARC
349         https://bugs.webkit.org/show_bug.cgi?id=186961
350
351         Reviewed by Anders Carlsson.
352
353         * Configurations/Base.xcconfig: Turn on ARC.
354
355         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
356         (WTF::MemoryPressureHandler::uninstall): Remove calls to dispatch_release.
357         (WTF::MemoryPressureHandler::holdOff): Ditto.
358
359         * wtf/mac/MainThreadMac.mm:
360         (WTF::initializeMainThreadPlatform): Remove call to retain.
361         (WTF::initializeWebThreadPlatform): Ditto.
362
363 2018-06-22  Yusuke Suzuki  <utatane.tea@gmail.com>
364
365         [WTF] Use Ref<> for the result type of non-failing factory functions
366         https://bugs.webkit.org/show_bug.cgi?id=186920
367
368         Reviewed by Darin Adler.
369
370         Use Ref<> instead of RefPtr<> if the `create` function do not return nullptr.
371
372         * wtf/AutomaticThread.cpp:
373         (WTF::AutomaticThreadCondition::create):
374         (WTF::AutomaticThread::AutomaticThread):
375         * wtf/AutomaticThread.h:
376         * wtf/ParallelHelperPool.cpp:
377         (WTF::ParallelHelperPool::Thread::Thread):
378         * wtf/ParallelHelperPool.h:
379         * wtf/WorkerPool.cpp:
380         (WTF::WorkerPool::WorkerPool):
381         * wtf/WorkerPool.h:
382         * wtf/win/WorkQueueWin.cpp:
383         (WTF::TimerContext::create):
384         (WTF::WorkQueue::dispatchAfter):
385
386 2018-06-23  Yusuke Suzuki  <utatane.tea@gmail.com>
387
388         [WTF] Add user-defined literal for ASCIILiteral
389         https://bugs.webkit.org/show_bug.cgi?id=186839
390
391         Reviewed by Darin Adler.
392
393         This patch adds user-defined literal for ASCIILiteral. We can create ASCIILiteral in the form of `"Hello World"_s`.
394         And we remove public ASCIILiteral constructor. This change ensures that ASCIILiteral is created from literal.
395
396         * WTF.xcodeproj/project.pbxproj:
397         * wtf/CMakeLists.txt:
398         * wtf/Indenter.h:
399         (WTF::Indenter::Indenter):
400         * wtf/Logger.h:
401         (WTF::LogArgument::toString):
402         * wtf/MediaTime.cpp:
403         (WTF::toJSONStringInternal):
404         (WTF::MediaTimeRange::toJSONString const):
405         * wtf/linux/MemoryFootprintLinux.cpp:
406         (WTF::memoryFootprint):
407         * wtf/text/ASCIILiteral.cpp: Copied from Source/WebCore/css/CSSUnsetValue.cpp.
408         (WTF::ASCIILiteral::dump const):
409         * wtf/text/ASCIILiteral.h: Copied from Source/WTF/wtf/Indenter.h.
410         (WTF::ASCIILiteral::operator const char* const):
411         (WTF::ASCIILiteral::fromLiteralUnsafe):
412         (WTF::ASCIILiteral::null):
413         (WTF::ASCIILiteral::characters const):
414         (WTF::ASCIILiteral::ASCIILiteral):
415         (WTF::StringLiterals::operator _s):
416         * wtf/text/WTFString.cpp:
417         (asciiDebug):
418         * wtf/text/WTFString.h:
419         (WTF::operator==):
420         (WTF::operator!=):
421         (WTF::ASCIILiteral::ASCIILiteral): Deleted.
422         (WTF::ASCIILiteral::operator const char*): Deleted.
423         * wtf/unix/LanguageUnix.cpp:
424         (WTF::platformLanguage):
425
426 2018-06-22  Darin Adler  <darin@apple.com>
427
428         [Cocoa] reduce unnecessary use of .mm source files in WTF, spruce up some implementation details
429         https://bugs.webkit.org/show_bug.cgi?id=186924
430
431         Reviewed by Anders Carlsson.
432
433         * WTF.xcodeproj/project.pbxproj: Update for file and directory renames, file type changes,
434         and deletions.
435
436         * wtf/MemoryPressureHandler.cpp:
437         (WTF::MemoryPressureHandler::holdOff): Deleted empty placeholder; this one is not needed.
438
439         * wtf/PlatformMac.cmake: Update for file and directory renames, file type changes,
440         and deletions.
441
442         * wtf/cocoa/CPUTimeCocoa.cpp: Renamed from Source/WTF/wtf/cocoa/CPUTimeCocoa.mm.
443         Reworked math to make better use of the Seconds class.
444
445         * wtf/text/WTFString.h: Added a new inline version of the constructor that takes an NSString.
446         This is identical to the one that takes a CFStringRef, so no need to keep both.
447
448         * wtf/text/cocoa/StringImplCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringImplMac.mm.
449         Also removed an unneeded include.
450
451         * wtf/text/cocoa/StringViewCocoa.mm: Renamed from Source/WTF/wtf/text/mac/StringViewObjC.mm.
452
453         * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: Renamed from
454         Source/WTF/wtf/text/mac/TextBreakIteratorInternalICUMac.mm.
455
456         * wtf/text/mac/StringMac.mm: Removed.
457
458 2018-06-21  Carlos Garcia Campos  <cgarcia@igalia.com>
459
460         [GLIB] improve get_type() fast path in WEBKIT_DEFINE_TYPE
461         https://bugs.webkit.org/show_bug.cgi?id=186885
462
463         Reviewed by Anders Carlsson.
464
465         This is a backport of glib commit
466         https://gitlab.gnome.org/GNOME/glib/commit/e924f777369710221c3e0a9d7bf40392a27d1fa4
467
468         "The -fstack-protector-strong used in many distributions by default has a
469         rather drastic slowdown of the fast path in generated _get_type()
470         functions using G_DEFINE_* macros. The amount can vary by architecture,
471         GCC version, and compiler flags.
472
473         To work around this, and ensure a higher probability that our fast-path
474         will match what we had previously, we need to break out the slow-path
475         (registering the type) into a secondary function that is not a candidate
476         for inlining.
477
478         This ensures that the common case (type registered, return the GType id)
479         is the hot path and handled in the prologue of the generated assembly even
480         when -fstack-protector-strong is enabled."
481
482         * wtf/glib/WTFGType.h:
483
484 2018-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>
485
486         [GTK][WPE][Nicosia] Add name for Nicosia Painting Threads
487         https://bugs.webkit.org/show_bug.cgi?id=186836
488
489         Reviewed by Carlos Garcia Campos.
490
491         AutomaticThread can take a name for the generated threads now.
492         This patch adds the above ability to WorkerPool.
493
494         * wtf/WorkerPool.cpp:
495         (WTF::WorkerPool::WorkerPool):
496         * wtf/WorkerPool.h:
497         (WTF::WorkerPool::create):
498         (WTF::WorkerPool::name const):
499
500 2018-06-18  Jiewen Tan  <jiewen_tan@apple.com>
501
502         Add a graceful exit for AuthenticationManager::initializeConnection
503         https://bugs.webkit.org/show_bug.cgi?id=186632
504         <rdar://problem/41041033>
505
506         Reviewed by Brent Fulgham.
507
508         * wtf/spi/darwin/XPCSPI.h:
509
510 2018-06-18  Carlos Alberto Lopez Perez  <clopez@igalia.com>
511
512         [WTF] Remove workarounds needed to support libstdc++-4
513         https://bugs.webkit.org/show_bug.cgi?id=186762
514
515         Reviewed by Michael Catanzaro.
516
517         Revert r226299, r226300 r226301 and r226302-
518
519         * wtf/StdLibExtras.h:
520
521 2018-06-12  Darin Adler  <darin@apple.com>
522
523         [Cocoa] Make some RetainPtr refinements to get more ready for ARC
524         https://bugs.webkit.org/show_bug.cgi?id=186526
525
526         Reviewed by Anders Carlsson.
527
528         * wtf/RetainPtr.h: Improved the definition of autorelease so it does
529         the right thing for both Objective-C types and non-Objective-C types.
530         Also added bridgingAutorelease for when we want to autorelease as
531         part of converting from a CF type to an Objective-C type. The two
532         advantages of bridgingAutorelease are that it does not require an
533         additional explicit __bridge cast and that it does not prevent the
534         ARC objc_autoreleaseReturnValue optimization the way that doing an
535         autorelease on the CF type would.
536
537         * wtf/text/mac/StringImplMac.mm:
538         (WTF::StringImpl::operator NSString *): Use bridgingAutorelease.
539
540 2018-06-15  Basuke Suzuki  <Basuke.Suzuki@sony.com>
541
542         [WinCairo] Move unrelated features of WorkQueueWin into IPC::Connection
543         https://bugs.webkit.org/show_bug.cgi?id=186582
544
545         Remove unrelated feature from WorkQueueWin.
546
547         Reviewed by Brent Fulgham.
548
549         * wtf/PlatformWin.cmake: Remove WorkItemContext.*
550         * wtf/WorkQueue.cpp:
551         * wtf/WorkQueue.h:
552         * wtf/win/Win32Handle.h:
553         * wtf/win/WorkItemContext.cpp: Removed.
554         * wtf/win/WorkItemContext.h: Removed.
555         * wtf/win/WorkQueueWin.cpp:
556         (WTF::WorkQueue::handleCallback): Deleted.
557         (WTF::WorkQueue::registerHandle): Deleted.
558         (WTF::WorkQueue::unregisterAndCloseHandle): Deleted.
559         (WTF::WorkQueue::unregisterWaitAndDestroyItemSoon): Deleted.
560         (WTF::WorkQueue::unregisterWaitAndDestroyItemCallback): Deleted.
561
562 2018-06-13  Keith Miller  <keith_miller@apple.com>
563
564         AutomaticThread should have a way to provide a thread name
565         https://bugs.webkit.org/show_bug.cgi?id=186604
566
567         Reviewed by Filip Pizlo.
568
569         AutomaticThread now has a virtual method to get a name, which can be
570         overridden to provide a custom name to the thread.
571
572         * wtf/AutomaticThread.cpp:
573         (WTF::AutomaticThread::start):
574         * wtf/AutomaticThread.h:
575         * wtf/WorkerPool.cpp:
576
577 2018-06-11  Saam Barati  <sbarati@apple.com>
578
579         The NaturalLoops algorithm only works when the list of blocks in a loop is de-duplicated
580         https://bugs.webkit.org/show_bug.cgi?id=184829
581
582         Reviewed by Michael Saboff.
583
584         This patch switches NaturalLoops to walking over a block's predecessors
585         instead of successors when building the initial list of loops and their
586         headers. The algorithm broke down when we had a footer block with multiple
587         control flow edges pointing to the same header. This made the loop data
588         structure contain multiple entries for the same basic block. The algorithm
589         breaks down when we end up in this state, since it means our way of detecting
590         what loop is more inner is broken, since that check uses a loop's size.
591
592         * wtf/NaturalLoops.h:
593         (WTF::NaturalLoop::addBlock):
594         (WTF::NaturalLoops::NaturalLoops):
595
596 2018-06-11  Keith Rollin  <krollin@apple.com>
597
598         Add logging around internalError(const URL&)
599         https://bugs.webkit.org/show_bug.cgi?id=186369
600         <rdar://problem/40872046>
601
602         Reviewed by Brent Fulgham.
603
604         There are times when we receive bug reports where the user says that
605         they are simply shown a page saying an internal error occurred. To
606         help understand the circumstances of that error, add some logging to
607         internalError() in WebErrors.cpp. This logging logs at the Error level
608         that internalError() was called and then logs a backtrace.
609
610         * wtf/Assertions.cpp:
611         * wtf/Assertions.h:
612
613 2018-06-11  Michael Saboff  <msaboff@apple.com>
614
615         JavaScriptCore: Disable 32-bit JIT on Windows
616         https://bugs.webkit.org/show_bug.cgi?id=185989
617
618         Reviewed by Mark Lam.
619
620         Fixed the CLOOP so it can work when COMPUTED_GOTOs are not supported.
621
622         * wtf/Platform.h:
623
624 2018-06-09  Dan Bernstein  <mitz@apple.com>
625
626         [Xcode] Clean up and modernize some build setting definitions
627         https://bugs.webkit.org/show_bug.cgi?id=186463
628
629         Reviewed by Sam Weinig.
630
631         * Configurations/Base.xcconfig: Removed definition for macOS 10.11.
632         * Configurations/DebugRelease.xcconfig: Ditto.
633
634 2018-06-08  Darin Adler  <darin@apple.com>
635
636         [Cocoa] Remove all uses of NSAutoreleasePool as part of preparation for ARC
637         https://bugs.webkit.org/show_bug.cgi?id=186436
638
639         Reviewed by Anders Carlsson.
640
641         * WTF.xcodeproj/project.pbxproj: Added FoundationSPI.h.
642
643         * wtf/AutodrainedPool.h: Streamlined header a bit, added some comments.
644
645         * wtf/PlatformMac.cmake: Added FoundationSPI.h.
646
647         * wtf/cocoa/AutodrainedPool.cpp: Moved here from AutodrainedPoolMac.mm.
648         (WTF::AutodrainedPool::AutodrainedPool): Use objc_autoreleasePoolPush/Pop instead of
649         the NSAutoreleasePool class.
650         (WTF::AutodrainedPool::~AutodrainedPool): Ditto.
651
652          * wtf/spi/cocoa/FoundationSPI.h: Moved from Source/WebCore/PAL/pal/spi/cocoa/FoundationSPI.h.
653          Changed both include and declarations so it's the objc_autoreleasePoolPush/Pop instead
654          of the higher level NS functions that call them.
655
656 2018-06-08  Brian Burg  <bburg@apple.com>
657
658         [Cocoa] Web Automation: include browser name and version in listing for automation targets
659         https://bugs.webkit.org/show_bug.cgi?id=186204
660         <rdar://problem/36950423>
661
662         Reviewed by Darin Adler.
663
664         * wtf/spi/cf/CFBundleSPI.h: Add needed infoDictionary key values.
665
666 2018-06-07  Yusuke Suzuki  <utatane.tea@gmail.com>
667
668         [WTF] Add WorkerPool
669         https://bugs.webkit.org/show_bug.cgi?id=174569
670
671         Reviewed by Carlos Garcia Campos.
672
673         This patch adds WorkerPool, which is a thread pool that consists of AutomaticThread.
674         Since it is based on AutomaticThread, this WorkerPool can take `timeout`: once `timeout`
675         passes without any tasks, threads in WorkerPool will be destroyed.
676
677         We add shouldSleep handler to AutomaticThread to make destruction of threads in WorkerPool moderate.
678         Without this, all threads are destroyed at once after `timeout` passes.
679
680         * WTF.xcodeproj/project.pbxproj:
681         * wtf/AutomaticThread.cpp:
682         (WTF::AutomaticThread::AutomaticThread):
683         (WTF::AutomaticThread::start):
684         * wtf/AutomaticThread.h:
685         * wtf/CMakeLists.txt:
686         * wtf/WorkerPool.cpp: Added.
687         (WTF::WorkerPool::WorkerPool):
688         (WTF::WorkerPool::~WorkerPool):
689         (WTF::WorkerPool::shouldSleep):
690         (WTF::WorkerPool::postTask):
691         * wtf/WorkerPool.h: Added.
692         (WTF::WorkerPool::create):
693
694 2018-06-07  Chris Dumez  <cdumez@apple.com>
695
696         Add base class to get WeakPtrFactory member and avoid some boilerplate code
697         https://bugs.webkit.org/show_bug.cgi?id=186407
698
699         Reviewed by Brent Fulgham.
700
701         Add CanMakeWeakPtr base class to get WeakPtrFactory member and its getter, in
702         order to avoid some boilerplate code in every class needing a WeakPtrFactory.
703         This also gets rid of old-style createWeakPtr() methods in favor of the newer
704         makeWeakPtr().
705
706         * wtf/WeakPtr.h:
707         (WTF::CanMakeWeakPtr::weakPtrFactory const):
708         (WTF::CanMakeWeakPtr::weakPtrFactory):
709
710 2018-06-07  Tadeu Zagallo  <tzagallo@apple.com>
711
712         Don't try to allocate JIT memory if we don't have the JIT entitlement
713         https://bugs.webkit.org/show_bug.cgi?id=182605
714         <rdar://problem/38271229>
715
716         Reviewed by Mark Lam.
717
718         Move processHasEntitlement from Source/WebKit/Shared/mac/SandboxUtilities.h
719         into WTF so JavaScriptCore can also use it.
720
721         * WTF.xcodeproj/project.pbxproj:
722         * wtf/PlatformMac.cmake:
723         * wtf/cocoa/Entitlements.cpp:
724         (WTF::processHasEntitlement):
725         * wtf/cocoa/Entitlements.h:
726         * wtf/spi/cocoa/SecuritySPI.h:
727
728 2018-06-05  Darin Adler  <darin@apple.com>
729
730         [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers
731         https://bugs.webkit.org/show_bug.cgi?id=186324
732
733         Reviewed by Anders Carlsson.
734
735         * WTF.xcodeproj/project.pbxproj: Removed DispatchPtr.h.
736         * wtf/BlockPtr.h: Remove unneeded checks for __OBJC__. Added some use
737         of WTFMove.
738         * wtf/CMakeLists.txt: Removed DispatchPtr.h.
739         * wtf/DispatchPtr.h: Removed. We no longer need to support Mavericks.
740         * wtf/OSObjectPtr.h: Remove unneeded checks for __OBJC__. Added some use
741         of WTFMove.
742
743 2018-06-05  Darin Adler  <darin@apple.com>
744
745         [Cocoa] More preparation for ARC, focusing on WebKit and smart pointers
746         https://bugs.webkit.org/show_bug.cgi?id=186314
747
748         Reviewed by Anders Carlsson.
749
750         * wtf/BlockPtr.h: Put Block_copy/release calls into #if since they are
751         not needed under ARC.
752
753         * wtf/OSObjectPtr.h: Added constructor and assignment operator so we can
754         work with OS objects without adopting them.
755
756 2018-06-05  Darin Adler  <darin@apple.com>
757
758         [Cocoa] Improve some soft linking compatibility with ARC
759         https://bugs.webkit.org/show_bug.cgi?id=186309
760
761         Reviewed by Anders Carlsson.
762
763         * wtf/cocoa/SoftLinking.h: Updated the SOFT_LINK_CONSTANT family of
764         macros to use a const type. This increases the chance that they will
765         work without triggering ARC compilation errors since it's easier to
766         get the type right for read-only access than for read/write.
767
768 2018-06-05  Youenn Fablet  <youenn@apple.com>
769
770         ServiceWorker registration should store any script fetched through importScripts
771         https://bugs.webkit.org/show_bug.cgi?id=182444
772         <rdar://problem/37164835>
773
774         Reviewed by Chris Dumez.
775
776         * wtf/persistence/PersistentCoders.h:
777
778 2018-06-04  Darin Adler  <darin@apple.com>
779
780         [Cocoa] Improve smart pointer support for ARC (OSObjectPtr/DispatchPtr)
781         https://bugs.webkit.org/show_bug.cgi?id=186300
782
783         Reviewed by Daniel Bates.
784
785         * wtf/DispatchPtr.h: Don't call dispatch_retain or dispatch_release
786         since ARC will automatically do it for us in the same places we are
787         doing it here.
788
789         * wtf/OSObjectPtr.h:
790         (WTF::retainOSObject): Don't call os_retain since ARC will do it.
791         (WTF::releaseOSObject): Don't call os_release since ARC will do it.
792
793 2018-05-31  Commit Queue  <commit-queue@webkit.org>
794
795         Unreviewed, rolling out r232212.
796         https://bugs.webkit.org/show_bug.cgi?id=186153
797
798         broke build (Requested by alexchristensen on #webkit).
799
800         Reverted changeset:
801
802         "JavaScriptCore: Disable 32-bit JIT on Windows"
803         https://bugs.webkit.org/show_bug.cgi?id=185989
804         https://trac.webkit.org/changeset/232212
805
806 2018-05-30  Keith Miller  <keith_miller@apple.com>
807
808         LLInt get_by_id prototype caching doesn't properly handle changes
809         https://bugs.webkit.org/show_bug.cgi?id=186112
810
811         Reviewed by Filip Pizlo.
812
813         Mark some methods const.
814
815         * wtf/Bag.h:
816         (WTF::Bag::begin const):
817         (WTF::Bag::end const):
818         (WTF::Bag::unwrappedHead const):
819         (WTF::Bag::end): Deleted.
820         (WTF::Bag::unwrappedHead): Deleted.
821
822 2018-05-30  Alex Christensen  <achristensen@webkit.org>
823
824         Reduce String allocations
825         https://bugs.webkit.org/show_bug.cgi?id=186059
826
827         Reviewed by Darin Adler.
828
829         * wtf/text/StringView.cpp:
830         (WTF::convertASCIICase):
831         (WTF::StringView::convertToASCIILowercase const):
832         (WTF::StringView::convertToASCIIUppercase const):
833         * wtf/text/StringView.h:
834         * wtf/text/cf/StringViewCF.cpp:
835         (WTF::StringView::createCFString const):
836
837 2018-05-30  Dominik Infuehr  <dinfuehr@igalia.com>
838
839         [MIPS] Fix build on MIPS32r1
840         https://bugs.webkit.org/show_bug.cgi?id=185944
841
842         Reviewed by Yusuke Suzuki.
843
844         Added WTF_MIPS_ISA_REV_AT_LEAST to test for certain release or later.
845
846         * wtf/Platform.h:
847
848 2018-05-29  Tim Horton  <timothy_horton@apple.com>
849
850         Fix the build
851         https://bugs.webkit.org/show_bug.cgi?id=186078
852
853         Unreviewed build fix.
854
855         * wtf/Platform.h:
856
857 2018-05-29  Saam Barati  <sbarati@apple.com>
858
859         JSC should put bmalloc's scavenger into mini mode
860         https://bugs.webkit.org/show_bug.cgi?id=185988
861
862         Reviewed by Michael Saboff.
863
864         * wtf/FastMalloc.cpp:
865         (WTF::fastEnableMiniMode):
866         * wtf/FastMalloc.h:
867
868 2018-05-29  Yusuke Suzuki  <utatane.tea@gmail.com>
869
870         Unreviewed, follow-up after r232244
871         https://bugs.webkit.org/show_bug.cgi?id=186023
872
873         _BitScanReverse64 is available only in X86_64 and ARM.
874
875         * wtf/MathExtras.h:
876         (WTF::clz64):
877
878 2018-05-27  Yusuke Suzuki  <utatane.tea@gmail.com>
879
880         [WTF] Add clz32 / clz64 for MSVC
881         https://bugs.webkit.org/show_bug.cgi?id=186023
882
883         Reviewed by Daniel Bates.
884
885         This patch adds efficient implementations of clz32 and clz64 for MSVC.
886         While MSVC has _lzcnt intrinsic, it is only valid if the CPU has lzcnt instruction.
887         Instead of checking cpuid here, we just use _BitScanReverse and _BitScanReverse64.
888
889         * wtf/MathExtras.h:
890         (WTF::clz32):
891         (WTF::clz64):
892
893 2018-05-26  Filip Pizlo  <fpizlo@apple.com>
894
895         testair sometimes crashes due to races in initialization of ARC4RandomNumberGenerator
896         https://bugs.webkit.org/show_bug.cgi?id=186014
897
898         Reviewed by Yusuke Suzuki.
899         
900         testair launches a bunch of threads and the threads do B3 things that use random numbers.
901         Sometimes two threads will initialize the random number generator at the same time, because
902         that's what happens when you use static NeverDestroyed<>.
903         
904         This changes that code to use std::call_once to initialize the shared
905         ARC4RandomNumberGenerator.
906         
907         Also, this adds a diagnostic message to the lock's assertion. This assertion was the symptom
908         of the race, and knowing the state of the lock when the assertion fired gave a darn good clue
909         about what was going on: the lock's value was 0 at time of unlock, implying that another
910         thread reinitialized the lock to zero by rerunning the constructor.
911
912         * wtf/CryptographicallyRandomNumber.cpp:
913         * wtf/LockAlgorithmInlines.h:
914         (WTF::Hooks>::unlockSlow):
915
916 2018-05-25  Michael Saboff  <msaboff@apple.com>
917
918         JavaScriptCore: Disable 32-bit JIT on Windows
919         https://bugs.webkit.org/show_bug.cgi?id=185989
920
921         Reviewed by Saam Barati.
922
923         * wtf/Platform.h:
924
925 2018-05-24  Carlos Alberto Lopez Perez  <clopez@igalia.com>
926
927         [GTK][WPE] Memory pressure monitor doesn't reliable notify all the subprocesses
928         https://bugs.webkit.org/show_bug.cgi?id=184261
929
930         Reviewed by Carlos Garcia Campos.
931
932         Receive the memory pressure notifications from the UIProcess memory monitor via WebKit IPC.
933
934         * wtf/MemoryPressureHandler.h:
935         * wtf/linux/MemoryPressureHandlerLinux.cpp:
936         (WTF::MemoryPressureHandler::triggerMemoryPressureEvent):
937         (WTF::MemoryPressureHandler::install):
938         (WTF::MemoryPressureHandler::uninstall):
939
940 2018-05-24  Jiewen Tan  <jiewen_tan@apple.com>
941
942         Adopt SecKeyProxy SPI in certificate based challenge response code
943         https://bugs.webkit.org/show_bug.cgi?id=185848
944         <rdar://problem/34586181>
945
946         Reviewed by Alex Christensen.
947
948         Add a condition macro to determine if SecKeyProxy SPI exists.
949
950         * wtf/Platform.h:
951
952 2018-05-23  Eric Carlson  <eric.carlson@apple.com>
953
954         Avoid loading AVFoundation to check supported MIME types if possible
955         https://bugs.webkit.org/show_bug.cgi?id=185839
956         <rdar://problem/40182010>
957
958         Reviewed by Jer Noble.
959
960         * wtf/cocoa/SoftLinking.h: Add SOFT_LINK_FRAMEWORK_OPTIONAL_PREFLIGHT.
961
962 2018-05-23  Filip Pizlo  <fpizlo@apple.com>
963
964         Speed up JetStream/base64
965         https://bugs.webkit.org/show_bug.cgi?id=185914
966
967         Reviewed by Michael Saboff.
968         
969         Make Vector<>::append ALWAYS_INLINE.
970
971         * wtf/Vector.h:
972         (WTF::Vector::append):
973         (WTF::minCapacity>::expandCapacity):
974         (WTF::minCapacity>::append):
975         (WTF::minCapacity>::tryAppend):
976
977 2018-05-23  Michael Saboff  <msaboff@apple.com>
978
979         Date.parse() doesn't properly handle input outside of ES Spec limits
980         https://bugs.webkit.org/show_bug.cgi?id=185868
981
982         Reviewed by Mark Lam.
983
984         Clamped date creation to +/-100,000,000 days relative to midnight at the beginning
985         of 01 January, 1970 UTC as per ecma262/#sec-time-values-and-time-range and
986         ecma262/#sec-date-time-string-format.
987
988         * wtf/DateMath.cpp:
989         (WTF::ymdhmsToSeconds):
990         (WTF::parseES5DateFromNullTerminatedCharacters):
991
992 2018-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>
993
994         Prohibit shrinking the FastBitVector
995         https://bugs.webkit.org/show_bug.cgi?id=181020
996
997         Reviewed by Oliver Hunt.
998
999         Prohibit shrinking the FastBitVector. It's not prepared for this and the current usage does
1000         not require it.
1001
1002         * wtf/FastBitVector.cpp:
1003         (WTF::FastBitVectorWordOwner::resizeSlow):
1004
1005 2018-05-22  Mark Lam  <mark.lam@apple.com>
1006
1007         StringImpl utf8 conversion should not fail silently.
1008         https://bugs.webkit.org/show_bug.cgi?id=185888
1009         <rdar://problem/40464506>
1010
1011         Reviewed by Filip Pizlo.
1012
1013         * WTF.xcodeproj/project.pbxproj:
1014         * wtf/CMakeLists.txt:
1015         * wtf/PrintStream.cpp:
1016         (WTF::printExpectedCStringHelper):
1017         (WTF::printInternal):
1018         * wtf/text/StringImpl.cpp:
1019         (WTF::StringImpl::utf8Impl):
1020         (WTF::StringImpl::utf8ForCharacters):
1021         (WTF::StringImpl::tryUtf8ForRange const):
1022         (WTF::StringImpl::tryUtf8 const):
1023         (WTF::StringImpl::utf8 const):
1024         (WTF::StringImpl::utf8ForRange const): Deleted.
1025         * wtf/text/StringImpl.h:
1026         * wtf/text/StringView.cpp:
1027         (WTF::StringView::tryUtf8 const):
1028         (WTF::StringView::utf8 const):
1029         * wtf/text/StringView.h:
1030         * wtf/text/UTF8ConversionError.h: Added.
1031         * wtf/text/WTFString.cpp:
1032         (WTF::String::tryUtf8 const):
1033         (WTF::String::utf8 const):
1034         * wtf/text/WTFString.h:
1035
1036 2018-05-22  Chris Dumez  <cdumez@apple.com>
1037
1038         Regression(AsyncPolicyDelegates): Box.app login Window is blank
1039         https://bugs.webkit.org/show_bug.cgi?id=185832
1040         <rdar://problem/40307871>
1041
1042         Reviewed by Geoffrey Garen.
1043
1044         Moved WeakObjCPtr.h from WebKit2 to WTF with RetainPtr.h, so that it can be used
1045         in WebKitLegacy code.
1046
1047         * WTF.xcodeproj/project.pbxproj:
1048         * wtf/WeakObjCPtr.h: Renamed from Source/WebKit/Shared/mac/WeakObjCPtr.h.
1049
1050 2018-05-22  Filip Pizlo  <fpizlo@apple.com>
1051
1052         Get rid of TLCs
1053         https://bugs.webkit.org/show_bug.cgi?id=185846
1054
1055         Rubber stamped by Geoffrey Garen.
1056
1057         * wtf/Platform.h:
1058
1059 2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>
1060
1061         Unreviewed, rolling out r232052.
1062
1063         Breaks internal builds.
1064
1065         Reverted changeset:
1066
1067         "Use more C++17"
1068         https://bugs.webkit.org/show_bug.cgi?id=185176
1069         https://trac.webkit.org/changeset/232052
1070
1071 2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>
1072
1073         Use more C++17
1074         https://bugs.webkit.org/show_bug.cgi?id=185176
1075
1076         Reviewed by JF Bastien.
1077
1078         * Configurations/Base.xcconfig:
1079         * wtf/StdLibExtras.h:
1080
1081 2018-05-18  Filip Pizlo  <fpizlo@apple.com>
1082
1083         DFG should inline InstanceOf ICs
1084         https://bugs.webkit.org/show_bug.cgi?id=185695
1085
1086         Reviewed by Yusuke Suzuki.
1087         
1088         I found myself needing a way to represent bottom/false/true/top, so I created it.
1089
1090         * WTF.xcodeproj/project.pbxproj:
1091         * wtf/BooleanLattice.h: Added.
1092         (WTF::lubBooleanLattice):
1093         (WTF::printInternal):
1094         * wtf/CMakeLists.txt:
1095
1096 2018-05-17  Jiewen Tan  <jiewen_tan@apple.com>
1097
1098         Convert CertificateInfo into Credential in UI Process instead of Networking Process
1099         https://bugs.webkit.org/show_bug.cgi?id=185662
1100         <rdar://problem/40275561>
1101
1102         Reviewed by Alex Christensen.
1103
1104         Remove marco HAVE_SEC_IDENTITY since it is no longer useful.
1105
1106         * wtf/Platform.h:
1107
1108 2018-05-17  Zalan Bujtas  <zalan@apple.com>
1109
1110         Add ASSERT_NOT_IMPLEMENTED_YET() macro
1111         https://bugs.webkit.org/show_bug.cgi?id=185713
1112
1113         Reviewed by Antti Koivisto.
1114
1115         To mark unimplemented code paths.
1116
1117         * wtf/Assertions.cpp:
1118         * wtf/Assertions.h:
1119
1120 2018-05-16  Andy VanWagoner  <andy@vanwagoner.family>
1121
1122         Add support for Intl NumberFormat formatToParts
1123         https://bugs.webkit.org/show_bug.cgi?id=185375
1124
1125         Reviewed by Yusuke Suzuki.
1126
1127         Add flag for NumberFormat formatToParts.
1128
1129         * wtf/FeatureDefines.h:
1130
1131 2018-05-16  Yusuke Suzuki  <utatane.tea@gmail.com>
1132
1133         Unreviewed, follow-up after r231762
1134         https://bugs.webkit.org/show_bug.cgi?id=185589
1135
1136         Addresses darin's suggestions to improve timeClip.
1137
1138         * wtf/DateMath.cpp:
1139         (WTF::timeClip):
1140
1141 2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
1142
1143         [Win] Use C++17 in MSVC
1144         https://bugs.webkit.org/show_bug.cgi?id=185232
1145
1146         Reviewed by Alex Christensen.
1147
1148         Disable some WebKit defined C++17 features for MSVC.
1149
1150         * wtf/StdLibExtras.h:
1151
1152 2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>
1153
1154         [JSC] timeClip(-0) should produce +0
1155         https://bugs.webkit.org/show_bug.cgi?id=185589
1156
1157         Reviewed by Saam Barati.
1158
1159         According to the spec[1], timeClip(-0) should produce +0.
1160         We achieve this by adding 0.0 to the result of trunc(t).
1161
1162         [1]: https://tc39.github.io/ecma262/#sec-timeclip
1163
1164         * wtf/DateMath.cpp:
1165         (WTF::timeClip):
1166
1167 2018-05-13  Geoffrey Garen  <ggaren@apple.com>
1168
1169         Simplified Mach exception handling
1170         https://bugs.webkit.org/show_bug.cgi?id=185595
1171
1172         Reviewed by Keith Miller.
1173
1174         * wtf/threads/Signals.cpp:
1175         (WTF::startMachExceptionHandlerThread): Use mach_msg_server_once instead
1176         of duplicating its functionality. Separate error handling logic from
1177         program logic to help program logic stand out. Use
1178         DISPATCH_TARGET_QUEUE_* instead of explicitly fetching a queue.
1179
1180         Also, we don't need the high priority queue. The kernel donates a
1181         priority voucher from the exception thread to the receiver thread, and
1182         mach_msg_server_once takes care to forward that voucher.
1183
1184 2018-05-14  Zan Dobersek  <zdobersek@igalia.com>
1185
1186         [GTK] REGRESSION(r231170) Build broken with Clang 5.0
1187         https://bugs.webkit.org/show_bug.cgi?id=185198
1188
1189         Reviewed by Michael Catanzaro.
1190
1191         * wtf/Compiler.h:
1192         * wtf/Forward.h: Delete the std::optional forward declaration that is
1193         potentially incompatible with definition provided by the standard library.
1194         * wtf/Hasher.h:
1195         * wtf/StdLibExtras.h: In addition to the remaining C++14 configurations,
1196         also use custom std::in_place_t implementation when compiling with
1197         libstdc++ 6.x, which doesn't provide its own.
1198
1199 2018-05-13  Filip Pizlo  <fpizlo@apple.com>
1200
1201         Disable pointer poisoning
1202         https://bugs.webkit.org/show_bug.cgi?id=185586
1203
1204         Reviewed by Yusuke Suzuki.
1205         
1206         This seems like a 0.3% speed-up on microbenchmarks. It seems like it may be a small speed-up on
1207         other tests, too.
1208
1209         * wtf/Platform.h:
1210
1211 2018-05-11  Chris Dumez  <cdumez@apple.com>
1212
1213         REGRESSION (async policy delegate): Revoking an object URL immediately after triggering download breaks file download
1214         https://bugs.webkit.org/show_bug.cgi?id=185531
1215         <rdar://problem/39909589>
1216
1217         Reviewed by Geoffrey Garen.
1218
1219         Add a default constructor for CompletionHandlerCallingScope, for convenience.
1220
1221         * wtf/CompletionHandler.h:
1222
1223 2018-05-11  Saam Barati  <sbarati@apple.com>
1224
1225         Don't allocate value profiles when the JIT is disabled
1226         https://bugs.webkit.org/show_bug.cgi?id=185525
1227
1228         Reviewed by Michael Saboff.
1229
1230         * wtf/RefCountedArray.h:
1231         (WTF::RefCountedArray::RefCountedArray):
1232
1233 2018-05-10  Tim Horton  <timothy_horton@apple.com>
1234
1235         Fix the build after r231393
1236         https://bugs.webkit.org/show_bug.cgi?id=185519
1237         <rdar://problem/40131741>
1238
1239         Reviewed by Simon Fraser.
1240
1241         * wtf/Platform.h:
1242
1243 2018-05-09  Michael Catanzaro  <mcatanzaro@igalia.com>
1244
1245         [WPE] Build cleanly with GCC 8 and ICU 60
1246         https://bugs.webkit.org/show_bug.cgi?id=185462
1247
1248         Reviewed by Carlos Alberto Lopez Perez.
1249
1250         * wtf/HashTable.h:
1251         (WTF::HashTableBucketInitializer<true>::initialize): Since -Wclass-memaccess warning. This
1252         is probably safe enough, since it's for an empty bucket.
1253         * wtf/StdLibExtras.h:
1254         (WTF::bitwise_cast): Silence -Wclass-memaccess as we use type traits to ensure safety here.
1255         * wtf/Vector.h: Ditto, all uses are safe.
1256         * wtf/glib/WTFGType.h: Silence -Wcast-function-type.
1257
1258 2018-05-09  Yusuke Suzuki  <utatane.tea@gmail.com>
1259
1260         [ARMv7] Drop ARMv7 disassembler in favor of capstone
1261         https://bugs.webkit.org/show_bug.cgi?id=185423
1262
1263         Reviewed by Michael Catanzaro.
1264
1265         Remove USE_ARMV7_DISASSEMBLER. Just use Capstone.
1266
1267         * wtf/Platform.h:
1268
1269 2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1270
1271         [JSC][GTK][JSCONLY] Use capstone disassembler
1272         https://bugs.webkit.org/show_bug.cgi?id=185283
1273
1274         Reviewed by Michael Catanzaro.
1275
1276         Add USE_CAPSTONE used for MIPS and ARM.
1277
1278         * wtf/Platform.h:
1279
1280 2018-05-09  Antti Koivisto  <antti@apple.com>
1281
1282         Add OptionSet::operator& and operator bool
1283         https://bugs.webkit.org/show_bug.cgi?id=185306
1284
1285         Reviewed by Anders Carlsson.
1286
1287         This is primarily to allow writing
1288
1289             if (options & Option:A)
1290
1291         instead of
1292
1293             if (options.contains(Option:A))
1294
1295         This is consistent with other OptionSet operators.
1296
1297         * wtf/OptionSet.h:
1298         (WTF::OptionSet::operator bool):
1299         (WTF::OptionSet::operator&):
1300
1301         Also remove T versions of operator| and operator-, they are not needed due to
1302         implicit conversion from T to OptionSet<T>.
1303
1304 2018-05-06  Filip Pizlo  <fpizlo@apple.com>
1305
1306         InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values
1307         https://bugs.webkit.org/show_bug.cgi?id=185365
1308
1309         Reviewed by Saam Barati.
1310         
1311         Fix some inlining goof-ups.
1312         
1313         Rolling back in after fixing cloop build.
1314
1315         * wtf/TinyPtrSet.h:
1316         (WTF::TinyPtrSet::add):
1317         (WTF::TinyPtrSet::merge):
1318         (WTF::TinyPtrSet::addOutOfLine):
1319         (WTF::TinyPtrSet::mergeOtherOutOfLine):
1320
1321 2018-05-08  Dean Jackson  <dino@apple.com>
1322
1323         Use thumbnails in System Previews
1324         https://bugs.webkit.org/show_bug.cgi?id=185397
1325         <rdar://problem/40039376>
1326
1327         Reviewed by Jon Lee.
1328
1329         SYSTEM_PREVIEW is only available on some platforms.
1330
1331         * wtf/Platform.h:
1332
1333 2018-05-08  Ryan Haddad  <ryanhaddad@apple.com>
1334
1335         Unreviewed, rolling out r231468.
1336
1337         Broke the CLoop build
1338
1339         Reverted changeset:
1340
1341         "InPlaceAbstractState::beginBasicBlock shouldn't have to clear
1342         any abstract values"
1343         https://bugs.webkit.org/show_bug.cgi?id=185365
1344         https://trac.webkit.org/changeset/231468
1345
1346 2018-05-07  Yusuke Suzuki  <utatane.tea@gmail.com>
1347
1348         [JSCONLY] Enable ARMv7 DFG
1349         https://bugs.webkit.org/show_bug.cgi?id=185415
1350
1351         Reviewed by Mark Lam.
1352
1353         Enable ARMv7 DFG JIT by default on Linux and FreeBSD.
1354
1355         * wtf/Platform.h:
1356
1357 2018-05-06  Filip Pizlo  <fpizlo@apple.com>
1358
1359         InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values
1360         https://bugs.webkit.org/show_bug.cgi?id=185365
1361
1362         Reviewed by Saam Barati.
1363         
1364         Fix some inlining goof-ups.
1365
1366         * wtf/TinyPtrSet.h:
1367         (WTF::TinyPtrSet::add):
1368         (WTF::TinyPtrSet::merge):
1369         (WTF::TinyPtrSet::addOutOfLine):
1370         (WTF::TinyPtrSet::mergeOtherOutOfLine):
1371
1372 2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1373
1374         [WTF] Embed default atomic string table in Thread
1375         https://bugs.webkit.org/show_bug.cgi?id=185349
1376
1377         Reviewed by Darin Adler.
1378
1379         Do not need to allocate AtomicStringTable separate from Thread
1380         since the table's lifetime is completely the same as Thread.
1381
1382         This patch just embeds it as a data member of Thread.
1383
1384         * wtf/Threading.cpp:
1385         (WTF::Thread::initializeInThread):
1386         (WTF::Thread::didExit):
1387         * wtf/Threading.h:
1388         * wtf/text/AtomicStringTable.cpp:
1389         (WTF::AtomicStringTable::create): Deleted.
1390         (WTF::AtomicStringTable::destroy): Deleted.
1391         * wtf/text/AtomicStringTable.h:
1392
1393 2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>
1394
1395         [WTF] Use static initializers for WTF::Mutex and WTF::ThreadCondition
1396         https://bugs.webkit.org/show_bug.cgi?id=185361
1397
1398         Reviewed by Sam Weinig.
1399
1400         Use static initializers for WTF::Mutex and WTF::ThreadCondition to make
1401         constructors of them simple and constexpr.
1402
1403         * wtf/ThreadingPrimitives.h:
1404         * wtf/ThreadingPthreads.cpp:
1405         (WTF::Mutex::Mutex): Deleted.
1406         (WTF::ThreadCondition::ThreadCondition): Deleted.
1407         * wtf/ThreadingWin.cpp:
1408         (WTF::Mutex::Mutex): Deleted.
1409         (WTF::ThreadCondition::ThreadCondition): Deleted.
1410
1411 2018-05-04  Tim Horton  <timothy_horton@apple.com>
1412
1413         Shift to a lower-level framework for simplifying URLs
1414         https://bugs.webkit.org/show_bug.cgi?id=185334
1415
1416         Reviewed by Dan Bernstein.
1417
1418         * wtf/Platform.h:
1419
1420 2018-05-04  Eric Carlson  <eric.carlson@apple.com>
1421
1422         Log media time range as JSON
1423         https://bugs.webkit.org/show_bug.cgi?id=185321
1424         <rdar://problem/39986746>
1425
1426         Reviewed by Youenn Fablet.
1427
1428         * wtf/MediaTime.cpp:
1429         (WTF::toJSONStringInternal): Extract guts of MediaTime::toJSONString to this static function
1430         so it can be used by MediaTimeRange::toJSONString as well.
1431         (WTF::MediaTime::toJSONString const):
1432         (WTF::MediaTimeRange::toJSONString const):
1433         * wtf/MediaTime.h:
1434
1435 2018-05-04  Antti Koivisto  <antti@apple.com>
1436
1437         OptionsSet initializer list constructor should be constexpr
1438         https://bugs.webkit.org/show_bug.cgi?id=185298
1439
1440         Reviewed by Anders Carlsson.
1441
1442         * wtf/OptionSet.h:
1443         (WTF::OptionSet::OptionSet):
1444
1445 2018-05-03  Yusuke Suzuki  <utatane.tea@gmail.com>
1446
1447         Use default std::optional if it is provided
1448         https://bugs.webkit.org/show_bug.cgi?id=185159
1449
1450         Reviewed by Michael Catanzaro.
1451
1452         * wtf/Expected.h:
1453         * wtf/Optional.h:
1454         Do not use <optional> for clang currently.
1455         (WTF::valueOrCompute):
1456
1457 2018-05-03  Filip Pizlo  <fpizlo@apple.com>
1458
1459         Strings should not be allocated in a gigacage
1460         https://bugs.webkit.org/show_bug.cgi?id=185218
1461
1462         Reviewed by Saam Barati.
1463         
1464         * WTF.xcodeproj/project.pbxproj:
1465         * wtf/Deque.h:
1466         * wtf/Forward.h:
1467         * wtf/Gigacage.h:
1468         (Gigacage::name):
1469         (Gigacage::basePtr):
1470         * wtf/Vector.h:
1471         (WTF::VectorBufferBase::allocateBuffer):
1472         (WTF::VectorBufferBase::tryAllocateBuffer):
1473         (WTF::VectorBufferBase::reallocateBuffer):
1474         (WTF::VectorBufferBase::deallocateBuffer):
1475         (WTF::minCapacity>::Vector):
1476         (WTF::=):
1477         (WTF::minCapacity>::contains const):
1478         (WTF::minCapacity>::findMatching const):
1479         (WTF::minCapacity>::find const):
1480         (WTF::minCapacity>::reverseFind const):
1481         (WTF::minCapacity>::appendIfNotContains):
1482         (WTF::minCapacity>::fill):
1483         (WTF::minCapacity>::appendRange):
1484         (WTF::minCapacity>::expandCapacity):
1485         (WTF::minCapacity>::tryExpandCapacity):
1486         (WTF::minCapacity>::resize):
1487         (WTF::minCapacity>::resizeToFit):
1488         (WTF::minCapacity>::shrink):
1489         (WTF::minCapacity>::grow):
1490         (WTF::minCapacity>::asanSetInitialBufferSizeTo):
1491         (WTF::minCapacity>::asanSetBufferSizeToFullCapacity):
1492         (WTF::minCapacity>::asanBufferSizeWillChangeTo):
1493         (WTF::minCapacity>::reserveCapacity):
1494         (WTF::minCapacity>::tryReserveCapacity):
1495         (WTF::minCapacity>::reserveInitialCapacity):
1496         (WTF::minCapacity>::shrinkCapacity):
1497         (WTF::minCapacity>::append):
1498         (WTF::minCapacity>::tryAppend):
1499         (WTF::minCapacity>::constructAndAppend):
1500         (WTF::minCapacity>::tryConstructAndAppend):
1501         (WTF::minCapacity>::appendSlowCase):
1502         (WTF::minCapacity>::constructAndAppendSlowCase):
1503         (WTF::minCapacity>::tryConstructAndAppendSlowCase):
1504         (WTF::minCapacity>::uncheckedAppend):
1505         (WTF::minCapacity>::appendVector):
1506         (WTF::minCapacity>::insert):
1507         (WTF::minCapacity>::insertVector):
1508         (WTF::minCapacity>::remove):
1509         (WTF::minCapacity>::removeFirst):
1510         (WTF::minCapacity>::removeFirstMatching):
1511         (WTF::minCapacity>::removeAll):
1512         (WTF::minCapacity>::removeAllMatching):
1513         (WTF::minCapacity>::reverse):
1514         (WTF::minCapacity>::map const):
1515         (WTF::minCapacity>::releaseBuffer):
1516         (WTF::minCapacity>::checkConsistency):
1517         (WTF::swap):
1518         (WTF::operator==):
1519         (WTF::operator!=):
1520         (WTF::removeRepeatedElements):
1521         (WTF::Malloc>::Vector): Deleted.
1522         (WTF::Malloc>::contains const): Deleted.
1523         (WTF::Malloc>::findMatching const): Deleted.
1524         (WTF::Malloc>::find const): Deleted.
1525         (WTF::Malloc>::reverseFind const): Deleted.
1526         (WTF::Malloc>::appendIfNotContains): Deleted.
1527         (WTF::Malloc>::fill): Deleted.
1528         (WTF::Malloc>::appendRange): Deleted.
1529         (WTF::Malloc>::expandCapacity): Deleted.
1530         (WTF::Malloc>::tryExpandCapacity): Deleted.
1531         (WTF::Malloc>::resize): Deleted.
1532         (WTF::Malloc>::resizeToFit): Deleted.
1533         (WTF::Malloc>::shrink): Deleted.
1534         (WTF::Malloc>::grow): Deleted.
1535         (WTF::Malloc>::asanSetInitialBufferSizeTo): Deleted.
1536         (WTF::Malloc>::asanSetBufferSizeToFullCapacity): Deleted.
1537         (WTF::Malloc>::asanBufferSizeWillChangeTo): Deleted.
1538         (WTF::Malloc>::reserveCapacity): Deleted.
1539         (WTF::Malloc>::tryReserveCapacity): Deleted.
1540         (WTF::Malloc>::reserveInitialCapacity): Deleted.
1541         (WTF::Malloc>::shrinkCapacity): Deleted.
1542         (WTF::Malloc>::append): Deleted.
1543         (WTF::Malloc>::tryAppend): Deleted.
1544         (WTF::Malloc>::constructAndAppend): Deleted.
1545         (WTF::Malloc>::tryConstructAndAppend): Deleted.
1546         (WTF::Malloc>::appendSlowCase): Deleted.
1547         (WTF::Malloc>::constructAndAppendSlowCase): Deleted.
1548         (WTF::Malloc>::tryConstructAndAppendSlowCase): Deleted.
1549         (WTF::Malloc>::uncheckedAppend): Deleted.
1550         (WTF::Malloc>::appendVector): Deleted.
1551         (WTF::Malloc>::insert): Deleted.
1552         (WTF::Malloc>::insertVector): Deleted.
1553         (WTF::Malloc>::remove): Deleted.
1554         (WTF::Malloc>::removeFirst): Deleted.
1555         (WTF::Malloc>::removeFirstMatching): Deleted.
1556         (WTF::Malloc>::removeAll): Deleted.
1557         (WTF::Malloc>::removeAllMatching): Deleted.
1558         (WTF::Malloc>::reverse): Deleted.
1559         (WTF::Malloc>::map const): Deleted.
1560         (WTF::Malloc>::releaseBuffer): Deleted.
1561         (WTF::Malloc>::checkConsistency): Deleted.
1562         * wtf/text/AtomicStringImpl.h:
1563         * wtf/text/CString.cpp:
1564         (WTF::CStringBuffer::createUninitialized):
1565         * wtf/text/CString.h:
1566         * wtf/text/StringBuffer.h:
1567         (WTF::StringBuffer::StringBuffer):
1568         (WTF::StringBuffer::~StringBuffer):
1569         (WTF::StringBuffer::resize):
1570         * wtf/text/StringImpl.cpp:
1571         (WTF::StringImpl::~StringImpl):
1572         (WTF::StringImpl::destroy):
1573         (WTF::StringImpl::createUninitializedInternalNonEmpty):
1574         (WTF::StringImpl::reallocateInternal):
1575         (WTF::StringImpl::releaseAssertCaged const): Deleted.
1576         * wtf/text/StringImpl.h:
1577         (WTF::StringImpl::createSubstringSharingImpl):
1578         (WTF::StringImpl::tryCreateUninitialized):
1579         (WTF::StringImpl::adopt):
1580         (WTF::StringImpl::assertCaged const): Deleted.
1581         * wtf/text/StringMalloc.cpp: Removed.
1582         * wtf/text/StringMalloc.h: Removed.
1583         * wtf/text/StringVector.h: Removed.
1584         * wtf/text/SymbolImpl.h:
1585         * wtf/text/UniquedStringImpl.h:
1586         * wtf/text/WTFString.h:
1587         (WTF::String::adopt):
1588         (WTF::String::assertCaged const): Deleted.
1589         (WTF::String::releaseAssertCaged const): Deleted.
1590
1591 2018-05-03  Wenson Hsieh  <wenson_hsieh@apple.com>
1592
1593         Ads in NYTimes app are shifted downwards by the scroll view's top content inset
1594         https://bugs.webkit.org/show_bug.cgi?id=185251
1595         <rdar://problem/39062357>
1596
1597         Reviewed by Tim Horton.
1598
1599         Add a new DYLD_IOS_VERSION macro definition for previous or non-internal SDKs.
1600
1601         * wtf/spi/darwin/dyldSPI.h:
1602
1603 2018-05-03  Ryan Haddad  <ryanhaddad@apple.com>
1604
1605         Unreviewed, rolling out r231197.
1606
1607         The test added with this change crashes on the 32-bit JSC bot.
1608
1609         Reverted changeset:
1610
1611         "Correctly detect string overflow when using the 'Function'
1612         constructor"
1613         https://bugs.webkit.org/show_bug.cgi?id=184883
1614         https://trac.webkit.org/changeset/231197
1615
1616 2018-05-03  Commit Queue  <commit-queue@webkit.org>
1617
1618         Unreviewed, rolling out r231223 and r231288.
1619         https://bugs.webkit.org/show_bug.cgi?id=185256
1620
1621         The change in r231223 breaks internal builds, and r231288 is a
1622         dependent change. (Requested by ryanhaddad on #webkit).
1623
1624         Reverted changesets:
1625
1626         "Use default std::optional if it is provided"
1627         https://bugs.webkit.org/show_bug.cgi?id=185159
1628         https://trac.webkit.org/changeset/231223
1629
1630         "Use pointer instead of
1631         std::optional<std::reference_wrapper<>>"
1632         https://bugs.webkit.org/show_bug.cgi?id=185186
1633         https://trac.webkit.org/changeset/231288
1634
1635 2018-05-02  Commit Queue  <commit-queue@webkit.org>
1636
1637         Unreviewed, rolling out r231251.
1638         https://bugs.webkit.org/show_bug.cgi?id=185229
1639
1640         __cpp_lib_optional should be used after including <optional>
1641         since it is defined in <optional> (Requested by yusukesuzuki
1642         on #webkit).
1643
1644         Reverted changeset:
1645
1646         "Follow-up build fix for r231223"
1647         https://bugs.webkit.org/show_bug.cgi?id=185159
1648         https://trac.webkit.org/changeset/231251
1649
1650 2018-05-02  Jonathan Bedard  <jbedard@apple.com>
1651
1652         Follow-up build fix for r231223
1653         https://bugs.webkit.org/show_bug.cgi?id=185159
1654         <rdar://problem/39891074>
1655
1656         Unreviewed build fix.
1657
1658         We should be consistent about when we include <optional> vs define our own.
1659
1660         * wtf/Optional.h:
1661
1662 2018-05-02  Jer Noble  <jer.noble@apple.com>
1663
1664         Enable HAVE_AVKIT for the MINIMAL_SIMULATOR
1665         https://bugs.webkit.org/show_bug.cgi?id=185183
1666
1667         Reviewed by Daniel Bates.
1668
1669         * wtf/Platform.h:
1670
1671 2018-05-01  Yusuke Suzuki  <utatane.tea@gmail.com>
1672
1673         Use default std::optional if it is provided
1674         https://bugs.webkit.org/show_bug.cgi?id=185159
1675
1676         Reviewed by JF Bastien.
1677
1678         Now C++17 flag is enabled. It means that any standard libraries can use <optional> internally.
1679         If we define std::optional regardless of the existence of the standard library's <optional>,
1680         it causes compile errors. For example, in GCC 7 (specifically GCC 7.3.0) environment,
1681         <optional> is included in <unordered_map>.
1682         We do not define std::optional in WebKit side if <optional> is offered.
1683
1684         And we also remove std::optional<T&> use since this is not accepted in C++17. Use
1685         std::optional<std::reference_wrapper<T>> instead.
1686
1687         * wtf/Expected.h:
1688         constexpr does not mean const in C++17.
1689
1690         * wtf/Optional.h:
1691         Do not define std::optional if <optional> is provided.
1692
1693         (WTF::valueOrCompute):
1694
1695 2018-05-01  Robin Morisset  <rmorisset@apple.com>
1696
1697         Correctly detect string overflow when using the 'Function' constructor
1698         https://bugs.webkit.org/show_bug.cgi?id=184883
1699         <rdar://problem/36320331>
1700
1701         Reviewed by Filip Pizlo.
1702
1703         I added new tryAppend methods alongside the old append methods in StringBuilder, that return a boolean (true means success, false means an overflow happened).
1704         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.
1705
1706         * wtf/text/StringBuilder.cpp:
1707         (WTF::StringBuilder::allocateBufferUpConvert):
1708         (WTF::StringBuilder::tryAllocateBufferUpConvert):
1709         (WTF::StringBuilder::appendUninitialized):
1710         (WTF::StringBuilder::append):
1711         (WTF::StringBuilder::tryAppend):
1712         * wtf/text/StringBuilder.h:
1713         (WTF::StringBuilder::tryAppend):
1714         (WTF::StringBuilder::append):
1715         (WTF::StringBuilder::tryAppendLiteral):
1716         * wtf/text/StringBuilderJSON.cpp:
1717         (WTF::StringBuilder::appendQuotedJSONString):
1718         (WTF::StringBuilder::tryAppendQuotedJSONString):
1719
1720 2018-04-30  Mark Lam  <mark.lam@apple.com>
1721
1722         Apply PtrTags to the MetaAllocator and friends.
1723         https://bugs.webkit.org/show_bug.cgi?id=185110
1724         <rdar://problem/39533895>
1725
1726         Reviewed by Saam Barati.
1727
1728         1. Introduce a MetaAllocatorPtr smart pointer to do pointer tagging.
1729         2. Use MetaAllocatorPtr in MetaAllocator and MetaAllocatorHandle.
1730
1731         * WTF.xcodeproj/project.pbxproj:
1732         * wtf/CMakeLists.txt:
1733         * wtf/MetaAllocator.cpp:
1734         (WTF::MetaAllocator::release):
1735         (WTF::MetaAllocatorHandle::MetaAllocatorHandle):
1736         (WTF::MetaAllocatorHandle::shrink):
1737         (WTF::MetaAllocatorHandle::dump const):
1738         (WTF::MetaAllocator::allocate):
1739         (WTF::MetaAllocator::findAndRemoveFreeSpace):
1740         (WTF::MetaAllocator::addFreeSpaceFromReleasedHandle):
1741         (WTF::MetaAllocator::addFreshFreeSpace):
1742         (WTF::MetaAllocator::debugFreeSpaceSize):
1743         (WTF::MetaAllocator::addFreeSpace):
1744         (WTF::MetaAllocator::allocFreeSpaceNode):
1745         * wtf/MetaAllocator.h:
1746         (WTF::MetaAllocatorTracker::find):
1747         (WTF::MetaAllocator::FreeSpaceNode::FreeSpaceNode):
1748         (WTF::MetaAllocator::FreeSpaceNode::sizeInBytes):
1749         (WTF::MetaAllocator::FreeSpaceNode::key):
1750         * wtf/MetaAllocatorHandle.h:
1751         (WTF::MetaAllocatorHandle::start const):
1752         (WTF::MetaAllocatorHandle::end const):
1753         (WTF::MetaAllocatorHandle::startAsInteger const):
1754         (WTF::MetaAllocatorHandle::endAsInteger const):
1755         (WTF::MetaAllocatorHandle::sizeInBytes const):
1756         (WTF::MetaAllocatorHandle::containsIntegerAddress const):
1757         (WTF::MetaAllocatorHandle::key):
1758         * wtf/MetaAllocatorPtr.h: Added.
1759         (WTF::MetaAllocatorPtr::MetaAllocatorPtr):
1760         (WTF::MetaAllocatorPtr:: const):
1761         (WTF::MetaAllocatorPtr::operator bool const):
1762         (WTF::MetaAllocatorPtr::operator! const):
1763         (WTF::MetaAllocatorPtr::operator== const):
1764         (WTF::MetaAllocatorPtr::operator!= const):
1765         (WTF::MetaAllocatorPtr::operator+ const):
1766         (WTF::MetaAllocatorPtr::operator- const):
1767         (WTF::MetaAllocatorPtr::operator+=):
1768         (WTF::MetaAllocatorPtr::operator-=):
1769         (WTF::MetaAllocatorPtr::isEmptyValue const):
1770         (WTF::MetaAllocatorPtr::isDeletedValue const):
1771         (WTF::MetaAllocatorPtr::hash const):
1772         (WTF::MetaAllocatorPtr::emptyValue):
1773         (WTF::MetaAllocatorPtr::deletedValue):
1774         (WTF::MetaAllocatorPtrHash::hash):
1775         (WTF::MetaAllocatorPtrHash::equal):
1776         * wtf/PtrTag.h:
1777
1778 2018-04-30  JF Bastien  <jfbastien@apple.com>
1779
1780         Use some C++17 features
1781         https://bugs.webkit.org/show_bug.cgi?id=185135
1782
1783         Reviewed by Alex Christensen.
1784
1785         * wtf/StdLibExtras.h: libstdc++ doesn't say it's C++17 when it
1786         defines std::conjunction. Use the feature test macro instead.
1787
1788 2018-04-30  Yusuke Suzuki  <utatane.tea@gmail.com>
1789
1790         Use WordLock instead of std::mutex for Threading
1791         https://bugs.webkit.org/show_bug.cgi?id=185121
1792
1793         Reviewed by Geoffrey Garen.
1794
1795         Before r231151, WordLock depends on ThreadSpecific. It means that our Threading implementation
1796         cannot use this lock since Threading primitives could touch these locks after ThreadSpecific
1797         for that WordLock is destroyed.
1798
1799         Now WordLock is changed not to use ThreadSpecific. So it does not depend on our Threading
1800         mechanism and our Threading can start using WordLock internally.
1801
1802         This patch changes WTF::Thread and WTF::ThreadGroup to use WordLock instead of std::mutex.
1803
1804         And add constexpr to explicitly describe that Lock, Condition, and WordLock constructors are constexpr.
1805
1806         * wtf/Condition.h:
1807         * wtf/Lock.h:
1808         * wtf/ThreadGroup.h:
1809         (WTF::ThreadGroup::getLock):
1810         * wtf/Threading.cpp:
1811         (WTF::Thread::didExit):
1812         (WTF::Thread::addToThreadGroup):
1813         (WTF::Thread::removeFromThreadGroup):
1814         * wtf/Threading.h:
1815         * wtf/ThreadingPthreads.cpp:
1816         (WTF::Thread::changePriority):
1817         (WTF::Thread::waitForCompletion):
1818         (WTF::Thread::detach):
1819         (WTF::Thread::signal):
1820         (WTF::Thread::establishPlatformSpecificHandle):
1821         * wtf/ThreadingWin.cpp:
1822         (WTF::Thread::changePriority):
1823         (WTF::Thread::waitForCompletion):
1824         (WTF::Thread::detach):
1825         (WTF::Thread::establishPlatformSpecificHandle):
1826         (WTF::Thread::initializeTLSKey):
1827         (WTF::Thread::currentDying):
1828         (WTF::Thread::get):
1829         (WTF::Thread::initializeTLS):
1830         (WTF::Thread::destructTLS):
1831         (WTF::threadMapMutex): Deleted.
1832         * wtf/WordLock.h:
1833
1834 2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>
1835
1836         [CMake] Require GCC 6
1837         https://bugs.webkit.org/show_bug.cgi?id=184985
1838
1839         Reviewed by Alex Christensen.
1840
1841         Stop enforcing GCC version in Compiler.h. It's better to do this in the build system. And I
1842         don't like having the same check in two different places.
1843
1844         * wtf/Compiler.h:
1845
1846 2018-04-29  Geoffrey Garen  <ggaren@apple.com>
1847
1848         WordLock doesn't need per-thread data
1849         https://bugs.webkit.org/show_bug.cgi?id=185119
1850
1851         Reviewed by Yusuke Suzuki.
1852
1853         The stack is per-thread data, so we can stack-allocate our ThreadData.
1854
1855         This eliminates malloc() and high-level WTF threading primitives from
1856         WordLock, making WordLock more portable to non-WTF code, including
1857         bmalloc.
1858
1859         (NOTE: This patch makes the bug fixed in r231148 100% reproducible.)
1860
1861         * wtf/WordLock.cpp:
1862         (WTF::WordLock::lockSlow): Allocate ThreadData on the stack.
1863
1864 2018-04-28  Geoffrey Garen  <ggaren@apple.com>
1865
1866         Fixed a very unlikely race condition in WTF::WordLock
1867         https://bugs.webkit.org/show_bug.cgi?id=185117
1868
1869         Reviewed by Saam Barati.
1870
1871         The race goes like this:
1872
1873         Thread L is in lockSlowCase() and thread U is in unlockSlowCase();
1874
1875         - U acquires queueHead->parkingLock.
1876         - U sets queueHead->shouldPark = false
1877         - U releases queueHead->parkingLock.
1878         - L spuriously wakes up from queueHead->parkingLock.wait()
1879         - L acquires queueHead->parkingLock.
1880         - L notices that queueHead->shouldPark = false, and acquires the WordLock
1881         - L finishes all its work and exits, freeing queueHead
1882         - U notifies queueHead->parkingLock (after free) and crashes or deadlocks
1883
1884         These conditions are currently so unlikely that I don't know how to test
1885         them. I noticed this race because I changed WordLock's allocation pattern
1886         to allow queueHead to be freed more often, and I crashed / deadlocked 100%.
1887
1888         Shout out to <http://en.cppreference.com/w/cpp/thread/condition_variable/notify_one>
1889         for explaining this.
1890
1891         * benchmarks/ToyLocks.h: Fixed build.
1892
1893         * wtf/WordLock.cpp:
1894         (WTF::WordLock::unlockSlow): Hold the lock a little longer to avoid
1895         this race.
1896
1897 2018-04-27  David Kilzer  <ddkilzer@apple.com>
1898
1899         Add logging when SpringBoard enables WebThread
1900         <https://webkit.org/b/185100>
1901         <rdar://problem/39746542>
1902
1903         Reviewed by Daniel Bates.
1904
1905         * wtf/Assertions.h:
1906         (RELEASE_LOG_FAULT): Add macro to call os_log_fault().
1907         * wtf/Platform.h: Drive-by fix to enable USE(OS_LOG) on
1908         public iOS SDKs since <rdar://problem/27758343> was
1909         fixed in iOS 11.0.
1910
1911 2018-04-26  Mark Lam  <mark.lam@apple.com>
1912
1913         Gardening: Speculative build fix for Windows.
1914         https://bugs.webkit.org/show_bug.cgi?id=184976
1915         <rdar://problem/39723901>
1916
1917         Not reviewed.
1918
1919         * wtf/PtrTag.h:
1920         (WTF::makePtrTagHash): Undo last speculative build fix that did not work for 64-bit.
1921
1922 2018-04-26  Andy VanWagoner  <thetalecrafter@gmail.com>
1923
1924         [INTL] Implement Intl.PluralRules
1925         https://bugs.webkit.org/show_bug.cgi?id=184312
1926
1927         Reviewed by JF Bastien.
1928
1929         Added Intl.PluralRules feature flag.
1930
1931         * wtf/FeatureDefines.h:
1932
1933 2018-04-25  Mark Lam  <mark.lam@apple.com>
1934
1935         Gardening: Speculative build fix for Windows 32-bit to compensate for MSVC's lack of smarts.
1936         https://bugs.webkit.org/show_bug.cgi?id=184976
1937         <rdar://problem/39723901>
1938
1939         Not reviewed.
1940
1941         According to https://stackoverflow.com/questions/37658794/integer-constant-overflow-warning-in-constexpr,
1942         disabling the warning around the definition of the function will not disable it
1943         for all clients of the function.
1944
1945         * wtf/PtrTag.h:
1946         (WTF::makePtrTagHash):
1947
1948 2018-04-25  Mark Lam  <mark.lam@apple.com>
1949
1950         Push the definition of PtrTag down to the WTF layer.
1951         https://bugs.webkit.org/show_bug.cgi?id=184976
1952         <rdar://problem/39723901>
1953
1954         Reviewed by Saam Barati.
1955
1956         This is in preparation for doing pointer profiling at the WTF layer as well.
1957         Also deleted an unused ptrTag() function.
1958
1959         * WTF.xcodeproj/project.pbxproj:
1960         * wtf/CMakeLists.txt:
1961         * wtf/PtrTag.h: Copied from Source/JavaScriptCore/runtime/PtrTag.h.
1962         (WTF::makePtrTagHash):
1963         (JSC::ptrTagName): Deleted.
1964         (JSC::tagForPtr): Deleted.
1965         (JSC::ptrTag): Deleted.
1966         (JSC::tagCodePtr): Deleted.
1967         (JSC::untagCodePtr): Deleted.
1968         (JSC::retagCodePtr): Deleted.
1969         (JSC::removeCodePtrTag): Deleted.
1970         (JSC::tagCFunctionPtr): Deleted.
1971         (JSC::untagCFunctionPtr): Deleted.
1972         (JSC::assertIsCFunctionPtr): Deleted.
1973         (JSC::assertIsNullOrCFunctionPtr): Deleted.
1974         (JSC::assertIsNotTagged): Deleted.
1975         (JSC::assertIsTagged): Deleted.
1976         (JSC::assertIsNullOrTagged): Deleted.
1977         (JSC::assertIsTaggedWith): Deleted.
1978         (JSC::assertIsNullOrTaggedWith): Deleted.
1979
1980 2018-04-25  Dean Jackson  <dino@apple.com>
1981
1982         Make a better flag for system preview, and disable it where necessary
1983         https://bugs.webkit.org/show_bug.cgi?id=184968
1984         <rdar://problem/39686506>
1985
1986         Reviewed by Eric Carlson.
1987
1988         Add a new USE(SYSTEM_PREVIEW).
1989
1990         * wtf/Platform.h:
1991
1992 2018-04-24  Commit Queue  <commit-queue@webkit.org>
1993
1994         Unreviewed, rolling out r230971.
1995         https://bugs.webkit.org/show_bug.cgi?id=184939
1996
1997         This fix was not appropriate (Requested by n_wang on #webkit).
1998
1999         Reverted changeset:
2000
2001         "AX: soft link libAccessibility.dylb"
2002         https://bugs.webkit.org/show_bug.cgi?id=184919
2003         https://trac.webkit.org/changeset/230971
2004
2005 2018-04-24  Nan Wang  <n_wang@apple.com>
2006
2007         AX: soft link libAccessibility.dylb
2008         https://bugs.webkit.org/show_bug.cgi?id=184919
2009
2010         Reviewed by Chris Fleizach.
2011
2012         * wtf/cocoa/SoftLinking.h:
2013
2014 2018-04-23  Zalan Bujtas  <zalan@apple.com>
2015
2016         [LayoutFormattingContext] Initial commit.
2017         https://bugs.webkit.org/show_bug.cgi?id=184896
2018
2019         Reviewed by Antti Koivisto.
2020
2021         * wtf/FeatureDefines.h:
2022
2023 2018-04-23  Per Arne Vollan  <pvollan@apple.com>
2024
2025         Deactivate the WindowServer connection for the WebContent process.
2026         https://bugs.webkit.org/show_bug.cgi?id=184451
2027         <rdar://problem/38313938>
2028
2029         Reviewed by Brent Fulgham.
2030
2031         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
2032         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
2033         process startup. After calling this function, every attempt to establish a connection to the
2034         WindowServer from the WebContent process will fail, except for CA render server connections.
2035
2036         * wtf/FeatureDefines.h:
2037
2038 2018-04-20  JF Bastien  <jfbastien@apple.com>
2039
2040         Handle more JSON stringify OOM
2041         https://bugs.webkit.org/show_bug.cgi?id=184846
2042         <rdar://problem/39390672>
2043
2044         Reviewed by Mark Lam.
2045
2046         JSON stringification can OOM easily. Here's another case.
2047
2048         * wtf/text/StringBuilderJSON.cpp:
2049         (WTF::StringBuilder::appendQuotedJSONString):
2050
2051 2018-04-18  Jer Noble  <jer.noble@apple.com>
2052
2053         Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds
2054         https://bugs.webkit.org/show_bug.cgi?id=184762
2055
2056         Reviewed by Dan Bernstein.
2057
2058         * Configurations/Base.xcconfig:
2059
2060 2018-04-20  Daniel Bates  <dabates@apple.com>
2061
2062         Remove code for compilers that did not support NSDMI for aggregates
2063         https://bugs.webkit.org/show_bug.cgi?id=184599
2064
2065         Reviewed by Per Arne Vollan.
2066
2067         Remove workaround for earlier Visual Studio versions that did not support non-static data
2068         member initializers (NSDMI) for aggregates. We have since updated all the build.webkit.org
2069         and EWS bots to a newer version that supports this feature.
2070
2071         * wtf/Compiler.h:
2072
2073 2018-04-19  David Kilzer  <ddkilzer@apple.com>
2074
2075         Enable Objective-C weak references
2076         <https://webkit.org/b/184789>
2077         <rdar://problem/39571716>
2078
2079         Reviewed by Dan Bernstein.
2080
2081         * Configurations/Base.xcconfig:
2082         (CLANG_ENABLE_OBJC_WEAK): Enable.
2083
2084 2018-04-19  Brady Eidson  <beidson@apple.com>
2085
2086         Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them).
2087         <rdar://problem/39533949> and https://bugs.webkit.org/show_bug.cgi?id=184750
2088
2089         Reviewed by Ryosuke Niwa.
2090
2091         * wtf/DebugUtilities.h:
2092         (WTF::debugString):
2093
2094 2018-04-19  Per Arne Vollan  <pvollan@apple.com>
2095
2096         Unreviewed, rolling out r230677.
2097
2098         Introduced Netflix problems.
2099
2100         Reverted changeset:
2101
2102         "Deactivate the WindowServer connection for the WebContent process."
2103         https://bugs.webkit.org/show_bug.cgi?id=184451
2104         https://trac.webkit.org/changeset/230677
2105
2106 2018-04-19  Nan Wang  <n_wang@apple.com>
2107
2108         AX: AOM: respect the accessibility setting for dispatching the accessible events
2109         https://bugs.webkit.org/show_bug.cgi?id=184619
2110
2111         Reviewed by Ryosuke Niwa.
2112
2113         * wtf/Platform.h:
2114
2115 2018-04-18  Ross Kirsling  <ross.kirsling@sony.com>
2116
2117         [Win] Layout Test js/date-constructor.html is failing
2118         https://bugs.webkit.org/show_bug.cgi?id=140945
2119
2120         Reviewed by Per Arne Vollan.
2121
2122         * wtf/DateMath.cpp:
2123         (WTF::calculateDSTOffset):
2124         Move all shared calculations outside of the #if -- including the "jump forward a day" case that had been overlooked.
2125
2126 2018-04-17  Saam Barati  <sbarati@apple.com>
2127
2128         Add system trace points for process launch and for initializeWebProcess
2129         https://bugs.webkit.org/show_bug.cgi?id=184669
2130
2131         Reviewed by Simon Fraser.
2132
2133         This patch adds TracePointCodes to measure process launch time and
2134         WebProcess::initializeWebProcess time.
2135         
2136         It also renames the TracePoint function to tracePoint since WebKit style
2137         does not capitalize the first letter in function names.
2138
2139         * wtf/SystemTracing.h:
2140         (WTF::tracePoint):
2141         (WTF::TraceScope::TraceScope):
2142         (WTF::TraceScope::~TraceScope):
2143         (WTF::TracePoint): Deleted.
2144
2145 2018-04-16  Andy Estes  <aestes@apple.com>
2146
2147         [iOS] Enable WKPDFView by default
2148         https://bugs.webkit.org/show_bug.cgi?id=184675
2149         <rdar://problem/27885452>
2150
2151         Reviewed by Darin Adler.
2152
2153         * wtf/FeatureDefines.h:
2154
2155 2018-04-16  Per Arne Vollan  <pvollan@apple.com>
2156
2157         Deactivate the WindowServer connection for the WebContent process.
2158         https://bugs.webkit.org/show_bug.cgi?id=184451
2159         <rdar://problem/38313938>
2160
2161         Reviewed by Brent Fulgham.
2162
2163         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
2164         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
2165         process startup. After calling this function, every attempt to establish a connection to the
2166         WindowServer from the WebContent process will fail, except for CA render server connections.
2167
2168         * wtf/FeatureDefines.h:
2169
2170 2018-04-14  Commit Queue  <commit-queue@webkit.org>
2171
2172         Unreviewed, rolling out r230659.
2173         https://bugs.webkit.org/show_bug.cgi?id=184633
2174
2175         Landed prematurely (Requested by ap on #webkit).
2176
2177         Reverted changeset:
2178
2179         "Deactivate the WindowServer connection for the WebContent
2180         process."
2181         https://bugs.webkit.org/show_bug.cgi?id=184451
2182         https://trac.webkit.org/changeset/230659
2183
2184 2018-04-14  Per Arne Vollan  <pvollan@apple.com>
2185
2186         Deactivate the WindowServer connection for the WebContent process.
2187         https://bugs.webkit.org/show_bug.cgi?id=184451
2188         <rdar://problem/38313938>
2189
2190         Reviewed by Brent Fulgham.
2191
2192         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
2193         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
2194         process startup. After calling this function, every attempt to establish a connection to the
2195         WindowServer from the WebContent process will fail, except for CA render server connections.
2196
2197         * wtf/FeatureDefines.h:
2198
2199 2018-04-13  Chris Dumez  <cdumez@apple.com>
2200
2201         Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame
2202         https://bugs.webkit.org/show_bug.cgi?id=184591
2203
2204         Reviewed by Sam Weinig.
2205
2206         Add isEmpty() convenience method to SizedIteratorRange.
2207
2208         * wtf/IteratorRange.h:
2209         (WTF::SizedIteratorRange::isEmpty const):
2210
2211 2018-04-13  Brady Eidson  <beidson@apple.com>
2212
2213         Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one.
2214         https://bugs.webkit.org/show_bug.cgi?id=184559
2215
2216         Reviewed by Alex Christensen.
2217
2218         * wtf/DebugUtilities.h:
2219         (WTF::debugString): Add a debug utility to easily construct a "const char*" that is released after a spin of the run loop.
2220           This greatly eases uses our String classes and functions inside of "%s" style environments like printf and LOG.
2221
2222 2018-04-12  Michael Catanzaro  <mcatanzaro@igalia.com>
2223
2224         Remove unused crash hook functionality
2225         https://bugs.webkit.org/show_bug.cgi?id=183369
2226
2227         Reviewed by Alexey Proskuryakov.
2228
2229         WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
2230         can be removed.
2231
2232         * wtf/Assertions.cpp:
2233         * wtf/Assertions.h:
2234
2235 2018-04-11  Said Abou-Hallawa  <sabouhallawa@apple.com>
2236
2237         Unreviewed, rolling out r230523.
2238
2239         Introduced MotionMark regression
2240
2241         Reverted changeset:
2242
2243         "Deactivate the WindowServer connection for the WebContent
2244         process."
2245         https://bugs.webkit.org/show_bug.cgi?id=184451
2246         https://trac.webkit.org/changeset/230523
2247
2248 2018-04-11  Per Arne Vollan  <pvollan@apple.com>
2249
2250         Deactivate the WindowServer connection for the WebContent process.
2251         https://bugs.webkit.org/show_bug.cgi?id=184451
2252         <rdar://problem/38313938>
2253
2254         Reviewed by Brent Fulgham.
2255
2256         Defining ENABLE_WEBPROCESS_WINDOWSERVER_BLOCKING as 1 will deactivate the WindowServer connection
2257         for the WebContent process by enabling the call to 'CGSSetDenyWindowServerConnections(true)' on
2258         process startup. After calling this function, every attempt to establish a connection to the
2259         WindowServer from the WebContent process will fail, except for CA render server connections.
2260
2261         * wtf/FeatureDefines.h:
2262
2263 2018-04-10  Andy Estes  <aestes@apple.com>
2264
2265         [iOS] Use PDFKit to render PDFs in WKWebView
2266         https://bugs.webkit.org/show_bug.cgi?id=184387
2267
2268         Reviewed by Beth Dakin.
2269
2270         * wtf/FeatureDefines.h: Defined ENABLE_WKLEGACYPDFVIEW and ENABLE_WKPDFVIEW.
2271
2272 2018-04-09  Mark Lam  <mark.lam@apple.com>
2273
2274         Decorate method table entries to support pointer profiling.
2275         https://bugs.webkit.org/show_bug.cgi?id=184430
2276         <rdar://problem/39296190>
2277
2278         Reviewed by Saam Barati.
2279
2280         * wtf/PointerPreparations.h:
2281
2282 2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
2283
2284         Unreviewed, use alignas(void*)
2285         https://bugs.webkit.org/show_bug.cgi?id=183508
2286
2287         Very large alignment is not supported in MSVC.
2288
2289         * wtf/Gigacage.cpp:
2290         * wtf/Gigacage.h:
2291
2292 2018-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
2293
2294         Use alignas instead of compiler-specific attributes
2295         https://bugs.webkit.org/show_bug.cgi?id=183508
2296
2297         Reviewed by Mark Lam.
2298
2299         Use alignas for g_gigacageBasePtr. We also add reinterpret_cast to fix
2300         compile errors in ARMv7 and MIPS JSCOnly ports.
2301
2302         * wtf/Gigacage.cpp:
2303         * wtf/Gigacage.h:
2304         (Gigacage::basePtrs):
2305
2306 2018-04-06  Saam Barati  <sbarati@apple.com>
2307
2308         bmalloc's tryLargeZeroedMemalignVirtual shouldn't treat the entire virtual size as dirty towards its footprint
2309         https://bugs.webkit.org/show_bug.cgi?id=184207
2310
2311         Reviewed by Mark Lam.
2312
2313         * wtf/Gigacage.cpp:
2314         (Gigacage::freeVirtualPages):
2315
2316 2018-04-05  Yusuke Suzuki  <utatane.tea@gmail.com>
2317
2318         [WTF] Remove StaticLock
2319         https://bugs.webkit.org/show_bug.cgi?id=184332
2320
2321         Reviewed by Mark Lam.
2322
2323         Now, WTF::StaticLock is `using StaticLock = Lock`. Lock just works
2324         in either static storage and dynamic storage. Remove StaticLock and
2325         always use Lock.
2326
2327         We also remove StaticWordLock and StaticReadWriteLock. And we add
2328         WTF::RecursiveLock, which is RecursiveLockAdapter<Lock>.
2329
2330         * wtf/HashTable.cpp:
2331         (WTF::HashTableStats::recordCollisionAtCount):
2332         (WTF::HashTableStats::dumpStats):
2333         * wtf/Language.cpp:
2334         (WTF::userPreferredLanguages):
2335         * wtf/Lock.h:
2336         * wtf/MainThread.cpp:
2337         (WTF::dispatchFunctionsFromMainThread):
2338         (WTF::callOnMainThread):
2339         * wtf/ParkingLot.cpp:
2340         * wtf/ReadWriteLock.h:
2341         * wtf/RecursiveLockAdapter.h:
2342         * wtf/StackStats.cpp:
2343         (WTF::StackStats::CheckPoint::CheckPoint):
2344         (WTF::StackStats::CheckPoint::~CheckPoint):
2345         (WTF::StackStats::probe):
2346         (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
2347         (WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
2348         * wtf/StackStats.h:
2349         * wtf/ThreadMessage.cpp:
2350         (WTF::sendMessageScoped):
2351         * wtf/ThreadingPthreads.cpp:
2352         * wtf/ThreadingWin.cpp:
2353         * wtf/WordLock.h:
2354         * wtf/cf/LanguageCF.cpp:
2355         (WTF::languagePreferencesDidChange):
2356         (WTF::platformUserPreferredLanguages):
2357         * wtf/dtoa.cpp:
2358         * wtf/text/AtomicStringImpl.cpp:
2359         * wtf/text/StringView.cpp:
2360         (WTF::StringView::invalidate):
2361         (WTF::StringView::adoptUnderlyingString):
2362         (WTF::StringView::setUnderlyingString):
2363         * wtf/unicode/icu/CollatorICU.cpp:
2364         (WTF::Collator::Collator):
2365         (WTF::Collator::~Collator):
2366         * wtf/win/LanguageWin.cpp:
2367         (WTF::platformLanguage):
2368
2369 2018-04-04  Brent Fulgham  <bfulgham@apple.com>
2370
2371         Failures from mach port reference handling should be fatal
2372         https://bugs.webkit.org/show_bug.cgi?id=184202
2373         <rdar://problem/37771114>
2374
2375         Reviewed by Anders Carlsson.
2376
2377         * WTF.xcodeproj/project.pbxproj:
2378         * wtf/MachSendRight.h: Copied from WebCore/platform/cocoa/MachSendRight.h.
2379         (WebCore::MachSendRight::operator bool const): Deleted.
2380         (WebCore::MachSendRight::sendRight const): Deleted.
2381         * wtf/PlatformMac.cmake:
2382         * wtf/cocoa/CPUTimeCocoa.mm:
2383         (WTF::CPUTime::forCurrentThread): Do proper cleanup if the port is invalid.
2384         * wtf/cocoa/MachSendRight.cpp: Copied from WebCore/platform/cocoa/MachSendRight.cpp.
2385         (WTF::retainSendRight):
2386         (WTF::releaseSendRight):
2387         (WTF::deallocateSendRightSafely):
2388         (WebCore::retainSendRight): Deleted.
2389         (WebCore::releaseSendRight): Deleted.
2390         (WebCore::MachSendRight::adopt): Deleted.
2391         (WebCore::MachSendRight::create): Deleted.
2392         (WebCore::MachSendRight::MachSendRight): Deleted.
2393         (WebCore::MachSendRight::~MachSendRight): Deleted.
2394         (WebCore::MachSendRight::operator=): Deleted.
2395         (WebCore::MachSendRight::copySendRight const): Deleted.
2396         (WebCore::MachSendRight::leakSendRight): Deleted.
2397
2398 2018-04-04  Youenn Fablet  <youenn@apple.com>
2399
2400         Introduce a ThreadSafeRefCounted parameter to ensure being destroyed on the main thread
2401         https://bugs.webkit.org/show_bug.cgi?id=183988
2402
2403         Reviewed by Darin Adler.
2404
2405         * wtf/ThreadSafeRefCounted.h:
2406         (WTF::ThreadSafeRefCounted::deref const):
2407
2408 2018-04-04  Yusuke Suzuki  <utatane.tea@gmail.com>
2409
2410         [WTF] Remove Atomics.cpp
2411         https://bugs.webkit.org/show_bug.cgi?id=184300
2412
2413         Reviewed by Konstantin Tokarev.
2414
2415         This Atomics.cpp is a workaround for GCC which version is < 4.8.
2416         Our compiler requirement is now 5.0.0. This workaround is no
2417         longer necessary.
2418
2419         * wtf/Atomics.cpp: Removed.
2420         * wtf/CMakeLists.txt:
2421
2422 2018-04-03  Tomas Popela  <tpopela@redhat.com>
2423
2424         Unreviewed, mute the unused parameter compilation warning
2425
2426         Triggered on the PPC64 machine.
2427
2428         * wtf/ThreadingPthreads.cpp:
2429         (WTF::Thread::signalHandlerSuspendResume):
2430
2431 2018-04-03  Tomas Popela  <tpopela@redhat.com>
2432
2433         Unreviewed, fix the unused variable compilation warning
2434
2435         Move the ucontext_t code under the HAVE(MACHINE_CONTEXT). Triggered
2436         on the PPC64 machine.
2437
2438         * wtf/ThreadingPthreads.cpp:
2439         (WTF::Thread::signalHandlerSuspendResume):
2440
2441 2018-04-02  Saam Barati  <sbarati@apple.com>
2442
2443         bmalloc should compute its own estimate of its footprint
2444         https://bugs.webkit.org/show_bug.cgi?id=184121
2445
2446         Reviewed by Filip Pizlo.
2447
2448         * wtf/FastMalloc.cpp:
2449         (WTF::fastCommitAlignedMemory):
2450         (WTF::fastDecommitAlignedMemory):
2451         * wtf/FastMalloc.h:
2452
2453 2018-03-30  Filip Pizlo  <fpizlo@apple.com>
2454
2455         Strings and Vectors shouldn't do index masking
2456         https://bugs.webkit.org/show_bug.cgi?id=184193
2457
2458         Reviewed by Mark Lam.
2459
2460         * wtf/SizeLimits.cpp:
2461         * wtf/Vector.h:
2462         (WTF::VectorBufferBase::allocateBuffer):
2463         (WTF::VectorBufferBase::tryAllocateBuffer):
2464         (WTF::VectorBufferBase::reallocateBuffer):
2465         (WTF::VectorBufferBase::deallocateBuffer):
2466         (WTF::VectorBufferBase::releaseBuffer):
2467         (WTF::VectorBufferBase::VectorBufferBase):
2468         (WTF::VectorBuffer::allocateBuffer):
2469         (WTF::VectorBuffer::tryAllocateBuffer):
2470         (WTF::VectorBuffer::swap):
2471         (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
2472         (WTF::Vector::at):
2473         (WTF::Vector::at const):
2474         (WTF::VectorBufferBase::updateMask): Deleted.
2475         * wtf/text/StringImpl.h:
2476         (WTF::StringImpl::flagIsSymbol):
2477         (WTF::StringImpl::length const):
2478         (WTF::StringImplShape::StringImplShape):
2479         (WTF::StringImpl::at const):
2480         (WTF::StringImpl::tailOffset):
2481         (WTF::StringImpl::maskOffset): Deleted.
2482         (WTF::StringImpl::mask const): Deleted.
2483         * wtf/text/StringView.h:
2484         (WTF::StringView::StringView):
2485         (WTF::StringView::operator=):
2486         (WTF::StringView::initialize):
2487         (WTF::StringView::clear):
2488         (WTF::StringView::operator[] const):
2489         * wtf/text/WTFString.h:
2490         (WTF::String::length const):
2491         (WTF::String::mask const): Deleted.
2492
2493 2018-03-30  Mark Lam  <mark.lam@apple.com>
2494
2495         Add pointer profiling support in baseline JIT and supporting files.
2496         https://bugs.webkit.org/show_bug.cgi?id=184200
2497         <rdar://problem/39057300>
2498
2499         Reviewed by Filip Pizlo.
2500
2501         * wtf/PointerPreparations.h:
2502         - Remove WTF_PREPARE_FUNCTION_POINTER_FOR_EXECUTION.  It is no longer needed.
2503
2504 2018-03-30  JF Bastien  <jfbastien@apple.com>
2505
2506         WorkQueueWin: don't move rvalues
2507         https://bugs.webkit.org/show_bug.cgi?id=184190
2508         <rdar://problem/39049850>
2509
2510         Reviewed by Mark Lam.
2511
2512         As part of #184167 optional is now more frequently an rvalue
2513         reference, and moving its .value() is not a thing that should be
2514         done anymore.
2515
2516         * wtf/win/WorkQueueWin.cpp:
2517         (WTF::WorkQueue::unregisterAndCloseHandle):
2518
2519 2018-03-30  JF Bastien  <jfbastien@apple.com>
2520
2521         Remove CXX_REFERENCE_QUALIFIED_FUNCTIONS and optional's equivalent
2522         https://bugs.webkit.org/show_bug.cgi?id=184167
2523         <rdar://problem/39023130>
2524
2525         Reviewed by Yusuke Suzuki.
2526
2527         Remove COMPILER_SUPPORTS(CXX_REFERENCE_QUALIFIED_FUNCTIONS), it's
2528         supported by all compilers WebKit supports (it's a C++11 feature,
2529         *detection* of it with __has_extension was added to clang on May
2530         13th 2011, and VS2015 / GCC support it).
2531
2532         Optional.h had a similar thing, ditch it too.
2533
2534         * wtf/Compiler.h:
2535         * wtf/Optional.h:
2536         (std::optional::contained_val const):
2537         (std::optional::contained_val):
2538         * wtf/Ref.h:
2539         * wtf/RefPtr.h:
2540         * wtf/text/WTFString.cpp:
2541         * wtf/text/WTFString.h:
2542
2543 2018-03-30  JF Bastien  <jfbastien@apple.com>
2544
2545         Introduce WTF_LAZY_INSTANTIATE
2546         https://bugs.webkit.org/show_bug.cgi?id=184169
2547         <rdar://problem/39023385>
2548
2549         Reviewed by Mark Lam.
2550
2551         As part of #184164 I'm adding some forwarding methods to
2552         WTF::String. These need to forward RetainPtr and CString, and
2553         usually that would require #include'ing RetainPtr.h and CString.h
2554         to WTFString.h which isn't really something we should do.
2555
2556         Introduce WTF_LAZY_INSTANTIATE to forward-declare functions which
2557         just pass parameters to another function, and return whatever that
2558         other function returned, without having to include the return's /
2559         parameters' type header.
2560
2561         Try it out here: godbolt.org/g/oV8G5Q
2562
2563         * wtf/Forward.h:
2564
2565 2018-03-29  JF Bastien  <jfbastien@apple.com>
2566
2567         Use Forward.h instead of forward-declaring WTF::String
2568         https://bugs.webkit.org/show_bug.cgi?id=184172
2569         <rdar://problem/39026146>
2570
2571         Reviewed by Yusuke Suzuki.
2572
2573         As part of #184164 I'm changing WTF::String, and the forward
2574         declarations are just wrong because I'm making it templated. We
2575         should use Forward.h anyways, so do that instead.
2576
2577         * wtf/Forward.h:
2578         * wtf/HashTraits.h:
2579         * wtf/PrintStream.h:
2580
2581 2018-03-29  Yusuke Suzuki  <utatane.tea@gmail.com>
2582
2583         Remove WTF_EXPORTDATA and JS_EXPORTDATA
2584         https://bugs.webkit.org/show_bug.cgi?id=184170
2585
2586         Reviewed by JF Bastien.
2587
2588         Replace WTF_EXPORTDATA and JS_EXPORTDATA with
2589         WTF_EXPORT_PRIVATE and JS_EXPORT_PRIVATE respectively.
2590
2591         * wtf/ExportMacros.h:
2592         * wtf/Gigacage.h:
2593         * wtf/HashTable.h:
2594         * wtf/Threading.h:
2595         * wtf/text/AtomicString.cpp:
2596         * wtf/text/AtomicString.h:
2597         * wtf/text/StringImpl.h:
2598
2599 2018-03-29  Ross Kirsling  <ross.kirsling@sony.com>
2600
2601         MSVC __forceinline slows down JSC release build fivefold after r229391
2602         https://bugs.webkit.org/show_bug.cgi?id=184062
2603
2604         Reviewed by Alex Christensen.
2605
2606         * wtf/Compiler.h:
2607         Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.
2608
2609 2018-03-29  JF Bastien  <jfbastien@apple.com>
2610
2611         Remove WTF_EXPORT_STRING_API
2612         https://bugs.webkit.org/show_bug.cgi?id=184168
2613         <rdar://problem/39023253>
2614
2615         Reviewed by Yusuke Suzuki.
2616
2617         Remove WTF_EXPORT_STRING_API as requested by a FIXME, and use
2618         WTF_EXPORT_PRIVATE instead.
2619
2620         * wtf/ExportMacros.h:
2621         * wtf/text/AtomicString.h:
2622         * wtf/text/AtomicStringImpl.h:
2623         * wtf/text/StringImpl.h:
2624         * wtf/text/StringView.h:
2625         * wtf/text/SymbolImpl.h:
2626         * wtf/text/WTFString.h:
2627
2628 2018-03-29  Commit Queue  <commit-queue@webkit.org>
2629
2630         Unreviewed, rolling out r230062.
2631         https://bugs.webkit.org/show_bug.cgi?id=184128
2632
2633         Broke mac port. web content process crashes while loading any
2634         web page (Requested by rniwa on #webkit).
2635
2636         Reverted changeset:
2637
2638         "MSVC __forceinline slows down JSC release build fivefold
2639         after r229391"
2640         https://bugs.webkit.org/show_bug.cgi?id=184062
2641         https://trac.webkit.org/changeset/230062
2642
2643 2018-03-28  Ross Kirsling  <ross.kirsling@sony.com>
2644
2645         MSVC __forceinline slows down JSC release build fivefold after r229391
2646         https://bugs.webkit.org/show_bug.cgi?id=184062
2647
2648         Reviewed by Alex Christensen.
2649
2650         * wtf/Compiler.h:
2651         Add ALWAYS_INLINE_EXCEPT_MSVC to support MSVC optimizer sensitivities.
2652
2653 2018-03-28  Fujii Hironori  <Hironori.Fujii@sony.com>
2654
2655         [Win] Assertions.h: VC doesn't support GCC extension ##__VA_ARGS__
2656         https://bugs.webkit.org/show_bug.cgi?id=184076
2657
2658         Reviewed by Alex Christensen.
2659
2660         ##__VA_ARGS__ is used to define RELEASE_LOG, RELEASE_LOG_ERROR,
2661         RELEASE_LOG_IF, RELEASE_LOG_ERROR_IF, RELEASE_LOG_WITH_LEVEL,
2662         RELEASE_LOG_WITH_LEVEL_IF and RELEASE_LOG_INFO_IF.
2663
2664         A macro using ##__VA_ARGS__,
2665
2666           #define foo(format, ...) bar(format, ##__VA_ARGS__)
2667
2668         can be defined without ##__VA_ARGS__:
2669
2670           #define foo(...) bar(__VA_ARGS__)
2671
2672         * wtf/Assertions.h: Use __VA_ARGS__ instead of ##__VA_ARGS__.
2673
2674 2018-03-28  Brent Fulgham  <bfulgham@apple.com>
2675
2676         Avoid uninitialized mach ports
2677         https://bugs.webkit.org/show_bug.cgi?id=184090
2678         <rdar://problem/37261129>
2679
2680         Reviewed by Chris Dumez.
2681
2682         It is possible for mach_port_allocate to return an error, but we rarely check its return value. The value
2683         of the argument passed to mach_port_allocate is not guaranteed to be valid when it returns an error, so
2684         there is a potential for us to try to use invalid ports.
2685
2686         We should always check return values, and ensure that the mach port variables we seek to initialize are
2687         kept in a valid state.
2688
2689         Reviewed by Chris Dumez.
2690
2691         * wtf/Threading.h: Initialize mach port.
2692
2693 2018-03-28  Robin Morisset  <rmorisset@apple.com>
2694
2695         appendQuotedJSONString stops on arithmetic overflow instead of propagating it upwards
2696         https://bugs.webkit.org/show_bug.cgi?id=183894
2697
2698         Reviewed by Saam Barati.
2699
2700         appendQuotedJSONString now returns a bool indicating whether it succeeded, instead of silently failing when given a string too large
2701         to fit in 4GB.
2702
2703         * wtf/text/StringBuilder.h:
2704         * wtf/text/StringBuilderJSON.cpp:
2705         (WTF::StringBuilder::appendQuotedJSONString):
2706
2707 2018-03-27  Per Arne Vollan  <pvollan@apple.com>
2708
2709         The layout test fast/canvas/webgl/read-pixels-test.html is timing out.
2710         https://bugs.webkit.org/show_bug.cgi?id=183923
2711         <rdar://problem/38756869>
2712
2713         Reviewed by Brent Fulgham.
2714
2715         Add compile guard for blocking of the WindowServer in the WebProcess.
2716
2717         * wtf/FeatureDefines.h:
2718
2719 2018-03-26  Tim Horton  <timothy_horton@apple.com>
2720
2721         Add and adopt HAVE(CORE_ANIMATION_RENDER_SERVER)
2722         https://bugs.webkit.org/show_bug.cgi?id=184026
2723         <rdar://problem/38883321>
2724
2725         Reviewed by Sam Weinig.
2726
2727         * wtf/Platform.h:
2728
2729 2018-03-26  Yusuke Suzuki  <utatane.tea@gmail.com>
2730
2731         We should have SSE4 detection in the X86 MacroAssembler.
2732         https://bugs.webkit.org/show_bug.cgi?id=165363
2733
2734         Reviewed by JF Bastien.
2735
2736         GCC 5 supports clobbering PIC registers in inline ASM [1,2].
2737
2738         [1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47602
2739         [2]: https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=216154
2740
2741         * wtf/Atomics.h:
2742         (WTF::x86_cpuid):
2743
2744 2018-03-26  Antoine Quint  <graouts@apple.com>
2745
2746         [ASan] Allow Ref<> to be swapped
2747         https://bugs.webkit.org/show_bug.cgi?id=184017
2748         <rdar://problem/36336787>
2749
2750         Reviewed by JF Bastien.
2751
2752         Unpoison a Ref in various calls just like in ~Ref so that sorting a Vector<Ref<>> works with ASan on.
2753
2754         * wtf/Ref.h:
2755         (WTF::Ref::assignToHashTableEmptyValue):
2756         (WTF::=):
2757         (WTF::U>::replace):
2758
2759 2018-03-26  Brent Fulgham  <bfulgham@apple.com>
2760
2761         Warn against cookie access in the WebContent process using ProcessPrivilege assertions
2762         https://bugs.webkit.org/show_bug.cgi?id=183911
2763         <rdar://problem/38762306>
2764
2765         Reviewed by Youenn Fablet.
2766
2767         Extend the ProcessPrivilege API with the ability to add and remove individual
2768         privileges.
2769
2770         * wtf/ProcessPrivilege.cpp:
2771         (WTF::addProcessPrivilege):
2772         (WTF::removeProcessPrivilege):
2773         * wtf/ProcessPrivilege.h:
2774
2775 2018-03-25  Carlos Alberto Lopez Perez  <clopez@igalia.com>
2776
2777         WebProcess memory monitor: use %zu format specifier for size_t
2778         https://bugs.webkit.org/show_bug.cgi?id=183997
2779
2780         Reviewed by Michael Catanzaro.
2781
2782         usse %zu format specifier for size_t instead of %lu.
2783
2784         * wtf/MemoryPressureHandler.cpp:
2785         (WTF::MemoryPressureHandler::shrinkOrDie):
2786         (WTF::MemoryPressureHandler::measurementTimerFired):
2787
2788 2018-03-25  Tim Horton  <timothy_horton@apple.com>
2789
2790         Add and adopt ENABLE(AIRPLAY_PICKER)
2791         https://bugs.webkit.org/show_bug.cgi?id=183992
2792
2793         Reviewed by Daniel Bates.
2794
2795         * wtf/FeatureDefines.h:
2796
2797 2018-03-23  Tim Horton  <timothy_horton@apple.com>
2798
2799         Introduce and adopt HAVE(AUDIO_TOOLBOX_AUDIO_SESSION)
2800         https://bugs.webkit.org/show_bug.cgi?id=183954
2801         <rdar://problem/38808858>
2802
2803         Reviewed by Dan Bernstein.
2804
2805         * wtf/Platform.h:
2806
2807 2018-03-23  David Kilzer  <ddkilzer@apple.com>
2808
2809         Stop using dispatch_set_target_queue()
2810         <https://webkit.org/b/183908>
2811         <rdar://problem/33553533>
2812
2813         Reviewed by Daniel Bates.
2814
2815         * wtf/cocoa/WorkQueueCocoa.cpp:
2816         (WTF::WorkQueue::platformInitialize): Remove !HAVE(QOS_CLASSES)
2817         code path since it's never used now that HAVE(QOS_CLASSES) is
2818         equivalent to PLATFORM(COCOA) in <wtf/Platform.h>.
2819
2820 2018-03-23  Carlos Alberto Lopez Perez  <clopez@igalia.com>
2821
2822         WebProcess memory monitor thresholds should be better tuned for embedded systems.
2823         https://bugs.webkit.org/show_bug.cgi?id=183773
2824
2825         Reviewed by Yusuke Suzuki.
2826
2827         Take into account the total system RAM for the thresholds calculation.
2828
2829         For systems with more than 3GB the conservative and strict thresholds remain as they are,
2830         but for systems with less RAM the thresholds are dynamically configured as follows:
2831
2832         - Conservative threshold (release non critical memory) if WebProcess using more than 33% of the total RAM.
2833         - Strict threshold (release all possible memory) if WebProcess using more than 50% of the total RAM.
2834
2835         The Kill threshold is also modified. Now it is capped at 90% of the total RAM.
2836
2837         * wtf/MemoryPressureHandler.cpp:
2838         (WTF::thresholdForMemoryKillWithProcessState):
2839         (WTF::thresholdForPolicy):
2840         (WTF::MemoryPressureHandler::shrinkOrDie):
2841
2842 2018-03-23  Yusuke Suzuki  <utatane.tea@gmail.com>
2843
2844         [WTF] Add standard containers with FastAllocator specialization
2845         https://bugs.webkit.org/show_bug.cgi?id=183789
2846
2847         Reviewed by Darin Adler.
2848
2849         Sometimes we want standard containers due to various reasons.
2850         For example, WTF::HashMap lacks the ability to hold all the
2851         integer keys since it uses 0 for empty value and -1 for deleted
2852         value. However, using std::containers use std::allocator without
2853         specialization.
2854
2855         This patch introduces WTF::{StdMap, StdSet, StdList, StdUnorderedMap, StdUnorderedSet}.
2856         They are standard containers with FastAllocator specialization.
2857
2858         * WTF.xcodeproj/project.pbxproj:
2859         * wtf/CMakeLists.txt:
2860         * wtf/StdList.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
2861         * wtf/StdMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
2862         * wtf/StdSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
2863         * wtf/StdUnorderedMap.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
2864         * wtf/StdUnorderedSet.h: Copied from Source/JavaScriptCore/runtime/TypeLocationCache.h.
2865
2866 2018-03-22  Tim Horton  <timothy_horton@apple.com>
2867
2868         Adopt USE(OPENGL[_ES]) in more places
2869         https://bugs.webkit.org/show_bug.cgi?id=183882
2870         <rdar://problem/37912195>
2871
2872         Reviewed by Dan Bernstein.
2873
2874         * wtf/Platform.h:
2875
2876 2018-03-20  Brent Fulgham  <bfulgham@apple.com>
2877
2878         Create an assertion mechanism to ensure proper WebCore use in each WebKit Process
2879         https://bugs.webkit.org/show_bug.cgi?id=183806
2880         <rdar://problem/38694251>
2881
2882         Reviewed by Ryosuke Niwa.
2883
2884         Part of our security improvements involve better isolation between the different WebKit
2885         processes (UIProcess, WebContent, Networking, Storage, etc.).
2886
2887         We need an assertion language we can use to protect certain critical APIs and code paths
2888         against accidental misuse.
2889
2890         This patch adds a new enum type meant to represent different categories of program logic
2891         that we do not want used in the wrong process.
2892
2893         This first patch just creates these types and makes them available. New assertions using
2894         these values will be added as we complete our work ensuring proper process isolation.
2895
2896         In a method we want to protect, we can add an assertion describing the process privileges
2897         needed to execute the code. For example, for cookie access we might use this:
2898
2899             ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies);
2900
2901         At the launch of the UIProcess we would use this method to ensure all privileges are available:
2902
2903             setProcessPrivileges(allPrivileges());
2904
2905         In the network process, during platform initialization, we would use something like this:
2906
2907             setProcessPrivileges({ ProcessPrivilege::CanAccessRawCookies, ProcessPrivilege::CanAccessCredentials });
2908
2909         In the WebContent process, we would not set any privileges. We could just leave it as the
2910         default initialization, or use this:
2911
2912             setProcessPrivileges({ });
2913
2914         Later, when we attempt to execute the initial code, we would expect an assertion for the
2915         WebContent process, while Network and UIProcess pass the assertion.
2916
2917         * WTF.xcodeproj/project.pbxproj: Add new files.
2918         * wtf/CMakeLists.txt: Ditto.
2919         * wtf/ProcessPrivilege.cpp: Added.
2920         (WTF::processPrivileges):
2921         (WTF::setProcessPrivileges):
2922         (WTF::hasProcessPrivilege):
2923         * wtf/ProcessPrivilege.h: Added.
2924
2925 2018-03-20  Tim Horton  <timothy_horton@apple.com>
2926
2927         Introduce HAVE_MEDIA_PLAYER and HAVE_CORE_VIDEO
2928         https://bugs.webkit.org/show_bug.cgi?id=183803
2929         <rdar://problem/38690487>
2930
2931         Reviewed by Sam Weinig.
2932
2933         * wtf/Platform.h:
2934
2935 2018-03-20  Brian Burg  <bburg@apple.com>
2936
2937         SLEEP_THREAD_FOR_DEBUGGER should not use fancy number literals
2938         https://bugs.webkit.org/show_bug.cgi?id=183792
2939
2940         Reviewed by Timothy Hatcher.
2941
2942         * wtf/DebugUtilities.h: Remove the '_s' since this won't
2943         compile when included by files compiled as Objective-C++.
2944
2945 2018-03-20  Tim Horton  <timothy_horton@apple.com>
2946
2947         Add and adopt WK_PLATFORM_NAME and adjust default feature defines
2948         https://bugs.webkit.org/show_bug.cgi?id=183758
2949         <rdar://problem/38017644>
2950
2951         Reviewed by Dan Bernstein.
2952
2953         * wtf/FeatureDefines.h:
2954
2955 2018-03-19  Eric Carlson  <eric.carlson@apple.com>
2956
2957         [Extra zoom mode] Require fullscreen for video playback
2958         https://bugs.webkit.org/show_bug.cgi?id=183742
2959         <rdar://problem/38235862>
2960
2961         Reviewed by Jer Noble.
2962
2963         * wtf/Platform.h:
2964
2965 2018-03-15  Tim Horton  <timothy_horton@apple.com>
2966
2967         Avoid defining commonly-named system macros on all Cocoa platforms
2968         https://bugs.webkit.org/show_bug.cgi?id=183687
2969
2970         Reviewed by Dan Bernstein.
2971
2972         * wtf/Platform.h:
2973
2974 2018-03-14  Tim Horton  <timothy_horton@apple.com>
2975
2976         Fix the build after r229387
2977         https://bugs.webkit.org/show_bug.cgi?id=183639
2978         <rdar://problem/38448568>
2979
2980         Reviewed by Dean Jackson.
2981
2982         * wtf/Platform.h:
2983
2984 2018-03-13  Tim Horton  <timothy_horton@apple.com>
2985
2986         Add and adopt WK_ALTERNATE_FRAMEWORKS_DIR in WTF and bmalloc
2987         https://bugs.webkit.org/show_bug.cgi?id=183576
2988         <rdar://problem/38396766>
2989
2990         Reviewed by Dan Bernstein.
2991
2992         * Configurations/Base.xcconfig:
2993         * Configurations/CopyWTFHeaders.xcconfig:
2994         * Configurations/WTF.xcconfig:
2995         * Configurations/mbmalloc.xcconfig:
2996
2997 2018-03-13  Michael Catanzaro  <mcatanzaro@igalia.com>
2998
2999         Unreviewed, fix typo in a comment
3000
3001         * wtf/Platform.h:
3002
3003 2018-03-12  Don Olmstead  <don.olmstead@sony.com>
3004
3005         [CMake][Win] Forwarding headers of WTF and PAL are copied twice in Visual Studio builds
3006         https://bugs.webkit.org/show_bug.cgi?id=183240
3007
3008         Reviewed by Alex Christensen.
3009
3010         * wtf/CMakeLists.txt:
3011         * wtf/PlatformGTK.cmake:
3012         * wtf/PlatformJSCOnly.cmake:
3013         * wtf/PlatformMac.cmake:
3014         * wtf/PlatformWPE.cmake:
3015         * wtf/PlatformWin.cmake:
3016
3017 2018-03-12  Yusuke Suzuki  <utatane.tea@gmail.com>
3018
3019         Unreviewed, include time.h
3020         https://bugs.webkit.org/show_bug.cgi?id=183312
3021
3022         Attempt to fix oss-fuzz build.
3023
3024         * wtf/CurrentTime.cpp:
3025         * wtf/unix/CPUTimeUnix.cpp:
3026
3027 2018-03-12  Yoav Weiss  <yoav@yoav.ws>
3028
3029         Runtime flag for link prefetch and remove link subresource.
3030         https://bugs.webkit.org/show_bug.cgi?id=183540
3031
3032         Reviewed by Chris Dumez.
3033
3034         Remove the LINK_PREFETCH build time flag.
3035
3036         * wtf/FeatureDefines.h:
3037
3038 2018-03-12  Mark Lam  <mark.lam@apple.com>
3039
3040         Make a NativeFunction into a class to support pointer profiling.
3041         https://bugs.webkit.org/show_bug.cgi?id=183573
3042         <rdar://problem/38384697>
3043
3044         Reviewed by Filip Pizlo.
3045
3046         Changed Poisoned so that it can be used on tagged pointers as well.
3047
3048         * wtf/Poisoned.h:
3049
3050 2018-03-11  Filip Pizlo  <fpizlo@apple.com>
3051
3052         Split DirectArguments into JSValueOOB and JSValueStrict parts
3053         https://bugs.webkit.org/show_bug.cgi?id=183458
3054
3055         Reviewed by Yusuke Suzuki.
3056
3057         * wtf/MathExtras.h:
3058         (WTF::dynamicPoison): Deleted.
3059
3060 2018-03-11  Yusuke Suzuki  <utatane.tea@gmail.com>
3061
3062         [Win] Use SRWLOCK and CONDITION_VARIABLE to simplify implementation
3063         https://bugs.webkit.org/show_bug.cgi?id=183541
3064
3065         Reviewed by Darin Adler.
3066
3067         After Windows Vista, Windows offers SRWLOCK and CONDITION_VARIABLE.
3068         They can simplify the implementation of our WTF::Mutex and WTF::ThreadCondition.
3069
3070         C++ std::mutex and std::condition_variable uses std::chrono for their timed
3071         functions. Since std::chrono is not overflow-aware, we cannot reliably use
3072         this functionalities. This is why we still keep WTF::Mutex and WTF::ThreadCondition.
3073         They are used for ParkingLot.
3074
3075         * wtf/ThreadingPrimitives.h:
3076         * wtf/ThreadingWin.cpp:
3077         (WTF::Mutex::Mutex):
3078         (WTF::Mutex::~Mutex):
3079         (WTF::Mutex::lock):
3080         (WTF::Mutex::tryLock):
3081         (WTF::Mutex::unlock):
3082         (WTF::absoluteTimeToWaitTimeoutInterval):
3083         (WTF::ThreadCondition::ThreadCondition):
3084         (WTF::ThreadCondition::~ThreadCondition):
3085         (WTF::ThreadCondition::wait):
3086         (WTF::ThreadCondition::timedWait):
3087         (WTF::ThreadCondition::signal):
3088         (WTF::ThreadCondition::broadcast):
3089         (WTF::PlatformCondition::timedWait): Deleted.
3090         (WTF::PlatformCondition::signal): Deleted.
3091
3092 2018-03-10  Commit Queue  <commit-queue@webkit.org>
3093
3094         Unreviewed, rolling out r229436.
3095         https://bugs.webkit.org/show_bug.cgi?id=183542
3096
3097         seems to have regressed wasm compile times by 10% (Requested
3098         by pizlo-mbp on #webkit).
3099
3100         Reverted changeset:
3101
3102         "bmalloc mutex should be adaptive"
3103         https://bugs.webkit.org/show_bug.cgi?id=177839
3104         https://trac.webkit.org/changeset/229436
3105
3106 2018-03-09  Mark Lam  <mark.lam@apple.com>
3107
3108         [Re-landing] Prepare LLInt code to support pointer profiling.
3109         https://bugs.webkit.org/show_bug.cgi?id=183387
3110         <rdar://problem/38199678>
3111
3112         Reviewed by JF Bastien.
3113
3114         * wtf/Platform.h:
3115
3116 2018-03-08  Commit Queue  <commit-queue@webkit.org>
3117
3118         Unreviewed, rolling out r229354 and r229364.
3119         https://bugs.webkit.org/show_bug.cgi?id=183492
3120
3121         Breaks internal builds (Requested by ryanhaddad on #webkit).
3122
3123         Reverted changesets:
3124
3125         "Prepare LLInt code to support pointer profiling."
3126         https://bugs.webkit.org/show_bug.cgi?id=183387
3127         https://trac.webkit.org/changeset/229354
3128
3129         "Add support for ARM64E."
3130         https://bugs.webkit.org/show_bug.cgi?id=183398
3131         https://trac.webkit.org/changeset/229364
3132
3133 2018-03-08  Filip Pizlo  <fpizlo@apple.com>
3134
3135         bmalloc mutex should be adaptive
3136         https://bugs.webkit.org/show_bug.cgi?id=177839
3137
3138         Reviewed by Michael Saboff.
3139         
3140         Add some comments that I thought of while copy-pasting this code.
3141
3142         Reland after failing to reproduce the WasmBench crash that caused it to get rolled out. Maybe that fixed
3143         itself somehow?
3144
3145         * wtf/LockAlgorithmInlines.h:
3146         * wtf/WordLock.cpp:
3147         (WTF::WordLock::unlockSlow):
3148
3149 2018-03-08  Keith Miller  <keith_miller@apple.com>
3150
3151         Disable JIT on Cocoa 32-bit ARM.
3152         https://bugs.webkit.org/show_bug.cgi?id=183426
3153
3154         Reviewed by Michael Saboff.
3155
3156         * wtf/Platform.h:
3157
3158 2018-03-08  Keith Miller  <keith_miller@apple.com>
3159
3160         Use asm instead of __asm__ in WTFBreakpointTrap so MSVC builds
3161         https://bugs.webkit.org/show_bug.cgi?id=183465
3162
3163         Reviewed by Michael Saboff.
3164
3165         * wtf/Assertions.h:
3166
3167 2018-03-07  Filip Pizlo  <fpizlo@apple.com>
3168
3169         Make it possible to randomize register allocation
3170         https://bugs.webkit.org/show_bug.cgi?id=183416
3171
3172         Reviewed by Keith Miller.
3173
3174         * wtf/MathExtras.h:
3175         (WTF::shuffleVector):
3176
3177 2018-03-08  Yusuke Suzuki  <utatane.tea@gmail.com>
3178
3179         [Win] Use __debugbreak for WTFBreakpointTrap
3180         https://bugs.webkit.org/show_bug.cgi?id=183450
3181
3182         Reviewed by Mark Lam.
3183
3184         This patch adds WTFBreakpointTrap() implementation for MSVC by using
3185         __debugbreak. It fixes build failure in Windows due to the use of
3186         WTFBreakpointTrap().
3187
3188         * wtf/Assertions.h:
3189
3190 2018-03-08  Zan Dobersek  <zdobersek@igalia.com>
3191
3192         [GLib] RunLoop::wakeUp(): use a zero value instead of the monotonic time
3193         https://bugs.webkit.org/show_bug.cgi?id=183447
3194
3195         Reviewed by Carlos Garcia Campos.
3196
3197         * wtf/glib/RunLoopGLib.cpp:
3198         (WTF::RunLoop::wakeUp): Micro-optimize the wake-up schedule by using
3199         a zero value as the GSource ready time, instead of retrieving and using
3200         the current monotonic time.
3201
3202 2018-03-08  Tim Horton  <timothy_horton@apple.com>
3203
3204         Don't have Celestial in minimal simulator configuration
3205         https://bugs.webkit.org/show_bug.cgi?id=183432
3206         <rdar://problem/38252985>
3207
3208         Reviewed by Dan Bernstein.
3209
3210         * wtf/Platform.h:
3211
3212 2018-03-06  Yusuke Suzuki  <utatane.tea@gmail.com>
3213
3214         [WTF] Set canInitializeWithMemset = true if T is an integral type
3215         https://bugs.webkit.org/show_bug.cgi?id=183357
3216
3217         Reviewed by Darin Adler.
3218
3219         This patch set `canInitializeWithMemset = true` if T is an integral type.
3220         This can offer a chance to use memset if we use UniqueArray<T> where T is
3221         an integral type. We also rename VectorTypeOperations::initialize to
3222         VectorTypeOperations::initializeIfNonPOD, VectorTypeOperations::forceInitialize
3223         to VectorTypeOperations::initialize respectively.
3224
3225         * wtf/RefCountedArray.h:
3226         (WTF::RefCountedArray::RefCountedArray):
3227         * wtf/UniqueArray.h:
3228         * wtf/Vector.h:
3229         (WTF::VectorTypeOperations::initializeIfNonPOD):
3230         (WTF::VectorTypeOperations::initialize):
3231         (WTF::Vector::Vector):
3232         (WTF::Malloc>::resize):
3233         (WTF::Malloc>::grow):
3234         (WTF::VectorTypeOperations::forceInitialize): Deleted.
3235         * wtf/VectorTraits.h:
3236
3237 2018-03-07  Keith Miller  <keith_miller@apple.com>
3238
3239         Meta-program setupArguments and callOperation
3240         https://bugs.webkit.org/show_bug.cgi?id=183263
3241
3242         Rubber-stamped by Filip Pizlo.
3243
3244         Add a new function traits struct that provides interesting
3245         information about the provided function pointer. Right now it only
3246         provides information for function pointers, in theory we could
3247         also get it to work for other types.
3248
3249         * WTF.xcodeproj/project.pbxproj:
3250         * wtf/Bitmap.h:
3251         (WTF::WordType>::Bitmap):
3252         * wtf/CMakeLists.txt:
3253         * wtf/FunctionTraits.h: Added.
3254         (WTF::slotsForCCallArgument):
3255         (WTF::computeCCallSlots):
3256         (WTF::FunctionTraits<Result):
3257
3258 2018-03-07  Tim Horton  <timothy_horton@apple.com>
3259
3260         Shuffle around some feature flags for minimal simulator mode
3261         https://bugs.webkit.org/show_bug.cgi?id=183419
3262         <rdar://problem/37694987>
3263
3264         Reviewed by Beth Dakin.
3265
3266         * wtf/FeatureDefines.h:
3267         * wtf/Platform.h:
3268
3269 2018-03-06  Mark Lam  <mark.lam@apple.com>
3270
3271         Prepare LLInt code to support pointer profiling.
3272         https://bugs.webkit.org/show_bug.cgi?id=183387
3273         <rdar://problem/38199678>
3274
3275         Reviewed by JF Bastien.
3276
3277         * wtf/Platform.h:
3278
3279 2018-03-06  Commit Queue  <commit-queue@webkit.org>
3280
3281         Unreviewed, rolling out r229330.
3282         https://bugs.webkit.org/show_bug.cgi?id=183379
3283
3284         Broke some Apple internal code (Requested by ap on #webkit).
3285
3286         Reverted changeset:
3287
3288         "Remove unused crash hook functionality"
3289         https://bugs.webkit.org/show_bug.cgi?id=183369
3290         https://trac.webkit.org/changeset/229330
3291
3292 2018-03-06  Michael Catanzaro  <mcatanzaro@igalia.com>
3293
3294         Remove unused crash hook functionality
3295         https://bugs.webkit.org/show_bug.cgi?id=183369
3296
3297         Reviewed by Alexey Proskuryakov.
3298
3299         WTFSetCrashHook and WTFInstallReportBacktraceOnCrashHook are not used on any platforms and
3300         can be removed.
3301
3302         * wtf/Assertions.cpp:
3303         * wtf/Assertions.h:
3304
3305 2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>
3306
3307         Fix std::make_unique / new[] using system malloc
3308         https://bugs.webkit.org/show_bug.cgi?id=182975
3309
3310         Reviewed by JF Bastien.
3311
3312         If we use `make_unique<char[]>(num)` or `new char[num]`, allocation is
3313         done by the system malloc instead of bmalloc. This patch fixes this issue
3314         by following three changes.
3315
3316         1. Introduce UniqueArray<T>. It allocates memory from FastMalloc. While C++
3317         array with `new` need to hold the size to call destructor correctly, our
3318         UniqueArray only supports type T which does not have a non trivial destructor.
3319         It reduces the allocation size since we do not need to track the size of the
3320         array compared to standard `new T[]`. This is basically usable if we want to
3321         have raw array which pointer won't be changed even if the container is moved.
3322         In addition, we also extend UniqueArray<T> for types which have non trivial
3323         destructors.
3324
3325         2. Use Vector<T> instead.
3326
3327         3. Annotate allocated types with MAKE_FAST_ALLOCATED. Since it introduces
3328         new[] and delete[] operators, make_unique<T[]>(num) will allocate memory
3329         from FastMalloc.
3330
3331         * WTF.xcodeproj/project.pbxproj:
3332         * wtf/Assertions.cpp:
3333         * wtf/CMakeLists.txt:
3334         * wtf/FastMalloc.h:
3335         (WTF::FastFree::operator() const):
3336         (WTF::FastFree<T::operator() const):
3337         * wtf/MallocPtr.h:
3338         (WTF::MallocPtr::operator bool const):
3339         * wtf/StackShot.h:
3340         (WTF::StackShot::StackShot):
3341         (WTF::StackShot::operator=):
3342         * wtf/SystemFree.h:
3343         (WTF::SystemFree<T::operator() const):
3344         * wtf/UniqueArray.h: Copied from Source/WebKit/Platform/win/LoggingWin.cpp.
3345         (WTF::makeUniqueArray):
3346         * wtf/Vector.h:
3347         (WTF::VectorTypeOperations::forceInitialize):
3348
3349 2018-03-05  Michael Saboff  <msaboff@apple.com>
3350
3351         Start using MAP_JIT for macOS
3352         https://bugs.webkit.org/show_bug.cgi?id=183353
3353
3354         Reviewed by Filip Pizlo.
3355
3356         Unify setting this flag for both iOS and macOS.
3357
3358         * wtf/OSAllocatorPosix.cpp:
3359         (WTF::OSAllocator::reserveAndCommit):
3360
3361 2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>
3362
3363         Unreviewed, follow-up after r229209
3364         https://bugs.webkit.org/show_bug.cgi?id=183312
3365
3366         Add RELEASE_ASSERT to ensure success.
3367
3368         * wtf/cocoa/CPUTimeCocoa.mm:
3369         (WTF::CPUTime::forCurrentThread):
3370         * wtf/unix/CPUTimeUnix.cpp:
3371         (WTF::CPUTime::forCurrentThread):
3372         * wtf/win/CPUTimeWin.cpp:
3373         (WTF::CPUTime::forCurrentThread):
3374
3375 2018-03-05  Yusuke Suzuki  <utatane.tea@gmail.com>
3376
3377         Unreviewed, fix MediaTime test
3378         https://bugs.webkit.org/show_bug.cgi?id=183319
3379
3380         __builtin_xxx_overflow writes overflowed data into ResultType value even if overflow happens.
3381         This is different from the original CheckedArithmetic semantics.
3382
3383         * wtf/CheckedArithmetic.h:
3384
3385 2018-03-04  Yusuke Suzuki  <utatane.tea@gmail.com>
3386
3387         [WTF] Move currentCPUTime and sleep(Seconds) to CPUTime.h and Seconds.h respectively
3388         https://bugs.webkit.org/show_bug.cgi?id=183312
3389
3390         Reviewed by Mark Lam.
3391
3392         1. currentCPUTime to CPUTime.h. It is now defined as CPUTime::forCurrentThread.
3393         We also removes fallback implementation for currentCPUTime since (1) that implementation
3394         is wrong and (2) no environments we support needs this.
3395
3396         2. sleep(Seconds) to Seconds.h. Since sleep(MonotonicTime) and sleep(WallTime) are defined
3397         in MonotonicTime.h and WallTime.h, this code move is natural.
3398
3399         3. Remove wtf/CurrentTime.h since nothing is defined now. But we keep CurrentTime.cpp to
3400         consolidate various time-source implementations in one place.
3401
3402         * WTF.xcodeproj/project.pbxproj:
3403         * benchmarks/ConditionSpeedTest.cpp:
3404         * benchmarks/LockFairnessTest.cpp:
3405         * benchmarks/LockSpeedTest.cpp:
3406         * wtf/CMakeLists.txt:
3407         * wtf/CPUTime.h:
3408         * wtf/CurrentTime.cpp:
3409         (WTF::currentCPUTime): Deleted.
3410         (WTF::sleep): Deleted.
3411         * wtf/CurrentTime.h: Removed.
3412         * wtf/DateMath.cpp:
3413         * wtf/DebugUtilities.h:
3414         * wtf/FastMalloc.cpp:
3415         * wtf/MainThread.cpp:
3416         * wtf/MonotonicTime.cpp:
3417         * wtf/ParkingLot.cpp:
3418         * wtf/Seconds.cpp:
3419         (WTF::sleep):
3420         * wtf/Seconds.h:
3421         * wtf/StackShotProfiler.h:
3422         * wtf/Stopwatch.h:
3423         * wtf/ThreadingPthreads.cpp:
3424         * wtf/ThreadingWin.cpp:
3425         * wtf/cocoa/CPUTimeCocoa.mm:
3426         (WTF::CPUTime::forCurrentThread):
3427         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
3428         * wtf/linux/MemoryPressureHandlerLinux.cpp:
3429         * wtf/unix/CPUTimeUnix.cpp:
3430         (WTF::CPUTime::forCurrentThread):
3431         * wtf/win/CPUTimeWin.cpp:
3432         (WTF::CPUTime::forCurrentThread):
3433         * wtf/win/RunLoopWin.cpp:
3434
3435 2018-03-04  Yusuke Suzuki  <utatane.tea@gmail.com>
3436
3437         [WTF] Use __builtin_xxx_overflow for CheckedArithmetic
3438         https://bugs.webkit.org/show_bug.cgi?id=183319
3439
3440         Reviewed by Darin Adler.
3441
3442         GCC and Clang has the builtins for arithmetic operations with overflow flags.
3443         CheckedArithmetic operations can be done with this builtins. Since the compiler
3444         can use overflow flags, potentially this is more efficient. CheckedArithmetic
3445         already has TestWebKitAPI tests and we ensured the tests pass.
3446
3447         * wtf/CheckedArithmetic.h:
3448
3449 2018-03-02  Yusuke Suzuki  <utatane.tea@gmail.com>
3450
3451         [WTF] Remove RunLoop and RunLoop::Timer's interface using double as seconds
3452         https://bugs.webkit.org/show_bug.cgi?id=183293
3453
3454         Reviewed by Alex Christensen.
3455
3456         This patch mainly drops startRepeating(double) and startOneShot(double) interfaces.
3457         Use startRepeating(Seconds) and startOneShot(Seconds) instead.
3458
3459         * wtf/MemoryPressureHandler.cpp:
3460         (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
3461         * wtf/RunLoop.h:
3462         (WTF::RunLoop::TimerBase::startRepeating):
3463         (WTF::RunLoop::TimerBase::startOneShot):
3464         (WTF::RunLoop::TimerBase::startInternal):
3465         * wtf/RunLoopTimer.h:
3466         * wtf/RunLoopTimerCF.cpp:
3467         (WTF::RunLoopTimerBase::start):
3468         * wtf/cf/RunLoopCF.cpp:
3469         (WTF::RunLoop::runForDuration):
3470         (WTF::RunLoop::TimerBase::start):
3471         * wtf/generic/RunLoopGeneric.cpp:
3472         (WTF::RunLoop::TimerBase::start):
3473         * wtf/glib/RunLoopGLib.cpp:
3474         (WTF::RunLoop::TimerBase::start):
3475         * wtf/win/MemoryPressureHandlerWin.cpp:
3476         (WTF::MemoryPressureHandler::install):
3477         * wtf/win/RunLoopWin.cpp:
3478         (WTF::RunLoop::TimerBase::start):
3479
3480 2018-03-02  Christopher Reid  <chris.reid@sony.com>
3481
3482         Build fix after r229174
3483         https://bugs.webkit.org/show_bug.cgi?id=183301
3484
3485         Reviewed by Alex Christensen.
3486
3487         Updating MemoryPressureHandler::holdOff to use Seconds instead of unsigned.
3488
3489         * wtf/MemoryPressureHandler.cpp:
3490
3491 2018-03-02  Tim Horton  <timothy_horton@apple.com>
3492
3493         Make it possible to build for iOS without Celestial
3494         https://bugs.webkit.org/show_bug.cgi?id=183295
3495         <rdar://problem/38074468>
3496
3497         Reviewed by Dan Bernstein.
3498
3499         * wtf/Platform.h:
3500
3501 2018-03-02  Tim Horton  <timothy_horton@apple.com>
3502
3503         Make it possible to disable WKPDFView
3504         https://bugs.webkit.org/show_bug.cgi?id=183281
3505         <rdar://problem/38060815>
3506
3507         Reviewed by Dan Bates.
3508
3509         * wtf/FeatureDefines.h:
3510
3511 2018-03-02  Yusuke Suzuki  <utatane.tea@gmail.com>
3512
3513         [JSC] Annotate more classes with WTF_MAKE_FAST_ALLOCATED
3514         https://bugs.webkit.org/show_bug.cgi?id=183279
3515
3516         Reviewed by JF Bastien.
3517
3518         * wtf/SimpleStats.h:
3519         * wtf/ThreadGroup.h:
3520
3521 2018-03-01  Yusuke Suzuki  <utatane.tea@gmail.com>
3522
3523         Remove monotonicallyIncreasingTime
3524         https://bugs.webkit.org/show_bug.cgi?id=182911
3525
3526         Reviewed by Michael Catanzaro.
3527
3528         This patch drops monotonicallyIncreasingTime and monotonicallyIncreasingTimeMS.
3529         We have MonotonicTime API instead. This offers strongly typed MonotonicTime,
3530         Seconds etc. This reduces the chance of bugs mixing doubles which represent milliseconds
3531         and seconds.
3532
3533         Large part of this patch is mechanical one: replacing monotonicallyIncreasingTime with
3534         MonotonicTime, using MonotonicTime and Seconds instead of raw doubles.
3535
3536         But this patch actually finds some bugs (but it is a bit difficult to show it as a test).
3537         One is mixing media time (CACurrentMediaTime()) and MonotonicTime. Basically they are
3538         super close because both uses mach_absolute_time(). But they would be slightly different.
3539         So we should not mix them.
3540
3541         The second bug is GraphicsLayer::suspendAnimations(double). While CA ports (Apple, AppleWin,
3542         iOS etc.) use this double as MonotonicTime, GTK and WPE use this double as Seconds (timeOffset).
3543         This patch fixes it and now the signature becomes GraphicsLayer::suspendAnimations(MonotonicTime).
3544
3545         In this patch, we still uses bunch of double for Seconds. But fixing them at this patch increases
3546         the size of this larger and larger. So some of them remains double. This should be fixed in
3547         subsequent patches.
3548
3549         * benchmarks/ConditionSpeedTest.cpp:
3550         * benchmarks/LockSpeedTest.cpp:
3551         * wtf/CurrentTime.cpp:
3552         (WTF::MonotonicTime::now):
3553         (WTF::monotonicallyIncreasingTime): Deleted.
3554         * wtf/CurrentTime.h:
3555         (WTF::monotonicallyIncreasingTimeMS): Deleted.
3556         * wtf/MemoryPressureHandler.h:
3557         * wtf/MonotonicTime.cpp:
3558         (WTF::MonotonicTime::now): Deleted.
3559         * wtf/MonotonicTime.h:
3560         * wtf/ParkingLot.cpp:
3561         * wtf/Seconds.h:
3562         (WTF::Seconds::nan):
3563         * wtf/Stopwatch.h:
3564         (WTF::Stopwatch::reset):
3565         (WTF::Stopwatch::start):
3566         (WTF::Stopwatch::stop):
3567         (WTF::Stopwatch::elapsedTime):
3568         (WTF::Stopwatch::elapsedTimeSince):
3569         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
3570         (WTF::MemoryPressureHandler::holdOff):
3571         (WTF::MemoryPressureHandler::respondToMemoryPressure):
3572         * wtf/linux/MemoryPressureHandlerLinux.cpp:
3573         (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
3574         (WTF::MemoryPressureHandler::holdOff):
3575         (WTF::MemoryPressureHandler::respondToMemoryPressure):
3576         * wtf/win/MemoryPressureHandlerWin.cpp:
3577         (WTF::MemoryPressureHandler::holdOff):
3578
3579 2018-03-02  Dan Bernstein  <mitz@apple.com>
3580
3581         Safari uses WebContent.Development when loading injected bundle embedded in its app bundle
3582         https://bugs.webkit.org/show_bug.cgi?id=183275
3583
3584         Reviewed by Tim Horton.
3585
3586         * wtf/spi/cocoa/SecuritySPI.h: Declared SecTaskGetCodeSignStatus.
3587
3588 2018-02-27  Karlen Simonyan  <szkarlen@gmail.com>
3589
3590         [Win64] JSCOnly compile error using VS2017 and cmake
3591         https://bugs.webkit.org/show_bug.cgi?id=183176
3592
3593         Reviewed by Alex Christensen.
3594
3595         * wtf/PlatformJSCOnly.cmake:
3596
3597 2018-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>
3598
3599         [GStreamer] User current executable name instead of g_get_prgname() for gst_init
3600         https://bugs.webkit.org/show_bug.cgi?id=183119
3601
3602         Reviewed by Philippe Normand.
3603
3604         Add getCurrentExecutableName() helper function to get the name of the current executable.
3605
3606         * wtf/glib/GLibUtilities.cpp:
3607         (getCurrentExecutableName): Get the basename of getCurrentExecutablePath() falling back to g_get_prgname().
3608         * wtf/glib/GLibUtilities.h:
3609
3610 2018-02-23  John Wilander  <wilander@apple.com>
3611
3612         Introduce ITP debug logging as an opt-in developer feature
3613         https://bugs.webkit.org/show_bug.cgi?id=183065
3614         <rdar://problem/37803761>
3615
3616         Reviewed by Brent Fulgham.
3617
3618         * wtf/Assertions.h:
3619             Introduces RELEASE_LOG_INFO() and RELEASE_LOG_INFO_IF().
3620
3621 2018-02-23  Fujii Hironori  <Hironori.Fujii@sony.com>
3622
3623         warning: unused variable 'InitialBufferSize' in Assertions.cpp
3624         https://bugs.webkit.org/show_bug.cgi?id=183076
3625
3626         Reviewed by Yusuke Suzuki.
3627
3628         * wtf/Assertions.cpp: Moved the definition of InitialBufferSize to inside #if.
3629
3630 2018-02-22  Yusuke Suzuki  <utatane.tea@gmail.com>
3631
3632         Remove currentTime() / currentTimeMS()
3633         https://bugs.webkit.org/show_bug.cgi?id=183052
3634
3635         Reviewed by Mark Lam.
3636
3637         This patch removes WTF::currentTime() and WTF::currentTimeMS().
3638         We have fancy WallTime APIs. It has strong types like WallTime and Seconds,
3639         and this reduces the chance of bugs mixing doubles which represent milliseconds
3640         and seconds.
3641
3642         * wtf/Condition.h:
3643         * wtf/CurrentTime.cpp:
3644         (WTF::currentTime):
3645         (WTF::WallTime::now):
3646         * wtf/CurrentTime.h:
3647         (WTF::currentTimeMS): Deleted.
3648         * wtf/DateMath.h:
3649         (WTF::jsCurrentTime):
3650         * wtf/ParkingLot.cpp:
3651         (WTF::ParkingLot::parkConditionallyImpl):
3652         * wtf/ThreadingPrimitives.h:
3653         * wtf/ThreadingPthreads.cpp:
3654         (WTF::ThreadCondition::timedWait):
3655         * wtf/ThreadingWin.cpp:
3656         (WTF::ThreadCondition::timedWait):
3657         (WTF::absoluteTimeToWaitTimeoutInterval):
3658         * wtf/WallTime.cpp:
3659         (WTF::WallTime::now): Deleted.
3660         * wtf/WallTime.h:
3661
3662 2018-02-22  Yusuke Suzuki  <utatane.tea@gmail.com>
3663
3664         Remove sleep(double) and sleepMS(double) interfaces
3665     &