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