DFG_ASSERT should allow stuffing registers before trapping.
[WebKit-https.git] / Source / WTF / ChangeLog
1 2017-06-30  Keith Miller  <keith_miller@apple.com>
2
3         DFG_ASSERT should allow stuffing registers before trapping.
4         https://bugs.webkit.org/show_bug.cgi?id=174005
5
6         Reviewed by Mark Lam.
7
8         Add new template functions that enable stuffing up to five values
9         into registers before crashing.
10
11         * wtf/Assertions.h:
12         (CRASH_WITH_INFO):
13
14 2017-06-28  Brent Fulgham  <bfulgham@apple.com>
15
16         Teach ResourceLoadStatistics to recognize changes in the file system
17         https://bugs.webkit.org/show_bug.cgi?id=173800
18         <rdar://problem/32937842>
19
20         Reviewed by Chris Dumez.
21
22         * wtf/DispatchPtr.h: Added (moved from WebKit2)
23         * wtf/Platform.h: Make sure USE_FILE_LOCK is enabled.
24
25 2017-06-28  David Kilzer  <ddkilzer@apple.com>
26
27         Fix typo in comment: WordResult => WorkResult
28
29         * wtf/AutomaticThread.h:
30
31 2017-06-27  Caio Lima  <ticaiolima@gmail.com>
32
33         [ESnext] Implement Object Rest - Implementing Object Rest Destructuring
34         https://bugs.webkit.org/show_bug.cgi?id=167962
35
36         Reviewed by Saam Barati.
37
38         * wtf/HashSet.h:
39         (WTF::=):
40
41 2017-06-26  Yusuke Suzuki  <utatane.tea@gmail.com>
42
43         [WTF] Drop Thread::create(obsolete things) API since we can use lambda
44         https://bugs.webkit.org/show_bug.cgi?id=173825
45
46         Reviewed by Saam Barati.
47
48         Thread::create(ThreadFunction, void* data, const char* name) is a bit old API.
49         Since we have C++ lambda, the above API is simply unnecessary. And C++ lambda
50         based one is better since the above API needs casting data to and from void*.
51
52         * wtf/Function.h:
53         Avoid ambiguity.
54         * wtf/ParallelJobsGeneric.cpp:
55         (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
56         (WTF::ParallelEnvironment::ThreadPrivate::workerThread): Deleted.
57         * wtf/ParallelJobsGeneric.h:
58         * wtf/Threading.cpp:
59         * wtf/ThreadingWin.cpp:
60         (WTF::createThread):
61
62 2017-06-25  Yusuke Suzuki  <utatane.tea@gmail.com>
63
64         initializeThreading() [first] causes WTFCrash due to maxSingleAllocationSize not being initialized
65         https://bugs.webkit.org/show_bug.cgi?id=173720
66
67         Reviewed by Mark Lam.
68
69         When using std::numeric_limits<size_t>::max() for global variable's initialization,
70         it seems that it invokes static constructor to initialize this in VC++.
71         We avoid this edge case by introducing a workaround using SIZE_MAX here.
72
73         When I perform git-grep, there is only one site (this) using std::numeric_limits<>::xxx()
74         to initialize global variable.
75
76         * wtf/FastMalloc.cpp:
77
78 2017-06-25  Konstantin Tokarev  <annulen@yandex.ru>
79
80         Remove excessive headers from JavaScriptCore
81         https://bugs.webkit.org/show_bug.cgi?id=173812
82
83         Reviewed by Darin Adler.
84
85         * wtf/Bag.h:
86
87 2017-06-23  Keith Miller  <keith_miller@apple.com>
88
89         Switch VMTraps to use halt instructions rather than breakpoint instructions
90         https://bugs.webkit.org/show_bug.cgi?id=173677
91         <rdar://problem/32178892>
92
93         Reviewed by JF Bastien.
94
95         Remove the Trap signal handler code since it plays badly with lldb and combine
96         SIGBUS with SIGSEGV since distiguishing them is generally non-portable.
97
98         Also, update the platform code to only use signaling VMTraps
99         on where we have an appropriate instruction (x86 and ARM64).
100
101         * wtf/Platform.h:
102         * wtf/threads/Signals.cpp:
103         (WTF::fromMachException):
104         (WTF::toMachMask):
105         (WTF::installSignalHandler):
106         (WTF::jscSignalHandler):
107         * wtf/threads/Signals.h:
108         (WTF::toSystemSignal):
109         (WTF::fromSystemSignal):
110
111 2017-06-23  Antti Koivisto  <antti@apple.com>
112
113         Add notifyutil registrations for going in and out of simulated low memory state
114         https://bugs.webkit.org/show_bug.cgi?id=173797
115
116         Reviewed by Andreas Kling.
117
118         Add
119
120         notifyutil -p org.WebKit.lowMemory.begin
121         notifyutil -p org.WebKit.lowMemory.end
122
123         for debugging.
124
125         * wtf/cocoa/MemoryPressureHandlerCocoa.mm:
126         (WTF::MemoryPressureHandler::install):
127
128 2017-06-23  Konstantin Tokarev  <annulen@yandex.ru>
129
130         Remove more unused headers from WTF
131         https://bugs.webkit.org/show_bug.cgi?id=173761
132
133         Reviewed by Yusuke Suzuki.
134
135         * wtf/Liveness.h:
136         * wtf/PageAllocation.h:
137         * wtf/ParallelJobs.h:
138
139 2017-06-22  Andreas Kling  <akling@apple.com>
140
141         Rename MemoryPressureHandler::setTabCount to setPageCount
142         https://bugs.webkit.org/show_bug.cgi?id=173750
143
144         Reviewed by Daniel Bates.
145
146         This function is counting WebCore::Page objects (excluding utility Pages used
147         by SVG-as-image and the web inspector) so let's name it appropriately.
148         Not all WebKit clients have tabs.
149
150         * wtf/MemoryPressureHandler.cpp:
151         (WTF::MemoryPressureHandler::setPageCount):
152         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
153         (WTF::MemoryPressureHandler::measurementTimerFired):
154         (WTF::MemoryPressureHandler::setTabCount): Deleted.
155         * wtf/MemoryPressureHandler.h:
156
157 2017-06-21  Andreas Kling  <akling@apple.com>
158
159         Increase memory kill limits for WebContent processes that manage multiple tabs.
160         https://bugs.webkit.org/show_bug.cgi?id=173674
161
162         Reviewed by Geoffrey Garen.
163
164         When opening <a target=_blank> links, we currently have to use the same WebContent
165         process for the new tab, to support scripting the window.opener object.
166         This means that some WebContent processes end up hosting multiple tabs, making it
167         more likely that those processes will hit the memory limits.
168
169         Address this by adding some additional allowance for multi-tab processes:
170
171             For each additional tab, up to 4 tabs, add 1GB to the memory kill limit.
172
173         * wtf/MemoryPressureHandler.cpp:
174         (WTF::thresholdForMemoryKillWithProcessState):
175         (WTF::MemoryPressureHandler::setTabCount):
176         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
177         (WTF::MemoryPressureHandler::measurementTimerFired):
178         * wtf/MemoryPressureHandler.h:
179
180 2017-06-21  Chris Dumez  <cdumez@apple.com>
181
182         Allow constructing a WTF:Function from a function pointer
183         https://bugs.webkit.org/show_bug.cgi?id=173660
184
185         Reviewed by Alex Christensen.
186
187         Allow constructing a WTF:Function from a function pointer and
188         assigning a function pointer to a WTF:Function.
189
190         * wtf/Function.h:
191
192 2017-06-20  Simon Fraser  <simon.fraser@apple.com>
193
194         Remove WILL_REVEAL_EDGE_EVENTS code
195         https://bugs.webkit.org/show_bug.cgi?id=173632
196
197         Reviewed by Sam Weinig, Beth Dakin.
198
199         Remove will-reveal-edge events, which never took off.
200
201         * wtf/FeatureDefines.h:
202
203 2017-06-20  Konstantin Tokarev  <annulen@yandex.ru>
204
205         Remove excessive include directives from WTF
206         https://bugs.webkit.org/show_bug.cgi?id=173553
207
208         Reviewed by Saam Barati.
209
210         * wtf/AutomaticThread.h:
211         * wtf/BagToHashMap.h:
212         * wtf/CrossThreadCopier.h:
213         * wtf/CrossThreadQueue.h:
214         * wtf/DateMath.h:
215         * wtf/Expected.h:
216         * wtf/HashMap.h:
217         * wtf/Indenter.h:
218         * wtf/MessageQueue.h:
219         * wtf/MetaAllocator.h:
220         * wtf/MetaAllocatorHandle.h:
221         * wtf/RandomNumberSeed.h:
222         * wtf/Ref.h:
223         * wtf/RefPtr.h:
224         * wtf/RunLoop.h:
225         * wtf/SchedulePair.h:
226         * wtf/StackStats.h:
227         * wtf/SynchronizedFixedQueue.h:
228         * wtf/ThreadMessage.h:
229         * wtf/Threading.cpp:
230         * wtf/Threading.h:
231         * wtf/ThreadingPthreads.cpp:
232         * wtf/ThreadingWin.cpp:
233         * wtf/WTFThreadData.h:
234         * wtf/WorkQueue.h:
235         * wtf/glib/GRefPtr.h:
236         * wtf/text/AtomicStringTable.h:
237         * wtf/text/LineBreakIteratorPoolICU.h:
238
239 2017-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>
240
241         [WTF] Enable WTF::Signals only when HAVE(MACHINE_CONTEXT) is true
242         https://bugs.webkit.org/show_bug.cgi?id=173590
243
244         Reviewed by Carlos Garcia Campos.
245
246         WTF::Signals require a feature rewriting a value of a machine context.
247         This is only available under HAVE(MACHINE_CONTEXT).
248         This patch disables WTF::Signals on !HAVE(MACHINE_CONTEXT) environments.
249
250         * wtf/threads/Signals.cpp:
251         * wtf/threads/Signals.h:
252
253 2017-06-20  Yusuke Suzuki  <utatane.tea@gmail.com>
254
255         [WTF] Rebaseline std::optional
256         https://bugs.webkit.org/show_bug.cgi?id=173582
257
258         Reviewed by JF Bastien.
259
260         Update the copy of our std::optional to the latest version.
261         It adds std::optional::has_value() and std::optional::reset().
262
263         * wtf/Optional.h:
264
265 2017-06-18  Yusuke Suzuki  <utatane.tea@gmail.com>
266
267         [WTF] Include execinfo.h and dlfcn.h based on platform defines
268         https://bugs.webkit.org/show_bug.cgi?id=173531
269
270         Reviewed by Alex Christensen.
271
272         execinfo.h and dlfcn.h can be missing in some libc libraries.
273         When including it, we should honor platform defines like HAVE(DLADDR).
274
275         * wtf/StackTrace.cpp:
276
277 2017-06-18  Darin Adler  <darin@apple.com>
278
279         Fix Ref to deref before assignment, add tests for this to RefPtr, Ref, Function
280         https://bugs.webkit.org/show_bug.cgi?id=173526
281
282         Reviewed by Sam Weinig.
283
284         * wtf/Ref.h: Changed operator= to not be defined inside the class definition.
285         Added swap functions. Changed operator= implementations to use swap in the
286         conventional manner, the same way that RefPtr does.
287
288 2017-06-18  Chris Dumez  <cdumez@apple.com>
289
290         Use WTF::Function instead of std::function in WTF/
291         https://bugs.webkit.org/show_bug.cgi?id=173519
292
293         Reviewed by Sam Weinig.
294
295         Use WTF::Function instead of std::function in WTF/ to avoid
296         copying.
297
298         * wtf/Brigand.h:
299         * wtf/Condition.h:
300         * wtf/Expected.h:
301         * wtf/FunctionDispatcher.h:
302         * wtf/MainThread.h:
303         * wtf/MemoryPressureHandler.h:
304         (WTF::MemoryPressureHandler::setMemoryKillCallback):
305         (WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
306         (WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):
307         * wtf/Optional.h:
308         * wtf/ParkingLot.h:
309         * wtf/RefCounter.h:
310         (WTF::RefCounter<T>::RefCounter):
311         * wtf/WorkQueue.h:
312         * wtf/linux/MemoryPressureHandlerLinux.cpp:
313         (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
314         * wtf/text/WTFString.cpp:
315         (WTF::String::split):
316         * wtf/text/WTFString.h:
317
318 2017-06-16  Alex Christensen  <achristensen@webkit.org>
319
320         Fix Mac CMake build.
321
322         * wtf/PlatformMac.cmake:
323         Generate MachExceptionsServer.h
324
325 2017-06-16  Wenson Hsieh  <wenson_hsieh@apple.com>
326
327         [iOS DnD] Upstream iOS drag and drop implementation into OpenSource WebKit
328         https://bugs.webkit.org/show_bug.cgi?id=173366
329         <rdar://problem/32767014>
330
331         Reviewed by Tim Horton.
332
333         Define ENABLE_DRAG_SUPPORT as 1 by default and 0 for iOS, and define ENABLE_DATA_INTERACTION as 0 by default.
334         These are overridden to both be 1 for iOS 11+ in the FeatureDefines.xcconfig within each individual project.
335
336         * wtf/Platform.h:
337
338 2017-06-15  Chris Dumez  <cdumez@apple.com>
339
340         Fix typo in XPCSPI.h
341         https://bugs.webkit.org/show_bug.cgi?id=173426
342
343         Reviewed by Alex Christensen.
344
345         We should check if xpc_release is defined before defining it,
346         not xpc_retain.
347
348         * wtf/spi/darwin/XPCSPI.h:
349
350 2017-06-15  Konstantin Tokarev  <annulen@yandex.ru>
351
352         Implement FALLTHROUGH macro for compilers other than Clang
353         https://bugs.webkit.org/show_bug.cgi?id=173385
354
355         Reviewed by Alex Christensen.
356
357         FALLTHROUGH should be able to use [[gnu::fallthrough]] attribute of
358         GCC, and [[fallthrough]] from C++17, whichever is available.
359
360         * wtf/Compiler.h:
361
362 2017-06-14  Nael Ouedraogo  <nael.ouedraogo@crf.canon.fr>
363
364         MediaSource duration attribute should not be equal to Infinity when set to a value greater than 2^64
365         https://bugs.webkit.org/show_bug.cgi?id=171668
366
367         Reviewed by Jer Noble.
368
369         MediaSource duration attribute is a double represented in MediaSource by a MediaTime instance created with
370         MediaTime::CreateWithDouble(). This method implements an overflow control mechanism which sets MediaTime to
371         Infinity when the double value passed as argument is greater than 2^64.
372
373         This patch removes the overflow control mechanism when time value is represented as a double. This patch also
374         modifies the behavior of mathematical operations between a double MediaTime and rational MediaTime: the rational
375         MediaTime is converted to a double before applying the operation. Double MediaTime precision is the same as for
376         double. Overflow mechanisms still apply to the conversion of a double MediaTime to rational with setTimescale()
377         method. No behavior change for rational MediaTime.
378
379         * wtf/MediaTime.cpp:
380         (WTF::MediaTime::createWithFloat):
381         (WTF::MediaTime::createWithDouble):
382         (WTF::MediaTime::operator+):
383         (WTF::MediaTime::operator-):
384
385 2017-06-13  Zan Dobersek  <zdobersek@igalia.com>
386
387         [GTK][WPE] Use CMAKE_THREAD_LIBS_INIT in WTF platform CMake files
388         https://bugs.webkit.org/show_bug.cgi?id=173310
389
390         Reviewed by Xabier Rodriguez-Calvar.
391
392         In the WTF platform CMake files for the GTK+ and WPE ports, use the
393         CMAKE_THREAD_LIBS_INIT variable to specify the threading library we
394         should be linking against. On some platforms this variable will be
395         empty because the given compiler will automatically handle the -pthread
396         compiler flag and sort out linking on its own.
397
398         The same approach is already used for the JSCOnly configuration.
399
400         * wtf/PlatformGTK.cmake:
401         * wtf/PlatformWPE.cmake:
402
403 2017-06-13  Youenn Fablet  <youenn@apple.com>
404
405         Filter SDP from ICE candidates in case of local ICE candidate filtering
406         https://bugs.webkit.org/show_bug.cgi?id=173120
407
408         Reviewed by Eric Carlson.
409
410         Adding split helper routine with functor parameter.
411
412         * wtf/text/WTFString.cpp:
413         (WTF::String::split):
414         * wtf/text/WTFString.h:
415         (WTF::String::contains):
416
417 2017-06-13  Don Olmstead  <don.olmstead@sony.com>
418
419         [WTF] Remove redundant includes in config.h
420         https://bugs.webkit.org/show_bug.cgi?id=173292
421
422         Reviewed by Alex Christensen.
423
424         * config.h:
425         * wtf/ExportMacros.h:
426
427 2017-06-12  Jer Noble  <jer.noble@apple.com>
428
429         Screen sleeps while doing WebRTC video
430         https://bugs.webkit.org/show_bug.cgi?id=173278
431
432         Reviewed by Eric Carlson.
433
434         Drive-by fix: add some generic methods for iterating over collections.
435
436         * WTF.xcodeproj/project.pbxproj:
437         * wtf/Algorithms.h: Added.
438         (WTF::forEach):
439         (WTF::anyOf):
440         (WTF::allOf):
441
442 2017-06-12  Carlos Garcia Campos  <cgarcia@igalia.com>
443
444         [GTK] Move WebKit GType macros to WTF
445         https://bugs.webkit.org/show_bug.cgi?id=173249
446
447         Reviewed by Žan Doberšek.
448
449         They can be used by glib-based ports and eventually by JavaScriptCore glib bindings too.
450
451         * wtf/glib/WTFGType.h: Copied from Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h.
452
453 2017-06-11  Yusuke Suzuki  <utatane.tea@gmail.com>
454
455         [WTF] Make ThreadMessage portable
456         https://bugs.webkit.org/show_bug.cgi?id=172073
457
458         Reviewed by Keith Miller.
459
460         Recently, we change ThreadMessage semantics: message handler
461         can be executed in the sender thread.
462         This allows ThreadMessage to be implemented in a portable way.
463
464         This patch implements ThreadMessage for all the platforms.
465         We use platform-independent Thread APIs, suspend(), resume(),
466         and getRegisters().
467
468         * wtf/PlatformRegisters.h:
469         (WTF::registersFromUContext):
470         * wtf/ThreadMessage.cpp:
471         (WTF::sendMessageScoped):
472         (WTF::ThreadMessageData::ThreadMessageData): Deleted.
473         (): Deleted.
474         (WTF::initializeThreadMessages): Deleted.
475         (WTF::sendMessageUsingSignal): Deleted.
476         (WTF::sendMessageUsingMach): Deleted.
477         (WTF::deliverMessagesUsingMach): Deleted.
478         * wtf/ThreadMessage.h:
479         * wtf/Threading.cpp:
480         (WTF::initializeThreading):
481         * wtf/Threading.h:
482         (WTF::Thread::threadMessages): Deleted.
483         * wtf/ThreadingPthreads.cpp:
484         (WTF::Thread::signalHandlerSuspendResume):
485         (WTF::threadStateMetadata):
486         (WTF::Thread::getRegisters):
487         * wtf/threads/Signals.cpp:
488         (WTF::handleSignalsWithMach):
489
490 2017-06-11  Yusuke Suzuki  <utatane.tea@gmail.com>
491
492         [WTF] Drop unnecessary includes in Threading.h
493         https://bugs.webkit.org/show_bug.cgi?id=173167
494
495         Reviewed by Darin Adler.
496
497         Threading.h includes bunch of headers. But some of them are not necessary.
498         This patch cleans up it a bit.
499
500         * wtf/Assertions.cpp:
501         * wtf/LocklessBag.h:
502         * wtf/Threading.h:
503         * wtf/ThreadingPrimitives.h:
504
505 2017-06-10  Yusuke Suzuki  <utatane.tea@gmail.com>
506
507         [WTF] Add RegisteredSymbolImpl
508         https://bugs.webkit.org/show_bug.cgi?id=173230
509
510         Reviewed by Mark Lam.
511
512         Most symbols are not registered in SymbolRegistry. However, we currently always
513         allocate a pointer member to point to a SymbolRegistry, and this pointer is always null.
514         SymbolImpl is immutable, and it will never be registered with a SymbolRegistry
515         after it is created. Hence, this member is wasteful.
516
517         Instead, we add a new derived class RegisteredSymbolImpl, which will set a flag in
518         SymbolImpl to indicate that it is registered with a SymbolRegistry. The only way to
519         create a RegisteredSymbolImpl is via a factory method provided by the SymbolRegistry.
520         The factory method will pass the SymbolRegistry this pointer to the RegisteredSymbolImpl's
521         constructor for initializing the RegisteredSymbolImpl's m_symbolRegistry field.
522         By doing so,
523
524         1. We do not need to set m_symbolRegistry after creating a Symbol. It is clean.
525         2. We reduce the size of SymbolImpls that do not need to be registered.
526
527         * wtf/text/StringImpl.cpp:
528         (WTF::StringImpl::~StringImpl):
529         * wtf/text/StringImpl.h:
530         * wtf/text/SymbolImpl.cpp:
531         (WTF::SymbolImpl::create):
532         (WTF::RegisteredSymbolImpl::create):
533         * wtf/text/SymbolImpl.h:
534         (WTF::SymbolImpl::hashForSymbol):
535         (WTF::SymbolImpl::isRegistered):
536         (WTF::SymbolImpl::SymbolImpl):
537         (WTF::RegisteredSymbolImpl::symbolRegistry):
538         (WTF::RegisteredSymbolImpl::clearSymbolRegistry):
539         (WTF::RegisteredSymbolImpl::RegisteredSymbolImpl):
540         (WTF::SymbolImpl::symbolRegistry):
541         * wtf/text/SymbolRegistry.cpp:
542         (WTF::SymbolRegistry::~SymbolRegistry):
543         (WTF::SymbolRegistry::symbolForKey):
544         (WTF::SymbolRegistry::keyForSymbol):
545         (WTF::SymbolRegistry::remove):
546         * wtf/text/SymbolRegistry.h:
547
548 2017-06-10  Dan Bernstein  <mitz@apple.com>
549
550         Reverted r218056 because it made the IDE reindex constantly.
551
552         * Configurations/DebugRelease.xcconfig:
553
554 2017-06-10  Dan Bernstein  <mitz@apple.com>
555
556         [Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
557         https://bugs.webkit.org/show_bug.cgi?id=173223
558
559         Reviewed by Sam Weinig.
560
561         The rebuilds were happening due to a difference in the compiler options that the IDE and
562         xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
563         xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
564         specify an appropriate path in CLANG_INDEX_STORE_PATH.
565
566         * Configurations/DebugRelease.xcconfig:
567
568 2017-06-09  Chris Dumez  <cdumez@apple.com>
569
570         Update Thread::create() to take in a WTF::Function instead of a std::function
571         https://bugs.webkit.org/show_bug.cgi?id=173175
572
573         Reviewed by Mark Lam.
574
575         Update Thread::create() to take in a WTF::Function instead of a std::function. Unlike
576         std::function, WTF:Function is not copyable and does not make implicit copies of captured
577         variables. Doing captures such as [string = string.isolatedCopy()] when passing an
578         std::function to another thread has lead to bugs in the past due to implicit copying of
579         the captured string.
580
581         * wtf/Threading.cpp:
582         (WTF::Thread::create):
583         * wtf/Threading.h:
584
585 2017-06-09  Chris Dumez  <cdumez@apple.com>
586
587         Update WorkQueue::concurrentApply() to take a WTF::Function instead of an std::function
588         https://bugs.webkit.org/show_bug.cgi?id=173165
589
590         Reviewed by Saam Barati.
591
592         Update WorkQueue::concurrentApply() to take a WTF::Function instead of an std::function
593         as std::function has issues with regards to thread safety.
594
595         * wtf/WorkQueue.h:
596         * wtf/cocoa/WorkQueueCocoa.cpp:
597         (WTF::WorkQueue::concurrentApply):
598
599 2017-06-08  Xabier Rodriguez Calvar  <calvaris@igalia.com>
600
601         MediaTime class has rounding issues in different platforms
602         https://bugs.webkit.org/show_bug.cgi?id=172640
603
604         Reviewed by Jer Noble.
605
606         The way a timescale is set when creating a MediaTime from a double
607         can create rounding issues in different platforms because in some
608         rounding is made and in others, it truncates. This way we ensure a
609         common behavior.
610
611         Dumping MediaTimes is also confusing and by the output you don't
612         know if it's containing a double or a fraction. Now, if it
613         contains a double, it only prints the double because printing the
614         fraction is misleading (it currently prints the double read as an
615         integer) and if it contains a fraction it shows the fraction and
616         its double representation separated by an = instead of a ,.
617
618         * wtf/MediaTime.cpp:
619         (WTF::MediaTime::createWithDouble): When creating MediaTime from
620         double, we round instead of leaving it to the cast operation.
621         (WTF::MediaTime::dump):
622
623 2017-06-07  Jer Noble  <jer.noble@apple.com>
624
625         Refactoring: MediaEngineSupportParameters should take a ContentType rather than separate type & codecs strings
626         https://bugs.webkit.org/show_bug.cgi?id=173038
627
628         Reviewed by Eric Carlson.
629
630         Drive by fix: add a version of split that takes a UChar and returns a Vector<String>.
631
632         * wtf/text/WTFString.h:
633         (WTF::String::split):
634
635 2017-06-07  Zan Dobersek  <zdobersek@igalia.com>
636
637         [GCrypt] RSA-PSS support
638         https://bugs.webkit.org/show_bug.cgi?id=172856
639
640         Reviewed by Jiewen Tan.
641
642         * wtf/Platform.h: Define HAVE_RSA_PSS to 1 for USE(GCRYPT). Support for RSA-PSS
643         is provided by default through the libgcrypt library.
644
645 2017-06-06  Chris Dumez  <cdumez@apple.com>
646
647         Unreviewed, rolling out r214974.
648
649         Causes some tabs to start using a huge amount of CPU after 8
650         minutes in the background
651
652         Reverted changeset:
653
654         "Make inactive web processes behave as though under memory
655         pressure."
656         https://bugs.webkit.org/show_bug.cgi?id=170042
657         http://trac.webkit.org/changeset/214974
658
659 2017-06-06  Don Olmstead  <don.olmstead@am.sony.com>
660
661         [WebCore] Enable REQUEST_ANIMATION_FRAME_TIMER for all ports
662         https://bugs.webkit.org/show_bug.cgi?id=172780
663
664         Reviewed by Alex Christensen.
665
666         * wtf/Platform.h:
667
668 2017-06-06  Darin Adler  <darin@apple.com>
669
670         Cut down use of WTF_ARRAY_LENGTH
671         https://bugs.webkit.org/show_bug.cgi?id=172997
672
673         Reviewed by Chris Dumez.
674
675         * wtf/DateMath.cpp:
676         (WTF::equalLettersIgnoringASCIICase): Added helper function template.
677         (WTF::parseDateFromNullTerminatedCharacters): Use a modern for loop instead of
678         WTF_ARRAY_LENGTH. Use startsWithLettersIgnoringASCIICase and
679         equalLettersIgnoringASCIICase instead of strncasecmp.
680
681         * wtf/text/IntegerToStringConversion.h:
682         (WTF::numberToStringImpl): Use std::end instead of WTF_ARRAY_LENGTH.
683         (WTF::writeNumberToBufferImpl): Ditto.
684
685 2017-06-06  Filip Pizlo  <fpizlo@apple.com>
686
687         index out of bound in bytecodebasicblock
688         https://bugs.webkit.org/show_bug.cgi?id=172963
689
690         Reviewed by Saam Barati and Mark Lam.
691
692         * wtf/Assertions.h:
693         (UNREACHABLE_FOR_PLATFORM):
694
695 2017-06-05  Jer Noble  <jer.noble@apple.com>
696
697         Allow clients to specify a list of codecs which should require hardware decode support.
698         https://bugs.webkit.org/show_bug.cgi?id=172787
699
700         Reviewed by Alex Christensen.
701
702         Add a couple of convenience methods:
703         - a String::split() that returns a vector (rather than taking an out-reference to a vector).
704         - A Vector::map() template which takes a Callable and returns a Vector of a different type.
705
706         * wtf/Vector.h:
707         (WTF::Vector::map):
708         * wtf/text/WTFString.h:
709         (WTF::String::split):
710
711 2017-06-04  Konstantin Tokarev  <annulen@yandex.ru>
712
713         Fix build of Windows-specific code with ICU 59.1
714         https://bugs.webkit.org/show_bug.cgi?id=172729
715
716         Reviewed by Darin Adler.
717
718         * wtf/text/win/WCharStringExtras.h: Added new header file wuth helper
719         functions for conversion between WTF::String and wchart_t*.
720         (WTF::stringToNullTerminatedWChar):
721         (WTF::wcharToString):
722         (WTF::nullTerminatedWCharToString):
723
724 2017-06-02  Stephan Szabo  <stephan.szabo@am.sony.com>
725
726         [JSCOnly] Build static jsc.exe on Windows
727         https://bugs.webkit.org/show_bug.cgi?id=172833
728
729         Reviewed by Konstantin Tokarev.
730
731         * wtf/PlatformJSCOnly.cmake:
732
733 2017-06-02  Simon Fraser  <simon.fraser@apple.com>
734
735         Get <chrono> out of StdLibExtras.h
736         https://bugs.webkit.org/show_bug.cgi?id=172744
737
738         Reviewed by Zalan Bujtas.
739
740         We hates std::chrono. Don't include it everywhere to discourage use.
741
742         * wtf/StdLibExtras.h:
743
744 2017-06-02  Filip Pizlo  <fpizlo@apple.com>
745
746         Atomics.load and Atomics.store need to be fully fenced
747         https://bugs.webkit.org/show_bug.cgi?id=172844
748
749         Reviewed by Keith Miller.
750         
751         Add loadFullyFenced and storeFullyFenced to Atomic<>.
752
753         * wtf/Atomics.h:
754         (WTF::Atomic::loadFullyFenced):
755         (WTF::Atomic::storeRelaxed):
756         (WTF::Atomic::storeFullyFenced):
757         (WTF::atomicLoadFullyFenced):
758         (WTF::atomicStoreFullyFenced):
759
760 2017-06-01  Keith Miller  <keith_miller@apple.com>
761
762         Undo rollout in r217638 with bug fix
763         https://bugs.webkit.org/show_bug.cgi?id=172824
764
765         Unreviewed, reland patch with unused set_state code removed.
766
767         * Configurations/WTF.xcconfig:
768         * WTF.xcodeproj/project.pbxproj:
769         * wtf/Platform.h:
770         * wtf/PlatformRegisters.h:
771         (WTF::registersFromUContext):
772         * wtf/StackBounds.h:
773         (WTF::StackBounds::StackBounds):
774         * wtf/ThreadHolder.cpp:
775         (WTF::ThreadHolder::~ThreadHolder):
776         * wtf/ThreadMessage.cpp:
777         (WTF::sendMessageUsingSignal):
778         (WTF::sendMessageUsingMach):
779         (WTF::deliverMessagesUsingMach):
780         (WTF::sendMessageScoped):
781         * wtf/ThreadMessage.h:
782         (WTF::sendMessage):
783         * wtf/Threading.h:
784         (WTF::Thread::machThread):
785         * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
786         * wtf/threads/Signals.cpp:
787         (WTF::startMachExceptionHandlerThread):
788         (WTF::fromMachException):
789         (WTF::toMachMask):
790         (WTF::handleSignalsWithMach):
791         (WTF::setExceptionPorts):
792         (WTF::activeThreads):
793         (WTF::registerThreadForMachExceptionHandling):
794         (WTF::unregisterThreadForMachExceptionHandling):
795         (WTF::installSignalHandler):
796         (WTF::jscSignalHandler):
797         * wtf/threads/Signals.h:
798
799 2017-05-31  Commit Queue  <commit-queue@webkit.org>
800
801         Unreviewed, rolling out r217611 and r217631.
802         https://bugs.webkit.org/show_bug.cgi?id=172785
803
804         "caused wasm-hashset-many.html to become flaky." (Requested by
805         keith_miller on #webkit).
806
807         Reverted changesets:
808
809         "Reland r216808, underlying lldb bug has been fixed."
810         https://bugs.webkit.org/show_bug.cgi?id=172759
811         http://trac.webkit.org/changeset/217611
812
813         "Use dispatch queues for mach exceptions"
814         https://bugs.webkit.org/show_bug.cgi?id=172775
815         http://trac.webkit.org/changeset/217631
816
817 2017-05-31  Keith Miller  <keith_miller@apple.com>
818
819         Use dispatch queues for mach exceptions
820         https://bugs.webkit.org/show_bug.cgi?id=172775
821
822         Reviewed by Geoffrey Garen.
823
824         This patch adds support for using a dispatch queue to handle our
825         mach exceptions. We use a high priority concurrent dispatch queue
826         to handle our mach exceptions. We don't know the priority of the
827         thread whose exception we are handling so the most conservative
828         answer is to respond with a high priority. These events are both
829         rare and usually quite fast so it is likely not a significant cost
830         when the thread with an exception has a low priority.
831
832         * wtf/threads/Signals.cpp:
833         (WTF::startMachExceptionHandlerThread):
834
835 2017-05-31  Keith Miller  <keith_miller@apple.com>
836
837         Reland r216808, underlying lldb bug has been fixed.
838         https://bugs.webkit.org/show_bug.cgi?id=172759
839
840         Unreviewed, relanding old patch. See: rdar://problem/31183352
841
842         * Configurations/WTF.xcconfig:
843         * WTF.xcodeproj/project.pbxproj:
844         * wtf/Platform.h:
845         * wtf/PlatformRegisters.h:
846         (WTF::registersFromUContext):
847         * wtf/StackBounds.h:
848         (WTF::StackBounds::StackBounds):
849         * wtf/ThreadHolder.cpp:
850         (WTF::ThreadHolder::~ThreadHolder):
851         * wtf/ThreadMessage.cpp:
852         (WTF::sendMessageUsingSignal):
853         (WTF::sendMessageUsingMach):
854         (WTF::deliverMessagesUsingMach):
855         (WTF::sendMessageScoped):
856         * wtf/ThreadMessage.h:
857         (WTF::sendMessage):
858         * wtf/Threading.h:
859         (WTF::Thread::machThread):
860         * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
861         * wtf/threads/Signals.cpp:
862         (WTF::startMachExceptionHandlerThread):
863         (WTF::fromMachException):
864         (WTF::toMachMask):
865         (WTF::handleSignalsWithMach):
866         (WTF::setExceptionPorts):
867         (WTF::activeThreads):
868         (WTF::registerThreadForMachExceptionHandling):
869         (WTF::unregisterThreadForMachExceptionHandling):
870         (WTF::installSignalHandler):
871         (WTF::jscSignalHandler):
872         * wtf/threads/Signals.h:
873
874 2017-05-31  Matt Lewis  <jlewis3@apple.com>
875
876         Unreviewed, rolling out r217603.
877
878         This patch broke the internal builds.
879
880         Reverted changeset:
881
882         "Get <chrono> out of StdLibExtras.h"
883         https://bugs.webkit.org/show_bug.cgi?id=172744
884         http://trac.webkit.org/changeset/217603
885
886 2017-05-31  Simon Fraser  <simon.fraser@apple.com>
887
888         Get <chrono> out of StdLibExtras.h
889         https://bugs.webkit.org/show_bug.cgi?id=172744
890
891         Reviewed by Saam Barati.
892
893         We hates std::chrono. Don't include it everywhere to discourage use.
894
895         * wtf/StdLibExtras.h:
896
897 2017-05-30  Ryosuke Niwa  <rniwa@webkit.org>
898
899         Only include DataDetectorsUI headers in iOS
900         https://bugs.webkit.org/show_bug.cgi?id=172633
901
902         Reviewed by David Kilzer.
903
904         Enable data detectors only on iOS and not other variants of iOS.
905
906         * wtf/FeatureDefines.h:
907         * wtf/Platform.h:
908
909 2017-05-29  Yusuke Suzuki  <utatane.tea@gmail.com>
910
911         Unreviewed, disable faster Interpreter::getOpcodeID for ARM_THUMB2 with non-Darwin OSes
912         https://bugs.webkit.org/show_bug.cgi?id=172686
913
914         Because of test failures.
915
916         * wtf/Platform.h:
917
918 2017-05-28  Dan Bernstein  <mitz@apple.com>
919
920         [Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
921         https://bugs.webkit.org/show_bug.cgi?id=172691
922
923         Reviewed by Tim Horton.
924
925         * Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.
926
927 2017-05-28  Yusuke Suzuki  <utatane.tea@gmail.com>
928
929         [JSC][Linux][FreeBSD] Use faster Interpreter::getOpcodeID()
930         https://bugs.webkit.org/show_bug.cgi?id=172686
931
932         Reviewed by Mark Lam.
933
934         As of r217526, JSC gets faster Interpreter::getOpcodeID() by
935         embedding OpcodeID value just before the LLInt machine code
936         handler pointer. By doing so, we can retrieve OpcodeID from
937         the LLInt machine code handler by dereferencing the code
938         pointer. `*((int*)ptr - 1)`.
939
940         This patch allows Linux and FreeBSD environments to use this
941         optimization.
942
943         * wtf/Platform.h:
944
945 2017-05-28  Mark Lam  <mark.lam@apple.com>
946
947         Implement a faster Interpreter::getOpcodeID().
948         https://bugs.webkit.org/show_bug.cgi?id=172669
949
950         Reviewed by Saam Barati.
951
952         Added the USE(LLINT_EMBEDDED_OPCODE_ID) configuration.
953
954         * wtf/Platform.h:
955
956 2017-05-26  Brent Fulgham  <bfulgham@apple.com>
957
958         [WK2] Address thread safety issues with ResourceLoadStatistics
959         https://bugs.webkit.org/show_bug.cgi?id=172519
960         <rdar://problem/31707642>
961
962         Reviewed by Chris Dumez.
963
964         Add a new specialization for HashSet.
965
966         * wtf/CrossThreadCopier.h:
967
968 2017-05-26  Ryan Haddad  <ryanhaddad@apple.com>
969
970         Unreviewed, rolling out r217458.
971
972         This change caused 55 JSC test failures.
973
974         Reverted changeset:
975
976         "Date should use historical data if it's available."
977         https://bugs.webkit.org/show_bug.cgi?id=172592
978         http://trac.webkit.org/changeset/217458
979
980 2017-05-25  Keith Miller  <keith_miller@apple.com>
981
982         Date should use historical data if it's available.
983         https://bugs.webkit.org/show_bug.cgi?id=172592
984
985         Reviewed by Mark Lam.
986
987         The spec previously disallowed using historical data for Dates.
988         This is no longer the case. Additionally, not using historical
989         data, when available, seems unfortunate for users. This patch
990         removes the code dropping historical data.
991
992         * wtf/DateMath.cpp:
993         (WTF::calculateLocalTimeOffset):
994         (WTF::msToMilliseconds): Deleted.
995
996 2017-05-25  Yusuke Suzuki  <utatane.tea@gmail.com>
997
998         [Win] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
999         https://bugs.webkit.org/show_bug.cgi?id=172586
1000
1001         Reviewed by Brent Fulgham.
1002
1003         In ThreadHolder for Windows, we need to construct HashMap<ThreadIdentifier, ThreadHolder*>.
1004         The problem is that ThreadHolder::platformInitialize touches Thread::id() even before Thread
1005         is not established. In that case, id() returns incorrect value.
1006
1007         But, calling ThreadHolder::initialize() after waiting for completion of Thread::establish() is
1008         not a good idea. Since we already have NewThreadContext->creationMutex, we can wait for completion
1009         of Thread::establish() easily. However, if we do so, Thread::create() returns RefPtr<Thread> that
1010         may not call ThreadHolder::initialize() in its thread yet. In that case, ThreadHolder::get() fails.
1011         Thus, Windows WTF::waitForThreadCompletion implementation becomes broken. We can add a new mutex
1012         to wait for completion of ThreadHolder::initialize in the creator of the thread (like a ping-pong!).
1013         But it overly complicates the implementation.
1014
1015         The following is overly complicated initialization phase.
1016
1017         Creator -> AC mutex(1) -------> establishment -> RL mutex(1) ----------------------> AC mutex(2) ->
1018
1019                                Thread -----------------> AC mutex(1) -> ThreadHolder init -> RL mutex(2) ->
1020
1021         So, instead, in this patch, we just use Thread::currentID(). When calling ThreadHolder::initialize(),
1022         we pass ThreadIdentifier by using Thread::currentID(). This implementation works great because,
1023
1024         1. ThreadHolder::initialize requires ThreadIdentifier only in Windows environment because Pthread
1025            ThreadHolder does not create HashMap<>. And this is used for obsolete Threading APIs. Thus this
1026            hack will be removed in the near future.
1027
1028         2. In Windows, Thread::currentID() can return a valid value without using ThreadHolder. And it does
1029            not require Thread establishment. So, calling currentID() to initialize ThreadHolder is ok in
1030            Windows.
1031
1032         * wtf/ThreadHolder.cpp:
1033         (WTF::ThreadHolder::initialize): Deleted.
1034         * wtf/ThreadHolder.h:
1035         * wtf/ThreadHolderPthreads.cpp:
1036         (WTF::ThreadHolder::initialize):
1037         * wtf/ThreadHolderWin.cpp:
1038         (WTF::ThreadHolder::initialize):
1039         (WTF::ThreadHolder::platformInitialize): Deleted.
1040         * wtf/ThreadingWin.cpp:
1041         (WTF::wtfThreadEntryPoint):
1042
1043 2017-05-25  Adrian Perez de Castro  <aperez@igalia.com>
1044
1045         Clang warns about (intended) returning pointer to stack location in WTF/wtf/ThreadingPthreads.cpp
1046         https://bugs.webkit.org/show_bug.cgi?id=172595
1047
1048         Reviewed by Mark Lam.
1049
1050         * wtf/ThreadingPthreads.cpp: Use a #pragma to silence Clang warning about returning a
1051         pointer to the stack (which is intended)
1052
1053 2017-05-25  David Kilzer  <ddkilzer@apple.com>
1054
1055         REGRESSION (r217416): Using #pragma once in WTFString.h broke the build
1056
1057         * wtf/text/WTFString.h: Switch back to #ifndef/#define/#endif.
1058
1059 2017-05-25  David Kilzer  <ddkilzer@apple.com>
1060
1061         Make a change to force a build on the Apple bots
1062
1063         * wtf/text/WTFString.h: Use #pragma once.
1064
1065 2017-05-24  Andreas Kling  <akling@apple.com>
1066
1067         Disable memory kill mechanisms when running with FastMalloc disabled.
1068         https://bugs.webkit.org/show_bug.cgi?id=172550
1069         <rdar://problem/32181908>
1070
1071         Reviewed by Antti Koivisto.
1072
1073         If someone is using WebKit with a non-standard allocator, they are likely trying to debug
1074         or test something, and suddenly getting killed is not gonna help with that.
1075
1076         * wtf/MemoryPressureHandler.cpp:
1077         (WTF::MemoryPressureHandler::setShouldUsePeriodicMemoryMonitor):
1078
1079 2017-05-22  Jiewen Tan  <jiewen_tan@apple.com>
1080
1081         [WebCrypto] Support RSA-PSS
1082         https://bugs.webkit.org/show_bug.cgi?id=170869
1083         <rdar://problem/31640672>
1084
1085         Reviewed by Brent Fulgham.
1086
1087         * wtf/Platform.h:
1088         Add a flag to enable RSA-PSS in the future.
1089
1090 2017-05-23  Myles C. Maxfield  <mmaxfield@apple.com>
1091
1092         Remove dead ENABLE(FONT_LOAD_EVENTS) code
1093         https://bugs.webkit.org/show_bug.cgi?id=172517
1094
1095         Rubber-stamped by Simon Fraser.
1096
1097         * wtf/FeatureDefines.h:
1098
1099 2017-05-23  Don Olmstead  <don.olmstead@am.sony.com>
1100
1101         [WTF] Export additional symbols in threading
1102         https://bugs.webkit.org/show_bug.cgi?id=171952
1103
1104         Reviewed by Konstantin Tokarev.
1105
1106         * wtf/ThreadMessage.h:
1107         * wtf/threads/Signals.h:
1108
1109 2017-05-23  Tomas Popela  <tpopela@redhat.com>
1110
1111         [WTF] Compilation fails with system malloc
1112         https://bugs.webkit.org/show_bug.cgi?id=172445
1113
1114         Reviewed by Michael Catanzaro.
1115
1116         We are using the bmalloc even if the system malloc should be used.
1117         Don't use bmalloc if the system malloc is requested and add the
1118         missing implementation for computeRAMSize() on UNIX that's utilizing
1119         the sysinfo() call.
1120
1121         * wtf/RAMSize.cpp:
1122         (WTF::computeRAMSize):
1123
1124 2017-05-22  Brian Burg  <bburg@apple.com>
1125
1126         Add a debugging macro that sleeps a thread until a debugger attaches
1127         https://bugs.webkit.org/show_bug.cgi?id=171575
1128
1129         Reviewed by Mark Lam.
1130
1131         This is really useful for debugging early errors if for some reason you can't
1132         launch a process directly from the debugger easily, such as Web Content processes.
1133
1134         * WTF.xcodeproj/project.pbxproj:
1135         * wtf/Assertions.h:
1136         Always define the WTFBreakpointTrap() macro. Still make it an error if the CPU
1137         type isn't supported for OS(DARWIN); if used on other platforms, cause a WTFCrash()
1138         with a comment that indicates this is not implemented.
1139
1140         * wtf/DebugUtilities.h: Added.
1141
1142 2017-05-19  Don Olmstead  <don.olmstead@am.sony.com>
1143
1144         [WTF] Remove PLATFORM(WIN) references
1145         https://bugs.webkit.org/show_bug.cgi?id=172301
1146
1147         Reviewed by Yusuke Suzuki.
1148
1149         * wtf/MemoryPressureHandler.cpp:
1150         * wtf/MemoryPressureHandler.h:
1151         * wtf/Platform.h:
1152
1153 2017-05-19  Don Olmstead  <don.olmstead@am.sony.com>
1154
1155         [CMake] Add HAVE check for __int128_t
1156         https://bugs.webkit.org/show_bug.cgi?id=172317
1157
1158         Reviewed by Yusuke Suzuki.
1159
1160         * wtf/MediaTime.cpp:
1161         (WTF::MediaTime::setTimeScale):
1162         * wtf/Platform.h:
1163
1164 2017-05-18  Andreas Kling  <akling@apple.com>
1165
1166         [WK2] Notify WebPageProxy client when an active process goes over the inactive memory limit
1167         https://bugs.webkit.org/show_bug.cgi?id=172244
1168         <rdar://problem/31800943>
1169
1170         Reviewed by Geoffrey Garen.
1171
1172         Add an installable callback to MemoryPressureHandler that gets invoked when an active process
1173         exceeds the kill limit for an inactive process.
1174
1175         This allows a UI client to become aware that backgrounding a tab may cause it to get killed.
1176
1177         * wtf/MemoryPressureHandler.cpp:
1178         (WTF::thresholdForMemoryKillWithProcessState):
1179         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
1180         (WTF::MemoryPressureHandler::measurementTimerFired):
1181         (WTF::MemoryPressureHandler::doesExceedInactiveLimitWhileActive):
1182         (WTF::MemoryPressureHandler::doesNotExceedInactiveLimitWhileActive):
1183         * wtf/MemoryPressureHandler.h:
1184         (WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):
1185
1186 2017-05-18  Geoffrey Garen  <ggaren@apple.com>
1187
1188         AutomaticThread should wait longer before timing out
1189         https://bugs.webkit.org/show_bug.cgi?id=172292
1190
1191         Reviewed by Filip Pizlo.
1192
1193         Increased the idle timeout from 1s => 10s.
1194
1195         This reduces the number of thread restarts on JetStream from
1196         ~150 => ~0. It also matches other thread pool APIs on Darwin.
1197
1198         Intuitively, it seems wrong for helper threads to idle exit during
1199         hardcore benchmarking.
1200
1201         This patch in combination with a bmalloc fix seems to be a 1%-2% JetStream
1202         speedup on my Mac Pro.
1203
1204         A nice side-benefit is that per-thread traces are easier to read.
1205
1206         * wtf/AutomaticThread.cpp:
1207         (WTF::AutomaticThread::start):
1208         * wtf/AutomaticThread.h:
1209
1210 2017-05-18  Don Olmstead  <don.olmstead@am.sony.com>
1211
1212         [Win] Remove usage of _snprintf
1213         https://bugs.webkit.org/show_bug.cgi?id=172251
1214
1215         Reviewed by Per Arne Vollan.
1216
1217         * wtf/DataLog.cpp:
1218         (WTF::initializeLogFileOnce):
1219         (WTF::setDataFile):
1220
1221 2017-05-15  Mark Lam  <mark.lam@apple.com>
1222
1223         Rolling out r214038 and r213697: Crashes when using computed properties with rest destructuring and object spread.
1224         https://bugs.webkit.org/show_bug.cgi?id=172147
1225
1226         Rubber-stamped by Saam Barati.
1227
1228         * wtf/HashSet.h:
1229         (WTF::=):
1230
1231 2017-05-14  Chris Dumez  <cdumez@apple.com>
1232
1233         Drop PassRefPtr class from WTF
1234         https://bugs.webkit.org/show_bug.cgi?id=172091
1235
1236         Reviewed by Alex Christensen.
1237
1238         Drop PassRefPtr class from WTF as it is no longer used or needed.
1239         Also drop RefPtr::release() for the same reasons.
1240
1241         * WTF.xcodeproj/project.pbxproj:
1242         * wtf/CMakeLists.txt:
1243         * wtf/CrossThreadCopier.cpp:
1244         * wtf/CrossThreadCopier.h:
1245         * wtf/Forward.h:
1246         * wtf/PassRefPtr.h: Removed.
1247         * wtf/RefPtr.h:
1248         (WTF::refIfNotNull):
1249         (WTF::derefIfNotNull):
1250         (WTF::RefPtr::RefPtr):
1251         (WTF::RefPtr::release): Deleted.
1252         * wtf/SizeLimits.cpp:
1253         * wtf/Vector.h:
1254
1255 2017-05-13  Chris Dumez  <cdumez@apple.com>
1256
1257         Stop using RefPtr::release()
1258         https://bugs.webkit.org/show_bug.cgi?id=172074
1259
1260         Reviewed by Geoffrey Garen.
1261
1262         * wtf/win/WorkQueueWin.cpp:
1263         (WTF::WorkQueue::dispatchAfter):
1264
1265 2017-05-13  Commit Queue  <commit-queue@webkit.org>
1266
1267         Unreviewed, rolling out r216808.
1268         https://bugs.webkit.org/show_bug.cgi?id=172075
1269
1270         caused lldb to hang when debugging (Requested by smfr on
1271         #webkit).
1272
1273         Reverted changeset:
1274
1275         "Use Mach exceptions instead of signals where possible"
1276         https://bugs.webkit.org/show_bug.cgi?id=171865
1277         http://trac.webkit.org/changeset/216808
1278
1279 2017-05-12  Keith Miller  <keith_miller@apple.com>
1280
1281         Use Mach exceptions instead of signals where possible
1282         https://bugs.webkit.org/show_bug.cgi?id=171865
1283
1284         Reviewed by Mark Lam.
1285
1286         This patch enables using mach exceptions on darwin. The way the
1287         mach exception api works is that we create a mach port, which is
1288         like a file descriptor.  We then wait for a message to arrive on
1289         that port in a thread. When another thread raises an exception (say
1290         due to a bad memory access) the OS sends our thread a message. The
1291         payload of that message is the register file of the crashing
1292         thread. We then call our custom handlers that change the state as
1293         needed. In order to restart the thread we send a payload back to
1294         the OS with an updated register file along with a success message
1295         header.
1296
1297         This patch also makes thread messages work without signals by
1298         simply suspending the thread, and then running the message at that
1299         time.
1300
1301         You can read more about mach exceptions here:
1302         http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/exception.ps
1303         and the Mach interface Generator (MiG) here:
1304         http://www.cs.cmu.edu/afs/cs/project/mach/public/doc/unpublished/mig.ps
1305
1306         * Configurations/WTF.xcconfig:
1307         * WTF.xcodeproj/project.pbxproj:
1308         * wtf/Platform.h:
1309         * wtf/PlatformRegisters.h:
1310         (WTF::registersFromUContext):
1311         * wtf/StackBounds.h:
1312         (WTF::StackBounds::StackBounds):
1313         * wtf/ThreadHolder.cpp:
1314         (WTF::ThreadHolder::~ThreadHolder):
1315         * wtf/ThreadMessage.cpp:
1316         (WTF::sendMessageUsingSignal):
1317         (WTF::sendMessageUsingMach):
1318         (WTF::deliverMessagesUsingMach):
1319         (WTF::sendMessageScoped):
1320         * wtf/ThreadMessage.h:
1321         (WTF::sendMessage):
1322         * wtf/Threading.h:
1323         (WTF::Thread::machThread):
1324         * wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
1325         * wtf/threads/Signals.cpp:
1326         (WTF::startMachExceptionHandlerThread):
1327         (WTF::fromMachException):
1328         (WTF::toMachMask):
1329         (WTF::handleSignalsWithMach):
1330         (WTF::setExceptionPorts):
1331         (WTF::activeThreads):
1332         (WTF::registerThreadForMachExceptionHandling):
1333         (WTF::unregisterThreadForMachExceptionHandling):
1334         (WTF::installSignalHandler):
1335         (WTF::jscSignalHandler):
1336         * wtf/threads/Signals.h:
1337
1338 2017-05-12  Ting-Wei Lan  <lantw44@gmail.com>
1339
1340         Include algorithm before using std::min
1341         https://bugs.webkit.org/show_bug.cgi?id=171733
1342
1343         Reviewed by Chris Dumez.
1344
1345         * wtf/text/StringCommon.h:
1346
1347 2017-05-12  Andreas Kling  <akling@apple.com>
1348
1349         More aggressive memory kill limits.
1350         https://bugs.webkit.org/show_bug.cgi?id=172037
1351         <rdar://problem/31969082>
1352
1353         Reviewed by Michael Saboff.
1354
1355         Bring down the memory kill limits to 4GB for active processes, and 2GB for inactive.
1356         Also make MemoryUsagePolicy::Strict kick in above 1.5GB.
1357
1358         * wtf/MemoryPressureHandler.cpp:
1359         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
1360         (WTF::thresholdForPolicy):
1361
1362 2017-05-12  Michael Saboff  <msaboff@apple.com>
1363
1364         [iOS] Use memory footprint to dynamically adjust behavior of allocators
1365         https://bugs.webkit.org/show_bug.cgi?id=171944
1366
1367         Reviewed by Filip Pizlo.
1368
1369         Moved the non-Windows implementation of RAMSize() to bmalloc/AvailableMemory.cpp and
1370         called the function availableMemory().
1371
1372         * wtf/RAMSize.cpp:
1373         (WTF::computeRAMSize):
1374
1375 2017-05-12  Claudio Saavedra  <csaavedra@igalia.com>
1376
1377         [WPE] Add MemoryFootprintLinux to build
1378
1379         Unreviewed build fix after r216731.
1380
1381         * wtf/PlatformWPE.cmake:
1382
1383 2017-05-12  Csaba Osztrogonác  <ossy@webkit.org>
1384
1385         Unreviewed trivial JSCOnly buildfix after r216731.
1386         https://bugs.webkit.org/show_bug.cgi?id=171693
1387
1388         * wtf/PlatformJSCOnly.cmake:
1389
1390 2017-05-11  Yusuke Suzuki  <utatane.tea@gmail.com>
1391
1392         [Win] Implement memoryFootprint for Windows
1393         https://bugs.webkit.org/show_bug.cgi?id=171693
1394
1395         Reviewed by Alex Christensen.
1396
1397         This patch implements memoryFootprint for Windows. In Windows, we calculate the size
1398         of private working set. This can be done by enumerating private pages in working set.
1399
1400         And we also split MemoryFootprint.cpp to cocoa, linux, and win versions.
1401
1402         * WTF.xcodeproj/project.pbxproj:
1403         * wtf/CMakeLists.txt:
1404         * wtf/MallocPtr.h:
1405         (WTF::MallocPtr::operator*):
1406         (WTF::MallocPtr::operator->):
1407         * wtf/PlatformGTK.cmake:
1408         * wtf/PlatformJSCOnly.cmake:
1409         * wtf/PlatformMac.cmake:
1410         * wtf/PlatformWin.cmake:
1411         * wtf/cocoa/MemoryFootprintCocoa.cpp: Copied from Source/WTF/wtf/MemoryFootprint.cpp.
1412         (WTF::memoryFootprint):
1413         * wtf/linux/MemoryFootprintLinux.cpp: Renamed from Source/WTF/wtf/MemoryFootprint.cpp.
1414         (WTF::forEachLine):
1415         (WTF::memoryFootprint):
1416         * wtf/win/MemoryFootprintWin.cpp: Added.
1417         (WTF::memoryFootprint):
1418
1419 2017-05-11  Don Olmstead  <don.olmstead@am.sony.com>
1420
1421         [CMake] Add HAVE check for regex.h
1422         https://bugs.webkit.org/show_bug.cgi?id=171950
1423
1424         Reviewed by Michael Catanzaro.
1425
1426         * wtf/Platform.h:
1427
1428 2017-05-11  Chris Dumez  <cdumez@apple.com>
1429
1430         Annotate Ref::ptr() with RETURNS_NONNULL
1431         https://bugs.webkit.org/show_bug.cgi?id=171996
1432
1433         Reviewed by Andreas Kling.
1434
1435         Annotate Ref::ptr() with RETURNS_NONNULL as it can never return null.
1436
1437         * wtf/Ref.h:
1438         (WTF::Ref::ptr): Deleted.
1439
1440 2017-05-11  Joseph Pecoraro  <pecoraro@apple.com>
1441
1442         Remove Vibration API
1443         https://bugs.webkit.org/show_bug.cgi?id=171766
1444
1445         Rubber-stamped by Alexey Proskuryakov.
1446
1447         * wtf/FeatureDefines.h:
1448
1449 2017-05-09  Sam Weinig  <sam@webkit.org>
1450
1451         Remove support for legacy Notifications
1452         https://bugs.webkit.org/show_bug.cgi?id=171487
1453
1454         Reviewed by Jon Lee.
1455
1456         * wtf/FeatureDefines.h:
1457         Remove definition of ENABLE_LEGACY_NOTIFICATIONS.
1458
1459 2017-05-10  Adrian Perez de Castro  <aperez@igalia.com>
1460
1461         Remove some last remnants of the EFL port
1462         https://bugs.webkit.org/show_bug.cgi?id=171922
1463
1464         Reviewed by Antonio Gomes.
1465
1466         The EFL port is no more.
1467
1468         * wtf/PlatformEfl.cmake: Removed.
1469
1470 2017-05-10  Fujii Hironori  <Hironori.Fujii@sony.com>
1471
1472         [Win] StaticStringImpl in HTMLNames.cpp aren't constructed
1473         https://bugs.webkit.org/show_bug.cgi?id=171800
1474
1475         Reviewed by Yusuke Suzuki.
1476
1477         Global variables of StaticStringImpl in HTMLNames.cpp aren't
1478         constructed on Windows since Bug 171586. It seems that
1479         reinterpret_cast prevents constexpr's compile time initialization
1480         in VC++.
1481
1482         * wtf/text/StringImpl.h:
1483         (WTF::StringImplShape::StringImplShape): Added const char* and
1484         const char16_t* members in the union. Do not use reinterpret_cast
1485         in constexpr constructors.
1486
1487 2017-05-09  Mark Lam  <mark.lam@apple.com>
1488
1489         Force StaticStringImpl constructor to use the constexpr versions of StringImplShape constructors.
1490         https://bugs.webkit.org/show_bug.cgi?id=171861
1491
1492         Reviewed by Yusuke Suzuki.
1493
1494         This is strictly necessary for correctness of the StaticStringImpl implementation.
1495         We force the constructor selection by adding an extra dummy argument to the
1496         constexpr versions of the StringImplShape constructors to disambiguate them from
1497         the non-constexpr versions.
1498
1499         * wtf/text/StringImpl.h:
1500         (WTF::StringImplShape::StringImplShape):
1501         (WTF::StringImpl::StaticStringImpl::StaticStringImpl):
1502
1503 2017-05-09  Zan Dobersek  <zdobersek@igalia.com>
1504
1505         Upstream the WPE port
1506         https://bugs.webkit.org/show_bug.cgi?id=171110
1507
1508         Reviewed by Alex Christensen.
1509
1510         * wtf/Platform.h:
1511         * wtf/PlatformWPE.cmake: Added.
1512         * wtf/glib/RunLoopSourcePriority.h:
1513
1514 2017-05-08  Mark Lam  <mark.lam@apple.com>
1515
1516         Speculative Windows build fix after r216428.
1517         https://bugs.webkit.org/show_bug.cgi?id=171776
1518
1519         Not reviewed.
1520
1521         * wtf/StackTrace.h:
1522
1523 2017-05-08  Mark Lam  <mark.lam@apple.com>
1524
1525         Introduce ExceptionScope::assertNoException() and releaseAssertNoException().
1526         https://bugs.webkit.org/show_bug.cgi?id=171776
1527
1528         Reviewed by Keith Miller.
1529
1530         1. Add an option to skip some number of top frames when capturing the StackTrace.
1531         2. Add an option to use an indentation string when dumping the StackTrace.
1532
1533         * wtf/StackTrace.cpp:
1534         (WTF::StackTrace::captureStackTrace):
1535         (WTF::StackTrace::dump):
1536         * wtf/StackTrace.h:
1537
1538 2017-05-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1539
1540         [WTF] Use memoryFootprint for MemoryUsage retrieval in Linux
1541         https://bugs.webkit.org/show_bug.cgi?id=171757
1542
1543         Reviewed by Michael Catanzaro.
1544
1545         This patch leverages memoryFootprint() to retrieve physical footprint in Linux.
1546
1547         * wtf/linux/MemoryPressureHandlerLinux.cpp:
1548         (WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
1549
1550 2017-05-05  Don Olmstead  <don.olmstead@am.sony.com>
1551
1552         [WTF] Do not export deleted constructor in StringView
1553         https://bugs.webkit.org/show_bug.cgi?id=171751
1554
1555         Reviewed by Alexey Proskuryakov.
1556
1557         * wtf/text/StringView.h:
1558
1559 2017-05-05  Yusuke Suzuki  <utatane.tea@gmail.com>
1560
1561         [GTK][JSCOnly] Merge MainThread implementations and use generic one
1562         https://bugs.webkit.org/show_bug.cgi?id=171738
1563
1564         Reviewed by Michael Catanzaro.
1565
1566         GLib MainThread implementation is generic enough to be used in JSCOnly.
1567         We move it to generic/ and GTK (GLib ports) and JSCOnly use it.
1568         And we also drop GLib MainThread's isMainThread function because
1569         generic thread ID one is enough.
1570
1571         This patch also cleans up initializing main thread code by using std::call_once.
1572
1573         * wtf/MainThread.cpp:
1574         (WTF::initializeMainThread):
1575         (WTF::isMainThread):
1576         (WTF::initializeMainThreadToProcessMainThread):
1577         (WTF::initializeWebThread):
1578         (WTF::canAccessThreadLocalDataForThread):
1579         (WTF::initializeMainThreadOnce): Deleted.
1580         (WTF::initializeMainThreadToProcessMainThreadOnce): Deleted.
1581         (WTF::initializeWebThreadOnce): Deleted.
1582         * wtf/PlatformGTK.cmake:
1583         * wtf/PlatformJSCOnly.cmake:
1584         * wtf/generic/MainThreadGeneric.cpp:
1585         (WTF::MainThreadDispatcher::MainThreadDispatcher):
1586         (WTF::MainThreadDispatcher::schedule):
1587         (WTF::MainThreadDispatcher::fired):
1588         (WTF::scheduleDispatchFunctionsOnMainThread):
1589         * wtf/glib/MainThreadGLib.cpp: Removed.
1590
1591 2017-05-04  Commit Queue  <commit-queue@webkit.org>
1592
1593         Unreviewed, rolling out r216206.
1594         https://bugs.webkit.org/show_bug.cgi?id=171714
1595
1596         Multiple LayoutTests crashing in Document::page() (Requested
1597         by ap on #webkit).
1598
1599         Reverted changeset:
1600
1601         "Remove support for legacy Notifications"
1602         https://bugs.webkit.org/show_bug.cgi?id=171487
1603         http://trac.webkit.org/changeset/216206
1604
1605 2017-05-04  Don Olmstead  <don.olmstead@am.sony.com>
1606
1607         [Win] Remove redundant macros that are set in the CMake config
1608         https://bugs.webkit.org/show_bug.cgi?id=171571
1609
1610         Reviewed by Brent Fulgham.
1611
1612         * config.h:
1613
1614 2017-05-04  Mark Lam  <mark.lam@apple.com>
1615
1616         NeverDestroyed<String>(ASCIILiteral(...)) is not thread safe.
1617         https://bugs.webkit.org/show_bug.cgi?id=171586
1618         <rdar://problem/31873190>
1619
1620         Reviewed by Yusuke Suzuki.
1621
1622         StaticStringImpl is meant to be thread-safe.  However, it has a bug: it did not
1623         set the s_hashFlagDidReportCost flag.  As a result, if cost() is called on it,
1624         different threads may try to change its flags bits at the same time.  This patch
1625         changes StaticStringImpl to always set the s_hashFlagDidReportCost flag.
1626
1627         Also factored out StringImplShape and made StringImpl and StaticStringImpl extend
1628         it.  This makes it more clear that the 2 are intended to have the same shape.
1629         Note: there is already a static_assert that the 2 have the same size.  This
1630         change also ensures that they both have the same shape, which is a requirement in
1631         order for StaticStringImpl to work.
1632
1633         Introduced the MAKE_STATIC_STRING_IMPL macro as a convenient way to instantiate
1634         StaticStringImpls from literal strings.  This allows us to trivially change
1635
1636             NeverDestroyed<String> myString(ASCIILiteral("myString"));
1637
1638         to ...
1639
1640             NeverDestroyed<String> myString(MAKE_STATIC_STRING_IMPL("myString"));
1641
1642         and by so doing, make it thread-safe.
1643
1644         MAKE_STATIC_STRING_IMPL instantiates a lambda function to create the static
1645         StaticStringImpls.
1646
1647         * wtf/text/StringImpl.h:
1648         (WTF::StringImplShape::StringImplShape):
1649         (WTF::StringImpl::StringImpl):
1650         (WTF::StringImpl::cost):
1651         (WTF::StringImpl::setHash):
1652         (WTF::StringImpl::StaticStringImpl::StaticStringImpl):
1653         (WTF::StringImpl::StaticStringImpl::operator StringImpl&):
1654         * wtf/text/WTFString.h:
1655         (WTF::String::String):
1656         * wtf/text/icu/TextBreakIteratorICU.h:
1657         (WTF::caretRules):
1658
1659 2017-05-04  Sam Weinig  <sam@webkit.org>
1660
1661         Remove support for legacy Notifications
1662         https://bugs.webkit.org/show_bug.cgi?id=171487
1663
1664         Reviewed by Jon Lee.
1665
1666         * wtf/FeatureDefines.h:
1667         Remove definition of ENABLE_LEGACY_NOTIFICATIONS.
1668
1669 2017-05-04  Yusuke Suzuki  <utatane.tea@gmail.com>
1670
1671         [GTK][JSCOnly] Implement memoryFootprint for Linux
1672         https://bugs.webkit.org/show_bug.cgi?id=171680
1673
1674         Reviewed by Carlos Alberto Lopez Perez.
1675
1676         Darwin's phys_footprint returns the amount of dirty anonymous memory in the process.
1677         This patch implements the same thing in Linux by reading /proc/self/smaps.
1678         We sum sizes of private dirty pages in anonymous regions.
1679
1680         * wtf/MemoryFootprint.cpp:
1681         (WTF::forEachLine):
1682         (WTF::memoryFootprint):
1683
1684 2017-05-03  Mark Lam  <mark.lam@apple.com>
1685
1686         Use the CLoop for CPU(ARM64E).
1687         https://bugs.webkit.org/show_bug.cgi?id=171620
1688         <rdar://problem/31973027>
1689
1690         Reviewed by Geoffrey Garen.
1691
1692         * wtf/Platform.h:
1693
1694 2017-05-02  Daniel Bates  <dabates@apple.com>
1695
1696         Fix the build after <https://trac.webkit.org/changeset/216102>
1697         (https://bugs.webkit.org/show_bug.cgi?id=170925)
1698
1699         Export into global scope ASCIICaseInsensitiveStringViewHashTranslator.
1700
1701         Also fix indentation of member functions of ASCIICaseInsensitiveStringViewHashTranslator.
1702
1703         * wtf/text/StringHash.h:
1704
1705 2017-05-02  Daniel Bates  <dabates@apple.com>
1706
1707         Using StringView.split() instead of String.split() in some places
1708         https://bugs.webkit.org/show_bug.cgi?id=170925
1709
1710         Reviewed by Darin Adler and Sam Weinig.
1711
1712         * wtf/HashMap.h: Add HashMap::get() overload that takes a HashTranslator.
1713         * wtf/text/StringHash.h:
1714         (WebCore::ASCIICaseInsensitiveStringViewHashTranslator::hash): Added.
1715         (WebCore::ASCIICaseInsensitiveStringViewHashTranslator::equal): Added.
1716
1717 2017-05-01  Dan Bernstein  <mitz@apple.com>
1718
1719         [Xcode] It’s easy to accidentally install a WTF header outside /usr/local/include/wtf
1720         https://bugs.webkit.org/show_bug.cgi?id=171533
1721
1722         Reviewed by Andy Estes.
1723
1724         * WTF.xcodeproj/project.pbxproj: Removed the WTF target’s Headers build phase. Its existence
1725           was making it easy to accidentally add a header to the target and make it Private, which
1726           would have Xcode install a copy of it right under /usr/local/include, in addition to the
1727           copy installed under /usr/local/include/wtf by the Copy WTF Headers target.
1728           Also got rid of INSTALL_PATH_PREFIX in the script build phase in the Copy WTF Headers
1729           target, because it is being never set anymore.
1730
1731 2017-05-01  Dan Bernstein  <mitz@apple.com>
1732
1733         WTF installs an extra copy of a header outside /usr/local/include/wtf
1734
1735         * WTF.xcodeproj/project.pbxproj: Demoted CPUTime.h from Private to Project.
1736
1737 2017-05-01  Daniel Bates  <dabates@apple.com>
1738
1739         Cleanup: Change ASCIICaseInsensitiveHash from a class to a struct
1740         https://bugs.webkit.org/show_bug.cgi?id=171460
1741
1742         Reviewed by Sam Weinig.
1743
1744         All of the members of ASCIICaseInsensitiveHash have public visibility.
1745         We are underutilizing the purpose of a class - defaults to private
1746         visibility of members. We should change ASCIICaseInsensitiveHash from
1747         a class to a struct, which by definition defaults to public visibility
1748         for members.
1749
1750         * wtf/text/StringHash.h:
1751
1752 2017-04-29  Yusuke Suzuki  <utatane.tea@gmail.com>
1753
1754         Move WebCore CPUTime to WTF and implement it in all the platforms
1755         https://bugs.webkit.org/show_bug.cgi?id=171477
1756
1757         Reviewed by Chris Dumez.
1758
1759         We move WebCore::CPUTime to WTF::CPUTime since it is useful even in JSC
1760         and it does not depend on any external libraries.
1761         And we additionally implement WTF::CPUTime in all the platforms: Windows and Unix.
1762
1763         In CPUTime, instead of holding int64_t, we hold MonotonicTime and Seconds.
1764
1765         * WTF.xcodeproj/project.pbxproj:
1766         * wtf/CMakeLists.txt:
1767         * wtf/CPUTime.cpp: Copied from Source/WebCore/platform/CPUTime.cpp.
1768         (WTF::CPUTime::percentageCPUUsageSince):
1769         * wtf/CPUTime.h: Renamed from Source/WebCore/platform/CPUTime.h.
1770         * wtf/PlatformEfl.cmake:
1771         * wtf/PlatformGTK.cmake:
1772         * wtf/PlatformJSCOnly.cmake:
1773         * wtf/PlatformMac.cmake:
1774         * wtf/PlatformWin.cmake:
1775         * wtf/cocoa/CPUTimeCocoa.mm: Renamed from Source/WebCore/platform/cocoa/CPUTimeCocoa.mm.
1776         (WTF::timeValueToMicroseconds):
1777         (WTF::CPUTime::get):
1778         * wtf/unix/CPUTimeUnix.cpp: Renamed from Source/WebCore/platform/CPUTime.cpp.
1779         (WTF::timevalToSeconds):
1780         (WTF::CPUTime::get):
1781         * wtf/win/CPUTimeWin.cpp: Added.
1782         (WTF::fileTimeToSeconds):
1783         (WTF::CPUTime::get):
1784
1785 2017-04-28  Simon Fraser  <simon.fraser@apple.com>
1786
1787         Add system trace points for Document::updateTouchEventRegions()
1788         https://bugs.webkit.org/show_bug.cgi?id=171470
1789         rdar://problem/31901239
1790
1791         Reviewed by Tim Horton.
1792
1793         Add trace markers for updateTouchEventRegions.
1794
1795         * wtf/SystemTracing.h:
1796
1797 2017-04-28  Daniel Bates  <dabates@apple.com>
1798
1799         Add StringView::toExistingAtomicString()
1800         https://bugs.webkit.org/show_bug.cgi?id=171405
1801
1802         Reviewed by Andreas Kling.
1803
1804         Similar to the reasons for JSString::toExistingAtomicString() we should expose a way to
1805         convert a StringView to an existing atomic string. Looking up an atomic string is more
1806         efficient that creating one, which requires a lookup and memory allocation.
1807
1808         We are not making use of StringView::toExistingAtomicString() now, but will in the patch
1809         for <https://bugs.webkit.org/show_bug.cgi?id=170925>.
1810
1811         * wtf/text/AtomicStringImpl.cpp:
1812         (WTF::AtomicStringImpl::lookUp): Modified to take a const LChar*/UChar*.
1813         (WTF::AtomicStringImpl::lookUpInternal): Renamed to AtomicStringImpl::lookup() to avoid
1814         an extra function call.
1815         * wtf/text/AtomicStringImpl.h:
1816         * wtf/text/StringView.h:
1817         (WTF::StringView::toExistingAtomicString): Added.
1818
1819 2017-04-28  Chris Dumez  <cdumez@apple.com>
1820
1821         Update DOMTokenList.replace() to match the latest DOM specification
1822         https://bugs.webkit.org/show_bug.cgi?id=171388
1823
1824         Reviewed by Alex Christensen.
1825
1826         Add Vector::findMatching() API which takes in a lambda function for convenience.
1827         Add optional startIndex parameter to Vector::removeFirstMatching() / removeAllMatching()
1828         to remove items only after given index.
1829
1830         * wtf/Vector.h:
1831         (WTF::minCapacity>::findMatching):
1832         (WTF::minCapacity>::find):
1833         (WTF::minCapacity>::removeFirstMatching):
1834         (WTF::minCapacity>::removeAllMatching):
1835
1836 2017-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>
1837
1838         Move UUID from WebCore/platform to WTF
1839         https://bugs.webkit.org/show_bug.cgi?id=171372
1840
1841         Reviewed by Michael Catanzaro.
1842
1843         * WTF.xcodeproj/project.pbxproj:
1844         * wtf/CMakeLists.txt:
1845         * wtf/UUID.cpp: Renamed from Source/WebCore/platform/UUID.cpp.
1846         * wtf/UUID.h: Renamed from Source/WebCore/platform/UUID.h.
1847
1848 2017-04-26  Keith Miller  <keith_miller@apple.com>
1849
1850         LocklessBag needs a destructor
1851         https://bugs.webkit.org/show_bug.cgi?id=171334
1852
1853         Reviewed by Mark Lam.
1854
1855         Currently, if the bag is destructed any remaining nodes in the bag will
1856         be leaked.
1857
1858         * wtf/LocklessBag.h:
1859         (WTF::LocklessBag::consumeAll):
1860         (WTF::LocklessBag::~LocklessBag):
1861         * wtf/threads/Signals.cpp:
1862         (WTF::jscSignalHandler):
1863         (WTF::installSignalHandler):
1864
1865 2017-04-26  Don Olmstead  <don.olmstead@am.sony.com>
1866
1867         [ARM] Enable GCC visibility
1868         https://bugs.webkit.org/show_bug.cgi?id=171296
1869
1870         Reviewed by Michael Catanzaro.
1871
1872         * wtf/Platform.h:
1873
1874 2017-04-26  Yusuke Suzuki  <utatane.tea@gmail.com>
1875
1876         sendMessageScoped's signal handler calls LocklessBag::consumeAll, which causes heap deallocation in signal handler and leads deadlock
1877         https://bugs.webkit.org/show_bug.cgi?id=171319
1878
1879         Reviewed by Keith Miller.
1880
1881         In sendMessageScoped, we call LocklessBag<SignalHandler>::consumeAll `thread->threadMessages().consumeAll()`.
1882         In LocklessBag::consumeAll, we call `delete` on Nodes.
1883         The problem is that this is called under the context of signal handler. Thus, when calling this, the original
1884         thread may hold the lock in bmalloc. In that case, this `delete` call attempts to lock the heap lock recursively,
1885         and causes deadlock.
1886
1887         Instead, this patch transfers the LocklessBag's Node to the sender thread. And the sender thread deletes it instead.
1888
1889         * wtf/LocklessBag.h:
1890         (WTF::LocklessBag::consumeAllWithNode):
1891         * wtf/ThreadMessage.cpp:
1892         (WTF::ThreadMessageData::ThreadMessageData):
1893         (WTF::sendMessageScoped):
1894
1895 2017-04-25  Don Olmstead  <don.olmstead@am.sony.com>
1896
1897         [Win] Use Clang's __has_declspec_attribute for export macros
1898         https://bugs.webkit.org/show_bug.cgi?id=171240
1899
1900         Reviewed by Alex Christensen.
1901
1902         * wtf/Compiler.h:
1903         * wtf/ExportMacros.h:
1904         * wtf/Platform.h:
1905
1906 2017-04-25  Keith Miller  <keith_miller@apple.com>
1907
1908         Our signal handler shouldn't print when sigaction succeeds
1909         https://bugs.webkit.org/show_bug.cgi?id=171286
1910
1911         Reviewed by Michael Saboff.
1912
1913         It turns out !result is not the same as !!result.
1914
1915         * wtf/threads/Signals.cpp:
1916         (WTF::jscSignalHandler):
1917
1918 2017-04-25  Myles C. Maxfield  <mmaxfield@apple.com>
1919
1920         Add performance test for FontCache::systemFallbackForCharacters()
1921         https://bugs.webkit.org/show_bug.cgi?id=170842
1922
1923         Reviewed by Tim Horton.
1924
1925         * wtf/unicode/CharacterNames.h:
1926
1927 2017-04-24  Andy VanWagoner  <thetalecrafter@gmail.com>
1928
1929         Clean up ICU headers
1930         https://bugs.webkit.org/show_bug.cgi?id=170997
1931
1932         Reviewed by JF Bastien.
1933
1934         Update all icu headers to 55.1
1935
1936         * icu/LICENSE: Update copyright
1937         * icu/README: Explain ICU headers for OS X better
1938         * icu/unicode/localpointer.h:
1939         (LocalPointer::LocalPointer):
1940         (LocalPointer::adoptInsteadAndCheckErrorCode):
1941         * icu/unicode/platform.h:
1942         * icu/unicode/putil.h:
1943         * icu/unicode/std_string.h:
1944         * icu/unicode/ubrk.h:
1945         * icu/unicode/uchar.h:
1946         * icu/unicode/ucnv.h:
1947         * icu/unicode/ucol.h:
1948         * icu/unicode/uconfig.h:
1949         * icu/unicode/ucurr.h:
1950         * icu/unicode/uloc.h:
1951         * icu/unicode/umachine.h:
1952         * icu/unicode/unistr.h:
1953         (UnicodeString::getArrayStart):
1954         (UnicodeString::UnicodeString):
1955         (UnicodeString::hasShortLength):
1956         (UnicodeString::getShortLength):
1957         (UnicodeString::length):
1958         (UnicodeString::getCapacity):
1959         (UnicodeString::isBogus):
1960         (UnicodeString::isWritable):
1961         (UnicodeString::isBufferWritable):
1962         (UnicodeString::getBuffer):
1963         (UnicodeString::isEmpty):
1964         (UnicodeString::setZeroLength):
1965         (UnicodeString::setShortLength):
1966         (UnicodeString::setLength):
1967         (UnicodeString::setToEmpty):
1968         (UnicodeString::remove):
1969         * icu/unicode/urename.h:
1970         * icu/unicode/uscript.h:
1971         * icu/unicode/uset.h:
1972         * icu/unicode/ustring.h:
1973         * icu/unicode/utf8.h:
1974         * icu/unicode/utypes.h:
1975         * icu/unicode/uvernum.h:
1976
1977 2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>
1978
1979         Unreviewed, fix Windows build after r215715
1980         https://bugs.webkit.org/show_bug.cgi?id=171199
1981
1982         * wtf/StackTrace.h:
1983
1984 2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>
1985
1986         [WTF] Move JSC tools/StackTrace to WTF and unify stack trace dump code
1987         https://bugs.webkit.org/show_bug.cgi?id=171199
1988
1989         Reviewed by Mark Lam.
1990
1991         JSC tools/StackTrace's dump code is almost identical to WTF Assertions'
1992         stack trace dump code. This patch moves tools/StackTrace to WTF and use
1993         it in Assertions. It unifies the two duplicate implementations into one.
1994
1995         * WTF.xcodeproj/project.pbxproj:
1996         * wtf/Assertions.cpp:
1997         * wtf/CMakeLists.txt:
1998         * wtf/Platform.h:
1999         * wtf/StackTrace.cpp: Renamed from Source/JavaScriptCore/tools/StackTrace.cpp.
2000         (WTF::StackTrace::captureStackTrace):
2001         (WTF::StackTrace::dump):
2002         * wtf/StackTrace.h: Copied from Source/JavaScriptCore/tools/StackTrace.h.
2003         (WTF::StackTrace::StackTrace):
2004         (WTF::StackTrace::stack):
2005         (WTF::StackTrace::DemangleEntry::mangledName):
2006         (WTF::StackTrace::DemangleEntry::demangledName):
2007         (WTF::StackTrace::DemangleEntry::DemangleEntry):
2008         * wtf/SystemFree.h: Renamed from Source/JavaScriptCore/tools/StackTrace.h.
2009         (WTF::SystemFree::operator()):
2010
2011 2017-04-24  Yusuke Suzuki  <utatane.tea@gmail.com>
2012
2013         [AppleWin] The procedure entry point ?waitForThreadCompletion@WTF@@YAHI@Z could not be located in the dynamic link library WebKitQuartzCoreAdditions.dll
2014         https://bugs.webkit.org/show_bug.cgi?id=171029
2015
2016         Reviewed by Brent Fulgham.
2017
2018         While WTF Threading APIs are updated, WebKitQuartzCoreAdditions.dll in Windows uses some of the old APIs,
2019         waitForThreadCompletion and createThread. This patch implements both on top of the new APIs.
2020         These APIs are only exposed in Windows for this compatibility problem and new code should not use it.
2021
2022         * wtf/ThreadHolder.cpp:
2023         (WTF::ThreadHolder::initialize):
2024         * wtf/ThreadHolder.h:
2025         * wtf/ThreadHolderWin.cpp:
2026         (WTF::ThreadHolder::get):
2027         (WTF::ThreadHolder::platformInitialize):
2028         (WTF::ThreadHolder::destruct):
2029         * wtf/Threading.h:
2030         * wtf/ThreadingWin.cpp:
2031         (WTF::createThread):
2032         (WTF::waitForThreadCompletion):
2033
2034 2017-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>
2035
2036         [GTK] Switch to use ENABLE_REMOTE_INSPECTOR instead of ENABLE_INSPECTOR_SERVER for the remote inspector
2037         https://bugs.webkit.org/show_bug.cgi?id=166680
2038
2039         Reviewed by Michael Catanzaro.
2040
2041         Add GRefPtr hash traits to allow using GRefPtr as a key of HashMaps.
2042
2043         * wtf/glib/GRefPtr.h:
2044         (WTF::HashTraits<GRefPtr<P>>::emptyValue):
2045         (WTF::HashTraits<GRefPtr<P>>::peek):
2046         (WTF::HashTraits<GRefPtr<P>>::customDeleteBucket):
2047
2048 2017-04-22  Yusuke Suzuki  <utatane.tea@gmail.com>
2049
2050         [JSC] Get stack pointer without pthread attr
2051         https://bugs.webkit.org/show_bug.cgi?id=171162
2052
2053         Reviewed by Mark Lam.
2054
2055         If HAVE(MACHINE_CONTEXT) is not enabled, we get stack base and boundary by using
2056         pthread_attr functions. However, it is wrong since this function can be called
2057         after the thread is suspended. In that case, we should not call any functions
2058         that is not async signal safe. For example, pthread_getattr_np calls malloc.
2059
2060         Instead we use getApproximateStackPointer(), which returns approximate stack pointer.
2061
2062         * wtf/Threading.h:
2063         * wtf/ThreadingPthreads.cpp:
2064         (WTF::getApproximateStackPointer):
2065         (WTF::isOnAlternativeSignalStack):
2066         When gathering conservative roots, we should keep stack pointer pointing stack.
2067         And if concurrent GC is enabled, we always need to keep the above invariant.
2068         So, we do not support alternative signal stack.
2069
2070         (WTF::Thread::signalHandlerSuspendResume):
2071         (WTF::Thread::getRegisters):
2072
2073 2017-04-22  Yusuke Suzuki  <utatane.tea@gmail.com>
2074
2075         REGRESSION(r215638): [Linux] Several worker tests are crashing in Thread::signalHandlerSuspendResume after r215638
2076         https://bugs.webkit.org/show_bug.cgi?id=171159
2077
2078         Reviewed by Michael Catanzaro.
2079
2080         Now, SIGUSR2 is used by ThreadMessage. Instead SIGUSR1 becomes empty.
2081         We should use some signal, that is not managed by WTF Signal mechanism
2082         because the behaivor of this suspend and resume is a bit tricky.
2083         For example, we set a bit tricky signal mask to sigaction to temporary
2084         block SIGUSR2 in the handler to avoid nested SIGUSR2. And we cannot
2085         use ThreadMessage to implement this mechanism because this suspend
2086         and resume handler will stop in the middle of the handler by sigsuspend.
2087         It is not the expected semantics by ThreadMessage.
2088
2089         So now, we use SIGUSR1 instead. And we note that SIGUSR1 is used for
2090         pthread ports.
2091
2092         * wtf/ThreadingPthreads.cpp:
2093         * wtf/threads/Signals.h:
2094
2095 2017-04-20  Sam Weinig  <sam@webkit.org>
2096
2097         Split cryptographic digest computation and parsing out of CSP code so it can be reused
2098         https://bugs.webkit.org/show_bug.cgi?id=171076
2099
2100         Reviewed by Chris Dumez.
2101
2102         * wtf/text/Base64.cpp:
2103         (WTF::base64Decode):
2104         (WTF::base64URLDecode):
2105         Add overloads for base64Decode and base64URLDecode that take a StringView, to avoid allocations
2106         of Strings.
2107
2108         * wtf/text/Base64.h:
2109         (WTF::isBase64OrBase64URLCharacter):
2110         Move helper predicate used for parsing either type of Base64 encoded string from WebCore.
2111
2112 2017-04-21  Keith Miller  <keith_miller@apple.com>
2113
2114         Unreviewed, rolling out r215634.
2115
2116         underlying build issues should have been fixed
2117
2118         Reverted changeset:
2119
2120         "Unreviewed, rolling out r215620 and r215623."
2121         https://bugs.webkit.org/show_bug.cgi?id=171139
2122         http://trac.webkit.org/changeset/215634
2123
2124 2017-04-21  Keith Miller  <keith_miller@apple.com>
2125
2126         Remove LL/SC from Atomics
2127         https://bugs.webkit.org/show_bug.cgi?id=171141
2128
2129         Reviewed by Saam Barati.
2130
2131         Adding load link and store conditionally was not an actual progression
2132         and the existing code is causing problems for users of Atomics. So let's
2133         get rid of it.
2134
2135         * wtf/Atomics.h:
2136         (WTF::hasFence):
2137         (WTF::Atomic::exchange):
2138         (WTF::Atomic::transaction):
2139         (WTF::Atomic::transactionRelaxed):
2140         (WTF::Atomic::prepare): Deleted.
2141         (WTF::Atomic::attempt): Deleted.
2142         * wtf/Bitmap.h:
2143         (WTF::WordType>::concurrentTestAndSet):
2144         (WTF::WordType>::concurrentTestAndClear):
2145         * wtf/LockAlgorithm.h:
2146         (WTF::LockAlgorithm::lockFast):
2147         (WTF::LockAlgorithm::unlockFast):
2148
2149 2017-04-21  Commit Queue  <commit-queue@webkit.org>
2150
2151         Unreviewed, rolling out r215620 and r215623.
2152         https://bugs.webkit.org/show_bug.cgi?id=171139
2153
2154         broke arm64 build (Requested by keith_miller on #webkit).
2155
2156         Reverted changesets:
2157
2158         "Add signaling API"
2159         https://bugs.webkit.org/show_bug.cgi?id=170976
2160         http://trac.webkit.org/changeset/215620
2161
2162         "Unreviewed, fix Cloop build."
2163         http://trac.webkit.org/changeset/215623
2164
2165 2017-04-20  Keith Miller  <keith_miller@apple.com>
2166
2167         Add signaling API
2168         https://bugs.webkit.org/show_bug.cgi?id=170976
2169
2170         Reviewed by Filip Pizlo.
2171
2172         This patch adds a bunch of new functionality to WTF. First, it add
2173         a new data structure of a lockless bag. The LocklessBag class can
2174         be used as either a multi-writer multi-reader lockless bag or a
2175         multi-writer single consumer lockless bag.
2176
2177         Next, this patch adds an abstraction around sigaction in WTF.
2178         Basically, you can add a handler, which can be an arbitrary
2179         lambda. Although it should still be safe for the signal you are
2180         handling.  the signal handler manager will then do all the
2181         appropriate handling of chaining:
2182
2183         In the SIGUSR case we always forward the signal to any other
2184         non-default handler installed before us. We need to do this,
2185         otherwise, since it's not possible to tell if a SIGUSR was
2186         intended exlusively for our handlers. Signal handlers don't record
2187         how many times they were sent only that there is at least one
2188         unhandled signal.
2189
2190         In the faulting cases we require that every handle be able to
2191         recognise a fault they installed, vs crashes. If none of our
2192         handlers claim to have handled the fault we will forward the
2193         fault. If a handler was installed before the first fault handler
2194         we simply call that handler and rely on them to take the
2195         appropriate action. If no handler was installed before our first
2196         handler we restore the default handler and allow the fault to
2197         happen again.
2198
2199         Finally, this patch adds a signal based messaging system.  This
2200         system allows the user to run an arbitrary lambda from the SIGUSR2
2201         signal handler of any target WTF::Thread. This is already in use
2202         for the VMTraps API which allows us to kill rogue VMs by sending
2203         the VM's running WTF::Thread a SIGUSR and requesting it jetison
2204         all optimized code and throw an uncatchable exception from all
2205         function entries/loop backedges.  In the future, we will also use
2206         this API for Wasm to reset the instruction caches in currently
2207         executing Wasm threads.
2208
2209         * WTF.xcodeproj/project.pbxproj:
2210         * wtf/Atomics.h:
2211         (WTF::Atomic::Atomic):
2212         * wtf/LocklessBag.h: Added.
2213         (WTF::LocklessBag::LocklessBag):
2214         (WTF::LocklessBag::add):
2215         (WTF::LocklessBag::iterate):
2216         (WTF::LocklessBag::consumeAll):
2217         * wtf/ThreadMessage.cpp: Added.
2218         (WTF::ThreadMessageData::ThreadMessageData):
2219         (WTF::initializeThreadMessages):
2220         (WTF::sendMessageScoped):
2221         * wtf/ThreadMessage.h: Added.
2222         (WTF::sendMessage):
2223         * wtf/Threading.cpp:
2224         (WTF::initializeThreading):
2225         * wtf/Threading.h:
2226         (WTF::Thread::threadMessages):
2227         * wtf/ThreadingPthreads.cpp:
2228         (WTF::Thread::currentMayBeNull):
2229         (WTF::Thread::current):
2230         (WTF::Thread::signal):
2231         * wtf/threads/Signals.cpp: Added.
2232         (WTF::jscSignalHandler):
2233         (WTF::installSignalHandler):
2234         * wtf/threads/Signals.h: Added.
2235         (WTF::toSystemSignal):
2236         (WTF::fromSystemSignal):
2237
2238 2017-04-21  Konstantin Tokarev  <annulen@yandex.ru>
2239
2240         [cmake] WTF target should not have wtf and subdirectries in public interface
2241         https://bugs.webkit.org/show_bug.cgi?id=171115
2242
2243         Reviewed by Michael Catanzaro.
2244
2245         In r209665 WEBCORE_FRAMEWORK macro started to export INCLUDE_DIRECTORIES of
2246         targets as their public interface, so that linked targets can use them
2247         implicitly without copying directory lists around. This matches existing
2248         practice for all targets except WTF, headers from which are always included
2249         with full path starting from "<wtf/...".
2250
2251         Since r209665 it became possible to include headers from wtf or its
2252         subdirectories in CMake builds without using "<wtf/..." path. It should
2253         not be allowed.
2254
2255         * wtf/CMakeLists.txt: WTF/wtf and its sudirectories should not be in
2256         public include paths of WTF target.
2257
2258 2017-04-20  Sam Weinig  <sam@webkit.org>
2259
2260         Move notFound into its own file
2261         https://bugs.webkit.org/show_bug.cgi?id=170972
2262
2263         Reviewed by Zalan Bujtas.
2264
2265         It is odd to require including <wtf/Vector.h> just to use WTF::notFound.
2266         This is not causing any current problems, but does in few changes I have
2267         queued up.
2268
2269         * WTF.xcodeproj/project.pbxproj:
2270         * wtf/NotFound.h: Added.
2271         * wtf/Vector.h:
2272         * wtf/text/StringCommon.h:
2273
2274 2017-04-20  Filip Pizlo  <fpizlo@apple.com>
2275
2276         Optimize SharedArrayBuffer in the DFG+FTL
2277         https://bugs.webkit.org/show_bug.cgi?id=164108
2278
2279         Reviewed by Saam Barati.
2280         
2281         Made small changes as part of benchmarking the JS versions of these locks.
2282
2283         * benchmarks/LockSpeedTest.cpp:
2284         * benchmarks/ToyLocks.h:
2285         * wtf/Range.h:
2286         (WTF::Range::dump):
2287
2288 2017-04-19  Youenn Fablet  <youenn@apple.com>
2289
2290         [Win] Activate streams API by default
2291         https://bugs.webkit.org/show_bug.cgi?id=171000
2292
2293         Reviewed by Brent Fulgham.
2294
2295         * wtf/FeatureDefines.h:
2296
2297 2017-04-19  David Kilzer  <ddkilzer@apple.com>
2298
2299         Vector.h: error: 'auto' not allowed in lambda parameter
2300         <https://webkit.org/b/171010>
2301         <rdar://problem/31716076>
2302
2303         Reviewed by Saam Barati.
2304
2305         * wtf/Vector.h:
2306         (WTF::removeRepeatedElements): Replace 'auto' with a specific
2307         type, 'T', based on a Vector<> template type.
2308
2309 2017-04-19  Ryan Haddad  <ryanhaddad@apple.com>
2310
2311         Unreviewed, rolling out r215518.
2312
2313         This change appears to have broken the Windows build.
2314
2315         Reverted changeset:
2316
2317         "Move notFound into its own file"
2318         https://bugs.webkit.org/show_bug.cgi?id=170972
2319         http://trac.webkit.org/changeset/215518
2320
2321 2017-04-19  Sam Weinig  <sam@webkit.org>
2322
2323         Move notFound into its own file
2324         https://bugs.webkit.org/show_bug.cgi?id=170972
2325
2326         Reviewed by Zalan Bujtas.
2327
2328         It is odd to require including <wtf/Vector.h> just to use WTF::notFound.
2329         This is not causing any current problems, but does in few changes I have
2330         queued up.
2331
2332         * WTF.xcodeproj/project.pbxproj:
2333         * wtf/NotFound.h: Added.
2334         * wtf/Vector.h:
2335         * wtf/text/StringCommon.h:
2336
2337 2017-04-18  Carlos Garcia Campos  <cgarcia@igalia.com>
2338
2339         [GLIB] Define priorities also for async network IO tasks
2340         https://bugs.webkit.org/show_bug.cgi?id=170905
2341
2342         Reviewed by Žan Doberšek.
2343
2344         Add AsyncIONetwork, DiskCacheRead and DiskCacheWrite priorities.
2345
2346         * wtf/glib/RunLoopSourcePriority.h:
2347
2348 2017-04-18  Yusuke Suzuki  <utatane.tea@gmail.com>
2349
2350         [JSC][GTK] glib RunLoop does not accept negative start interval
2351         https://bugs.webkit.org/show_bug.cgi?id=170775
2352
2353         Reviewed by Saam Barati.
2354
2355         RunLoop::Timer for glib does not accept negative start interval.
2356         We use 0_s if the given value is negative.
2357
2358         * wtf/glib/RunLoopGLib.cpp:
2359         (WTF::RunLoop::TimerBase::secondsUntilFire):
2360
2361 2017-04-17  Alex Christensen  <achristensen@webkit.org>
2362
2363         Allow Variants of RetainPtrs
2364         https://bugs.webkit.org/show_bug.cgi?id=170923
2365
2366         Reviewed by Tim Horton and Sam Weinig.
2367
2368         * wtf/RetainPtr.h:
2369         (WTF::RetainPtr::operator&): Deleted.
2370         Operator& was causing a compile error when making Variant<RetainPtr<T>, ...>
2371         and because it is strange and only used once, let's just remove it.
2372         * wtf/Variant.h:
2373         (WTF::get):
2374         (WTF::get_if):
2375         Use std::addressof instead of operator& which could be overloaded to return any type with any meaning.
2376
2377 2017-04-17  Youenn Fablet  <youenn@apple.com>
2378
2379         Disable outdated WritableStream API
2380         https://bugs.webkit.org/show_bug.cgi?id=170749
2381         <rdar://problem/31446233>
2382
2383         Reviewed by Alex Christensen.
2384
2385         Replacing READABLE_STREAM_API, READABLE_BYTE_STREAM_API and WRITABLE_STREAM_API compilation flag by:
2386         - A STREAMS_API compilation flag.
2387         - A ReadableByteStreamAPI and WritableStreamAPI runtime flags, turned off except for RWT and DRT.
2388
2389         * wtf/FeatureDefines.h:
2390
2391 2017-04-17  Dan Bernstein  <mitz@apple.com>
2392
2393         [Cocoa] Move isNullFunctionPointer down into WTF
2394         https://bugs.webkit.org/show_bug.cgi?id=170892
2395
2396         Reviewed by Sam Weinig.
2397
2398         Test: TestWebKitAPI/Tests/WTF/darwin/WeakLinking.cpp
2399
2400         * WTF.xcodeproj/project.pbxproj: Added reference to new file.
2401         * wtf/darwin: Added.
2402         * wtf/darwin/WeakLinking.h: Added.
2403         (WTF::isNullFunctionPointer): Copied from ResourceLoadStatisticsClassifierCocoa.cpp in
2404           WebKit2 and changed into a function template that works with any function pointer.
2405
2406 2017-04-17  Ryan Haddad  <ryanhaddad@apple.com>
2407
2408         Unreviewed, rolling out r215366.
2409
2410         This test is failing on performance bots.
2411
2412         Reverted changeset:
2413
2414         "Add performance test for asking the platform for a font for
2415         U+2060 WORD JOINER"
2416         https://bugs.webkit.org/show_bug.cgi?id=170842
2417         http://trac.webkit.org/changeset/215366
2418
2419 2017-04-17  Yusuke Suzuki  <utatane.tea@gmail.com>
2420
2421         [JSCOnly] Fix build failures in macOS
2422         https://bugs.webkit.org/show_bug.cgi?id=170887
2423
2424         Reviewed by Alex Christensen.
2425
2426         JSCOnly port does not use mac/MainThread.cpp.
2427         We change the ifdef gurard to use generic implementaion in JSCOnly on macOS.
2428
2429         * wtf/MainThread.cpp:
2430         * wtf/PlatformJSCOnly.cmake:
2431
2432 2017-04-17  JF Bastien  <jfbastien@apple.com>
2433
2434         B3: don't allow unsigned offsets in Value
2435         https://bugs.webkit.org/show_bug.cgi?id=170692
2436
2437         Reviewed by Filip Pizlo.
2438
2439         Add C++17's std::conjunction type trait, except for Microsoft VS
2440         2015 update 2 and later because it adds the logical operator type
2441         traits, event when C++ is pre-2017:
2442         https://blogs.msdn.microsoft.com/vcblog/2016/01/22/vs-2015-update-2s-stl-is-c17-so-far-feature-complete/
2443
2444         * wtf/StdLibExtras.h:
2445
2446 2017-04-14  Mark Lam  <mark.lam@apple.com>
2447
2448         Update architectures in xcconfig files.
2449         https://bugs.webkit.org/show_bug.cgi?id=170867
2450         <rdar://problem/31628104>
2451
2452         Reviewed by Joseph Pecoraro.
2453
2454         * Configurations/Base.xcconfig:
2455
2456 2017-04-14  Myles C. Maxfield  <mmaxfield@apple.com>
2457
2458         Add performance test for asking the platform for a font for U+2060 WORD JOINER
2459         https://bugs.webkit.org/show_bug.cgi?id=170842
2460
2461         Reviewed by Tim Horton.
2462
2463         * wtf/unicode/CharacterNames.h:
2464
2465 2017-04-13  Yusuke Suzuki  <utatane.tea@gmail.com>
2466
2467         [JSC] Date.parse should accept wider range of representation
2468         https://bugs.webkit.org/show_bug.cgi?id=170720
2469
2470         Reviewed by Darin Adler.
2471
2472         We would like to relax Date.parse to accept the representation "May 8".
2473         At that time, we choose `2000` as a default year. This is because of
2474         the following reason.
2475
2476         1. According to the V8, this default value is compatible to the old KJS. While current V8 uses 2001,
2477            SpiderMonkey does not have such a fallback path. So this reason is not big deal.
2478
2479         2. It is a leap year. When using `new Date("Feb 29")`, we assume that people want to save month and day.
2480            Leap year can save user inputs if they is valid. If we use the current year instead, the current year
2481            may not be a leap year. In that case, `new Date("Feb 29").getMonth()` becomes 2 (March).
2482
2483         * wtf/DateMath.cpp:
2484         (WTF::parseDateFromNullTerminatedCharacters):
2485
2486 2017-04-13  Dan Bernstein  <mitz@apple.com>
2487
2488         WTF installs an extra copy of a header outside /usr/local/include/wtf
2489
2490         * WTF.xcodeproj/project.pbxproj: Demoted PriorityQueue.h from Private to Project.
2491
2492 2017-04-13  Oliver Hunt  <oliver@apple.com>
2493
2494         allocationSize should use safe arithmetic by default
2495         https://bugs.webkit.org/show_bug.cgi?id=170804
2496
2497         Reviewed by JF Bastien.
2498
2499         Make all allocationSize() functions work in terms
2500         of Checked<size_t>
2501
2502         * wtf/text/StringImpl.h:
2503         (WTF::StringImpl::allocationSize):
2504         (WTF::StringImpl::tailOffset):
2505
2506 2017-04-13  JF Bastien  <jfbastien@apple.com>
2507
2508         WebAssembly: manage memory better
2509         https://bugs.webkit.org/show_bug.cgi?id=170628
2510
2511         Reviewed by Keith Miller, Michael Saboff.
2512
2513         Re-use a VM tag which was intended for JavaScript core, was then
2514         used by our GC, and is now unused. If I don't do this then
2515         WebAssembly fast memories will make vmmap look super weird because
2516         it'll look like multi-gigabyte of virtual memory are allocated as
2517         part of our process' regular memory!
2518
2519         Separately I need to update vmmap and other tools to print the
2520         right name. Right now this tag gets identified as "JS garbage
2521         collector".
2522
2523         * wtf/OSAllocator.h:
2524         * wtf/VMTags.h:
2525
2526 2017-04-13  Yusuke Suzuki  <utatane.tea@gmail.com>
2527
2528         [JSC] Use proper ifdef guard for code using MachineContext
2529         https://bugs.webkit.org/show_bug.cgi?id=170800
2530
2531         Reviewed by Carlos Alberto Lopez Perez.
2532
2533         SamplingProfiler and FastMemory rely on MachineContext feature.
2534
2535         * wtf/Platform.h:
2536
2537 2017-04-12  Dan Bernstein  <mitz@apple.com>
2538
2539         [Mac] Future-proof .xcconfig files
2540         https://bugs.webkit.org/show_bug.cgi?id=170802
2541
2542         Reviewed by Tim Horton.
2543
2544         * Configurations/Base.xcconfig:
2545         * Configurations/DebugRelease.xcconfig:
2546
2547 2017-04-12  Yusuke Suzuki  <utatane.tea@gmail.com>
2548
2549         Use HAVE(MACHINE_CONTEXT) instead of USE(MACHINE_CONTEXT)
2550         https://bugs.webkit.org/show_bug.cgi?id=170770
2551
2552         Rubber stamped by Mark Lam.
2553
2554         * wtf/Platform.h:
2555         * wtf/PlatformRegisters.h:
2556         * wtf/ThreadingPthreads.cpp:
2557         (WTF::Thread::getRegisters):
2558
2559 2017-04-12  Yusuke Suzuki  <utatane.tea@gmail.com>
2560
2561         [JSC] Clean up heap/MachineStackMarker by introducing USE(MACHINE_CONTEXT)
2562         https://bugs.webkit.org/show_bug.cgi?id=170770
2563
2564         Reviewed by Mark Lam.
2565
2566         We add a new define USE_MACHINE_CONTEXT, which becomes true if mcontext_t exists
2567         and we know the way to retrieve values from mcontext_t.
2568
2569         * wtf/Platform.h:
2570         * wtf/PlatformRegisters.h:
2571         * wtf/ThreadingPthreads.cpp:
2572         (WTF::Thread::getRegisters):
2573
2574 2017-04-12  Yusuke Suzuki  <utatane.tea@gmail.com>
2575
2576         [WTF] Introduce Thread class and use RefPtr<Thread> and align Windows Threading implementation semantics to Pthread one
2577         https://bugs.webkit.org/show_bug.cgi?id=170502
2578
2579         Reviewed by Mark Lam.
2580
2581         This patch is refactoring of WTF Threading mechanism to merge JavaScriptCore's threading extension to WTF Threading.
2582         Previously, JavaScriptCore requires richer threading features (such as suspending and resuming threads), and they
2583         are implemented for PlatformThread in JavaScriptCore. But these features should be implemented in WTF Threading side
2584         instead of maintaining JSC's own threading features too. This patch removes these features from JSC and move it to
2585         WTF Threading.
2586
2587         However, current WTF Threading has one problem: Windows version of WTF Threading has different semantics from Pthreads
2588         one. In Windows WTF Threading, we cannot perform any operation after the target thread is detached: WTF Threading stop
2589         tracking the state of the thread once the thread is detached. But this is not the same to Pthreads one. In Pthreads,
2590         pthread_detach just means that the resource of the thread will be destroyed automatically. While some operations like
2591         pthread_join will be rejected, some operations like pthread_kill will be accepted.
2592
2593         The problem is that detached thread can be suspended and resumed in JSC. For example, in jsc.cpp, we start the worker
2594         thread and detach it immediately. In worker thread, we will create VM and thus concurrent GC will suspend and resume
2595         the detached thread. However, in Windows WTF Threading, we have no reference to the detached thread. Thus we cannot
2596         perform suspend and resume operations onto the detached thread.
2597
2598         To solve the problem, we change Windows Threading mechanism drastically to align it to the Pthread semantics. In the
2599         new Threading, we have RefPtr<Thread> class. It holds a handle to a platform thread. We can perform threading operations
2600         with this class. For example, Thread::suspend is offered. And we use destructor of the thread local variable to release
2601         the resources held by RefPtr<Thread>. In Windows, Thread::detach does nothing because the resource will be destroyed
2602         automatically by RefPtr<Thread>.
2603
2604         To do so, we introduce ThreadHolder for Windows. This is similar to the previous ThreadIdentifierData for Pthreads.
2605         It holds RefPtr<Thread> in the thread local storage (technically, it is Fiber Local Storage in Windows). Thread::current()
2606         will return this reference.
2607
2608         The problematic situation is that the order of the deallocation of the thread local storage is not defined. So we should
2609         not touch thread local storage in the destructor of the thread local storage. To avoid such edge cases, we have
2610         currentThread() / Thread::currentID() APIs. They are safe to be called even in the destructor of the other thread local
2611         storage. And in Windows, in the FLS destructor, we will create the thread_local variable to defer the destruction of
2612         the ThreadHolder. We ensure that this destructor is called after the other FLS destructors are called in Windows 10.
2613
2614         This patch is performance neutral.
2615
2616         * WTF.xcodeproj/project.pbxproj:
2617         * benchmarks/ConditionSpeedTest.cpp:
2618         * benchmarks/LockFairnessTest.cpp:
2619         * benchmarks/LockSpeedTest.cpp:
2620         * wtf/AutomaticThread.cpp:
2621         (WTF::AutomaticThread::start):
2622         * wtf/CMakeLists.txt:
2623         * wtf/MainThread.h:
2624         * wtf/MemoryPressureHandler.h:
2625         * wtf/ParallelJobsGeneric.cpp:
2626         (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
2627         (WTF::ParallelEnvironment::ThreadPrivate::workerThread):
2628         * wtf/ParallelJobsGeneric.h:
2629         (WTF::ParallelEnvironment::ThreadPrivate::ThreadPrivate): Deleted.
2630         * wtf/ParkingLot.cpp:
2631         (WTF::ParkingLot::forEachImpl):
2632         * wtf/ParkingLot.h:
2633         (WTF::ParkingLot::forEach):
2634         * wtf/PlatformRegisters.h: Renamed from Source/JavaScriptCore/runtime/PlatformThread.h.
2635         * wtf/RefPtr.h:
2636         (WTF::RefPtr::RefPtr):
2637         * wtf/ThreadFunctionInvocation.h:
2638         (WTF::ThreadFunctionInvocation::ThreadFunctionInvocation):
2639         * wtf/ThreadHolder.cpp: Added.
2640         (WTF::ThreadHolder::~ThreadHolder):
2641         (WTF::ThreadHolder::initialize):
2642         * wtf/ThreadHolder.h: Renamed from Source/WTF/wtf/ThreadIdentifierDataPthreads.h.
2643         (WTF::ThreadHolder::thread):
2644         (WTF::ThreadHolder::ThreadHolder):
2645         * wtf/ThreadHolderPthreads.cpp: Renamed from Source/WTF/wtf/ThreadIdentifierDataPthreads.cpp.
2646         (WTF::ThreadHolder::initializeOnce):
2647         (WTF::ThreadHolder::current):
2648         (WTF::ThreadHolder::destruct):
2649         * wtf/ThreadHolderWin.cpp: Added.
2650         (WTF::threadMapMutex):
2651         (WTF::threadMap):
2652         (WTF::ThreadHolder::initializeOnce):
2653         (WTF::ThreadHolder::current):
2654         (WTF::ThreadHolder::destruct):
2655         * wtf/ThreadSpecific.h:
2656         * wtf/Threading.cpp:
2657         (WTF::Thread::normalizeThreadName):
2658         (WTF::threadEntryPoint):
2659         (WTF::Thread::create):
2660         (WTF::Thread::setCurrentThreadIsUserInteractive):
2661         (WTF::Thread::setCurrentThreadIsUserInitiated):
2662         (WTF::Thread::setGlobalMaxQOSClass):
2663         (WTF::Thread::adjustedQOSClass):
2664         (WTF::Thread::dump):
2665         (WTF::initializeThreading):
2666         (WTF::normalizeThreadName): Deleted.
2667         (WTF::createThread): Deleted.
2668         (WTF::setCurrentThreadIsUserInteractive): Deleted.
2669         (WTF::setCurrentThreadIsUserInitiated): Deleted.
2670         (WTF::setGlobalMaxQOSClass): Deleted.
2671         (WTF::adjustedQOSClass): Deleted.
2672         * wtf/Threading.h:
2673         (WTF::Thread::id):
2674         (WTF::Thread::operator==):
2675         (WTF::Thread::operator!=):
2676         (WTF::Thread::joinableState):
2677         (WTF::Thread::didBecomeDetached):
2678         (WTF::Thread::didJoin):
2679         (WTF::Thread::hasExited):
2680         (WTF::currentThread):
2681         * wtf/ThreadingPthreads.cpp:
2682         (WTF::Thread::Thread):
2683         (WTF::Thread::~Thread):
2684         (WTF::Thread::signalHandlerSuspendResume):
2685         (WTF::Thread::initializePlatformThreading):
2686         (WTF::initializeCurrentThreadEvenIfNonWTFCreated):
2687         (WTF::wtfThreadEntryPoint):
2688         (WTF::Thread::createInternal):
2689         (WTF::Thread::initializeCurrentThreadInternal):
2690         (WTF::Thread::changePriority):
2691         (WTF::Thread::waitForCompletion):
2692         (WTF::Thread::detach):
2693         (WTF::Thread::current):
2694         (WTF::Thread::currentID):
2695         (WTF::Thread::signal):
2696         (WTF::Thread::resume):
2697         (WTF::Thread::getRegisters):
2698         (WTF::Thread::didExit):
2699         (WTF::Thread::establish):
2700         (WTF::PthreadState::PthreadState): Deleted.
2701         (WTF::PthreadState::joinableState): Deleted.
2702         (WTF::PthreadState::pthreadHandle): Deleted.
2703         (WTF::PthreadState::didBecomeDetached): Deleted.
2704         (WTF::PthreadState::didExit): Deleted.
2705         (WTF::PthreadState::didJoin): Deleted.
2706         (WTF::PthreadState::hasExited): Deleted.
2707         (WTF::threadMapMutex): Deleted.
2708         (WTF::initializeThreading): Deleted.
2709         (WTF::threadMap): Deleted.
2710         (WTF::identifierByPthreadHandle): Deleted.
2711         (WTF::establishIdentifierForPthreadHandle): Deleted.
2712         (WTF::pthreadHandleForIdentifierWithLockAlreadyHeld): Deleted.
2713         (WTF::createThreadInternal): Deleted.
2714         (WTF::initializeCurrentThreadInternal): Deleted.
2715         (WTF::changeThreadPriority): Deleted.
2716         (WTF::waitForThreadCompletion): Deleted.
2717         (WTF::detachThread): Deleted.
2718         (WTF::threadDidExit): Deleted.
2719         (WTF::currentThread): Deleted.
2720         (WTF::signalThread): Deleted.
2721         * wtf/ThreadingWin.cpp:
2722         (WTF::Thread::Thread):
2723         (WTF::Thread::~Thread):
2724         (WTF::Thread::initializeCurrentThreadInternal):
2725         (WTF::Thread::initializePlatformThreading):
2726         (WTF::wtfThreadEntryPoint):
2727         (WTF::Thread::createInternal):
2728         (WTF::Thread::changePriority):
2729         (WTF::Thread::waitForCompletion):
2730         (WTF::Thread::detach):
2731         (WTF::Thread::resume):
2732         (WTF::Thread::getRegisters):
2733         (WTF::Thread::current):
2734         (WTF::Thread::currentID):
2735         (WTF::Thread::didExit):
2736         (WTF::Thread::establish):
2737         (WTF::initializeCurrentThreadInternal): Deleted.
2738         (WTF::threadMapMutex): Deleted.
2739         (WTF::initializeThreading): Deleted.
2740         (WTF::threadMap): Deleted.
2741         (WTF::storeThreadHandleByIdentifier): Deleted.
2742         (WTF::threadHandleForIdentifier): Deleted.
2743         (WTF::clearThreadHandleForIdentifier): Deleted.
2744         (WTF::createThreadInternal): Deleted.
2745         (WTF::changeThreadPriority): Deleted.
2746         (WTF::waitForThreadCompletion): Deleted.
2747         (WTF::detachThread): Deleted.
2748         (WTF::currentThread): Deleted.
2749         * wtf/WorkQueue.cpp:
2750         (WTF::WorkQueue::concurrentApply):
2751         * wtf/WorkQueue.h:
2752         * wtf/cocoa/WorkQueueCocoa.cpp:
2753         (WTF::dispatchQOSClass):
2754         * wtf/generic/WorkQueueGeneric.cpp:
2755         (WorkQueue::platformInitialize):
2756         (WorkQueue::platformInvalidate):
2757         * wtf/linux/MemoryPressureHandlerLinux.cpp:
2758         (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
2759         (WTF::MemoryPressureHandler::EventFDPoller::~EventFDPoller):
2760         * wtf/win/MainThreadWin.cpp:
2761         (WTF::initializeMainThreadPlatform):
2762
2763 2017-04-11  Zan Dobersek  <zdobersek@igalia.com>
2764
2765         [GTK] Use the DisplayRefreshMonitor facilities
2766         https://bugs.webkit.org/show_bug.cgi?id=170599
2767
2768         Reviewed by Carlos Garcia Campos.
2769
2770         * wtf/Platform.h: Enable USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR for the GTK+ port.
2771         * wtf/glib/RunLoopSourcePriority.h: Add the DisplayRefreshMonitorTimer entry that
2772         matches the value of LayerFlushTimer.
2773
2774 2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>
2775
2776         [WebCore][JSC] ResourceUsageData.{timeOfNextEdenCollection,timeOfNextFullCollection} should be MonotonicTime
2777         https://bugs.webkit.org/show_bug.cgi?id=170725
2778
2779         Reviewed by Sam Weinig.
2780
2781         Make MonotonicTime more constexpr friendly mainly to annotate MonotonicTime::nan() as constexpr.
2782
2783         * wtf/MonotonicTime.h:
2784         (WTF::MonotonicTime::MonotonicTime):
2785         (WTF::MonotonicTime::fromRawSeconds):
2786         (WTF::MonotonicTime::infinity):
2787         (WTF::MonotonicTime::nan):
2788         (WTF::MonotonicTime::secondsSinceEpoch):
2789         (WTF::MonotonicTime::operator bool):
2790         (WTF::MonotonicTime::operator+):
2791         (WTF::MonotonicTime::operator-):
2792         (WTF::MonotonicTime::operator==):
2793         (WTF::MonotonicTime::operator!=):
2794         (WTF::MonotonicTime::operator<):
2795         (WTF::MonotonicTime::operator>):
2796         (WTF::MonotonicTime::operator<=):
2797         (WTF::MonotonicTime::operator>=):
2798
2799 2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>
2800
2801         Unreviewed, build fix for Windows port after r215228
2802         https://bugs.webkit.org/show_bug.cgi?id=170723
2803
2804         * wtf/win/RunLoopWin.cpp:
2805         (WTF::RunLoop::TimerBase::timerFired):
2806
2807 2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>
2808
2809         [JSC][GTK] Use RunLoop::Timer in GTK port
2810         https://bugs.webkit.org/show_bug.cgi?id=170723
2811
2812         Reviewed by Carlos Garcia Campos.
2813
2814         Add secondsUntilFire method. And add setName and setPriority
2815         for GTK RunLoop::Timer.
2816
2817         * wtf/RunLoop.h:
2818         * wtf/cf/RunLoopCF.cpp:
2819         (WTF::RunLoop::TimerBase::secondsUntilFire):
2820         * wtf/generic/RunLoopGeneric.cpp:
2821         (WTF::RunLoop::TimerBase::secondsUntilFire):
2822         * wtf/glib/RunLoopGLib.cpp:
2823         (WTF::RunLoop::TimerBase::setName):
2824         (WTF::RunLoop::TimerBase::secondsUntilFire):
2825         * wtf/win/RunLoopWin.cpp:
2826         (WTF::RunLoop::TimerBase::timerFired):
2827         (WTF::RunLoop::TimerBase::start):
2828         (WTF::RunLoop::TimerBase::isActive):
2829         (WTF::RunLoop::TimerBase::secondsUntilFire):
2830
2831 2017-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>
2832
2833         [JSC] Enable JSRunLoopTimer for JSCOnly and Windows
2834         https://bugs.webkit.org/show_bug.cgi?id=170655
2835
2836         Reviewed by Carlos Garcia Campos.
2837
2838         This patch makes RunLoop::Timer in Generic and Windows thread-safe to use it
2839         in JSC's JSRunLoopTimer. Eventually, we would like to replace JSRunLoopTimer's
2840         platform-dependent implementation to WTF::RunLoop::Timer.
2841
2842         * wtf/RunLoop.h:
2843         * wtf/cf/RunLoopCF.cpp:
2844         (WTF::RunLoop::TimerBase::start):
2845         * wtf/generic/RunLoopGeneric.cpp:
2846         (WTF::RunLoop::TimerBase::ScheduledTask::EarliestSchedule::operator()):
2847         (WTF::RunLoop::populateTasks):
2848         (WTF::RunLoop::runImpl):
2849         (WTF::RunLoop::schedule):
2850         (WTF::RunLoop::scheduleAndWakeUp):
2851         (WTF::RunLoop::TimerBase::~TimerBase):
2852         (WTF::RunLoop::TimerBase::start):
2853         (WTF::RunLoop::TimerBase::stop):
2854         (WTF::RunLoop::TimerBase::isActive):
2855         * wtf/glib/RunLoopGLib.cpp:
2856         (WTF::RunLoop::TimerBase::TimerBase):
2857         * wtf/win/RunLoopWin.cpp:
2858         (WTF::RunLoop::TimerBase::timerFired):
2859         (WTF::RunLoop::TimerBase::start):
2860         (WTF::RunLoop::TimerBase::stop):
2861         (WTF::RunLoop::TimerBase::isActive):
2862
2863 2017-04-11  Zan Dobersek  <zdobersek@igalia.com>
2864
2865         REGRESSION(r213645): It made JSC tests super slow and timeout on AArch64 Linux
2866         https://bugs.webkit.org/show_bug.cgi?id=169510
2867
2868         Reviewed by Saam Barati.
2869
2870         Add the `volatile` qualifiers for ASM statements that set up ldxr and stxr
2871         instruction calls when HAVE(LL_SC) is enabled for aarch64 platforms.
2872
2873         This avoids indefinite execution when running GCC-compiled JSC on Linux.
2874         Specific bug or expected behavior that differs from Clang wasn't determined.
2875
2876         HAVE(LL_SC) is re-enabled on non-Darwin aarch64 platforms.
2877
2878         * wtf/Atomics.h:
2879         * wtf/Platform.h:
2880
2881 2017-04-10  Thorsten Glaser  <tg@mirbsd.de>
2882
2883         [GTK] Fix x32 build
2884         https://bugs.webkit.org/show_bug.cgi?id=170673
2885
2886         Reviewed by Carlos Alberto Lopez Perez.
2887
2888         * wtf/Platform.h:
2889
2890 2017-04-09  Yusuke Suzuki  <utatane.tea@gmail.com>
2891
2892         [WTF] Annotate Seconds' member functions and operators with constexpr
2893         https://bugs.webkit.org/show_bug.cgi?id=170662
2894
2895         Reviewed by Daniel Bates.
2896
2897         Annotate Seconds' member functions and operators with constexpr.
2898         It allows us to use Seconds calculation in compile time and use these
2899         calculation for static const global variables.
2900
2901         operator% is an exception: it uses fmod and it is not offered as constexpr.
2902
2903         * wtf/MathExtras.h:
2904         (defaultMinimumForClamp):
2905         (defaultMaximumForClamp):
2906         (clampToAccepting64):
2907         Super unfortunate ugly code. This is because GCC 4.9 does not support C++14 relaxed constexpr.
2908
2909         * wtf/Seconds.h:
2910         (WTF::Seconds::Seconds):
2911         (WTF::Seconds::value):
2912         (WTF::Seconds::minutes):
2913         (WTF::Seconds::seconds):
2914         (WTF::Seconds::milliseconds):
2915         (WTF::Seconds::microseconds):
2916         (WTF::Seconds::nanoseconds):
2917         (WTF::Seconds::operator bool):
2918         (WTF::Seconds::operator+):
2919         (WTF::Seconds::operator-):
2920         (WTF::Seconds::operator*):
2921         (WTF::Seconds::operator/):
2922         (WTF::Seconds::operator==):
2923         (WTF::Seconds::operator!=):
2924         (WTF::Seconds::operator<):
2925         (WTF::Seconds::operator>):
2926         (WTF::Seconds::operator<=):
2927         (WTF::Seconds::operator>=):
2928
2929 2017-04-09  Chris Dumez  <cdumez@apple.com>
2930
2931         Start dropping Timer API dealing with double
2932         https://bugs.webkit.org/show_bug.cgi?id=170649
2933
2934         Reviewed by Yusuke Suzuki.
2935
2936         Start dropping Timer API dealing with double as people should use Seconds now.
2937
2938         * wtf/RunLoopTimer.h:
2939         * wtf/glib/MainThreadGLib.cpp:
2940         (WTF::MainThreadDispatcher::schedule):
2941
2942 2017-04-07  Keith Miller  <keith_miller@apple.com>
2943
2944         Unreviewed, remove constexpr function since GTK didn't like it.
2945
2946         * wtf/PriorityQueue.h:
2947         (WTF::PriorityQueue::parentOf):
2948
2949 2017-04-07  Chris Dumez  <cdumez@apple.com>
2950
2951         Start using MonotonicTime / Seconds in Timer class
2952         https://bugs.webkit.org/show_bug.cgi?id=170625
2953
2954         Reviewed by Simon Fraser.
2955
2956         Add modulo operator to MonotonicTime.
2957
2958         * wtf/MonotonicTime.h:
2959         (WTF::MonotonicTime::operator%):
2960
2961 2017-04-07  Keith Miller  <keith_miller@apple.com>
2962
2963         Add a PriorityQueue class
2964         https://bugs.webkit.org/show_bug.cgi?id=170579
2965
2966         Reviewed by Saam Barati.
2967
2968         This patch adds a new PriorityQueue class that is backed by
2969         WTF::Vector.  It also has a number of other niceties such as being
2970         able to iterate the queue and increase or decrease keys.
2971
2972         One note is that increaseKey and decreaseKey are O(n) rather than
2973         O(log(n)).  Traditionally, the lookup of the key is done with a
2974         hash map but that's not feasible here.  This is because unless the
2975         queue's element type is a pointer there is no good way maintain a
2976         persistent reference to every entry in the queue while we sift.
2977         The only way to update the location of an entry is to do a hash
2978         table lookup with the entry's hash but this is probably more
2979         expensive than just doing a linear search.
2980
2981         Also, add comparison operator functions, which can be passed to PriorityQueue.
2982
2983         * WTF.xcodeproj/project.pbxproj:
2984         * wtf/MathExtras.h:
2985         (isLessThan):
2986         (isLessThanEqual):
2987         (isGreaterThan):
2988         (isGreaterThanEqual):
2989         * wtf/PriorityQueue.h: Added.
2990         (WTF::PriorityQueue::size):
2991         (WTF::PriorityQueue::isEmpty):
2992         (WTF::PriorityQueue::enqueue):
2993         (WTF::PriorityQueue::peek):
2994         (WTF::PriorityQueue::dequeue):
2995         (WTF::PriorityQueue::decreaseKey):
2996         (WTF::PriorityQueue::increaseKey):
2997         (WTF::PriorityQueue::begin):
2998         (WTF::PriorityQueue::end):
2999         (WTF::PriorityQueue::isValidHeap):
3000         (WTF::PriorityQueue::parentOf):
3001         (WTF::PriorityQueue::leftChildOf):
3002         (WTF::PriorityQueue::rightChildOf):
3003         (WTF::PriorityQueue::siftUp):
3004         (WTF::PriorityQueue::siftDown):
3005
3006 2017-04-07  Alex Christensen  <achristensen@webkit.org>
3007
3008         Use audit_token_t instead of pid_t for checking sandbox of other processes
3009         https://bugs.webkit.org/show_bug.cgi?id=170616
3010         <rdar://problem/31158189>
3011
3012         Reviewed by Daniel Bates.
3013
3014         * wtf/spi/darwin/SandboxSPI.h:
3015         Declare more SPI.
3016
3017 2017-04-07  Ting-Wei Lan  <lantw44@gmail.com>
3018
3019         Include cstdio before using sscanf and stderr
3020         https://bugs.webkit.org/show_bug.cgi?id=170098
3021
3022         Reviewed by Michael Catanzaro.
3023
3024         * wtf/NumberOfCores.cpp:
3025
3026 2017-04-07  Saam Barati  <sbarati@apple.com>
3027
3028         WebAssembly: Make to a compilation API that allows for multi-VM concurrent compilations of Wasm Modules
3029         https://bugs.webkit.org/show_bug.cgi?id=170488
3030
3031         Reviewed by JF Bastien.
3032
3033         * wtf/SharedTask.h: Make SharedTaskFunctor forward its arguments.
3034
3035 2017-04-07  Carlos Garcia Campos  <cgarcia@igalia.com>
3036
3037         [GTK] Update the priorities used in glib main loop sources
3038         https://bugs.webkit.org/show_bug.cgi?id=170457
3039
3040         Reviewed by Žan Doberšek.
3041
3042         Add an enum to define prirorities used in different GLib main sources. It allows to give them a better name
3043         than high, low, medium, etc., but also to document them and other GLib based ports can define their own
3044         values without changing all the places where they are used. The default values are based on the priorities
3045         pre-defined by GLib.
3046
3047         * wtf/glib/MainThreadGLib.cpp:
3048         (WTF::MainThreadDispatcher::MainThreadDispatcher):
3049         * wtf/glib/RunLoopGLib.cpp:
3050         (WTF::RunLoop::RunLoop):
3051         (WTF::RunLoop::dispatchAfter):
3052         (WTF::RunLoop::TimerBase::TimerBase):
3053         * wtf/glib/RunLoopSourcePriority.h: Added.
3054         * wtf/linux/MemoryPressureHandlerLinux.cpp:
3055         (WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):
3056
3057 2017-04-06  Filip Pizlo  <fpizlo@apple.com>
3058
3059         Linear scan should run liveness only once
3060         https://bugs.webkit.org/show_bug.cgi?id=170569
3061
3062         Reviewed by Keith Miller.
3063         
3064         Have Liveness<> call Adapter::prepareToCompute(), since this makes it a lot easier to implement
3065         constraint generation, since the constraint generator now gets to run after the Adapter is fully
3066         constructed.
3067         
3068         * wtf/IndexMap.h:
3069         (WTF::IndexMap::append): Also make this a bit more versatile.
3070         * wtf/Liveness.h:
3071         (WTF::Liveness::LocalCalc::Iterable::contains):
3072         (WTF::Liveness::Iterable::contains):
3073         (WTF::Liveness::compute):
3074
3075 2017-04-06  Andreas Kling  <akling@apple.com>
3076
3077         Kill any WebContent process using over 16 GB of memory.
3078         https://bugs.webkit.org/show_bug.cgi?id=170515
3079         <rdar://problem/29930931>
3080
3081         Reviewed by Antti Koivisto.
3082
3083         Restructure the code since it was getting out of sync with the intended behavior.
3084         Now there's a thresholdForMemoryKill() which returns the current memory limit based
3085         on the process status.
3086
3087         The memory usage policy is separated from the killing, and now only drives the
3088         asynchronous invocations of pressure relief that occur when we pass over one of
3089         the policy edges (now 1GB for Conservative, 2GB for Strict.)
3090
3091         Removed the "Panic" policy and moved the memory kill logic to shrinkOrDie().
3092
3093         Behavior as of this patch:
3094
3095             - Everyone gets killed over 16 GB.
3096             - Inactive processes get killed over 4 GB.
3097             - Strict memory usage policy kicks in at 2 GB.
3098             - Conservative memory usage policy at 1 GB.
3099
3100         Like before, we make a best-effort attempt to free up memory before killing the process.
3101
3102         * wtf/MemoryPressureHandler.cpp:
3103         (WTF::toString):
3104         (WTF::MemoryPressureHandler::thresholdForMemoryKill):
3105         (WTF::thresholdForPolicy):
3106         (WTF::policyForFootprint):
3107         (WTF::MemoryPressureHandler::shrinkOrDie):
3108         (WTF::MemoryPressureHandler::setMemoryUsagePolicyBasedOnFootprint):
3109         (WTF::MemoryPressureHandler::measurementTimerFired):
3110         * wtf/MemoryPressureHandler.h:
3111
3112 2017-04-05  Andreas Kling  <akling@apple.com>
3113
3114         Make inactive web processes behave as though under memory pressure.
3115         https://bugs.webkit.org/show_bug.cgi?id=170042
3116         <rdar://problem/31038445>
3117
3118         Reviewed by Antti Koivisto.
3119
3120         Once a web process becomes inactive, let's try to reduce its impact
3121         on memory usage by treating it as if it's under memory pressure until
3122         it becomes active.
3123
3124         * wtf/MemoryPressureHandler.cpp:
3125         (WTF::MemoryPressureHandler::setProcessState):
3126         (WTF::MemoryPressureHandler::isUnderMemoryPressure):
3127         * wtf/MemoryPressureHandler.h:
3128         (WTF::MemoryPressureHandler::isUnderMemoryPressure): Deleted.
3129
3130 2017-04-05  Yusuke Suzuki  <utatane.tea@gmail.com>
3131
3132         [JSC] Suppress warnings in GCC
3133         https://bugs.webkit.org/show_bug.cgi?id=170501
3134
3135         Reviewed by Keith Miller.
3136
3137         Add a new macro UNUSED_FUNCTION to annotate unused static functions.
3138         #pragma GCC diagnostic ignored "-Wunused-function" does not work.
3139
3140         * wtf/Compiler.h:
3141
3142 2017-04-04  Filip Pizlo  <fpizlo@apple.com>
3143
3144         Air::eliminateDeadCode() should not use a HashSet
3145         https://bugs.webkit.org/show_bug.cgi?id=170487
3146
3147         Reviewed by Saam Barati.
3148         
3149         BitVector::iterator knows when it's at the end. Expose this functionality.
3150
3151         * wtf/BitVector.h:
3152         (WTF::BitVector::iterator::isAtEnd):
3153
3154 2017-04-04  Keith Miller  <keith_miller@apple.com>
3155
3156         WebAssembly: ModuleInformation should be a ref counted thing that can be shared across threads.
3157         https://bugs.webkit.org/show_bug.cgi?id=170478
3158
3159         Reviewed by Saam Barati.
3160
3161         This adds a new String::fromUTF8 that converts a vector of characters to
3162         a string.
3163
3164         Also, it cleans up some style.
3165
3166         * wtf/text/WTFString.h:
3167         (WTF::String::fromUTF8):
3168         * wtf/unicode/UTF8.cpp:
3169         (WTF::Unicode::convertLatin1ToUTF8):
3170
3171 2017-04-04  Filip Pizlo  <fpizlo@apple.com>
3172
3173         B3::fixSSA() needs a tune-up
3174         https://bugs.webkit.org/show_bug.cgi?id=170485
3175
3176         Reviewed by Saam Barati.
3177         
3178         This makes IndexSparseSet capable of being used as a map if you instantiate it with
3179         KeyValuePair<unsigned, ValueType>.
3180
3181         * wtf/HashTraits.h:
3182         * wtf/IndexSparseSet.h:
3183         (WTF::DefaultIndexSparseSetTraits::create):
3184         (WTF::DefaultIndexSparseSetTraits::key):
3185         (WTF::OverflowHandler>::IndexSparseSet):
3186         (WTF::OverflowHandler>::add):
3187         (WTF::OverflowHandler>::set):
3188         (WTF::OverflowHandler>::remove):
3189         (WTF::OverflowHandler>::clear):
3190         (WTF::OverflowHandler>::size):
3191         (WTF::OverflowHandler>::isEmpty):
3192         (WTF::OverflowHandler>::contains):
3193         (WTF::OverflowHandler>::sort):
3194         (WTF::IndexSparseSet<OverflowHandler>::IndexSparseSet): Deleted.
3195         (WTF::IndexSparseSet<OverflowHandler>::add): Deleted.
3196         (WTF::IndexSparseSet<OverflowHandler>::remove): Deleted.
3197         (WTF::IndexSparseSet<OverflowHandler>::clear): Deleted.
3198         (WTF::IndexSparseSet<OverflowHandler>::size): Deleted.
3199         (WTF::IndexSparseSet<OverflowHandler>::isEmpty): Deleted.
3200         (WTF::IndexSparseSet<OverflowHandler>::contains): Deleted.
3201         (WTF::IndexSparseSet<OverflowHandler>::sort): Deleted.
3202         * wtf/Liveness.h:
3203         (WTF::Liveness::LocalCalc::Iterable::iterator::iterator):
3204         (WTF::Liveness::workset):
3205
3206 2017-04-04  Filip Pizlo  <fpizlo@apple.com>
3207
3208         Don't need to Air::reportUsedRegisters for wasm at -O1
3209         https://bugs.webkit.org/show_bug.cgi?id=170459
3210
3211         Reviewed by Saam Barati.
3212         
3213         Just moved the liveness computation into a method, which enabled me to do the profiling
3214         that I used to write this patch.
3215
3216         * wtf/Liveness.h:
3217         (WTF::Liveness::Liveness):
3218         (WTF::Liveness::compute):
3219
3220 2017-04-03  Filip Pizlo  <fpizlo@apple.com>
3221
3222         Air liveness should build constraints and solve them rather than repeatedly parsing IR
3223         https://bugs.webkit.org/show_bug.cgi?id=170421
3224
3225         Reviewed by Saam Barati.
3226
3227         * wtf/Vector.h:
3228         (WTF::minCapacity>::appendIfNotContains): Because sometimes Vector<> is the best kind of set.
3229
3230 2017-04-03  Yusuke Suzuki  <utatane.tea@gmail.com>
3231
3232         [WTF] Introduce WTF::RandomDevice which keeps /dev/urandom opened
3233         https://bugs.webkit.org/show_bug.cgi?id=170095
3234
3235         Reviewed by Michael Catanzaro.
3236
3237         In this patch, we introduce RandomDevice, which keeps /dev/urandom opened
3238         to avoid repeatedly open and close urandom file descriptor in Linux.
3239
3240         The purpose is similar to std::random_device, but WTF::RandomDevice explicitly
3241         avoids using ARC4, which is recently attempted to be removed from the WebKit
3242         tree[1].
3243
3244         [1]: https://trac.webkit.org/r214329
3245
3246         * WTF.xcodeproj/project.pbxproj:
3247         * wtf/CMakeLists.txt:
3248         * wtf/OSRandomSource.cpp:
3249         (WTF::cryptographicallyRandomValuesFromOS):
3250         (WTF::crashUnableToOpenURandom): Deleted.
3251         (WTF::crashUnableToReadFromURandom): Deleted.
3252         * wtf/RandomDevice.cpp: Copied from Source/WTF/wtf/OSRandomSource.cpp.
3253         (WTF::crashUnableToOpenURandom):
3254         (WTF::crashUnableToReadFromURandom):
3255         (WTF::RandomDevice::RandomDevice):
3256         (WTF::RandomDevice::~RandomDevice):
3257         (WTF::RandomDevice::cryptographicallyRandomValues):
3258         * wtf/RandomDevice.h: Added.
3259
3260 2017-04-03  Filip Pizlo  <fpizlo@apple.com>
3261
3262         WTF::Liveness should have an API that focuses on actions at instruction boundaries
3263         https://bugs.webkit.org/show_bug.cgi?id=170407
3264
3265         Reviewed by Keith Miller.
3266         
3267         Change the Liveness<> API to handle early and late things in one lump inside forEachUse
3268         and forEachDef functions. This reduces the amount of different functions that Liveness<>
3269         expects from its adaptor. This makes it easier to implement optimizations that cache the
3270         use/def behavior of each instruction boundary.
3271
3272         * wtf/Liveness.h:
3273         (WTF::Liveness::Liveness):
3274         (WTF::Liveness::LocalCalc::execute):
3275
3276 2017-04-01  Csaba Osztrogonác  <ossy@webkit.org>
3277
3278         Mac cmake buildfix after 214586.
3279         https://bugs.webkit.org/show_bug.cgi?id=170381
3280
3281         Unreviewed.
3282
3283         * wtf/BlockPtr.h:
3284
3285 2017-03-30  Filip Pizlo  <fpizlo@apple.com>
3286
3287         Air should support linear scan for optLevel<2
3288         https://bugs.webkit.org/show_bug.cgi?id=170161
3289
3290         Reviewed by Saam Barati.
3291         
3292         This change introduces a new low-latency register allocator. It can allocate registers very
3293         quickly by doing a relatively poor job. Implementing this algorithm required beefing up some of
3294         our core algorithms.
3295
3296         * WTF.xcodeproj/project.pbxproj:
3297         * wtf/CMakeLists.txt:
3298         * wtf/Deque.h: Make it possible to do some basic priority queueing with this data structure.
3299         (WTF::inlineCapacity>::removeAllMatching):
3300         (WTF::inlineCapacity>::appendAndBubble):
3301         (WTF::inlineCapacity>::takeLast):
3302         * wtf/IndexKeyType.h: Added. This makes it possible to use IndexMap and IndexSet with value or pointer types. Previously they just worked with pointer types.
3303         (WTF::IndexKeyType::index):
3304         * wtf/IndexMap.h: Adopt IndexKeyType.
3305         (WTF::IndexMap::operator[]):
3306         (WTF::IndexMap::append):
3307         * wtf/IndexSet.h: Adopt IndexKeyType.
3308         (WTF::IndexSet::add):
3309         (WTF::IndexSet::addAll):
3310         (WTF::IndexSet::remove):
3311         (WTF::IndexSet::contains):
3312         (WTF::IndexSet::Iterable::iterator::operator*):
3313         * wtf/Range.h: Added. This used to be B3::HeapRange. This generalizes that data structure to any kind of range stuff.
3314         (WTF::Range::Range):
3315         (WTF::Range::top):
3316         (WTF::Range::operator==):
3317         (WTF::Range::operator!=):
3318         (WTF::Range::operator bool):
3319         (WTF::Range::operator|):
3320         (WTF::Range::operator|=):
3321         (WTF::Range::begin):
3322         (WTF::Range::end):
3323         (WTF::Range::overlaps):
3324         (WTF::Range::dump):
3325         * wtf/RangeSet.h:
3326         (WTF::RangeSet::add):
3327
3328 2017-03-25  Yusuke Suzuki  <utatane.tea@gmail.com>
3329
3330         [JSC] Move platformThreadSignal to WTF
3331         https://bugs.webkit.org/show_bug.cgi?id=170097
3332
3333         Reviewed by Mark Lam.
3334
3335         * wtf/Threading.h:
3336         * wtf/ThreadingPthreads.cpp:
3337         (WTF::signalThread):
3338
3339 2017-03-26  Filip Pizlo  <fpizlo@apple.com>
3340
3341         B3::fixSSA should do liveness pruning
3342         https://bugs.webkit.org/show_bug.cgi?id=170111
3343
3344         Reviewed by Saam Barati.
3345         
3346         Move Air::Liveness<> to WTF::Liveness<>. This is pretty easy since Air::Liveness<> was
3347         already fairly generic. It leverages the CFG concept so that it can understand many
3348         different kinds of basic blocks. It doesn't try to understand the contents of basic
3349         blocks; it just asks the adaptor for the block size and asks for the early/late
3350         uses/defs of each thing in the block.
3351         
3352         This makes it easy to create a B3::VariableLiveness, which fixSSA then uses for
3353         pruning. One of the new features is the Liveness::LiveAtHead nested class, which you
3354         instantiate if you want to perform liveAtHead queries, which SSA construction wants to
3355         do.
3356         
3357         This also fixes https://bugs.webkit.org/show_bug.cgi?id=170102#c12
3358
3359         * WTF.xcodeproj/project.pbxproj:
3360         * wtf/CMakeLists.txt:
3361         * wtf/Liveness.h: Added.
3362         (WTF::Liveness::Liveness):
3363         (WTF::Liveness::LocalCalc::LocalCalc):
3364         (WTF::Liveness::LocalCalc::Iterable::Iterable):
3365         (WTF::Liveness::LocalCalc::Iterable::iterator::iterator):
3366         (WTF::Liveness::LocalCalc::Iterable::iterator::operator++):
3367         (WTF::Liveness::LocalCalc::Iterable::iterator::operator*):
3368         (WTF::Liveness::LocalCalc::Iterable::iterator::operator==):
3369         (WTF::Liveness::LocalCalc::Iterable::iterator::operator!=):
3370         (WTF::Liveness::LocalCalc::Iterable::begin):
3371         (WTF::Liveness::LocalCalc::Iterable::end):
3372         (WTF::Liveness::LocalCalc::Iterable::contains):
3373         (WTF::Liveness::LocalCalc::live):
3374         (WTF::Liveness::LocalCalc::isLive):
3375         (WTF::Liveness::LocalCalc::execute):
3376         (WTF::Liveness::rawLiveAtHead):
3377         (WTF::Liveness::Iterable::Iterable):
3378         (WTF::Liveness::Iterable::iterator::iterator):
3379         (WTF::Liveness::Iterable::iterator::operator*):
3380         (WTF::Liveness::Iterable::iterator::operator++):
3381         (WTF::Liveness::Iterable::iterator::operator==):
3382         (WTF::Liveness::Iterable::iterator::operator!=):
3383         (WTF::Liveness::Iterable::begin):
3384         (WTF::Liveness::Iterable::end):
3385         (WTF::Liveness::Iterable::contains):
3386         (WTF::Liveness::liveAtHead):
3387         (WTF::Liveness::liveAtTail):
3388         (WTF::Liveness::workset):
3389         (WTF::Liveness::LiveAtHead::LiveAtHead):
3390         (WTF::Liveness::LiveAtHead::isLiveAtHead):
3391
3392 2017-03-25  Filip Pizlo  <fpizlo@apple.com>
3393
3394         Air::Liveness shouldn't need HashSets
3395         https://bugs.webkit.org/show_bug.cgi?id=170102
3396
3397         Reviewed by Yusuke Suzuki.
3398
3399         * wtf/IndexSparseSet.h: Add some helpers for a HashSet-free liveness analysis.
3400         (WTF::IndexSparseSet::values):
3401         (WTF::IndexSparseSet<OverflowHandler>::sort):
3402         * wtf/StdLibExtras.h:
3403         (WTF::mergeDeduplicatedSorted): Rapidly merge two sorted lists that don't have duplicates to produce a new sorted list that doesn't have duplicates.
3404         * wtf/Vector.h:
3405         (WTF::minCapacity>::uncheckedAppend): Inline this!
3406         (WTF::removeRepeatedElements): This is a version of std::unique() that works naturally for Vectors.
3407
3408 2017-03-26  Filip Pizlo  <fpizlo@apple.com>
3409
3410         Air should use RegisterSet for RegLiveness
3411         https://bugs.webkit.org/show_bug.cgi?id=170108
3412
3413         Reviewed by Yusuke Suzuki.
3414
3415         * wtf/Atomics.h:
3416         (WTF::ensurePointer): This is a useful replacement for std::once, which requires less fencing.
3417         * wtf/Bitmap.h: Add more utilities.
3418         (WTF::Bitmap::iterator::iterator): An iterator for set bits.
3419         (WTF::Bitmap::iterator::operator*):
3420         (WTF::Bitmap::iterator::operator++):
3421         (WTF::Bitmap::iterator::operator==):
3422         (WTF::Bitmap::iterator::operator!=):
3423         (WTF::Bitmap::begin):
3424         (WTF::Bitmap::end):
3425         (WTF::WordType>::subsumes): a.subsumes(b) if all of b's set bits are set in a.
3426         (WTF::WordType>::findBit): find next set or clear bit.
3427
3428 2017-03-24  JF Bastien  <jfbastien@apple.com>
3429
3430         WebAssembly: store state in TLS instead of on VM
3431         https://bugs.webkit.org/show_bug.cgi?id=169611
3432
3433         Reviewed by Filip Pizlo.
3434
3435         * wtf/FastTLS.h: reserve one key for WebAssembly, delete a bunch
3436         of dead code which clang couldn't compile (it's valid GCC assembly
3437         which LLVM dislikes).
3438
3439 2017-03-24  Ryan Haddad  <ryanhaddad@apple.com>
3440
3441         Unreviewed, rolling out r214351.
3442
3443         This change caused API test
3444         WebKit1.DidCreateJavaScriptContextBackForwardCacheTest to
3445         fail.
3446
3447         Reverted changeset:
3448
3449         "Make inactive web processes behave as though under memory
3450         pressure."
3451         https://bugs.webkit.org/show_bug.cgi?id=170042
3452         http://trac.webkit.org/changeset/214351
3453
3454 2017-03-24  Chris Dumez  <cdumez@apple.com>
3455
3456         Unreviewed, rolling out r214329.
3457
3458         Significantly regressed Speedometer
3459
3460         Reverted changeset:
3461
3462         "window.crypto.getRandomValues() uses the insecure RC4 RNG"
3463         https://bugs.webkit.org/show_bug.cgi?id=169623
3464         http://trac.webkit.org/changeset/214329
3465
3466 2017-03-24  Andreas Kling  <akling@apple.com>
3467
3468         Make inactive web processes behave as though under memory pressure.
3469         <https://webkit.org/b/170042>
3470
3471         Reviewed by Antti Koivisto.
3472
3473         Once a web process becomes inactive, let's try to reduce its impact
3474         on memory usage by treating it as if it's under memory pressure until
3475         it becomes active.
3476
3477         * wtf/MemoryPressureHandler.cpp:
3478         (WTF::MemoryPressureHandler::setProcessState):
3479         (WTF::MemoryPressureHandler::isUnderMemoryPressure):
3480         * wtf/MemoryPressureHandler.h:
3481         (WTF::MemoryPressureHandler::isUnderMemoryPressure): Deleted.
3482
3483 2017-03-23  Michael Catanzaro  <mcatanzaro@igalia.com>
3484
3485         window.crypto.getRandomValues() uses the insecure RC4 RNG
3486         https://bugs.webkit.org/show_bug.cgi?id=169623
3487
3488         Reviewed by Alex Christensen.
3489
3490         Remove the RC4 random generator in favor of using OS randomness for now. This is basically
3491         a merge of https://codereview.chromium.org/1431233002 from Blink, original author "eroman".
3492
3493         * wtf/CryptographicallyRandomNumber.cpp:
3494         (WTF::cryptographicallyRandomNumber):
3495         (WTF::cryptographicallyRandomValues):
3496         (): Deleted.
3497
3498 2017-03-23  Tomas Popela  <tpopela@redhat.com>
3499
3500         Fix uninitialized public members in WTF
3501         https://bugs.webkit.org/show_bug.cgi?id=169676
3502
3503         Reviewed by Michael Catanzaro.
3504
3505         Found by Coverity scan.
3506
3507         * wtf/Bag.h:
3508         * wtf/HashTable.h:
3509         * wtf/HashTraits.h:
3510         * wtf/Insertion.h:
3511         * wtf/OrderMaker.h:
3512         * wtf/ParallelJobsGeneric.h:
3513
3514 2017-03-22  Andreas Kling  <akling@apple.com>
3515
3516         Let MemoryPressureHandler track whether the process is active or inactive.
3517         <https://webkit.org/b/169990>
3518
3519         Reviewed by Antti Koivisto.
3520
3521         An active process is a process that meets any of these criteria:
3522
3523             - Has had a visible Page in an active window in the last hour
3524             - Is playing audio
3525
3526         This replaces the old mechanism where MemoryPressureHandler would invoke
3527         a callback to know whether the process was eligible for a memory kill.
3528         Instead we now plumb the relevant information down from WebCore and kill
3529         based on this activity state.
3530
3531         * wtf/MemoryPressureHandler.cpp:
3532         (WTF::MemoryPressureHandler::measurementTimerFired):
3533         (WTF::MemoryPressureHandler::setProcessState):
3534         * wtf/MemoryPressureHandler.h:
3535         (WTF::MemoryPressureHandler::setMemoryKillCallback):
3536         (WTF::MemoryPressureHandler::processState):
3537         (WTF::MemoryPressureHandler::setProcessIsEligibleForMemoryKillCallback): Deleted.
3538
3539 2017-03-20  Simon Fraser  <simon.fraser@apple.com>
3540
3541         Add a system trace point for memory warning handling
3542         https://bugs.webkit.org/show_bug.cgi?id=169893
3543
3544         Reviewed by Zalan Bujtas.
3545
3546         Make it possible to pass data to the Begin trace point.
3547
3548         * wtf/SystemTracing.h:
3549         (WTF::TraceScope::TraceScope):
3550
3551 2017-03-17  Said Abou-Hallawa  <sabouhallawa@apple.com>
3552
3553         Time channel attack on SVG Filters
3554         https://bugs.webkit.org/show_bug.cgi?id=118689
3555
3556         Reviewed by Simon Fraser.
3557
3558         Performing arithmetic operations on subnormal floating-point numbers is
3559         very expensive. Normalizing the floating-point number to the minimum normal
3560         value should accelerate the calculations and there won't be a noticeable
3561         difference in the result since all the subnormal values and the minimum
3562         normal value are all very close to zero.
3563
3564         * wtf/MathExtras.h:
3565         (normalizedFloat):
3566
3567 2017-03-11  Filip Pizlo  <fpizlo@apple.com>
3568
3569         Air should be powerful enough to support Tmp-splitting
3570         https://bugs.webkit.org/show_bug.cgi?id=169515
3571
3572         Reviewed by Saam Barati.
3573         
3574         Teach IndexMap how to handle types that don't have a default constructor. This makes it
3575         easy to create a IndexMap<BasicBlock, InsertionSet>, which is a super powerful
3576         construct.
3577
3578         * wtf/IndexMap.h:
3579         (WTF::IndexMap::IndexMap):
3580         (WTF::IndexMap::resize):
3581         (WTF::IndexMap::clear):
3582
3583 2017-03-16  Simon Fraser  <simon.fraser@apple.com>
3584
3585         Improve the system tracing points
3586         https://bugs.webkit.org/show_bug.cgi?id=169790
3587
3588         Reviewed by Zalan Bujtas.
3589
3590         Use a more cohesive set of system trace points that give a good overview of what
3591         WebKit is doing. Added points for resource loading, render tree building, sync messages
3592         to the web process, async image decode, WASM and fetching cookies.
3593
3594         * wtf/SystemTracing.h:
3595
3596 2017-03-16  Carlos Garcia Campos  <cgarcia@igalia.com>
3597
3598         [UNIX] Implement currentSearchLocaleID() and currentTextBreakLocaleID()
3599         https://bugs.webkit.org/show_bug.cgi?id=169745
3600
3601         Reviewed by Yusuke Suzuki.
3602
3603         Add a common implementation for Unix based ports using setlocale.
3604
3605         * wtf/PlatformGTK.cmake:
3606         * wtf/PlatformJSCOnly.cmake:
3607         * wtf/text/gtk/TextBreakIteratorInternalICUGtk.cpp: Removed.
3608         * wtf/text/unix/TextBreakIteratorInternalICUUnix.cpp: Renamed from Source/WTF/wtf/text/jsconly/TextBreakIteratorInternalICUJSCOnly.cpp.
3609         (WTF::currentSearchLocaleID):
3610         (WTF::currentTextBreakLocaleID):
3611
3612 2017-03-16  Carlos Garcia Campos  <cgarcia@igalia.com>
3613
3614         [GLIB] MainThread implementation is not GTK+ specific
3615         https://bugs.webkit.org/show_bug.cgi?id=169736
3616
3617         Reviewed by Yusuke Suzuki.
3618
3619         It's implemented in MainThreadGLib.cpp for glib based ports, so ifdefs in MainThread should not be
3620         PLATFORM(GTK) but USE(GLIB).
3621
3622         * wtf/MainThread.cpp: