REGRESSION (r196012): Subresource may be blocked by Content Security Policy if it...
[WebKit.git] / Source / WTF / ChangeLog
1 2016-04-21  Saam barati  <sbarati@apple.com>
2
3         Lets do less locking of symbol tables in the BytecodeGenerator where we don't have race conditions
4         https://bugs.webkit.org/show_bug.cgi?id=156821
5
6         Reviewed by Filip Pizlo.
7
8         This patch introduces a new constructor for Locker which implies no
9         locking is necessary. You instantiate such a locker like so:
10         `Locker<Lock> locker(Locker<Lock>::NoLockingNecessary);`
11
12         This is useful to for very specific places when it is not yet
13         required to engage in a specified locking protocol. As an example,
14         we use this in JSC when we allocate a particular object that
15         engages in a locking protocol with the concurrent compiler thread,
16         but before a concurrent compiler thread that could have access
17         to the object exists.
18
19         * wtf/Locker.h:
20         (WTF::Locker::Locker):
21         (WTF::Locker::~Locker):
22
23 2016-04-19  Michael Saboff  <msaboff@apple.com>
24
25         iTunes crashing JavaScriptCore.dll
26         https://bugs.webkit.org/show_bug.cgi?id=156647
27
28         Reviewed by Filip Pizlo.
29
30         If a thread was created without using the WTF thread apis and that thread uses
31         a JavaScript VM and that thread exits with the VM still around, JSC won't know
32         that the thread has exited.  Currently, we use ThreadSpecificThreadExit() to
33         clean up any thread specific keys.  Cleaning up these keys is how JSC is
34         notified of a thread exit.  We only call ThreadSpecificThreadExit() from
35         wtfThreadEntryPoint() when the thread entry point function returns.
36         This mechanism was put in place for Windows because we layer the WTF::ThreadSpecific
37         functionality on top of TLS (Thread Local Storage), but TLS doesn't have
38         a thread exiting callback the way that pthread_create_key does.
39
40         The fix is to change from using TLS to using FLS (Fiber Local Storage).  Although
41         Windows allows multiple fibers per thread, WebKit is not designed to work with a
42         multiple fibers per thread.  When there is only one fiber per thread, FLS works just
43         like TLS, but it has the destroy callback.
44
45         I restructured the Windows version of WTF::ThreadSpecific to be almost the same
46         as the pthread version.  Added THREAD_SPECIFIC_CALL to set the correct
47         calling convenction for Windows 32 bit.
48
49         * wtf/ThreadSpecific.h:
50         (WTF::threadSpecificKeyCreate):
51         (WTF::threadSpecificKeyDelete):
52         (WTF::threadSpecificSet):
53         (WTF::threadSpecificGet):
54         (WTF::ThreadSpecific<T>::ThreadSpecific):
55         (WTF::ThreadSpecific<T>::~ThreadSpecific):
56         (WTF::ThreadSpecific<T>::get):
57         (WTF::ThreadSpecific<T>::set):
58         (WTF::ThreadSpecific<T>::destroy):
59         Restructured to use FLS.  Renamed TLS* to FLS*.
60
61         * wtf/ThreadSpecificWin.cpp:
62         (WTF::flsKeyCount):
63         (WTF::flsKeys):
64         Renamed from tlsKey*() to flsKey*().
65
66         (WTF::destructorsList): Deleted.
67         (WTF::destructorsMutex): Deleted.
68         (WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
69         (WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
70         (WTF::PlatformThreadSpecificKey::setValue): Deleted.
71         (WTF::PlatformThreadSpecificKey::value): Deleted.
72         (WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
73         (WTF::tlsKeyCount): Deleted.
74         (WTF::tlsKeys): Deleted.
75         (WTF::threadSpecificKeyCreate): Deleted.
76         (WTF::threadSpecificKeyDelete): Deleted.
77         (WTF::threadSpecificSet): Deleted.
78         (WTF::threadSpecificGet): Deleted.
79         (WTF::ThreadSpecificThreadExit): Deleted.
80
81         * wtf/ThreadingWin.cpp:
82         (WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
83
84 2016-04-19  Filip Pizlo  <fpizlo@apple.com>
85
86         Add more locking algorithms to the LockSpeedTest.
87
88         Rubber stamped by Saam Barati.
89
90         * benchmarks/LockSpeedTest.cpp:
91         (main):
92
93 2016-04-19  Filip Pizlo  <fpizlo@apple.com>
94
95         Clean up the ParkingLot uparking API a bit
96         https://bugs.webkit.org/show_bug.cgi?id=156746
97
98         Reviewed by Saam Barati and Geoffrey Garen.
99         
100         Previously, unparkOne() would either return a boolean to tell you if there are any more threads on
101         the queue or it would pass your callback a pair of booleans - one to tell if a thread was unparked
102         and another to tell if there are any more threads. This was an annoying inconsistency. What if you
103         wanted to know if unparkOne() unparked a thread but you don't care to use callbacks?
104
105         This fixes unparkOne() to use a struct called UnparkResult for both of its variants. This makes the
106         code a bit cleaner.
107
108         * wtf/Atomics.h: Add some more atomic ops.
109         (WTF::Atomic::exchangeAndAdd):
110         (WTF::Atomic::exchange):
111         * wtf/Condition.h: Change calls to unparkOne().
112         (WTF::ConditionBase::notifyOne):
113         * wtf/Lock.cpp: Change calls to unparkOne().
114         (WTF::LockBase::unlockSlow):
115         * wtf/ParkingLot.cpp:
116         (WTF::ParkingLot::parkConditionally):
117         (WTF::ParkingLot::unparkOne):
118         * wtf/ParkingLot.h: Switch to using ScopedLambda and introduce UnparkResult.
119
120 2016-04-19  Commit Queue  <commit-queue@webkit.org>
121
122         Unreviewed, rolling out r199726.
123         https://bugs.webkit.org/show_bug.cgi?id=156748
124
125         WebKit tests crash on Windows 32 (Requested by msaboff on
126         #webkit).
127
128         Reverted changeset:
129
130         "iTunes crashing JavaScriptCore.dll"
131         https://bugs.webkit.org/show_bug.cgi?id=156647
132         http://trac.webkit.org/changeset/199726
133
134 2016-04-19  Michael Saboff  <msaboff@apple.com>
135
136         iTunes crashing JavaScriptCore.dll
137         https://bugs.webkit.org/show_bug.cgi?id=156647
138
139         Reviewed by Saam Barati.
140
141         If a thread was created without using the WTF thread apis and that thread uses
142         a JavaScript VM and that thread exits with the VM still around, JSC won't know
143         that the thread has exited.  Currently, we use ThreadSpecificThreadExit() to
144         clean up any thread specific keys.  Cleaning up these keys is how JSC is
145         notified of a thread exit.  We only call ThreadSpecificThreadExit() from
146         wtfThreadEntryPoint() when the thread entry point function returns.
147         This mechanism was put in place for Windows because we layer the WTF::ThreadSpecific
148         functionality on top of TLS (Thread Local Storage), but TLS doesn't have
149         a thread exiting callback the way that pthread_create_key.
150
151         The fix is to change from using TLS to using FLS (Fiber Local Storage).  Although
152         Windows allows multiple fibers per thread, WebKit is not designed to work with a
153         multiple fibers per thread.  When there is only one fiber per thread, FLS works just
154         like TLS, but it has the destroy callback.
155
156         I restructured the Windows version of WTF::ThreadSpecific to be almost the same
157         as the pthread version.
158
159         * wtf/ThreadSpecific.h:
160         (WTF::threadSpecificKeyCreate):
161         (WTF::threadSpecificKeyDelete):
162         (WTF::threadSpecificSet):
163         (WTF::threadSpecificGet):
164         (WTF::ThreadSpecific<T>::ThreadSpecific):
165         (WTF::ThreadSpecific<T>::~ThreadSpecific):
166         (WTF::ThreadSpecific<T>::get):
167         (WTF::ThreadSpecific<T>::set):
168         (WTF::ThreadSpecific<T>::destroy):
169         Restructured to use FLS.  Renamed TLS* to FLS*.
170
171         * wtf/ThreadSpecificWin.cpp:
172         (WTF::flsKeyCount):
173         (WTF::flsKeys):
174         Renamed from tlsKey*() to flsKey*().
175
176         (WTF::destructorsList): Deleted.
177         (WTF::destructorsMutex): Deleted.
178         (WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
179         (WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
180         (WTF::PlatformThreadSpecificKey::setValue): Deleted.
181         (WTF::PlatformThreadSpecificKey::value): Deleted.
182         (WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
183         (WTF::tlsKeyCount): Deleted.
184         (WTF::tlsKeys): Deleted.
185         (WTF::threadSpecificKeyCreate): Deleted.
186         (WTF::threadSpecificKeyDelete): Deleted.
187         (WTF::threadSpecificSet): Deleted.
188         (WTF::threadSpecificGet): Deleted.
189         (WTF::ThreadSpecificThreadExit): Deleted.
190
191         * wtf/ThreadingWin.cpp:
192         (WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
193
194 2016-04-19  Yusuke Suzuki  <utatane.tea@gmail.com>
195
196         [GTK] Use Generic WorkQueue instead of WorkQueueGLib
197         https://bugs.webkit.org/show_bug.cgi?id=156721
198
199         Reviewed by Benjamin Poulain.
200
201         WorkQueueGLib includes platform-dependent part only for WorkQueue::dispatchAfter.
202         However, its code is related to RunLoopGLib rather than WorkQueueGLib.
203         In this patch, we move the code from WorkQueueGLib to RunLoopGLib, drop WorkQueueGLib
204         and use WorkQueueGeneric.
205
206         * wtf/PlatformGTK.cmake:
207         * wtf/RunLoop.h:
208         * wtf/WorkQueue.h:
209         * wtf/glib/RunLoopGLib.cpp:
210         (WTF::DispatchAfterContext::DispatchAfterContext):
211         (WTF::DispatchAfterContext::dispatch):
212         (WTF::RunLoop::dispatchAfter):
213         * wtf/glib/WorkQueueGLib.cpp: Removed.
214         (WTF::WorkQueue::platformInitialize): Deleted.
215         (WTF::WorkQueue::platformInvalidate): Deleted.
216         (WTF::WorkQueue::dispatch): Deleted.
217         (WTF::DispatchAfterContext::DispatchAfterContext): Deleted.
218         (WTF::DispatchAfterContext::~DispatchAfterContext): Deleted.
219         (WTF::DispatchAfterContext::dispatch): Deleted.
220         (WTF::WorkQueue::dispatchAfter): Deleted.
221
222 2016-04-18  Yusuke Suzuki  <utatane.tea@gmail.com>
223
224         [JSCOnly] Implement RunLoop and remove glib dependency
225         https://bugs.webkit.org/show_bug.cgi?id=155706
226
227         Reviewed by Michael Catanzaro.
228
229         Add missing RunLoop and WorkQueue platform code for JSCOnly port.
230         The implementation does not use platform specific things. Instead, we
231         implement them on WTF framework; using condition variables to construct
232         the run loop and timers.
233
234         Since the fallback is implemented, it is not necessary for JSCOnly port
235         to depend on GLib's RunLoop abstraction. So this patch removes its
236         dependency. As a result, now, JSCOnly port removes dependencies except for the system ICU.
237
238         We clean up event loop ifdefs by introducing USE_XXX_EVENT_LOOP flags.
239         USE(XXX_EVENT_LOOP) is exclusive to each other. So from now, we do not need to take care
240         of the order of if-defs for the event loops. (For example, USE(GLIB) should have lead before
241         OS(DARWIN) in WorkQueue.h for WebKitGTK on Darwin.)
242
243         EVENT_LOOP determination is done in Platform.h. This follows the style of WTF PLATFORM.
244
245         * wtf/Platform.h:
246         * wtf/PlatformJSCOnly.cmake:
247         * wtf/RunLoop.h:
248         * wtf/WorkQueue.h:
249         * wtf/generic/MainThreadGeneric.cpp: Renamed from Source/WTF/wtf/none/MainThreadNone.cpp.
250         (WTF::initializeMainThreadPlatform):
251         (WTF::scheduleDispatchFunctionsOnMainThread):
252         * wtf/generic/RunLoopGeneric.cpp: Added.
253         (WTF::RunLoop::TimerBase::ScheduledTask::create):
254         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
255         (WTF::RunLoop::TimerBase::ScheduledTask::fired):
256         (WTF::RunLoop::TimerBase::ScheduledTask::scheduledTimePoint):
257         (WTF::RunLoop::TimerBase::ScheduledTask::updateReadyTime):
258         (WTF::RunLoop::TimerBase::ScheduledTask::EarliestSchedule::operator()):
259         (WTF::RunLoop::TimerBase::ScheduledTask::isActive):
260         (WTF::RunLoop::TimerBase::ScheduledTask::deactivate):
261         (WTF::RunLoop::RunLoop):
262         (WTF::RunLoop::~RunLoop):
263         (WTF::RunLoop::populateTasks):
264         (WTF::RunLoop::runImpl):
265         (WTF::RunLoop::run):
266         (WTF::RunLoop::iterate):
267         (WTF::RunLoop::stop):
268         (WTF::RunLoop::wakeUp):
269         (WTF::RunLoop::schedule):
270         (WTF::RunLoop::scheduleAndWakeUp):
271         (WTF::RunLoop::dispatchAfter):
272         (WTF::RunLoop::TimerBase::TimerBase):
273         (WTF::RunLoop::TimerBase::~TimerBase):
274         (WTF::RunLoop::TimerBase::start):
275         (WTF::RunLoop::TimerBase::stop):
276         (WTF::RunLoop::TimerBase::isActive):
277         * wtf/generic/WorkQueueGeneric.cpp: Added.
278         (WorkQueue::platformInitialize):
279         (WorkQueue::platformInvalidate):
280         (WorkQueue::dispatch):
281         (WorkQueue::dispatchAfter):
282         * wtf/none/MainThreadNone.cpp:
283         (WTF::initializeMainThreadPlatform): Deleted.
284         (WTF::scheduleDispatchFunctionsOnMainThread): Deleted.
285         * wtf/none/RunLoopNone.cpp:
286         (WTF::RunLoop::RunLoop): Deleted.
287         (WTF::RunLoop::~RunLoop): Deleted.
288         (WTF::RunLoop::run): Deleted.
289         (WTF::RunLoop::stop): Deleted.
290         (WTF::RunLoop::wakeUp): Deleted.
291         (WTF::RunLoop::TimerBase::TimerBase): Deleted.
292         (WTF::RunLoop::TimerBase::~TimerBase): Deleted.
293         (WTF::RunLoop::TimerBase::start): Deleted.
294         (WTF::RunLoop::TimerBase::stop): Deleted.
295         (WTF::RunLoop::TimerBase::isActive): Deleted.
296         * wtf/none/WorkQueueNone.cpp:
297         (WorkQueue::platformInitialize): Deleted.
298         (WorkQueue::platformInvalidate): Deleted.
299         (WorkQueue::dispatch): Deleted.
300         (WorkQueue::dispatchAfter): Deleted.
301
302 2016-04-18  Commit Queue  <commit-queue@webkit.org>
303
304         Unreviewed, rolling out r199621.
305         https://bugs.webkit.org/show_bug.cgi?id=156708
306
307         made windows tests crash (Requested by alexchristensen on
308         #webkit).
309
310         Reverted changeset:
311
312         "iTunes crashing JavaScriptCore.dll"
313         https://bugs.webkit.org/show_bug.cgi?id=156647
314         http://trac.webkit.org/changeset/199621
315
316 2016-04-15  Michael Saboff  <msaboff@apple.com>
317
318         iTunes crashing JavaScriptCore.dll
319         https://bugs.webkit.org/show_bug.cgi?id=156647
320
321         Reviewed by Geoffrey Garen.
322
323         If a thread was created without using the WTF thread apis and that thread uses
324         a JavaScript VM and that thread exits with the VM still around, JSC won't know
325         that the thread has exited.  Currently, we use ThreadSpecificThreadExit() to
326         clean up any thread specific keys.  Cleaning up these keys is how JSC is
327         notified of a thread exit.  We only call ThreadSpecificThreadExit() from
328         wtfThreadEntryPoint() when the thread entry point function returns.
329         This mechanism was put in place for Windos because we layer the WTF::ThreadSpecific
330         functionality on top of TLS (Thread Local Storage), but TLS doesn't have
331         a thread exiting callback the way that pthread_create_key.
332
333         The fix is to change from using TLS to using FLS (Fiber Local Storage).  Although
334         Windows allows multiple fibers per thread, WebKit is not designed to work with a
335         multiple fibers per thread.  When ther is only one fiber per thread, FLS works just
336         like TLS, but it has the destroy callback.
337
338         I restructured the Windows version of WTF::ThreadSpecific to be almost the same
339         as the pthread version.
340         
341         * wtf/ThreadSpecific.h:
342         (WTF::threadSpecificKeyCreate):
343         (WTF::threadSpecificKeyDelete):
344         (WTF::threadSpecificSet):
345         (WTF::threadSpecificGet):
346         (WTF::ThreadSpecific<T>::ThreadSpecific):
347         (WTF::ThreadSpecific<T>::~ThreadSpecific):
348         (WTF::ThreadSpecific<T>::get):
349         (WTF::ThreadSpecific<T>::set):
350         (WTF::ThreadSpecific<T>::destroy):
351         Restructured to use FLS.  Renamed TLS* to FLS*.
352
353         * wtf/ThreadSpecificWin.cpp:
354         (WTF::flsKeyCount):
355         (WTF::flsKeys):
356         Renamed from tlsKey*() to flsKey*().
357
358         (WTF::destructorsList): Deleted.
359         (WTF::destructorsMutex): Deleted.
360         (WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
361         (WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
362         (WTF::PlatformThreadSpecificKey::setValue): Deleted.
363         (WTF::PlatformThreadSpecificKey::value): Deleted.
364         (WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
365         (WTF::tlsKeyCount): Deleted.
366         (WTF::tlsKeys): Deleted.
367         (WTF::threadSpecificKeyCreate): Deleted.
368         (WTF::threadSpecificKeyDelete): Deleted.
369         (WTF::threadSpecificSet): Deleted.
370         (WTF::threadSpecificGet): Deleted.
371         (WTF::ThreadSpecificThreadExit): Deleted.
372
373         * wtf/ThreadingWin.cpp:
374         (WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
375
376 2016-04-12  Filip Pizlo  <fpizlo@apple.com>
377
378         PolymorphicAccess should buffer AccessCases before regenerating
379         https://bugs.webkit.org/show_bug.cgi?id=156457
380
381         Reviewed by Benjamin Poulain.
382
383         * wtf/TinyPtrSet.h:
384         (WTF::TinyPtrSet::add): Add a helpful comment because I had forgotten what the bool return meant.
385
386 2016-04-12  Tomas Popela  <tpopela@redhat.com>
387
388         S390X and PPC64 architectures detection is wrong
389         https://bugs.webkit.org/show_bug.cgi?id=156337
390
391         Reviewed by Carlos Garcia Campos.
392
393         After the http://trac.webkit.org/changeset/198919 was committed
394         it showed that the PPC64 detection is wrong as the CPU(PPC) path was
395         activated even for PPC64. The thing is that GCC defines __ppc__
396         even on PPC64 and not just on PPC(32). The same applies for S390X.
397
398         * wtf/Platform.h:
399
400 2016-04-05  Oliver Hunt  <oliver@apple.com>
401
402         Remove compile time define for SEPARATED_HEAP
403         https://bugs.webkit.org/show_bug.cgi?id=155508
404
405         Reviewed by Mark Lam.
406
407         * wtf/FeatureDefines.h:
408         * wtf/Platform.h:
409
410 2016-04-11  Fujii Hironori  <Hironori.Fujii@jp.sony.com>
411
412         [CMake] Make FOLDER property INHERITED
413         https://bugs.webkit.org/show_bug.cgi?id=156460
414
415         Reviewed by Brent Fulgham.
416
417         * CMakeLists.txt:
418         Set FOLDER directory property
419
420 2016-04-08  Alex Christensen  <achristensen@webkit.org>
421
422         Progress towards running CMake WebKit2 on Mac
423         https://bugs.webkit.org/show_bug.cgi?id=156426
424
425         Reviewed by Tim Horton.
426
427         * wtf/PlatformMac.cmake:
428
429 2016-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
430
431         [JSC] Enable Concurrent JIT by default
432         https://bugs.webkit.org/show_bug.cgi?id=156341
433
434         Reviewed by Filip Pizlo.
435
436         We enable Concurrent JIT by default when DFG JIT and JSVALUE64 are enabled.
437         This change offers Concurrent JIT to the JSCOnly port.
438
439         * wtf/Platform.h:
440
441 2016-04-07  Joseph Pecoraro  <pecoraro@apple.com>
442
443         Remove ENABLE(ENABLE_ES6_CLASS_SYNTAX) guards
444         https://bugs.webkit.org/show_bug.cgi?id=156384
445
446         Reviewed by Ryosuke Niwa.
447
448         * wtf/FeatureDefines.h:
449
450 2016-04-06  Filip Pizlo  <fpizlo@apple.com>
451
452         JSC should have a simple way of gathering IC statistics
453         https://bugs.webkit.org/show_bug.cgi?id=156317
454
455         Reviewed by Benjamin Poulain.
456         
457         Make it easier to do relative sleeping on a condition. Previously you could do this using
458         std::chrono. I now believe that std::chrono is just a bad decision, and I always want to
459         use doubles instead. This makes it easier to do the right thing and use doubles.
460
461         * wtf/Condition.h:
462         (WTF::ConditionBase::waitUntilMonotonicClockSeconds):
463         (WTF::ConditionBase::waitForSeconds):
464
465 2016-04-06  Simon Fraser  <simon.fraser@apple.com>
466
467         Fix Windows build by converting clampToInteger() into a template that only
468         takes integral types.
469
470         * wtf/MathExtras.h:
471         (clampToInteger):
472
473 2016-04-06  Simon Fraser  <simon.fraser@apple.com>
474
475         Page tiles are missing when graphics acceleration is unavailable
476         https://bugs.webkit.org/show_bug.cgi?id=156325
477
478         Reviewed by Tim Horton.
479
480         Add clampToInteger(size_t).
481
482         * wtf/MathExtras.h:
483         (clampToInteger):
484
485 2016-04-05  Simon Fraser  <simon.fraser@apple.com>
486
487         Implement operator== and operator!= for Optional<>
488         https://bugs.webkit.org/show_bug.cgi?id=156266
489
490         Reviewed by Anders Carlsson.
491         
492         Implement non-member operator== and operator!= variants for Optional<>.
493
494         * wtf/Optional.h:
495         (WTF::operator==):
496         (WTF::operator!=):
497
498 2016-03-19  Filip Pizlo  <fpizlo@apple.com>
499
500         DFG and FTL should constant-fold RegExpExec
501         https://bugs.webkit.org/show_bug.cgi?id=155270
502
503         Reviewed by Saam Barati.
504
505         Make executeInsertions() return the amount by which the vector increased in size. This is a
506         convenient feature that I use in DFG::InsertionSet.
507
508         * wtf/Insertion.h:
509         (WTF::executeInsertions):
510
511 2016-04-05  Antoine Quint  <graouts@apple.com>
512
513         [WebGL2] Allow enabling WebGL2 with a runtime flag
514         https://bugs.webkit.org/show_bug.cgi?id=156166
515         <rdar://problem/25526929>
516
517         Removed the manual overrides of ENABLE_WEBGL2.
518
519         Reviewed by Dean Jackson.
520
521         * wtf/FeatureDefines.h:
522
523 2016-03-31  Konstantin Tokarev  <annulen@yandex.ru>
524
525         Removed leftovers of ENABLE(INSPECTOR) and ENABLE(VIEWPORT).
526         https://bugs.webkit.org/show_bug.cgi?id=156064
527
528         Reviewed by Csaba Osztrogonác.
529
530         This ifdef guards were removed in r178820 and r147714, respectively.
531
532         * wtf/FeatureDefines.h:
533
534 2016-03-31  Brent Fulgham  <bfulgham@apple.com>
535
536         [WK2] Support download attribute feature
537         https://bugs.webkit.org/show_bug.cgi?id=102914
538         <rdar://problem/13177492>
539
540         Reviewed by Darin Adler.
541
542         * wtf/FeatureDefines.h: Turn the ENABLE_DOWNLOAD_ATTRIBUTE flag
543         on to see what happens.
544
545 2016-03-30  Brian Burg  <bburg@apple.com>
546
547         Web Automation: Add Automation.performKeyboardInteractions
548         https://bugs.webkit.org/show_bug.cgi?id=155990
549         <rdar://problem/25426408>
550
551         Reviewed by Timothy Hatcher.
552
553         Add a missing NSEventType declaration.
554
555         * wtf/mac/AppKitCompatibilityDeclarations.h:
556
557 2016-03-29  Benjamin Poulain  <bpoulain@apple.com>
558
559         [WTF] Removing a smart pointer from HashTable issues two stores to the same location
560         https://bugs.webkit.org/show_bug.cgi?id=155676
561
562         Reviewed by Darin Adler.
563
564         While working on the hot loop of r198376, I noticed something
565         weird...
566         Every time we removed a smart pointer from the hash table,
567         the code generated was something like:
568             Load([bucket]) -> Tmp
569             Store(0 -> [bucket])
570             JumpIfZero(Tmp, ->End)
571             Call fastFree()
572             Store(-1 -> [bucket])
573             -> End:
574
575         The useless store before the branch is annoying, especially on ARM.
576
577         Here is what happens:
578             1) The destructor of the smart pointer swaps its internal value with nullptr.
579             2) Since the smart pointer is not a local in-register value, that nullptr
580                is stored in memory because it could be observable from fastFree().
581             3) The destructor destroy the value if not zero (or deref for RefPtr).
582                The "if-not-zero" may or may not be eliminated depending on what
583                is between getting the iterator and the call to remove().
584             4) fastFree() is called.
585             5) The deleted value is set in the bucket.
586
587         This patch adds custom deletion for those cases to avoid the useless
588         store. The useless null check is still eliminated when we are lucky.
589
590         I went this path instead of changing the destructor of RefPtr for two reasons:
591         -I need this to work in unique_ptr for JSC.
592         -Nulling the memory may have security advantages in the cases where we do not immediately
593          write over that memory again.
594
595         This patch removes 13kb out of x86_64 WebCore.
596
597         * wtf/HashTable.h:
598         (WTF::HashTable::deleteBucket):
599         (WTF::KeyTraits>::removeIf):
600         * wtf/HashTraits.h:
601         (WTF::HashTraits<RefPtr<P>>::customDeleteBucket):
602         (WTF::hashTraitsDeleteBucket):
603         (WTF::KeyValuePairHashTraits::customDeleteBucket):
604         * wtf/text/AtomicStringHash.h:
605         (WTF::HashTraits<WTF::AtomicString>::isEmptyValue):
606         (WTF::HashTraits<WTF::AtomicString>::customDeleteBucket):
607         * wtf/text/StringHash.h:
608         (WTF::HashTraits<String>::customDeleteBucket):
609
610 2016-03-28  Brian Burg  <bburg@apple.com>
611
612         Web Automation: implement Automation.performMouseInteraction
613         https://bugs.webkit.org/show_bug.cgi?id=155606
614         <rdar://problem/25227576>
615
616         Reviewed by Timothy Hatcher.
617
618         * wtf/mac/AppKitCompatibilityDeclarations.h: Add missing some NSEventTypes.
619
620 2016-03-29  Yusuke Suzuki  <utatane.tea@gmail.com>
621
622         REGRESSION(r192914): 10% regression on Sunspider's date-format-tofte
623         https://bugs.webkit.org/show_bug.cgi?id=155559
624
625         Reviewed by Saam Barati.
626
627         Add HashTable::inlineLookup and HashMap::fastGet.
628
629         * wtf/HashMap.h:
630         * wtf/HashTable.h:
631
632 2016-03-25  Alex Christensen  <achristensen@webkit.org>
633
634         Add a compile time flag for using QTKit
635         https://bugs.webkit.org/show_bug.cgi?id=155868
636
637         Reviewed by Dan Bates.
638
639         * wtf/Platform.h:
640
641 2016-03-24  Alex Christensen  <achristensen@webkit.org>
642
643         Fix iOS9 performance regression after r197572
644         https://bugs.webkit.org/show_bug.cgi?id=155845
645         <rdar://problem/25144924>
646
647         Reviewed by Chris Dumez.
648
649         * wtf/Platform.h:
650         Use CFURLConnection instead of NSURLConnection on internal iOS9 builds.
651
652 2016-03-23  Saam Barati  <sbarati@apple.com>
653
654         SmallPtrSet leaks memory in its move assignment operator when !this->isSmall()
655         https://bugs.webkit.org/show_bug.cgi?id=155701
656
657         Reviewed by Darin Adler.
658
659         * wtf/SmallPtrSet.h:
660         (WTF::SmallPtrSet::SmallPtrSet):
661         (WTF::SmallPtrSet::operator=):
662
663 2016-03-22  Per Arne Vollan  <peavo@outlook.com>
664
665         [Win] [64-bit] Remove MSVC 2013 FMA3 Bug Workaround
666         https://bugs.webkit.org/show_bug.cgi?id=141499
667
668         Reviewed by Brent Fulgham.
669
670         As we have moved on to VS2015, this workaround is no longer needed.
671
672         * wtf/PlatformWin.cmake:
673         * wtf/win/WTFDLL.cpp: Removed.
674
675 2016-03-20  Dan Bernstein  <mitz@apple.com>
676
677         [Mac] Determine TARGET_MAC_OS_X_VERSION_MAJOR from MACOSX_DEPLOYMENT_TARGET rather than from MAC_OS_X_VERSION_MAJOR
678         https://bugs.webkit.org/show_bug.cgi?id=155707
679         <rdar://problem/24980691>
680
681         Reviewed by Darin Adler.
682
683         * Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last
684           component of MACOSX_DEPLOYMENT_TARGET.
685         * Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of
686           TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.
687
688 2016-03-20  Dan Bernstein  <mitz@apple.com>
689
690         Update build settings
691
692         Rubber-stamped by Andy Estes.
693
694         * Configurations/DebugRelease.xcconfig:
695
696 2016-03-17  Benjamin Poulain  <bpoulain@apple.com>
697
698         [JSC] Make CSE's ImpureData faster when dealing with large blocks
699         https://bugs.webkit.org/show_bug.cgi?id=155594
700
701         Reviewed by Filip Pizlo.
702
703         * wtf/HashSet.h:
704         (WTF::V>::removeIf):
705
706 2016-03-17  Saam barati  <sbarati@apple.com>
707
708         Implement SmallPtrSet and integrate it into the Parser
709         https://bugs.webkit.org/show_bug.cgi?id=155552
710
711         Reviewed by Filip Pizlo.
712
713         This patch implements the SmallPtrSet data struture.
714         Inspired by the implementation in llvm:
715         http://llvm.org/docs/doxygen/html/SmallPtrSet_8h_source.html
716
717         The data structure uses an inline array for storage up until
718         a fixed limit (8 entries in our implementation). If that storage
719         fills up, we fall back to a simple hash table implementation.
720         Crucially, this implementation doesn't support the remove
721         operation. This is on purpose. The hash table will only ever
722         grow.
723
724         Also, the implementation allows for it to be memcopied around.
725         I.e, we can put SmallPtrSet inside a Vector and allow that
726         Vector to use memcpy as its move operation (of course this
727         is only valid if the SmallPtrSet in the old memory doesn't have 
728         its destructor called unless it is set back to its initial state.)
729
730         For now, SmallPtrSet only supports pointer types that are trivially
731         destructible. It's probably not too difficult to extend this to
732         smart pointers, but it's not part of this original implementation.
733
734         I've also implemented a pure forwarding varargs constructAndAppend
735         method on Vector. This allows you to do:
736         Vector<T> v;
737         v.constructAndAppend(a1, a2, ...)
738         as long as T has a constructor that accepts arguments (a1, a2, ...).
739
740         * WTF.xcodeproj/project.pbxproj:
741         * wtf/CMakeLists.txt:
742         * wtf/SmallPtrSet.h: Added.
743         (WTF::SmallPtrSet::SmallPtrSet):
744         (WTF::SmallPtrSet::operator=):
745         (WTF::SmallPtrSet::~SmallPtrSet):
746         (WTF::SmallPtrSet::add):
747         (WTF::SmallPtrSet::contains):
748         (WTF::SmallPtrSet::iterator::operator++):
749         (WTF::SmallPtrSet::iterator::operator*):
750         (WTF::SmallPtrSet::iterator::operator==):
751         (WTF::SmallPtrSet::iterator::operator!=):
752         (WTF::SmallPtrSet::begin):
753         (WTF::SmallPtrSet::end):
754         (WTF::SmallPtrSet::size):
755         (WTF::SmallPtrSet::emptyValue):
756         (WTF::SmallPtrSet::isValidEntry):
757         (WTF::SmallPtrSet::isSmall):
758         (WTF::SmallPtrSet::initialize):
759         (WTF::SmallPtrSet::grow):
760         (WTF::SmallPtrSet::bucket):
761         * wtf/Vector.h:
762         (WTF::Vector::append):
763         (WTF::Vector::uncheckedAppend):
764         (WTF::minCapacity>::append):
765         (WTF::minCapacity>::constructAndAppend):
766         (WTF::minCapacity>::appendSlowCase):
767         (WTF::minCapacity>::constructAndAppendSlowCase):
768
769 2016-03-16  Filip Pizlo  <fpizlo@apple.com>
770
771         Replace all of the various non-working and non-compiling sampling profiler hacks with a single super hack
772         https://bugs.webkit.org/show_bug.cgi?id=155561
773
774         Reviewed by Saam Barati.
775
776         This patch replaces all of our various ad hoc profiling hacks with a single ad hoc profiling hack.
777         That needs to be able to sleep a thread, so I added a portable way to do it.
778
779         This also removes a bunch of ENABLE flags for all of the old non-working hacks.
780
781         * wtf/CurrentTime.cpp:
782         (WTF::currentCPUTime):
783         (WTF::sleep):
784         * wtf/CurrentTime.h:
785         (WTF::sleepMS):
786         * wtf/Platform.h:
787
788 2016-03-17  Chris Dumez  <cdumez@apple.com>
789
790         Set the WebContent process's main thread QoS to USER-INTERACTIVE
791         https://bugs.webkit.org/show_bug.cgi?id=155595
792         <rdar://problem/22534965>
793
794         Reviewed by Antti Koivisto.
795
796         Add a relativePriority parameter to setCurrentThreadIsUser*() so that
797         we can do more fine-grained prioritization of threads that have the
798         same QoS.
799
800         * wtf/Threading.cpp:
801         (WTF::setCurrentThreadIsUserInteractive):
802         (WTF::setCurrentThreadIsUserInitiated):
803         (WTF::createThread): Deleted.
804         * wtf/Threading.h:
805
806 2016-03-17  Filip Pizlo  <fpizlo@apple.com>
807
808         Silence leaks in ParkingLot
809         https://bugs.webkit.org/show_bug.cgi?id=155510
810
811         Reviewed by Alexey Proskuryakov.
812
813         ParkingLot has a concurrent hashtable that it reallocates on demand. It will not reallocate
814         it in steady state. The hashtable is sized to accommodate the high watermark of the number
815         of active threads - so long as the program doesn't just keep starting an unbounded number
816         of threads that are all active, the hashtable will stop resizing. Each resize operation is
817         designed to stay out of the way of the data-access-parallel normal path, in which two
818         threads operating on different lock addresses don't have to synchronize. To do this, it
819         simply drops the old hashtable without deleting it, so that threads that were still using
820         it don't crash. They will realize that they have the wrong hashtable before doing anything
821         bad, but we don't have a way of proving when all of those threads are no longer going to
822         read from the old hashtables. So, we just leak them.
823
824         This is a bounded leak, since the hashtable resizes exponentially. Thus the total memory
825         utilization of all hashtables, including the leaked ones, converges to a linear function of
826         the current hashtable's size (it's 2 * size of current hashtable).
827
828         But this leak is a problem for leaks tools, which will always report this leak. This is not
829         useful. It's better to silence the leak. That's what this patch does by ensuring that all
830         hashtables, including leaked ones, end up in a global vector. This is perf-neutral.
831
832         This requires making a StaticWordLock variant of WordLock. That's probably the biggest part
833         of this change.
834
835         * wtf/ParkingLot.cpp:
836         * wtf/WordLock.cpp:
837         (WTF::WordLockBase::lockSlow):
838         (WTF::WordLockBase::unlockSlow):
839         (WTF::WordLock::lockSlow): Deleted.
840         (WTF::WordLock::unlockSlow): Deleted.
841         * wtf/WordLock.h:
842         (WTF::WordLockBase::lock):
843         (WTF::WordLockBase::isLocked):
844         (WTF::WordLock::WordLock):
845         (WTF::WordLock::lock): Deleted.
846         (WTF::WordLock::isLocked): Deleted.
847
848 2016-03-16  Chris Dumez  <cdumez@apple.com>
849
850         Unreviewed, rolling out r198235, r198240, r198241, and
851         r198252.
852
853         Causing crashes on ARM
854
855         Reverted changesets:
856
857         "Remove compile time define for SEPARATED_HEAP"
858         https://bugs.webkit.org/show_bug.cgi?id=155508
859         http://trac.webkit.org/changeset/198235
860
861         "Gardening: build fix after r198235."
862         http://trac.webkit.org/changeset/198240
863
864         "Build fix."
865         http://trac.webkit.org/changeset/198241
866
867         "Rename performJITMemcpy to something more inline with our
868         normal webkit function names"
869         https://bugs.webkit.org/show_bug.cgi?id=155525
870         http://trac.webkit.org/changeset/198252
871
872 2016-03-15  Oliver Hunt  <oliver@apple.com>
873
874         Remove compile time define for SEPARATED_HEAP
875         https://bugs.webkit.org/show_bug.cgi?id=155508
876
877         Reviewed by Mark Lam.
878
879         Remove the feature define.
880
881         * wtf/FeatureDefines.h:
882         * wtf/Platform.h:
883
884 2016-03-14  Mark Lam  <mark.lam@apple.com>
885
886         Need to distinguish between Symbol() and Symbol("").
887         https://bugs.webkit.org/show_bug.cgi?id=155438
888
889         Reviewed by Saam Barati.
890
891         While toString of both Symbol() and Symbol("") yields "Symbol()", Function.name
892         should yield "" and "[]" respectively.  Hence, we need to tell between the two.
893         This functionality will be needed later in https://bugs.webkit.org/show_bug.cgi?id=155437.
894
895         We achieve this by creating another singleton instance like the empty StringImpl
896         as the null StringImpl.  isNullSymbol() tests if the Stringimpl instance is a
897         symbol, and its substring is the null() singleton.
898
899         * wtf/text/StringImpl.cpp:
900         (WTF::StringImpl::createSymbol):
901         (WTF::StringImpl::createNullSymbol):
902         (WTF::StringImpl::containsOnlyWhitespace):
903         (WTF::StringImpl::createSymbolEmpty): Deleted.
904         * wtf/text/StringImpl.h:
905         (WTF::StringImpl::tryCreateUninitialized):
906         (WTF::StringImpl::stringKind):
907         (WTF::StringImpl::isSymbol):
908         (WTF::StringImpl::isAtomic):
909         (WTF::StringImpl::isNullSymbol):
910         * wtf/text/StringStatics.cpp:
911         (WTF::StringImpl::null):
912
913 2016-03-13  Joseph Pecoraro  <pecoraro@apple.com>
914
915         Remove ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX) guards
916         https://bugs.webkit.org/show_bug.cgi?id=155417
917
918         Reviewed by Yusuke Suzuki.
919
920         * wtf/FeatureDefines.h:
921
922 2016-03-13  Konstantin Tokarev  <annulen@yandex.ru>
923
924         Added new port JSCOnly.
925         https://bugs.webkit.org/show_bug.cgi?id=154512
926
927         Reviewed by Michael Catanzaro.
928
929         This port allows to build JavaScriptCore engine with minimal
930         dependencies.
931
932         * wtf/PlatformJSCOnly.cmake: Added.
933         * wtf/none/MainThreadNone.cpp: Added.
934         * wtf/none/RunLoopNone.cpp: Added.
935         * wtf/none/WorkQueueNone.cpp: Added.
936
937 2016-03-13  David Kilzer  <ddkilzer@apple.com>
938
939         REGRESSION (r198079): Windows build broke because of "%PRId64" format specifier
940
941         This fixes the following build failure in WebCore for Windows:
942             C:\Source\WebCore\page\DOMTimer.cpp(396): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
943             C:\Source\WebCore\page\DOMTimer.cpp(399): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
944
945         * wtf/StdLibExtras.h: Define "PRId64" for Windows here so it may
946         be shared.  This should fix DOMTimer.cpp after r198079 since it
947         already includes StdLibExtras.h.
948
949 2016-03-11  Youenn Fablet  <youenn.fablet@crf.canon.fr>
950
951         WTF should have a similar function as equalLettersIgnoringASCIICase to match beginning of strings
952         https://bugs.webkit.org/show_bug.cgi?id=153419
953
954         Reviewed by Darin Adler.
955
956         Introducing startsWithLettersIgnoringASCIICase, to check the beginning of a string.
957         Moving some code from WTF::equalLettersIgnoringASCIICaseCommonWithoutLength in
958         WTF::hasPrefixWithLettersIgnoringASCIICaseCommon to enable reuse in
959         WTF::startsWithLettersIgnoringASCIICaseCommon.
960
961         * wtf/text/StringCommon.h:
962         (WTF::hasPrefixWithLettersIgnoringASCIICaseCommon):
963         (WTF::equalLettersIgnoringASCIICaseCommonWithoutLength):
964         (WTF::startsWithLettersIgnoringASCIICaseCommonWithoutLength):
965         (WTF::startsWithLettersIgnoringASCIICaseCommon):
966         * wtf/text/StringImpl.h:
967         (WTF::startsWithLettersIgnoringASCIICase):
968         * wtf/text/WTFString.h:
969         (WTF::startsWithLettersIgnoringASCIICase):
970
971 2016-03-10  Frederic Wang  <fwang@igalia.com>
972
973         [GTK] Add support for WOFF2
974         https://bugs.webkit.org/show_bug.cgi?id=152616
975
976         Reviewed by Carlos Garcia Campos.
977
978         * wtf/FeatureDefines.h: Enable USE_WOFF2 flag on GTK.
979
980 2016-03-09  Ryosuke Niwa  <rniwa@webkit.org>
981
982         Add runtime flags for shadow DOM and custom elements
983         https://bugs.webkit.org/show_bug.cgi?id=155213
984
985         Reviewed by Dean Jackson.
986
987         Removed the manual overrides of ENABLE_SHADOW_DOM and ENABLE_CUSTOM_ELEMENTS as they were
988         making --no-shadow-dom and --no-custom-elements flags on build-webkit useless.
989
990         * wtf/FeatureDefines.h:
991
992 2016-03-09  Keith Rollin  <krollin@apple.com>
993
994         Add state dumping facility
995         https://bugs.webkit.org/show_bug.cgi?id=154930
996         <rdar://problem/24939135>
997
998         Reviewed by Anders Carlsson.
999
1000         Add an OS_STATE flag to control the inclusion of process state dumping
1001         functionality.
1002
1003         * wtf/Platform.h:
1004
1005 2016-03-09  Oliver Hunt  <oliver@apple.com>
1006
1007         Fix old iOS
1008
1009         * wtf/Platform.h:
1010
1011 2016-03-08  Filip Pizlo  <fpizlo@apple.com>
1012
1013         Remove failing assertion. There are strings that claim to be atomic but that the
1014         compiler thread can totally deal with, like the empty string.
1015
1016         Rubber stamped by Mark Lam.
1017
1018         * wtf/text/StringImpl.h:
1019         (WTF::StringImpl::ref):
1020         (WTF::StringImpl::deref):
1021
1022 2016-03-08  Filip Pizlo  <fpizlo@apple.com>
1023
1024         DFG should be able to constant-fold strings
1025         https://bugs.webkit.org/show_bug.cgi?id=155200
1026
1027         Reviewed by Geoffrey Garen.
1028
1029         Also disable assertions about reference counting strings on the JIT thread. We will do
1030         that now and it's OK.
1031
1032         * wtf/text/StringImpl.h:
1033         (WTF::StringImpl::ref):
1034         (WTF::StringImpl::deref):
1035
1036 2016-03-08  Anders Carlsson  <andersca@apple.com>
1037
1038         Fix AppKitCompatibilityDeclarations build.
1039
1040         * wtf/mac/AppKitCompatibilityDeclarations.h:
1041         Remove duplicate declarations, conditionally define NSTextAlignment and
1042         add a NSWindowStyleMask typedef.
1043
1044 2016-03-08  Oliver Hunt  <oliver@apple.com>
1045
1046         Start moving to separated writable and executable mappings in the JIT
1047         https://bugs.webkit.org/show_bug.cgi?id=155178
1048
1049         Reviewed by Fil Pizlo.
1050
1051         Update feature defines.
1052
1053         * wtf/FeatureDefines.h:
1054         * wtf/Platform.h: ARM64 for now.
1055
1056 2016-03-08  Anders Carlsson  <andersca@apple.com>
1057
1058         Add AppKit compatibility header
1059         https://bugs.webkit.org/show_bug.cgi?id=155202
1060
1061         Reviewed by Beth Dakin.
1062
1063         * WTF.xcodeproj/project.pbxproj:
1064         * wtf/mac/AppKitCompatibilityDeclarations.h: Added.
1065
1066 2016-03-08  Commit Queue  <commit-queue@webkit.org>
1067
1068         Unreviewed, rolling out r197793 and r197799.
1069         https://bugs.webkit.org/show_bug.cgi?id=155195
1070
1071         something weird happened while landing this and everything
1072         broke (Requested by olliej on #webkit).
1073
1074         Reverted changesets:
1075
1076         "Start moving to separated writable and executable mappings in
1077         the JIT"
1078         https://bugs.webkit.org/show_bug.cgi?id=155178
1079         http://trac.webkit.org/changeset/197793
1080
1081         "arm64 build fix after r197793."
1082         http://trac.webkit.org/changeset/197799
1083
1084 2016-03-08  Oliver Hunt  <oliver@apple.com>
1085
1086         Start moving to separated writable and executable mappings in the JIT
1087         https://bugs.webkit.org/show_bug.cgi?id=155178
1088
1089         Reviewed by Filip Pizlo.
1090
1091         Update feature defines.
1092
1093         * wtf/FeatureDefines.h:
1094         * wtf/Platform.h: ARM64 for now.
1095
1096 2016-03-08  Daniel Bates  <dabates@apple.com>
1097
1098         Support iterating over an OptionSet and checking if it is empty
1099         https://bugs.webkit.org/show_bug.cgi?id=154941
1100         <rdar://problem/24964187>
1101
1102         Reviewed by Darin Adler.
1103
1104         Implements support for iterating over the enumerators in an OptionSet as well as
1105         determining if the set is empty.
1106
1107         Iterating over an OptionSet is in Big Theta(N) where N is the number of items in
1108         the set. More precisely, it is in Big Theta(log M) where M is the bitmask represented
1109         by the bitwise OR-ing of all enumerators in the set.
1110
1111         * wtf/OptionSet.h: Added comment to describe the purpose of this class and its invariant -
1112         the enumerators must be positive powers of two.
1113         (WTF::OptionSet::Iterator::operator*): Returns the enumerator pointed to by the iterator.
1114         (WTF::OptionSet::Iterator::operator++): Advance to the next smallest enumerator in the set.
1115         (WTF::OptionSet::Iterator::operator==): Returns whether the iterator is equal to the specified iterator.
1116         (WTF::OptionSet::Iterator::operator!=): Returns whether the iterator is not equal to the specified iterator.
1117         (WTF::OptionSet::Iterator::Iterator): Added.
1118         (WTF::OptionSet::fromRaw): Instantiate using specialized private constructor to allow
1119         instantiation with a raw value of 0.
1120         (WTF::OptionSet::OptionSet): Specialized constructor that asserts that the specified value
1121         is a positive power of two. This variant is only compiled when assertions are enabled (i.e. !ASSERT_DISABLED).
1122         (WTF::OptionSet::isEmpty): Returns whether the set is empty.
1123         (WTF::OptionSet::begin): Returns an iterator to the enumerator with the smallest value in the set.
1124         (WTF::OptionSet::end): Returns an iterator that represents the end sentinel of the set.
1125
1126 2016-03-07  Keith Rollin  <krollin@apple.com>
1127
1128         Enhance logging: Use "always on" macros
1129         https://bugs.webkit.org/show_bug.cgi?id=154499
1130         <rdar://problem/24757730>
1131
1132         Reviewed by Chris Dumez.
1133
1134         Update LOG_ALWAYS and LOG_ALWAYS_ERROR macros to take an expression to
1135         be evaluated. If the expression evaluates to True, the associated
1136         message is logged. This facility is used to prevent logging from being
1137         performed in private sessions, but it could be extended to prevent
1138         logging under other circumstances as well.
1139
1140         * wtf/Assertions.h:
1141
1142 2016-03-04  Alex Christensen  <achristensen@webkit.org>
1143
1144         Remove vcxproj build system
1145         https://bugs.webkit.org/show_bug.cgi?id=154388
1146
1147         Rubber-stamped by Brent Fulgham.
1148
1149         * WTF.vcxproj/WTF.submit.sln: Removed.
1150         * WTF.vcxproj/WTF.vcxproj: Removed.
1151         * WTF.vcxproj/WTF.vcxproj.filters: Removed.
1152         * WTF.vcxproj/WTFCFLite.props: Removed.
1153         * WTF.vcxproj/WTFCommon.props: Removed.
1154         * WTF.vcxproj/WTFCoreFoundation.props: Removed.
1155         * WTF.vcxproj/WTFDebug.props: Removed.
1156         * WTF.vcxproj/WTFDebugWinCairo.props: Removed.
1157         * WTF.vcxproj/WTFGenerated.make: Removed.
1158         * WTF.vcxproj/WTFGenerated.vcxproj: Removed.
1159         * WTF.vcxproj/WTFGenerated.vcxproj.filters: Removed.
1160         * WTF.vcxproj/WTFGeneratedCommon.props: Removed.
1161         * WTF.vcxproj/WTFGeneratedDebug.props: Removed.
1162         * WTF.vcxproj/WTFGeneratedProduction.props: Removed.
1163         * WTF.vcxproj/WTFGeneratedRelease.props: Removed.
1164         * WTF.vcxproj/WTFPostBuild.cmd: Removed.
1165         * WTF.vcxproj/WTFPreBuild.cmd: Removed.
1166         * WTF.vcxproj/WTFProduction.props: Removed.
1167         * WTF.vcxproj/WTFRelease.props: Removed.
1168         * WTF.vcxproj/WTFReleaseWinCairo.props: Removed.
1169         * WTF.vcxproj/build-generated-files.pl: Removed.
1170         * WTF.vcxproj/copy-files.cmd: Removed.
1171         * WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py: Removed.
1172
1173 2016-03-04  Alex Christensen  <achristensen@webkit.org>
1174
1175         Use NSURLSession for loading in WebKit2
1176         https://bugs.webkit.org/show_bug.cgi?id=154993
1177
1178         Reviewed by Sam Weinig.
1179
1180         * wtf/Platform.h:
1181
1182 2016-03-03  Daniel Bates  <dabates@apple.com>
1183
1184         Add unit tests for WTF::OptionSet
1185         https://bugs.webkit.org/show_bug.cgi?id=154925
1186         <rdar://problem/24964211>
1187
1188         Reviewed by Darin Adler.
1189
1190         * wtf/CMakeLists.txt: Add header OptionSet.h to the list of WTF headers.
1191         * wtf/OptionSet.h: Use in-class initialization to initialize m_storage and declare
1192         the trivial constexpr constructor as default.
1193         (WTF::OptionSet::OptionSet): For convenience add a constructor that takes a std::initializer_list.
1194         This code was written by Anders Carlsson.
1195
1196 2016-03-03  Andy Estes  <aestes@apple.com>
1197
1198         Adopt CFNetwork storage partitioning SPI
1199         https://bugs.webkit.org/show_bug.cgi?id=154957
1200         rdar://problem/23614620
1201
1202         Reviewed by Darin Adler.
1203
1204         * wtf/Platform.h: Defined HAVE_CFNETWORK_STORAGE_PARTITIONING.
1205
1206 2016-03-02  Konstantin Tokarev  <annulen@yandex.ru>
1207
1208         [cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
1209         https://bugs.webkit.org/show_bug.cgi?id=154651
1210
1211         Reviewed by Alex Christensen.
1212
1213         * CMakeLists.txt: Moved shared code to WEBKIT_FRAMEWORK macro.
1214
1215 2016-03-01  Commit Queue  <commit-queue@webkit.org>
1216
1217         Unreviewed, rolling out r197226 and r197256.
1218         https://bugs.webkit.org/show_bug.cgi?id=154910
1219
1220         Caused crashes on Mac 32-bit and on ARM (Requested by ap on
1221         #webkit).
1222
1223         Reverted changesets:
1224
1225         "Remove the on demand executable allocator"
1226         https://bugs.webkit.org/show_bug.cgi?id=154749
1227         http://trac.webkit.org/changeset/197226
1228
1229         "CLoop build fix."
1230         http://trac.webkit.org/changeset/197256
1231
1232 2016-03-01  Alex Christensen  <achristensen@webkit.org>
1233
1234         Reduce size of internal windows build output
1235         https://bugs.webkit.org/show_bug.cgi?id=154763
1236
1237         Reviewed by Brent Fulgham.
1238
1239         * WTF.vcxproj/WTF.proj:
1240
1241 2016-03-01  Commit Queue  <commit-queue@webkit.org>
1242
1243         Unreviewed, rolling out r197056.
1244         https://bugs.webkit.org/show_bug.cgi?id=154870
1245
1246         broke win ews (Requested by alexchristensen on #webkit).
1247
1248         Reverted changeset:
1249
1250         "[cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK."
1251         https://bugs.webkit.org/show_bug.cgi?id=154651
1252         http://trac.webkit.org/changeset/197056
1253
1254 2016-02-29  Gavin Barraclough  <barraclough@apple.com>
1255
1256         RefCounter<T>::Event -> RefCounterEvent
1257         https://bugs.webkit.org/show_bug.cgi?id=154767
1258
1259         Reviewed by Darin Adler.
1260
1261         RefCounter<T>::Event is kinda verbose to use, and there is no need for this
1262         to be specific to a particular typeof RefCounter. Move the enum class up to
1263         the top level & rename to RefCounterEvent.
1264
1265         * wtf/RefCounter.h:
1266         (WTF::RefCounter<T>::Count::ref):
1267         (WTF::RefCounter<T>::Count::deref):
1268
1269 2016-02-26  Oliver Hunt  <oliver@apple.com>
1270
1271         Remove the on demand executable allocator
1272         https://bugs.webkit.org/show_bug.cgi?id=154749
1273
1274         Reviewed by Geoffrey Garen.
1275
1276         Remove the DeamndExecutableAllocator compile flags.
1277
1278         * wtf/Platform.h:
1279
1280 2016-02-26  Keith Rollin  <krollin@apple.com>
1281
1282         Enhance logging: Add "always on" macros
1283         https://bugs.webkit.org/show_bug.cgi?id=154498
1284         <rdar://problem/24757759>
1285
1286         Reviewed by Chris Dumez.
1287
1288         Add support for efficient always-on logging (logging that is available
1289         in both debug and release builds). This is implemented in the form of
1290         some new macros:
1291
1292         - LOG_ALWAYS: Always log information-level statements.
1293         - LOG_ALWAYS_ERROR: Always log error-level statements. These can be
1294           filtered out of the normal logging so that they can be found more
1295           easily.
1296
1297         In cases where there is no efficient underlying facility for it to
1298         utilize, LOG_ALWAYS_ERROR is redirected to WTFReportError as a backup
1299         mechanism. LOG_ALWAYS is not given a similar treatment so that we
1300         don't overwhelm other logging systems that aren't prepared for "always
1301         on" logging.
1302
1303         * wtf/Assertions.h:
1304         * wtf/Platform.h:
1305
1306 2016-02-26  Anders Carlsson  <andersca@apple.com>
1307
1308         Add WTF::OptionSet and use it for the website data types enum
1309         https://bugs.webkit.org/show_bug.cgi?id=154733
1310
1311         Reviewed by Geoffrey Garen.
1312
1313         Add WTF::OptionSet which makes it easier to use strong enums as flags.
1314
1315         * WTF.xcodeproj/project.pbxproj:
1316         * wtf/Forward.h:
1317         * wtf/OptionSet.h: Copied from Source/WebKit2/Shared/WebsiteData/WebsiteData.h.
1318         (WTF::OptionSet::fromRaw):
1319         (WTF::OptionSet::OptionSet):
1320         (WTF::OptionSet::toRaw):
1321         (WTF::OptionSet::contains):
1322         (WTF::OptionSet::operator|=):
1323
1324 2016-02-26  Commit Queue  <commit-queue@webkit.org>
1325
1326         Unreviewed, rolling out r197168.
1327         https://bugs.webkit.org/show_bug.cgi?id=154728
1328
1329         crashing on some devices (Requested by kling on #webkit).
1330
1331         Reverted changeset:
1332
1333         "[Darwin] Use vm_kernel_page_size for WTF::pageSize()."
1334         https://bugs.webkit.org/show_bug.cgi?id=154726
1335         http://trac.webkit.org/changeset/197168
1336
1337 2016-02-26  Andreas Kling  <akling@apple.com>
1338
1339         [Darwin] Use vm_kernel_page_size for WTF::pageSize().
1340         <https://webkit.org/b/154726>
1341
1342         Reviewed by Antti Koivisto.
1343
1344         Make sure we use the right VM page size on Darwin systems.
1345         On devices where the native page size is 4 KB, it's both
1346         possible and profitable to madvise in smaller chunks.
1347
1348         * wtf/PageBlock.cpp:
1349         (WTF::systemPageSize):
1350
1351 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
1352
1353         RefCounter value changed callback should be called on all changes (not just zero edge).
1354         https://bugs.webkit.org/show_bug.cgi?id=154699
1355
1356         Reviewed by Anders Carlsson.
1357
1358         RefCounter currently only triggers a callback when the count goes from zero
1359         to non-zero and vice-versa. Change that, to be useful to more clients.
1360
1361         * wtf/RefCounter.h:
1362         (WTF::RefCounter::Count::Count):
1363         (WTF::RefCounter::RefCounter):
1364             - Removed superfluous WTF_EXPORT_PRIVATE.
1365         (WTF::RefCounter::value):
1366             - Changed value() to a size_t.
1367         (WTF::RefCounter<T>::Count::ref):
1368         (WTF::RefCounter<T>::Count::deref):
1369             - Trigger the callback on all increments/decrements.
1370         (WTF::RefCounter<T>::RefCounter):
1371             - Changed siganture of callback.
1372
1373 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
1374
1375         Replace RefCounter::Token implementation with RefPtr
1376         https://bugs.webkit.org/show_bug.cgi?id=154698
1377
1378         Reviewed by Anders Carlsson.
1379
1380         * wtf/RefCounter.h:
1381         (WTF::RefCounter::RefCounter):
1382         (WTF::RefCounter::count):
1383         (WTF::RefCounter::value):
1384         (WTF::RefCounter<T>::~RefCounter):
1385         (WTF::RefCounter::Token::Token): Deleted.
1386         (WTF::RefCounter::Token::operator bool): Deleted.
1387         (WTF::RefCounter<T>::Token::Token): Deleted.
1388         (WTF::=): Deleted.
1389             - Delete.
1390
1391 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
1392
1393         Should template RefCounter instead of RefCounter::Token
1394         https://bugs.webkit.org/show_bug.cgi?id=154691
1395
1396         Speculative windows build fix.
1397
1398         * wtf/RefCounter.h:
1399         (WTF::RefCounter::RefCounter):
1400         (WTF::RefCounter::count):
1401
1402 2016-02-25  Commit Queue  <commit-queue@webkit.org>
1403
1404         Unreviewed, rolling out r197137.
1405         https://bugs.webkit.org/show_bug.cgi?id=154700
1406
1407         broke windows build (Requested by alexchristensen on #webkit).
1408
1409         Reverted changeset:
1410
1411         "Replace RefCounter::Token implementation with RefPtr"
1412         https://bugs.webkit.org/show_bug.cgi?id=154698
1413         http://trac.webkit.org/changeset/197137
1414
1415 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
1416
1417         Replace RefCounter::Token implementation with RefPtr
1418         https://bugs.webkit.org/show_bug.cgi?id=154698
1419
1420         Reviewed by Anders Carlsson.
1421
1422         * wtf/RefCounter.h:
1423         (WTF::RefCounter::RefCounter):
1424         (WTF::RefCounter::count):
1425         (WTF::RefCounter::value):
1426         (WTF::RefCounter<T>::~RefCounter):
1427         (WTF::RefCounter::Token::Token): Deleted.
1428         (WTF::RefCounter::Token::operator bool): Deleted.
1429         (WTF::RefCounter<T>::Token::Token): Deleted.
1430         (WTF::=): Deleted.
1431             - Delete.
1432
1433 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
1434
1435         Should template RefCounter instead of RefCounter::Token
1436         https://bugs.webkit.org/show_bug.cgi?id=154691
1437
1438         Reviewed by Anders Carlsson.
1439
1440         My real goal here is to make the counter accurate. Currently returning a Token from token<>()
1441         results in ref-count churn. Fixing this either means changing the return value, or improving
1442         Token (which will probably mean replacing it with RefPtr). Either way would break the current
1443         type checking. Move type tag to RefCount so this can still be enforced.
1444
1445         * WTF.vcxproj/WTF.vcxproj:
1446         * WTF.vcxproj/WTF.vcxproj.filters:
1447         * WTF.xcodeproj/project.pbxproj:
1448         * wtf/CMakeLists.txt:
1449         * wtf/RefCounter.cpp: Removed.
1450             - Removed RefCounter.cpp.
1451         * wtf/RefCounter.h:
1452         (WTF::RefCounter::Token::Token):
1453         (WTF::RefCounter::Token::operator bool):
1454         (WTF::RefCounter::RefCounter):
1455         (WTF::RefCounter::count):
1456         (WTF::RefCounter::value):
1457         (WTF::RefCounter<T>::Count::ref):
1458         (WTF::RefCounter<T>::Count::deref):
1459         (WTF::RefCounter<T>::RefCounter):
1460         (WTF::RefCounter<T>::~RefCounter):
1461         (WTF::RefCounter<T>::Token::Token):
1462         (WTF::=):
1463         (WTF::RefCounter::token): Deleted.
1464         (WTF::RefCounter::Token<T>::Token): Deleted.
1465             - RefCounter -> RefCounter<T>,
1466             - Token<T> -> Token,
1467             - renamed token<>() -> count().
1468
1469 2016-02-25  Sam Weinig  <sam@webkit.org>
1470
1471         HashMap::ensure() should return an AddResult like all the other add-like functions.
1472         https://bugs.webkit.org/show_bug.cgi?id=154680
1473
1474         Reviewed by Anders Carlsson.
1475
1476         While adopting HashMap::ensure(), I found it was useful in some circumstances to know
1477         if the value was added or not. While I could discern this information by setting a bool
1478         in the passed in lambda, it seemed clearer and more idiomatic to just have ensure return
1479         an AddResult like all the other add-like functions do.
1480
1481         * wtf/HashMap.h:
1482         Change return type of HashMap::ensure() to be an AddResult.
1483
1484 2016-02-24  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>
1485
1486         [web-animations] Add AnimationTimeline, DocumentTimeline and add extensions to Document interface
1487         https://bugs.webkit.org/show_bug.cgi?id=151688
1488
1489         Reviewed by Dean Jackson.
1490
1491         Enables the WEB_ANIMATIONS compiler switch.
1492
1493         * wtf/FeatureDefines.h:
1494
1495 2016-02-24  Konstantin Tokarev  <annulen@yandex.ru>
1496
1497         [cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
1498         https://bugs.webkit.org/show_bug.cgi?id=154651
1499
1500         Reviewed by Alex Christensen.
1501
1502         * CMakeLists.txt: Moved shared code to WEBKIT_FRAMEWORK macro.
1503
1504 2016-02-23  Dan Bernstein  <mitz@apple.com>
1505
1506         [Xcode] Linker errors display mangled names, but no longer should
1507         https://bugs.webkit.org/show_bug.cgi?id=154632
1508
1509         Reviewed by Sam Weinig.
1510
1511         * Configurations/Base.xcconfig: Stop setting LINKER_DISPLAYS_MANGLED_NAMES to YES.
1512
1513 2016-02-23  Gavin Barraclough  <barraclough@apple.com>
1514
1515         Remove HIDDEN_PAGE_DOM_TIMER_THROTTLING feature define
1516         https://bugs.webkit.org/show_bug.cgi?id=112323
1517
1518         Reviewed by Chris Dumez.
1519
1520         This feature is controlled by a runtime switch, and defaults off.
1521
1522         * wtf/FeatureDefines.h:
1523
1524 2016-02-22  Konstantin Tokarev  <annulen@yandex.ru>
1525
1526         [cmake] Moved library setup code to WEBKIT_FRAMEWORK macro.
1527         https://bugs.webkit.org/show_bug.cgi?id=154450
1528
1529         Reviewed by Alex Christensen.
1530
1531         * wtf/CMakeLists.txt:
1532
1533 2016-02-20  Mark Lam  <mark.lam@apple.com>
1534
1535         Use of inlined asm statements causes problems for -std=c99 builds.
1536         https://bugs.webkit.org/show_bug.cgi?id=154507
1537
1538         Reviewed by Dan Bernstein.
1539
1540         WTF's Assertions.h may inadvertantly get included by other projects that are built
1541         with -std=c99.  The use of the inlined asm statements with the keyword "asm" is
1542         not recognized when the -std compiler flag is used.
1543
1544         https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html says "When writing code that
1545         can be compiled with -ansi and the various -std options, use __asm__ instead of
1546         asm (see Alternate Keywords)."
1547
1548         So, to be a good citizen, we can change the use of "asm" in CRASH() to "__asm__"
1549         so that we don't break the build of such other projects.
1550
1551         * wtf/Assertions.h:
1552
1553 2016-02-18  Brent Fulgham  <bfulgham@apple.com>
1554
1555         Extend HashCountedSet with a method to efficiently set the count of an entry
1556         https://bugs.webkit.org/show_bug.cgi?id=154352
1557
1558         Reviewed by Geoffrey Garen.
1559
1560         Tested by new TestWebKitAPI tests.
1561
1562         Update the HashCountedSet class with a new 'add' method to support efficient initialization of
1563         the count of a given key. Also provide move and pointer template specializations to expand the
1564         types of data that can be used as 'keys' in the HashCountedSet to match the underlying HashMap
1565         implementation.
1566
1567         * wtf/HashCountedSet.h:
1568         (WTF::Traits>::add): Added new overload supporting a supplied count.
1569
1570 2016-02-18  Commit Queue  <commit-queue@webkit.org>
1571
1572         Unreviewed, rolling out r196791.
1573         https://bugs.webkit.org/show_bug.cgi?id=154438
1574
1575         broke windows build (Requested by alexchristensen on #webkit).
1576
1577         Reverted changeset:
1578
1579         "Extend HashCountedSet with a method to efficiently set the
1580         count of an entry"
1581         https://bugs.webkit.org/show_bug.cgi?id=154352
1582         http://trac.webkit.org/changeset/196791
1583
1584 2016-02-18  Brent Fulgham  <bfulgham@apple.com>
1585
1586         Extend HashCountedSet with a method to efficiently set the count of an entry
1587         https://bugs.webkit.org/show_bug.cgi?id=154352
1588
1589         Reviewed by Geoffrey Garen.
1590
1591         Tested by new TestWebKitAPI tests.
1592
1593         Update the HashCountedSet class with a new 'add' method to support efficient initialization of
1594         the count of a given key. Also provide move and pointer template specializations to expand the
1595         types of data that can be used as 'keys' in the HashCountedSet to match the underlying HashMap
1596         implementation.
1597
1598         * wtf/HashCountedSet.h:
1599         (WTF::Traits>::add): Added new overload supporting a supplied count.
1600
1601 2016-02-17  Filip Pizlo  <fpizlo@apple.com>
1602
1603         Remove LLVM dependencies from WebKit
1604         https://bugs.webkit.org/show_bug.cgi?id=154323
1605
1606         Reviewed by Antti Koivisto and Benjamin Poulain.
1607
1608         * wtf/Platform.h:
1609
1610 2016-02-16  Sam Weinig  <sam@webkit.org>
1611
1612         Add an ensure function on HashMap that takes a key and a function to make the lazy value initialization idiom easier
1613         https://bugs.webkit.org/show_bug.cgi?id=134857
1614
1615         Reviewed by Geoffrey Garen.
1616
1617         The current idiom for adding a value to a HashMap if the key is not already present, to allow for not
1618         unnecessarily constructing the new value if it won't be used, is:
1619         
1620         {
1621             auto result = map.add(key, Value());
1622             if (!result.isNewEntry)
1623                 return result.iterator->value;
1624
1625             result.iterator->value = createNewValue();
1626             return result.iterator->value;
1627         }
1628
1629         or sometimes
1630
1631         {
1632             auto& value = map.add(key, Value()).iterator->value;
1633             if (!value)
1634                 value = createNewValue();
1635             return value;
1636         }
1637
1638         With this patch, you can now use the new function HashMap::ensure(key, functor). This will allow us to 
1639         change to using the following idiom:
1640
1641         {
1642             return map.ensure(key, [] { return createNewValue(); });
1643         }
1644
1645         The passed in functor will only be called if the key is not already present in the HashMap.
1646
1647         * wtf/HashMap.h:
1648         (WTF::HashMapTranslator::translate):
1649         (WTF::HashMapEnsureTranslator::hash):
1650         (WTF::HashMapEnsureTranslator::equal):
1651         (WTF::HashMapEnsureTranslator::translate):
1652         (WTF::HashMapTranslatorAdapter::hash):
1653
1654 2016-02-16  Filip Pizlo  <fpizlo@apple.com>
1655
1656         FTL_USES_B3 should be unconditionally true
1657         https://bugs.webkit.org/show_bug.cgi?id=154324
1658
1659         Reviewed by Benjamin Poulain.
1660
1661         * wtf/Platform.h:
1662
1663 2016-02-13  Mark Lam  <mark.lam@apple.com>
1664
1665         Eliminate the need for WTFCrashImpl().
1666         https://bugs.webkit.org/show_bug.cgi?id=154202
1667
1668         Reviewed by Alexey Proskuryakov.
1669
1670         * wtf/Assertions.cpp:
1671         * wtf/Assertions.h:
1672
1673 2016-02-12  Sukolsak Sakshuwong  <sukolsak@gmail.com>
1674
1675         Update ICU header files to version 52
1676         https://bugs.webkit.org/show_bug.cgi?id=154160
1677
1678         Reviewed by Alex Christensen.
1679
1680         Update ICU header files to version 52 to allow the use of newer APIs.
1681
1682         * icu/unicode/bytestream.h:
1683         * icu/unicode/localpointer.h:
1684         * icu/unicode/platform.h:
1685         * icu/unicode/ptypes.h:
1686         * icu/unicode/putil.h:
1687         * icu/unicode/rep.h:
1688         (Replaceable::Replaceable):
1689         * icu/unicode/std_string.h:
1690         * icu/unicode/strenum.h:
1691         * icu/unicode/stringpiece.h:
1692         * icu/unicode/uchar.h:
1693         * icu/unicode/ucnv.h:
1694         * icu/unicode/ucol.h:
1695         * icu/unicode/uconfig.h:
1696         * icu/unicode/uenum.h:
1697         * icu/unicode/uiter.h:
1698         * icu/unicode/uloc.h:
1699         * icu/unicode/umachine.h:
1700         * icu/unicode/unistr.h:
1701         (UnicodeString::UnicodeString):
1702         (UnicodeString::operator== ):
1703         (UnicodeString::startsWith):
1704         (UnicodeString::setTo):
1705         (UnicodeString::remove):
1706         (UnicodeString::replace): Deleted.
1707         (UnicodeString::extract): Deleted.
1708         (UnicodeString::char32At): Deleted.
1709         (UnicodeString::getChar32Start): Deleted.
1710         (UnicodeString::getChar32Limit): Deleted.
1711         (UnicodeString::getTerminatedBuffer): Deleted.
1712         (UnicodeString::append): Deleted.
1713         (UnicodeString::truncate): Deleted.
1714         * icu/unicode/unorm2.h:
1715         * icu/unicode/uobject.h:
1716         * icu/unicode/urename.h:
1717         * icu/unicode/uscript.h:
1718         * icu/unicode/uset.h:
1719         * icu/unicode/ustring.h:
1720         * icu/unicode/utf.h:
1721         * icu/unicode/utf16.h:
1722         * icu/unicode/utf8.h:
1723         * icu/unicode/utf_old.h:
1724         * icu/unicode/utypes.h:
1725         * icu/unicode/uvernum.h:
1726         * icu/unicode/uversion.h:
1727
1728 2016-02-11  Mark Lam  <mark.lam@apple.com>
1729
1730         Need WTFCrash workaround for shipping SafariForWebKitDevelopment binaries.
1731         https://bugs.webkit.org/show_bug.cgi?id=154125
1732
1733         Reviewed by Joseph Pecoraro.
1734
1735         Presently shipping SafariForWebKitDevelopment binaries still expect to link to a
1736         WTFCrash function.  We need to provide this function as a workaround until we can
1737         update SafariForWebKitDevelopment to use the new inlined version.
1738
1739         We do this by doing:
1740         1. Make WTFCrashImpl() the sole function for implementing a crash.
1741            The CRASH() macro is now defined to be WTFCrashImpl() instead of WTFCrash().
1742         2. Renamed the legacy WTFCrash() to WTFCrashImpl() for debug or non-Darwin builds.
1743            For (non-debug && OS(DARWIN)) builds, WTFCrashImpl() will be an inlined
1744            function with an asm statement that issues a breakpoint trap.
1745         3. Implement WTFCrash() as a function that calls CRASH().
1746            This satisfies the need of shipping SafariForWebKitDevelopment binaries.
1747         4. Change WTFCrashWithSecurityImplication() to call CRASH().
1748            This ensures that we have a consistent implementation of how we crash.
1749         5. Changed WTFLogAlwaysAndCrash() to call CRASH() instead of WTFCrash().
1750            This is just to have consistency in that all code in the WebKit project
1751            now crashes by calling CRASH(), not WTFCrash().
1752
1753         * wtf/Assertions.cpp:
1754         * wtf/Assertions.h:
1755
1756 2016-02-09  Mark Lam  <mark.lam@apple.com>
1757
1758         Changed WTFCrash to not trash the crash site register state.
1759         https://bugs.webkit.org/show_bug.cgi?id=153996
1760
1761         Reviewed by Geoffrey Garen.
1762
1763         When doing post-mortem crash site analysis using data from crash reports, it is
1764         immensely valuable to be able to infer the crashing program's state from the
1765         register values at crash time.  However, for RELEASE_ASSERT failures, we crash
1766         using WTFCrash(), and WTFCrash() is currently implemented as a function call
1767         that, in turn, calls a lot of other functions to do crash handling before
1768         actually crashing.  As a result, the register values captured in the crash
1769         reports are not likely to still contain the values used by the caller function
1770         that failed the RELEASE_ASSERT.
1771
1772         This patch aims to remedy this issue for non-debug builds on OS(DARWIN) ports.
1773         It does so by changing WTFCrash() into an inlined function that has an inlined
1774         asm statement to issues the CPU specific breakpoint trap instruction.  As a
1775         result, for non-debug OS(DARWIN) builds, crashes due to failed RELEASE_ASSERTs
1776         will now show up in crash reports as crashing due to EXC_BREAKPOINT (SIGTRAP)
1777         instead of a EXC_BAD_ACCESS (SIGSEGV) on address 0xbbadbeef.
1778
1779         For debug and non-DARWIN builds, WTFCrash() behavior currently remains unchanged.
1780
1781         * wtf/Assertions.cpp:
1782         * wtf/Assertions.h:
1783
1784 2016-02-09  Csaba Osztrogonác  <ossy@webkit.org>
1785
1786         [GTK][EFL] Fix several build configuration related to SamplingProfiler after r196245
1787         https://bugs.webkit.org/show_bug.cgi?id=154033
1788
1789         Reviewed by Michael Catanzaro.
1790
1791         * wtf/Platform.h:
1792
1793 2016-02-08  Filip Pizlo  <fpizlo@apple.com>
1794
1795         Make sure that locking code that relies on module boundaries for compiler fences uses NEVER_INLINE
1796         https://bugs.webkit.org/show_bug.cgi?id=153972
1797
1798         Reviewed by Andreas Kling.
1799
1800         When this code was written, we assumed that module boundaries were compiler fences. That might
1801         not be the case if we ever do LTO.
1802
1803         * wtf/Lock.cpp:
1804         (WTF::LockBase::lockSlow):
1805         (WTF::LockBase::unlockSlow):
1806         * wtf/ParkingLot.cpp:
1807         (WTF::ParkingLot::parkConditionally):
1808         (WTF::ParkingLot::unparkOne):
1809         (WTF::ParkingLot::unparkAll):
1810         (WTF::ParkingLot::forEach):
1811         * wtf/WordLock.cpp:
1812         (WTF::WordLock::lockSlow):
1813         (WTF::WordLock::unlockSlow):
1814
1815 2016-02-07  Yusuke Suzuki  <utatane.tea@gmail.com>
1816
1817         [GTK][EFL] Enable SamplingProfiler
1818         https://bugs.webkit.org/show_bug.cgi?id=153638
1819
1820         Reviewed by Michael Catanzaro.
1821
1822         * wtf/Platform.h:
1823
1824 2016-02-07  Dan Bernstein  <mitz@apple.com>
1825
1826         [Cocoa] Replace __has_include guards around inclusion of Apple-internal-SDK headers with USE(APPLE_INTERNAL_SDK)
1827         https://bugs.webkit.org/show_bug.cgi?id=153963
1828
1829         Reviewed by Sam Weinig.
1830
1831         * wtf/SystemTracing.h:
1832         * wtf/WTFThreadData.h:
1833         * wtf/spi/darwin/CommonCryptoSPI.h:
1834
1835 2016-02-06  Darin Adler  <darin@apple.com>
1836
1837         Finish auditing call sites of upper() and lower(), eliminate many, and rename the functions
1838         https://bugs.webkit.org/show_bug.cgi?id=153905
1839
1840         Reviewed by Sam Weinig.
1841
1842         * wtf/text/AtomicString.cpp:
1843         (WTF::AtomicString::lower): Deleted.
1844         * wtf/text/AtomicString.h: Deleted the lower function.
1845
1846         * wtf/text/StringImpl.cpp:
1847         (WTF::StringImpl::convertToLowercaseWithoutLocale): Renamed from lower.
1848         (WTF::StringImpl::convertToUppercaseWithoutLocale): Renamed from upper.
1849         (WTF::StringImpl::convertToLowercaseWithLocale): Renamed from lower.
1850         (WTF::StringImpl::convertToUppercaseWithLocale): Renamed from upper.
1851         (WTF::StringImpl::foldCase): Added fast cases for ASCII since this is
1852         now used in some more-performance-critical code.
1853         * wtf/text/StringImpl.h: Renamed lower and upper.
1854
1855         * wtf/text/WTFString.cpp:
1856         (WTF::String::convertToLowercaseWithoutLocale): Renamed from lower.
1857         (WTF::String::convertToUppercaseWithoutLocale): Renamed from upper.
1858         (WTF::String::convertToLowercaseWithLocale): Renamed from lower.
1859         (WTF::String::convertToUppercaseWithLocale): Renamed from upper.
1860         * wtf/text/WTFString.h: Renamed lower and upper. Removed unneeded comment.
1861
1862 2016-02-03  Darin Adler  <darin@apple.com>
1863
1864         Convert another batch of String::lower callsites to something better, typically convertToASCIILowercase
1865         https://bugs.webkit.org/show_bug.cgi?id=153789
1866
1867         Reviewed by Sam Weinig.
1868
1869         * wtf/text/StringView.h:
1870         (WTF::StringView::toInt): Added an overload without the out parameter.
1871
1872 2016-02-03  Michael Catanzaro  <mcatanzaro@igalia.com>
1873
1874         [GTK][EFL] Switch FTL to B3
1875         https://bugs.webkit.org/show_bug.cgi?id=153478
1876
1877         Reviewed by Csaba Osztrogonác.
1878
1879         Enable B3 by default on all x86.
1880
1881         * wtf/Platform.h:
1882
1883 2016-02-03  Anders Carlsson  <andersca@apple.com>
1884
1885         Fix BlockPtr's call operator
1886         https://bugs.webkit.org/show_bug.cgi?id=153836
1887
1888         Reviewed by Enrica Casucci.
1889
1890         * wtf/BlockPtr.h:
1891
1892 2016-02-01  Said Abou-Hallawa  <sabouhallawa@apple.com>
1893
1894         Cache the Path instead of creating it every time it is required
1895         https://bugs.webkit.org/show_bug.cgi?id=152939
1896
1897         Reviewed by Darin Adler.
1898
1899         If the key type of an LRU cache can't to be strongly tided to a specific
1900         data type; e.g. FloatRect -> Path, we need to be able to pass the policy
1901         type to the TinyLRUCache template instead of just specializing it. This
1902         will make the code more readable and will allow different caches for the
1903         same key type.
1904
1905         * wtf/TinyLRUCache.h:
1906         (WebCore::TinyLRUCache::get):
1907
1908 2016-02-01  Alex Christensen  <achristensen@webkit.org>
1909
1910         [Win] WTFHeaderDetection.h no longer needed
1911         https://bugs.webkit.org/show_bug.cgi?id=153753
1912         rdar://problem/24434627
1913
1914         Reviewed by Darin Adler.
1915
1916         * wtf/Platform.h:
1917         * wtf/PlatformWin.cmake:
1918
1919 2016-01-31  Darin Adler  <darin@apple.com>
1920
1921         Cut down on calls to String::lower; mostly replace with convertToASCIILowercase
1922         https://bugs.webkit.org/show_bug.cgi?id=153732
1923
1924         Reviewed by Dean Jackson.
1925
1926         * wtf/text/StringView.h: Added toIntStrict. Not thrilled about the name of this
1927         function, but generally it seems likely to be useful more often than toInt.
1928         And it's needed for one call site in WebCore that was using String::lower.
1929
1930 2016-01-31  Darin Adler  <darin@apple.com>
1931
1932         Get rid of most calls to String::upper; mostly replace them with convertToASCIIUppercase
1933         https://bugs.webkit.org/show_bug.cgi?id=153715
1934
1935         Reviewed by Gyuyoung Kim.
1936
1937         * wtf/text/AtomicString.h:
1938         (WTF::AtomicString::upper): Deleted.
1939
1940 2016-01-31  Dan Bernstein  <mitz@apple.com>
1941
1942         [Cocoa] Remove unused definition of HAVE_HEADER_DETECTION_H
1943         https://bugs.webkit.org/show_bug.cgi?id=153729
1944
1945         Reviewed by Sam Weinig.
1946
1947         After r141700, HAVE_HEADER_DETECTION_H is no longer used.
1948
1949         * Configurations/Base.xcconfig:
1950
1951 2016-01-31  Darin Adler  <darin@apple.com>
1952
1953         Replace CaseFoldingHash with ASCIICaseInsensitiveHash
1954         https://bugs.webkit.org/show_bug.cgi?id=153639
1955
1956         Reviewed by Filip Pizlo.
1957
1958         * wtf/text/StringHash.h: Renamed CaseFoldingHash to ASCIICaseInsensitiveHash.
1959         (WTF::ASCIICaseInsensitiveHash::foldCase): Use toASCIILower.
1960         (WTF::ASCIICaseInsensitiveHash::equal): Use equalIgnoringASCIICase.
1961         Also added some assertions.
1962
1963         * wtf/text/StringImpl.cpp: Made the latin1CaseFoldTable private to this file,
1964         since it's no longer needed by CaseFoldingHash. Moved it up before its first use.
1965         (WTF::equalCompatibilityCaseless): Fixed typo in the name of this function.
1966         (WTF::equalCompatibiltyCaselessNonNull): Deleted.
1967
1968         * wtf/text/StringImpl.h: Removed declarations of latin1CaseFoldTable and
1969         equalCompatibiltyCaselessNonNull
1970
1971 2016-01-30  Commit Queue  <commit-queue@webkit.org>
1972
1973         Unreviewed, rolling out r195911.
1974         https://bugs.webkit.org/show_bug.cgi?id=153723
1975
1976         Caused frequent assertion failures on bots (Requested by ap on
1977         #webkit).
1978
1979         Reverted changeset:
1980
1981         "Replace CaseFoldingHash with ASCIICaseInsensitiveHash"
1982         https://bugs.webkit.org/show_bug.cgi?id=153639
1983         http://trac.webkit.org/changeset/195911
1984
1985 2016-01-30  Darin Adler  <darin@apple.com>
1986
1987         Replace CaseFoldingHash with ASCIICaseInsensitiveHash
1988         https://bugs.webkit.org/show_bug.cgi?id=153639
1989
1990         Reviewed by Filip Pizlo.
1991
1992         * wtf/text/StringHash.h: Renamed CaseFoldingHash to ASCIICaseInsensitiveHash.
1993         (WTF::ASCIICaseInsensitiveHash::foldCase): Use toASCIILower.
1994         (WTF::ASCIICaseInsensitiveHash::equal): Use equalIgnoringASCIICase.
1995         Also added some assertions.
1996
1997         * wtf/text/StringImpl.cpp: Made the latin1CaseFoldTable private to this file,
1998         since it's no longer needed by CaseFoldingHash. Moved it up before its first use.
1999         (WTF::equalCompatibilityCaseless): Fixed typo in the name of this function.
2000         (WTF::equalCompatibiltyCaselessNonNull): Deleted.
2001
2002         * wtf/text/StringImpl.h: Removed declarations of latin1CaseFoldTable and
2003         equalCompatibiltyCaselessNonNull
2004
2005 2016-01-29  Ada Chan  <adachan@apple.com>
2006
2007         Enable VIDEO_PRESENTATION_MODE only in Debug and Release builds on Mac
2008         https://bugs.webkit.org/show_bug.cgi?id=153665
2009
2010         Reviewed by Dan Bernstein.
2011
2012         * wtf/Platform.h:
2013         Remove this as the flag is already defined in FeatureDefines.xcconfig files.
2014
2015 2016-01-30  Yusuke Suzuki  <utatane.tea@gmail.com>
2016
2017         Enable SamplingProfiler on POSIX environment
2018         https://bugs.webkit.org/show_bug.cgi?id=153584
2019
2020         Reviewed by Michael Saboff.
2021
2022         Use __GLIBC__ since mcontext_t layout depends on it.
2023
2024         * wtf/Platform.h:
2025
2026 2016-01-28  Darin Adler  <darin@apple.com>
2027
2028         Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
2029         https://bugs.webkit.org/show_bug.cgi?id=153411
2030
2031         Reviewed by Ryosuke Niwa.
2032
2033         * wtf/text/AtomicString.h: Removed equalIgnoringCase.
2034         Added some overloads for equalIgnoringASCIICase and moved the function bodies to
2035         bottom of the file to make the function declarations easier to read and scan through.
2036         I plan to do this for more of the functions in this class in the future.
2037
2038         * wtf/text/StringCommon.h: Added overloads for equalIgnoringASCIICase,
2039         equalPossiblyIgnoringASCIICase, and a helper named equalIgnoringASCIICaseCommon.
2040         Added an overload for equalLettersIgnoringASCIICase.
2041
2042         * wtf/text/StringImpl.cpp:
2043         (WTF::equalIgnoringCase): Made the few remaining versions of this function private
2044         to this file. Once we get done moving every client that should be using ASCII case
2045         instead to new functions, these will almost certainly be deleted.
2046         (WTF::equalIgnoringASCIICaseNonNull): Tweaked implementation a tiny bit.
2047
2048         * wtf/text/StringImpl.h: Sorted forward declarations at the top of the file.
2049         Fixed some small formatting mistakes. Removed equalIgnoringCase, but left
2050         equalIgnoringCaseNonNull behind for use by CaseFoldingHash until it is replaced
2051         with ASCIICaseFoldingHash. Improved equalIgnoringASCIICase implementation.
2052         Removed unneeded using for equalIgnoringASCIICase now that StringCommon.h takes
2053         care of it.
2054
2055         * wtf/text/StringView.cpp:
2056         (WTF::equalIgnoringASCIICase): Deleted. We no longer pass in the length for this,
2057         so the arguments have changed and the implementation is also now in ASCIICommon.h
2058         so it's an inline in the header file.
2059
2060         * wtf/text/StringView.h: Added an overload of equalIgnoringASCIICase,while
2061         removing another.
2062
2063         * wtf/text/WTFString.h: Removed some unneeded forward delcarations. Fixed formatting
2064         of the type name NSString *. Improved some comments. Removed equalIgnoringCase.
2065         Separated declaration from implementation in a few cases to start making the
2066         function declarations easier to read and scan through. I plan to do more in the future.
2067
2068 2016-01-27  Chris Dumez  <cdumez@apple.com>
2069
2070         window.atob() should ignore spaces in input
2071         https://bugs.webkit.org/show_bug.cgi?id=153522
2072         <rdar://problem/24357822>
2073
2074         Reviewed by Benjamin Poulain.
2075
2076         Turn Base64DecodePolicy enum into flags so that the caller can indicate
2077         to both validate padding AND ignore spaces.
2078
2079         Also make sure that the output Vector size is properly shrunk when
2080         spaces are ignored.
2081
2082         * wtf/text/Base64.cpp:
2083         (WTF::base64DecodeInternal):
2084         (WTF::base64Decode):
2085         (WTF::base64URLDecode):
2086         * wtf/text/Base64.h:
2087
2088 2016-01-27  Alexey Proskuryakov  <ap@apple.com>
2089
2090         Remove ENABLE_CURRENTSRC
2091         https://bugs.webkit.org/show_bug.cgi?id=153545
2092
2093         Reviewed by Simon Fraser.
2094
2095         * wtf/FeatureDefines.h:
2096
2097 2016-01-26  I-Ting Liu  <iting_liu@apple.com>
2098
2099         Implement wildcard matching for plug-in policy host.
2100         https://bugs.webkit.org/show_bug.cgi?id=153090
2101
2102         Reviewed by Darin Adler.
2103
2104         * wtf/text/AtomicString.h:
2105         (WTF::AtomicString::AtomicString):
2106         Add __bridge to allow compilation.
2107
2108 2016-01-26  Joseph Pecoraro  <pecoraro@apple.com>
2109
2110         Generalize ResourceUsageData gathering to be used outside of ResourceUsageOverlay
2111         https://bugs.webkit.org/show_bug.cgi?id=153509
2112         <rdar://problem/24354291>
2113
2114         Reviewed by Andreas Kling.
2115
2116         * wtf/Platform.h:
2117         Rename the ENABLE flag.
2118
2119 2016-01-26  Yusuke Suzuki  <utatane.tea@gmail.com>
2120
2121         Make HashTable iterators STL iterators compatible
2122         https://bugs.webkit.org/show_bug.cgi?id=153512
2123
2124         Reviewed by Alex Christensen.
2125
2126         While r178581 makes many hash table iterators STL compatible, still several iterators are not.
2127         This patch fixes that; inheriting std::iterator correctly to meet STL iterator requirements (like iterator_category etc.)
2128         It could recover Windows build failure.
2129
2130         * wtf/HashTable.h:
2131
2132 2016-01-26  Anders Carlsson  <andersca@apple.com>
2133
2134         BlockPtr needs boolean operators
2135         https://bugs.webkit.org/show_bug.cgi?id=153506
2136
2137         Reviewed by Tim Horton.
2138
2139         * wtf/BlockPtr.h:
2140
2141 2016-01-25  Filip Pizlo  <fpizlo@apple.com>
2142
2143         FTLB3Output should maintain good block order like the LLVM one does
2144         https://bugs.webkit.org/show_bug.cgi?id=152222
2145
2146         Reviewed by Geoffrey Garen.
2147
2148         In the FTL we need to be able to construct a list by inserting elements before other
2149         specific elements. We didn't already have a scalable way to do this, so this adds such a
2150         data structure to WTF. This also has changes to SentinelLinkedList to make it support
2151         these kinds of insertions.
2152
2153         * WTF.xcodeproj/project.pbxproj:
2154         * wtf/OrderMaker.h: Added.
2155         (WTF::OrderMaker::Node::Node):
2156         (WTF::OrderMaker::OrderMaker):
2157         (WTF::OrderMaker::prepend):
2158         (WTF::OrderMaker::append):
2159         (WTF::OrderMaker::insertBefore):
2160         (WTF::OrderMaker::insertAfter):
2161         (WTF::OrderMaker::iterator::iterator):
2162         (WTF::OrderMaker::iterator::operator*):
2163         (WTF::OrderMaker::iterator::operator++):
2164         (WTF::OrderMaker::iterator::operator==):
2165         (WTF::OrderMaker::iterator::operator!=):
2166         (WTF::OrderMaker::begin):
2167         (WTF::OrderMaker::end):
2168         (WTF::OrderMaker::newNode):
2169         * wtf/SentinelLinkedList.h:
2170         (WTF::BasicRawSentinelNode::isOnList):
2171         (WTF::BasicRawSentinelNode<T>::remove):
2172         (WTF::BasicRawSentinelNode<T>::prepend):
2173         (WTF::BasicRawSentinelNode<T>::append):
2174         (WTF::RawNode>::SentinelLinkedList):
2175         (WTF::RawNode>::push):
2176         (WTF::RawNode>::append):
2177         (WTF::RawNode>::remove):
2178         (WTF::RawNode>::prepend):
2179         (WTF::RawNode>::isOnList):
2180
2181 2016-01-25  Alex Christensen  <achristensen@webkit.org>
2182
2183         [Win] Copy forwarding headers before building a project
2184         https://bugs.webkit.org/show_bug.cgi?id=153434
2185
2186         Reviewed by Brent Fulgham.
2187
2188         * wtf/CMakeLists.txt:
2189         * wtf/PlatformWin.cmake:
2190
2191 2016-01-20  Ryosuke Niwa  <rniwa@webkit.org>
2192
2193         HTMLElement::nodeName should not upper case non-ASCII characters
2194         https://bugs.webkit.org/show_bug.cgi?id=153231
2195
2196         Reviewed by Darin Adler.
2197
2198         Added convertToASCIIUppercase to AtomicString, String, and StringImpl. 
2199
2200         * wtf/text/AtomicString.cpp:
2201         (WTF::AtomicString::convertASCIICase): Generalized from convertToASCIILowercase.
2202         (WTF::AtomicString::convertToASCIILowercase):
2203         (WTF::AtomicString::convertToASCIIUppercase):
2204         * wtf/text/AtomicString.h:
2205         * wtf/text/StringImpl.cpp:
2206         (WTF::StringImpl::convertASCIICase): Generalized from convertToASCIILowercase.
2207         (WTF::StringImpl::convertToASCIILowercase):
2208         (WTF::StringImpl::convertToASCIIUppercase):
2209         * wtf/text/StringImpl.h:
2210         * wtf/text/WTFString.cpp:
2211         (WTF::String::convertToASCIIUppercase): Added.
2212         * wtf/text/WTFString.h:
2213
2214 2016-01-22  Chris Dumez  <cdumez@apple.com>
2215
2216         Unreviewed attempt to fix the Windows build after r195452.
2217
2218         * wtf/text/WTFString.h:
2219
2220 2016-01-22  Darin Adler  <darin@apple.com>
2221
2222         Reduce use of equalIgnoringCase to just ignore ASCII case
2223         https://bugs.webkit.org/show_bug.cgi?id=153266
2224
2225         Reviewed by Ryosuke Niwa.
2226
2227         * wtf/ASCIICType.h:
2228         (WTF::isASCIIAlphaCaselessEqual): Loosened the assertion in this function
2229         so it can work with ASCII spaces, numeric digits, and some punctuation.
2230         Commented that we might want to change its name later.
2231
2232         * wtf/Assertions.cpp:
2233         (WTFInitializeLogChannelStatesFromString): Use equalLettersIgnoringASCIICase.
2234
2235         * wtf/text/AtomicString.h:
2236         (WTF::equalLettersIgnoringASCIICase): Added. Calls the version that takes a String.
2237
2238         * wtf/text/StringCommon.h:
2239         (WTF::equalLettersIgnoringASCIICase): Added. Takes a pointer to characters.
2240         (WTF::equalLettersIgnoringASCIICaseCommonWithoutLength): Added.
2241         (WTF::equalLettersIgnoringASCIICaseCommon): Added.
2242
2243         * wtf/text/StringImpl.h:
2244         (WTF::equalLettersIgnoringASCIICase): Added. Calls equalLettersIgnoringASCIICaseCommon.
2245
2246         * wtf/text/StringView.h:
2247         (WTF::equalLettersIgnoringASCIICase): Added. Calls equalLettersIgnoringASCIICaseCommon.
2248
2249         * wtf/text/WTFString.h: Reordered/reformatted a little.
2250         (WTF::equalIgnoringASCIICase): Added. Calls the version that takes a StringImpl.
2251
2252 2016-01-22  Csaba Osztrogonác  <ossy@webkit.org>
2253
2254         Buildfix for older GCCs after r195142
2255         https://bugs.webkit.org/show_bug.cgi?id=153351
2256
2257         Unreviewed buildfix.
2258
2259         * wtf/SystemTracing.h:
2260
2261 2016-01-21  Filip Pizlo  <fpizlo@apple.com>
2262
2263         REGRESSION(r195417): many tests crash
2264         https://bugs.webkit.org/show_bug.cgi?id=153316
2265
2266         Reviewed by Saam Barati.
2267
2268         This rolls out the StdLibExtras.h change, and simplifies RangeSet to not use binary search.
2269         That's fine for now, since B3 doesn't stress RangeSet enough right now.
2270
2271         * wtf/RangeSet.h:
2272         (WTF::RangeSet::contains):
2273         (WTF::RangeSet::overlaps):
2274         (WTF::RangeSet::clear):
2275         (WTF::RangeSet::findRange):
2276         * wtf/StdLibExtras.h:
2277         (WTF::binarySearchImpl):
2278         (WTF::binarySearch):
2279         (WTF::tryBinarySearch):
2280         (WTF::approximateBinarySearch):
2281
2282 2016-01-21  Filip Pizlo  <fpizlo@apple.com>
2283
2284         B3 should have load elimination
2285         https://bugs.webkit.org/show_bug.cgi?id=153288
2286
2287         Reviewed by Geoffrey Garen.
2288
2289         I needed a way to track sets of ranges, where there is a high likelihood that all of the
2290         ranges overlap. So I created RangeSet. It's a usually-sorted list of coalesced ranges.
2291         Practically this means that right now, FTL B3 will end up with two kinds of range sets: a set
2292         that just contains top and a set that contains nothing. In the future, most sets will either
2293         be top of empty but some of them will contain a handful of other things.
2294
2295         * WTF.xcodeproj/project.pbxproj:
2296         * wtf/CMakeLists.txt:
2297         * wtf/MathExtras.h:
2298         (WTF::leftShiftWithSaturation):
2299         (WTF::nonEmptyRangesOverlap):
2300         (WTF::rangesOverlap):
2301         * wtf/RangeSet.h: Added.
2302         (WTF::RangeSet::RangeSet):
2303         (WTF::RangeSet::~RangeSet):
2304         (WTF::RangeSet::add):
2305         (WTF::RangeSet::contains):
2306         (WTF::RangeSet::overlaps):
2307         (WTF::RangeSet::clear):
2308         (WTF::RangeSet::dump):
2309         (WTF::RangeSet::dumpRaw):
2310         (WTF::RangeSet::compact):
2311         (WTF::RangeSet::overlapsNonEmpty):
2312         (WTF::RangeSet::subsumesNonEmpty):
2313         (WTF::RangeSet::findRange):
2314         * wtf/StdLibExtras.h:
2315         (WTF::binarySearchImpl):
2316         (WTF::binarySearch):
2317         (WTF::tryBinarySearch):
2318         (WTF::approximateBinarySearch):
2319
2320 2016-01-19  Ada Chan  <adachan@apple.com>
2321
2322         Make it possible to enable VIDEO_PRESENTATION_MODE on other Cocoa platforms.
2323         https://bugs.webkit.org/show_bug.cgi?id=153218
2324
2325         Reviewed by Eric Carlson.
2326
2327         * wtf/Platform.h:
2328
2329 2016-01-19  Filip Pizlo  <fpizlo@apple.com>
2330
2331         B3 should have basic path specialization
2332         https://bugs.webkit.org/show_bug.cgi?id=153200
2333
2334         Reviewed by Benjamin Poulain.
2335
2336         * wtf/GraphNodeWorklist.h:
2337         (WTF::GraphNodeWorklist::push):
2338         (WTF::GraphNodeWorklist::pushAll):
2339         (WTF::GraphNodeWorklist::isEmpty):
2340         (WTF::GraphNodeWorklist::notEmpty):
2341
2342 2016-01-20  Said Abou-Hallawa  <sabouhallawa@apple.com>
2343
2344         Refactor AtomicStringKeyedMRUCache to be a generic LRU cache
2345         https://bugs.webkit.org/show_bug.cgi?id=153109
2346
2347         Reviewed by Darin Adler.
2348
2349         Refactor AtomicStringKeyedMRUCache, move it to WTF project and rename it
2350         to be TinyLRUCache. Define another template and call it TinyLRUCachePolicy.
2351         This one can be overridden for different keys and values. Its function is 
2352         creating the cached values.
2353
2354         * WTF.xcodeproj/project.pbxproj:
2355         * wtf/TinyLRUCache.h: Added.
2356         (WebCore::TinyLRUCachePolicy::isKeyNull):
2357         (WebCore::TinyLRUCachePolicy::createValueForNullKey):
2358         (WebCore::TinyLRUCachePolicy::createValueForKey):
2359         (WebCore::TinyLRUCache::get):
2360
2361 2016-01-19  Saam barati  <sbarati@apple.com>
2362
2363         WTF::Bag should be non-copyable
2364         https://bugs.webkit.org/show_bug.cgi?id=153253
2365
2366         Reviewed by Filip Pizlo.
2367
2368         * wtf/Bag.h:
2369         * wtf/SegmentedVector.h:
2370         (WTF::SegmentedVector::append):
2371         (WTF::SegmentedVector::alloc):
2372
2373 2016-01-19  Enrica Casucci  <enrica@apple.com>
2374
2375         Add support for DataDetectors in WK (iOS).
2376         https://bugs.webkit.org/show_bug.cgi?id=152989
2377         rdar://problem/22855960
2378
2379         Reviewed by Tim Horton.
2380
2381         Adding feature definition for data detection.
2382
2383         * wtf/FeatureDefines.h:
2384
2385 2016-01-19  Commit Queue  <commit-queue@webkit.org>
2386
2387         Unreviewed, rolling out r195300.
2388         https://bugs.webkit.org/show_bug.cgi?id=153244
2389
2390         enrica wants more time to fix Windows (Requested by thorton on
2391         #webkit).
2392
2393         Reverted changeset:
2394
2395         "Add support for DataDetectors in WK (iOS)."
2396         https://bugs.webkit.org/show_bug.cgi?id=152989
2397         http://trac.webkit.org/changeset/195300
2398
2399 2016-01-19  Chris Dumez  <cdumez@apple.com>
2400
2401         Unreviewed, rolling out r195141.
2402
2403         Seems to cause crashes on iOS9 64bit
2404
2405         Reverted changeset:
2406
2407         "Fragmentation-free allocator for timeless and/or coupled
2408         allocations."
2409         https://bugs.webkit.org/show_bug.cgi?id=152696
2410         http://trac.webkit.org/changeset/195141
2411
2412 2016-01-19  Enrica Casucci  <enrica@apple.com>
2413
2414         Add support for DataDetectors in WK (iOS).
2415         https://bugs.webkit.org/show_bug.cgi?id=152989
2416         rdar://problem/22855960
2417
2418         Reviewed by Tim Horton.
2419
2420         Adding feature definition for data detection.
2421
2422         * wtf/FeatureDefines.h:
2423
2424 2016-01-17  Filip Pizlo  <fpizlo@apple.com>
2425
2426         FTL B3 should be just as fast as FTL LLVM on Octane/crypto
2427         https://bugs.webkit.org/show_bug.cgi?id=153113
2428
2429         Reviewed by Saam Barati.
2430
2431         * wtf/IndexSparseSet.h:
2432         (WTF::IndexSparseSet<OverflowHandler>::IndexSparseSet):
2433         (WTF::IndexSparseSet<OverflowHandler>::add):
2434         (WTF::IndexSparseSet<OverflowHandler>::remove):
2435         * wtf/StringPrintStream.h:
2436         (WTF::StringPrintStream::length):
2437
2438 2016-01-17  Michael Catanzaro  <mcatanzaro@igalia.com>
2439
2440         [CMake] Do not build bmalloc when USE_SYSTEM_MALLOC is ON
2441         https://bugs.webkit.org/show_bug.cgi?id=153190
2442
2443         Reviewed by Csaba Osztrogonác.
2444
2445         Build bmalloc when NOT USE_SYSTEM_MALLOC rather than when NOT WIN32.
2446
2447         * wtf/CMakeLists.txt:
2448
2449 2016-01-15  Simon Fraser  <simon.fraser@apple.com>
2450
2451         Add kdebug_trace signposts for a few WebCore operations
2452         https://bugs.webkit.org/show_bug.cgi?id=153136
2453         rdar://problem/24208487
2454
2455         Reviewed by Sam Weinig.
2456         
2457         New header with the reserved WebKit component code, trace point codes, and
2458         a stack-based helper that traces scope entry and exit.
2459         
2460         The available range of trace point codes is arbitrarily segmented into WTF, JSC,
2461         WebCore, WebKit and WebKit2.
2462
2463         * WTF.xcodeproj/project.pbxproj:
2464         * wtf/CMakeLists.txt:
2465         * wtf/SystemTracing.h: Added.
2466         (WTF::TraceScope::TraceScope):
2467         (WTF::TraceScope::~TraceScope):
2468
2469 2016-01-15  Andreas Kling  <akling@apple.com>
2470
2471         Fragmentation-free allocator for timeless and/or coupled allocations.
2472         <https://webkit.org/b/152696>
2473
2474         Reviewed by Antti Koivisto.
2475
2476         Introduce BumpArena, a space-efficient memory allocator for situations where
2477         you feel pretty confident betting on allocation lifetimes.
2478
2479         Basic design:
2480
2481             - Reserves 128MB range of memory at startup.
2482             - Allocates 4kB-aligned blocks of 4kB from VM at a time.
2483             - Bump-pointer allocates out of a block until it reaches end.
2484             - Each allocation increments the ref-count of its block.
2485             - Each deallocation decrements the ref-count of its block.
2486             - Transparently falls back to fastMalloc()/fastFree() when needed.
2487
2488         Interface:
2489
2490             - BumpArena::create()
2491
2492                 Create your very own BumpArena!
2493
2494             - BumpArena::allocate(BumpArena* arena, size_t size)
2495
2496                 Allocates 'size' bytes of memory from 'arena'.
2497                 If 'arena' is null, falls back to fastMalloc().
2498
2499             - BumpArena::deallocate(void* ptr)
2500
2501                 If 'ptr' is BumpArena allocation, decrements block ref-count.
2502                 If 'ptr' is FastMalloc allocation, calls fastFree() on it.
2503
2504             - WTF_MAKE_BUMPARENA_ALLOCATED;
2505
2506                 Macro that gives a class or struct custom operators new and delete
2507                 for allocation out of BumpArena. Just like WTF_MAKE_FAST_ALLOCATED;
2508
2509         Note that while the name of this patch says "fragmentation-free allocator"
2510         it will only be fragmentation-free when used for appropriate things.
2511         This is not meant to be a general-purpose allocator. Only use it for sets of
2512         allocations that are known to die roughly at the same time.
2513
2514         BumpArena will never resume allocating from a block that has been filled,
2515         so it's even more important than usual that everything gets deallocated.
2516
2517         BumpArena redirects allocations to FastMalloc in three cases:
2518
2519             - When invoked with a null BumpArena*
2520             - When allocation request is larger than BumpArena's block size (4kB)
2521             - When BumpArena has exhausted all of its pre-reserved VM. (128MB)
2522
2523         The VM allocator will eagerly return blocks of VM to the kernel by calling
2524         madvise(). Average time spent in madvise is around 0.007ms on my box.
2525
2526         * WTF.vcxproj/WTF.vcxproj:
2527         * WTF.vcxproj/WTF.vcxproj.filters:
2528         * WTF.xcodeproj/project.pbxproj:
2529         * wtf/BumpArena.cpp: Added.
2530         (WTF::BumpArena::Block::capacity):
2531         (WTF::BumpArena::Block::arena):
2532         (WTF::BumpArena::Block::payloadStart):
2533         (WTF::arenas):
2534         (WTF::BumpArena::Block::Block):
2535         (WTF::BumpArena::Block::~Block):
2536         (WTF::BumpArena::Block::ref):
2537         (WTF::BlockAllocator::BlockAllocator):
2538         (WTF::BlockAllocator::isAllocation):
2539         (WTF::blockAllocator):
2540         (WTF::BlockAllocator::allocateBlock):
2541         (WTF::BlockAllocator::deallocateBlock):
2542         (WTF::BumpArena::Block::deref):
2543         (WTF::BumpArena::Block::create):
2544         (WTF::BumpArena::Block::dump):
2545         (WTF::BumpArena::dump):
2546         (WTF::BumpArena::create):
2547         (WTF::BumpArena::BumpArena):
2548         (WTF::BumpArena::~BumpArena):
2549         (WTF::BumpArena::allocateSlow):
2550         (WTF::BumpArena::allocate):
2551         (WTF::BumpArena::deallocate):
2552         (WTF::BumpArena::Block::blockFor):
2553         (WTF::BumpArena::arenaFor):
2554         * wtf/BumpArena.h: Added.
2555         * wtf/CMakeLists.txt:
2556
2557 2016-01-15  Konstantin Tokarev  <annulen@yandex.ru>
2558
2559         [EFL] WorkQueue methods should be defined inside WTF namespace.
2560         https://bugs.webkit.org/show_bug.cgi?id=153097
2561
2562         Reviewed by Gyuyoung Kim.
2563
2564         * wtf/efl/WorkQueueEfl.cpp:
2565
2566 2016-01-14  Chris Dumez  <cdumez@apple.com>
2567
2568         Unreviewed, rolling out r195035.
2569
2570         Caused 1-3% PLT regression on iOS
2571
2572         Reverted changeset:
2573
2574         "Part 2/2: Stop using USE(CFNETWORK) path on iOS"
2575         https://bugs.webkit.org/show_bug.cgi?id=142540
2576         http://trac.webkit.org/changeset/195035
2577
2578 2016-01-14  David Kilzer  <ddkilzer@apple.com>
2579
2580         Part 2/2: Stop using USE(CFNETWORK) path on iOS
2581         <https://webkit.org/b/142540>
2582
2583         Original patch by Antti Koivisto <antti@apple.com> on 2015-03-10
2584         Reviewed by Chris Dumez.
2585
2586         * wtf/Platform.h: Turn off USE(CFNETWORK) for PLATFORM(IOS).
2587
2588 2016-01-14  Per Arne Vollan  <peavo@outlook.com>
2589
2590         [Win] Remove workarounds for fixed bugs in fmod and pow.
2591         https://bugs.webkit.org/show_bug.cgi?id=153071
2592
2593         Reviewed by Brent Fulgham.
2594
2595         The bugs have been fixed in the MSVC CRT, and we can remove the workarounds.
2596
2597         * wtf/MathExtras.h:
2598         (wtf_fmod): Deleted.
2599         (wtf_pow): Deleted.
2600
2601 2016-01-13  Commit Queue  <commit-queue@webkit.org>
2602
2603         Unreviewed, rolling out r194963.
2604         https://bugs.webkit.org/show_bug.cgi?id=153079
2605
2606         This change causes ASan tests to crash and exit early
2607         (Requested by ryanhaddad on #webkit).
2608
2609         Reverted changeset:
2610
2611         "Fragmentation-free allocator for timeless and/or coupled
2612         allocations."
2613         https://bugs.webkit.org/show_bug.cgi?id=152696
2614         http://trac.webkit.org/changeset/194963
2615
2616 2016-01-13  Andreas Kling  <akling@apple.com>
2617
2618         Fragmentation-free allocator for timeless and/or coupled allocations.
2619         <https://webkit.org/b/152696>
2620
2621         Reviewed by Antti Koivisto.
2622
2623         Introduce BumpArena, a space-efficient memory allocator for situations where
2624         you feel pretty confident betting on allocation lifetimes.
2625
2626         Basic design:
2627
2628             - Allocates 4kB-aligned blocks of 4kB from bmalloc at a time.
2629             - Bump-pointer allocates out of a block until it reaches end.
2630             - Each allocation increments the ref-count of its block.
2631             - Each deallocation decrements the ref-count of its block.
2632
2633         Interface:
2634
2635             - BumpArena::create()
2636
2637                 Create your very own BumpArena!
2638
2639             - BumpArena::allocate(BumpArena* arena, size_t size)
2640
2641                 Allocates 'size' bytes of memory from 'arena'.
2642                 If 'arena' is null, allocation comes out of the shared global BumpArena.
2643
2644             - BumpArena::deallocate(void* ptr)
2645
2646                 Deallocates 'ptr', decrementing the ref-count of its block.
2647
2648             - WTF_MAKE_BUMPARENA_ALLOCATED;
2649
2650                 Macro that gives a class or struct custom operators new and delete
2651                 for allocation out of BumpArena. Just like WTF_MAKE_FAST_ALLOCATED;
2652
2653         Note that while the name of this patch says "fragmentation-free allocator"
2654         it will only be fragmentation-free when used for appropriate things.
2655         This is not meant to be a general-purpose allocator. Only use it for sets of
2656         allocations that are known to die roughly at the same time.
2657
2658         BumpArena will never resume allocating from a block that has been filled,
2659         so it's even more important than usual that everything gets deallocated.
2660
2661         As noted above, calling allocate() with a null BumpArena will allocate out
2662         of a global shared arena. Ideally you're always allocating out of a specific,
2663         controlled arena, but there are situations where you may not have one.
2664
2665         * WTF.vcxproj/WTF.vcxproj:
2666         * WTF.vcxproj/WTF.vcxproj.filters:
2667         * WTF.xcodeproj/project.pbxproj:
2668         * wtf/BumpArena.cpp: Added.
2669         (WTF::BumpArena::Block::defaultCapacity):
2670         (WTF::BumpArena::Block::arena):
2671         (WTF::BumpArena::Block::payloadStart):
2672         (WTF::globalArena):
2673         (WTF::arenas):
2674         (WTF::BumpArena::Block::Block):
2675         (WTF::BumpArena::Block::~Block):
2676         (WTF::BumpArena::Block::ref):
2677         (WTF::BumpArena::Block::deref):
2678         (WTF::BumpArena::Block::create):
2679         (WTF::BumpArena::Block::dump):
2680         (WTF::BumpArena::dump):
2681         (WTF::BumpArena::create):
2682         (WTF::BumpArena::BumpArena):
2683         (WTF::BumpArena::~BumpArena):
2684         (WTF::BumpArena::allocateSlow):
2685         (WTF::BumpArena::allocate):
2686         (WTF::BumpArena::deallocate):
2687         (WTF::BumpArena::Block::blockFor):
2688         (WTF::BumpArena::arenaFor):
2689         * wtf/BumpArena.h: Added.
2690         * wtf/CMakeLists.txt:
2691
2692 2016-01-08  Andy Estes  <aestes@apple.com>
2693
2694         [Content Filtering] Lazily load platform frameworks
2695         https://bugs.webkit.org/show_bug.cgi?id=152881
2696         rdar://problem/23270886
2697
2698         Reviewed by Brady Eidson.
2699
2700         * wtf/Platform.h: Moved definition of HAVE_NETWORK_EXTENSION to here from WebCore/platform/cocoa/NetworkExtensionContentFilter.h.
2701
2702 2016-01-12  Ryosuke Niwa  <rniwa@webkit.org>
2703
2704         Add a build flag for custom element
2705         https://bugs.webkit.org/show_bug.cgi?id=153005
2706
2707         Reviewed by Alex Christensen.
2708
2709         * wtf/FeatureDefines.h:
2710
2711 2016-01-11  Andreas Kling  <akling@apple.com>
2712
2713         NeverDestroyed should relax adoption requirements on all RefCountedBase subclasses.
2714         <https://webkit.org/b/152960>
2715
2716         Reviewed by Antti Koivisto.
2717
2718         Instead of relaxing on subclasses of RefCounted<T>, relax on subclasses of RefCountedBase.
2719         This allows e.g NeverDestroyed<CSSPrimitiveValue> to relax its pointee despite the class
2720         hierarchy starting with RefCounted<CSSValue> (not RefCounted<CSSPrimitiveValue>.)
2721
2722         * wtf/NeverDestroyed.h:
2723
2724 2016-01-10  Saam barati  <sbarati@apple.com>
2725
2726         Implement a sampling profiler
2727         https://bugs.webkit.org/show_bug.cgi?id=151713
2728
2729         Reviewed by Filip Pizlo.
2730
2731         * wtf/MetaAllocator.cpp:
2732         (WTF::MetaAllocator::decrementPageOccupancy):
2733         (WTF::MetaAllocator::isInAllocatedMemory):
2734         (WTF::MetaAllocator::roundUp):
2735         * wtf/MetaAllocator.h:
2736         (WTF::MetaAllocator::getLock):
2737         * wtf/Platform.h:
2738
2739 2016-01-10  Filip Pizlo  <fpizlo@apple.com>
2740
2741         It should be possible to run liveness over registers without also tracking Tmps
2742         https://bugs.webkit.org/show_bug.cgi?id=152963
2743
2744         Reviewed by Saam Barati.
2745
2746         Add set methods (add/contains/remove) to BitVector, since it gets used as a set in a lot of
2747         places. This also makes BitVector a drop-in replacement for HashSet<unsigned> in a lot of
2748         places.
2749
2750         Also made the iterator methods of BitVector live on BitVector directly rather than behind the
2751         thing returned from setBits(). This makes sense since that makes BitVector even more of a
2752         drop-in for HashSet. It's not harmful since we've never added any other mode of iterating a
2753         BitVector other than this, so it doesn't make sense to make it harder to access.
2754
2755         * wtf/BitVector.h:
2756         (WTF::BitVector::get):
2757         (WTF::BitVector::contains):
2758         (WTF::BitVector::set):
2759         (WTF::BitVector::add):
2760         (WTF::BitVector::ensureSizeAndSet):
2761         (WTF::BitVector::clear):
2762         (WTF::BitVector::remove):
2763         (WTF::BitVector::hash):
2764         (WTF::BitVector::iterator::iterator):
2765         (WTF::BitVector::iterator::operator*):
2766         (WTF::BitVector::iterator::operator++):
2767         (WTF::BitVector::iterator::operator==):
2768         (WTF::BitVector::iterator::operator!=):
2769         (WTF::BitVector::begin):
2770         (WTF::BitVector::end):
2771         (WTF::BitVector::bitsInPointer):
2772         (WTF::BitVector::SetBitsIterable::SetBitsIterable): Deleted.
2773         (WTF::BitVector::SetBitsIterable::iterator::iterator): Deleted.
2774         (WTF::BitVector::SetBitsIterable::iterator::operator*): Deleted.
2775         (WTF::BitVector::SetBitsIterable::iterator::operator++): Deleted.
2776         (WTF::BitVector::SetBitsIterable::iterator::operator==): Deleted.
2777         (WTF::BitVector::SetBitsIterable::iterator::operator!=): Deleted.
2778         (WTF::BitVector::SetBitsIterable::begin): Deleted.
2779         (WTF::BitVector::SetBitsIterable::end): Deleted.
2780         (WTF::BitVector::setBits): Deleted.
2781
2782 2016-01-09  Andreas Kling  <akling@apple.com>
2783
2784         Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL
2785         <https://webkit.org/b/152902>
2786
2787         Reviewed by Anders Carlsson.
2788
2789         Mostly mechanical conversion to NeverDestroyed throughout WTF.
2790
2791         * wtf/RunLoop.cpp:
2792         (WTF::RunLoop::current):
2793         * wtf/ThreadingPthreads.cpp:
2794         (WTF::threadMapMutex):
2795         (WTF::threadMap):
2796
2797 2016-01-08  Anders Carlsson  <andersca@apple.com>
2798
2799         Nullopt and InPlace should be structs, not enum values
2800         https://bugs.webkit.org/show_bug.cgi?id=152915
2801
2802         Reviewed by Andreas Kling.
2803
2804         Without this, 
2805
2806         Optional<int> o = flag ? 1 : Nullopt;
2807
2808         would cause Nullopt to be treated as an integer, causing o to be initialized to 0,
2809         instead of Nullopt. With this change, the above code now causes a compile error.
2810
2811         Also, get rid of the CONSTEXPR macro since all compilers support constexpr properly,
2812         and add a WTF::makeOptional to match the current iteration of std::experimental::optional.
2813
2814         * wtf/Compiler.h:
2815         * wtf/Forward.h:
2816         * wtf/Optional.h:
2817         (WTF::NulloptTag::NulloptTag):
2818         (WTF::makeOptional):
2819         * wtf/StdLibExtras.h:
2820         (std::literals::chrono_literals::operator _s):
2821         (std::literals::chrono_literals::operator _ms):
2822         (std::move):
2823
2824 2016-01-06  Anders Carlsson  <andersca@apple.com>
2825
2826         Add a smart block pointer
2827         https://bugs.webkit.org/show_bug.cgi?id=152799
2828
2829         Reviewed by Tim Horton.
2830
2831         Introduce WTF::BlockPtr, a smart block pointer.
2832
2833         * WTF.xcodeproj/project.pbxproj:
2834         * wtf/BlockPtr.h: Added.
2835         (WTF::makeBlockPtr):
2836
2837 2016-01-04  Carlos Garcia Campos  <cgarcia@igalia.com>
2838
2839         [GTK] Allow to save and restore session
2840         https://bugs.webkit.org/show_bug.cgi?id=115600
2841
2842         Reviewed by Michael Catanzaro.
2843
2844         Add GVariantIter specialization of GUniquePtr.
2845
2846         * wtf/glib/GTypedefs.h:
2847         * wtf/glib/GUniquePtr.h:
2848
2849 2016-01-04  Tim Horton  <timothy_horton@apple.com>
2850
2851         Turn on gesture events when building for Yosemite
2852         https://bugs.webkit.org/show_bug.cgi?id=152704
2853         rdar://problem/24042472
2854
2855         Reviewed by Anders Carlsson.
2856
2857         * wtf/FeatureDefines.h:
2858
2859 2016-01-04  Benjamin Poulain  <bpoulain@apple.com>
2860
2861         [JSC] Build B3 by default on iOS ARM64
2862         https://bugs.webkit.org/show_bug.cgi?id=152525
2863
2864         Reviewed by Filip Pizlo.
2865
2866         * wtf/Platform.h:
2867
2868 2016-01-03  Andreas Kling  <akling@apple.com>
2869
2870         Unreviewed, rolling out r194510.
2871
2872         Broke 2 API tests, no time to investigate right now
2873
2874         Reverted changeset:
2875
2876         "StringBuilder often creates two StringImpls."
2877         https://bugs.webkit.org/show_bug.cgi?id=152662
2878         http://trac.webkit.org/changeset/194510
2879
2880 2016-01-03  Khem Raj  <raj.khem@gmail.com>
2881
2882         WebKit fails to build with musl libc library
2883         https://bugs.webkit.org/show_bug.cgi?id=152625
2884
2885         Reviewed by Daniel Bates.
2886
2887         Disable ctype.h check for musl C library on Linux.
2888         Enable backtrace on Linux when using glibc.
2889         We don't have backtrace() implemented on non-glibc system
2890         C libraries on Linux e.g. musl.
2891
2892         * wtf/DisallowCType.h: Check for __GLIBC__.
2893         * wtf/Assertions.cpp:
2894         (WTFGetBacktrace): Check if libc is glibc.
2895
2896 2016-01-03  Andreas Kling  <akling@apple.com>
2897
2898         StringBuilder often creates two StringImpls.
2899         <https://webkit.org/b/152662>
2900
2901         Reviewed by Anders Carlsson.
2902
2903         If StringBuilder didn't manage to guess the exact final length of the
2904         string being built, it would still keep the buffer around, and the final
2905         build process would then return a substring into that buffer.
2906
2907         This effectively yielded two StringImpls instead of one, with the substring
2908         retaining the longer buffer StringImpl.
2909
2910         This patch improves the situation by having StringImpl crop the buffer's
2911         m_length field to the final built string length. That way we never have to
2912         return a substring.
2913
2914         * wtf/text/StringBuilder.cpp:
2915         (WTF::StringBuilder::reifyString):
2916         * wtf/text/StringImpl.h:
2917
2918 2016-01-03  Andreas Kling  <akling@apple.com>
2919
2920         Remove redundant StringImpl substring creation function.
2921         <https://webkit.org/b/152652>
2922
2923         Reviewed by Daniel Bates.
2924
2925         Remove StringImpl::createSubstringSharingImpl8() and make the only
2926         caller use createSubstringSharingImpl() instead.
2927         
2928         They do the same thing anyway, the only difference is that the branch
2929         on is8Bit() now happens in the callee instead of at the call site.
2930
2931         * wtf/text/StringImpl.h:
2932         (WTF::StringImpl::createSubstringSharingImpl8): Deleted.
2933
2934 2015-12-31  Andy Estes  <aestes@apple.com>
2935
2936         Replace WTF::move with WTFMove
2937         https://bugs.webkit.org/show_bug.cgi?id=152601
2938
2939         Reviewed by Brady Eidson.
2940
2941         This also removes the definition of WTF::move.
2942
2943         * wtf/Deque.h:
2944         * wtf/HashMap.h:
2945         * wtf/HashSet.h:
2946         * wtf/HashTable.h:
2947         (WTF::HashTable::add):
2948         (WTF::KeyTraits>::HashTable):
2949         * wtf/Insertion.h:
2950         (WTF::executeInsertions):
2951         * wtf/IteratorAdaptors.h:
2952         (WTF::FilterIterator::FilterIterator):
2953         (WTF::TransformIterator::TransformIterator):
2954         (WTF::makeTransformIterator):
2955         * wtf/IteratorRange.h:
2956         (WTF::IteratorRange::IteratorRange):
2957         * wtf/ListHashSet.h:
2958         (WTF::U>::takeFirst):
2959         (WTF::U>::takeLast):
2960         * wtf/MainThread.cpp:
2961         (WTF::callOnMainThread):
2962         * wtf/MallocPtr.h:
2963         (WTF::MallocPtr::operator=):
2964         * wtf/MessageQueue.h:
2965         (WTF::MessageQueue<DataType>::append):
2966         (WTF::MessageQueue<DataType>::appendAndKill):
2967         (WTF::MessageQueue<DataType>::appendAndCheckEmpty):
2968         (WTF::MessageQueue<DataType>::prepend):
2969         * wtf/NakedPtr.h:
2970         (WTF::=):
2971         * wtf/OSObjectPtr.h:
2972         (WTF::OSObjectPtr::operator=):
2973         * wtf/Optional.h:
2974         (WTF::Optional::Optional):
2975         (WTF::Optional::operator=):
2976         * wtf/RefPtr.h:
2977         (WTF::=):
2978         * wtf/RetainPtr.h:
2979         (WTF::=):
2980         * wtf/RunLoop.cpp:
2981         (WTF::RunLoop::dispatch):
2982         * wtf/SharedTask.h:
2983         (WTF::createSharedTask):
2984         * wtf/StdLibExtras.h:
2985         (WTF::move): Deleted.
2986         * wtf/Threading.cpp:
2987         (WTF::threadEntryPoint):
2988         (WTF::createThread):
2989         * wtf/Vector.h:
2990         (WTF::Vector::takeLast):
2991         * wtf/efl/DispatchQueueEfl.cpp:
2992         (DispatchQueue::dispatch):
2993         (DispatchQueue::setSocketEventHandler):
2994         (DispatchQueue::performTimerWork):
2995         (DispatchQueue::insertTimerWorkItem):
2996         * wtf/efl/DispatchQueueWorkItemEfl.h:
2997         (WorkItem::WorkItem):
2998         (TimerWorkItem::create):
2999         (TimerWorkItem::TimerWorkItem):
3000         * wtf/efl/WorkQueueEfl.cpp:
3001         (WorkQueue::registerSocketEventHandler):
3002         (WorkQueue::dispatch):
3003         (WorkQueue::dispatchAfter):
3004         * wtf/glib/GRefPtr.h:
3005         (WTF::=):
3006         * wtf/glib/WorkQueueGLib.cpp:
3007         (WTF::DispatchAfterContext::DispatchAfterContext):
3008         (WTF::WorkQueue::dispatchAfter):
3009         * wtf/text/AtomicString.h:
3010         (WTF::AtomicString::AtomicString):
3011         (WTF::AtomicString::operator=):
3012         * wtf/text/StringConcatenate.h:
3013         (WTF::tryMakeString):
3014         * wtf/text/WTFString.cpp:
3015         (WTF::String::isolatedCopy):
3016         * wtf/text/WTFString.h:
3017         (WTF::String::String):
3018         (WTF::StringCapture::releaseString):
3019         * wtf/win/GDIObject.h:
3020         (WTF::=):
3021
3022 2015-12-31  David Kilzer  <ddkilzer@apple.com>
3023
3024         Stop using USE(CFNETWORK) path on iOS
3025         <https://webkit.org/b/142540>
3026
3027         Step 1/2: Do everything but turn off USE(CFNETWORK) internally.
3028
3029         Original patch by Antti Koivisto <antti@apple.com> on 2015-03-10
3030         Reviewed by Daniel Bates.
3031
3032         * wtf/SchedulePair.h: Update macros to match WebCore.
3033
3034 2015-12-31  Andy Estes  <aestes@apple.com>
3035
3036         Rename WTF_MOVE to WTFMove
3037         https://bugs.webkit.org/show_bug.cgi?id=152601
3038
3039         Reviewed by Daniel Bates.
3040
3041         Our coding style guidelines say that macros that expand to function calls should be named like functions,
3042         so WTFMove() is a more appropriate name.
3043
3044         * wtf/StdLibExtras.h:
3045
3046 2015-12-30  Andy Estes  <aestes@apple.com>
3047
3048         Use of WTF::move prevents clang's move diagnostics from warning about several classes of mistakes
3049         https://bugs.webkit.org/show_bug.cgi?id=152601
3050
3051         Reviewed by Brady Eidson.
3052
3053         Clang has recently added warnings to catch certain classes of mistakes with the use of std::move():
3054         -Wpessimizing-move (warns if moving prevents copy elision), -Wredundant-move (warns if a move is redundant),
3055         and -Wself-move (warns if moving to self). Enabling these warnings manually (by renaming WTF::move to std::move)
3056         have caught numerous mistakes in our codebase (see http://trac.webkit.org/changeset/194428).
3057
3058         It would be nice to be able to take advantage of these warnings, but doing so requires that we use std::move,
3059         not WTF::move. But since WTF::move does provide useful checks for which clang does not yet have warnings,
3060         we should write a best-of-both-worlds move function.
3061
3062         This patch adds a function that satisfies clang's criteria for a move function (in namespace std, named "move",
3063         and takes a single argument) but also retains WTF::move's compile-time checks. It also adds a convenience macro
3064         called WTF_MOVE for use by callers.
3065
3066         * wtf/StdLibExtras.h:
3067         (std::move):
3068
3069 2015-12-25  Andy Estes  <aestes@apple.com>
3070
3071         Stop moving local objects in return statements
3072         https://bugs.webkit.org/show_bug.cgi?id=152557
3073
3074         Reviewed by Brady Eidson.
3075
3076         * wtf/StdLibExtras.h: Added a FIXME about how using WTF::move() prevents several Clang diagnostics from emitting useful warnings.
3077
3078 2015-12-22  Filip Pizlo  <fpizlo@apple.com>
3079
3080         FTL B3 should be able to run richards
3081         https://bugs.webkit.org/show_bug.cgi?id=152514
3082
3083         Reviewed by Michael Saboff.
3084
3085         Change the list dumping helpers to work with a broader set of list kinds.
3086
3087         * wtf/ListDump.h:
3088         (WTF::ListDump::dump):
3089         (WTF::MapDump::dump):
3090         (WTF::sortedMapDump):
3091         (WTF::ListDumpInContext::dump):
3092
3093 2015-12-22  Filip Pizlo  <fpizlo@apple.com>
3094
3095         FTL B3 does not logicalNot correctly
3096         https://bugs.webkit.org/show_bug.cgi?id=152512
3097
3098         Reviewed by Saam Barati.
3099
3100         This change introduces yet another use of SharedTask in JSC. While doing this, I noticed that
3101         SharedTask::run() always demands that whatever arguments the callback takes, they must be
3102         passed as rvalue references. This was a clear misuse of perfect forwarding. This change makes
3103         SharedTask's approach to forwarding match what we were already doing in ScopedLambda.
3104
3105         * wtf/SharedTask.h:
3106
3107 2015-12-20  Michael Catanzaro  <mcatanzaro@igalia.com>
3108
3109         [SOUP] Performs DNS prefetch when a proxy is configured (information leak)
3110         https://bugs.webkit.org/show_bug.cgi?id=145542
3111
3112         Reviewed by Darin Adler.
3113
3114         Specialize GUniquePtr<char*>, using g_strfreev.
3115
3116         * wtf/glib/GUniquePtr.h:
3117
3118 2015-12-19  Dan Bernstein  <mitz@apple.com>
3119
3120         [Mac] WebKit contains dead source code for OS X Mavericks and earlier
3121         https://bugs.webkit.org/show_bug.cgi?id=152462
3122
3123         Reviewed by Alexey Proskuryakov.
3124
3125         * Configurations/DebugRelease.xcconfig: Removed definition of MACOSX_DEPLOYMENT_TARGET for
3126           OS X 10.9.
3127
3128         - Simplified expressions involving __MAC_OS_X_VERSION_MIN_REQUIRED and removed code that was
3129           never getting compiled:
3130
3131         * wtf/FeatureDefines.h:
3132         * wtf/MainThread.h:
3133         * wtf/OSObjectPtr.h:
3134         * wtf/Platform.h:
3135         * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
3136         * wtf/spi/darwin/XPCSPI.h:
3137
3138 2015-12-17  Sukolsak Sakshuwong  <sukolsak@gmail.com>
3139
3140         [INTL] Implement Collator Compare Functions
3141         https://bugs.webkit.org/show_bug.cgi?id=147604
3142
3143         Reviewed by Darin Adler.
3144
3145         * wtf/unicode/Collator.h:
3146
3147 2015-12-16  Andreas Kling  <akling@apple.com>
3148
3149         Give kernel VM some hints about non-live memory-cached resources.
3150         <https://webkit.org/b/152362>
3151
3152         Reviewed by Geoffrey Garen.
3153
3154         Add an API to OSAllocator for hinting to the OS that a range of memory
3155         is not expected to be used anytime soon.
3156
3157         * wtf/OSAllocator.h:
3158         * wtf/OSAllocatorPosix.cpp:
3159         (WTF::OSAllocator::hintMemoryNotNeededSoon):
3160         * wtf/OSAllocatorWin.cpp:
3161         (WTF::OSAllocator::hintMemoryNotNeededSoon):
3162         * wtf/Platform.h:
3163
3164 2015-12-16  Alex Christensen  <achristensen@webkit.org>
3165
3166         Fix internal Windows build
3167         https://bugs.webkit.org/show_bug.cgi?id=152364
3168         rdar://problem/23928759
3169
3170         Reviewed by Tim Horton.
3171
3172         * WTF.vcxproj/WTF.proj:
3173
3174 2015-12-16  Youenn Fablet  <youenn.fablet@crf.canon.fr>
3175
3176         [Fetch API] Add fetch API compile time flag
3177         https://bugs.webkit.org/show_bug.cgi?id=152254
3178
3179         Reviewed by Darin Adler.
3180
3181         * wtf/FeatureDefines.h:
3182
3183 2015-12-14  Yusuke Suzuki  <utatane.tea@gmail.com>
3184
3185         Math.random should have an intrinsic thunk and it should be later handled as a DFG Node
3186         https://bugs.webkit.org/show_bug.cgi?id=152133
3187
3188         Reviewed by Geoffrey Garen.
3189
3190         Change 64bit random to double logic to convert efficiently.
3191
3192         * wtf/WeakRandom.h:
3193         (WTF::WeakRandom::get):
3194         (WTF::WeakRandom::lowOffset):
3195         (WTF::WeakRandom::highOffset):
3196
3197 2015-12-14  Sukolsak Sakshuwong  <sukolsak@gmail.com>
3198
3199         Make UCharIterator createIterator(StringView) visible to other classes
3200         https://bugs.webkit.org/show_bug.cgi?id=151917
3201
3202         Reviewed by Darin Adler.
3203
3204         Make UCharIterator createIterator(StringView) in CollatorICU.cpp visible
3205         to other classes so that future patches that will ucol_strcollIter
3206         (including Bug 147604) can use it.
3207
3208         * wtf/unicode/Collator.h:
3209         * wtf/unicode/icu/CollatorICU.cpp:
3210         (WTF::createIterator):
3211
3212 2015-12-14  David Kilzer  <ddkilzer@apple.com>
3213
3214         REGRESSION (r162777): Remove Boost Software License from WTF
3215         <http://webkit.org/b/152243>
3216
3217         Reviewed by Darin Adler.
3218
3219         The source code that the Boost Software License was referring to
3220         was removed in r162777 by switching to std::atomic.
3221
3222         * wtf/Atomics.cpp:
3223         * wtf/Atomics.h:
3224         * wtf/ThreadSafeRefCounted.h:
3225         - Remove Boost Software License.
3226         - Update Apple Inc. copyright as needed.
3227         - Refresh Apple Inc. license text.
3228
3229 2015-12-10  Joseph Pecoraro  <pecoraro@apple.com>
3230
3231         Remote Inspector: Verify the identity of the other side of XPC connections
3232         https://bugs.webkit.org/show_bug.cgi?id=152153
3233
3234         Reviewed by Brian Burg.
3235
3236         * WTF.xcodeproj/project.pbxproj:
3237         * wtf/spi/cocoa/SecuritySPI.h: Renamed from Source/WebCore/platform/spi/cocoa/SecuritySPI.h.
3238         Push this down into WTF from WebCore and add a new method.
3239
3240 2015-12-08  Filip Pizlo  <fpizlo@apple.com>
3241
3242         FTL B3 should have basic GetById support
3243         https://bugs.webkit.org/show_bug.cgi?id=152035
3244
3245         Reviewed by Saam Barati.
3246
3247         When dealing with shared task lambdas, you often want to force a value to be allocated so that it
3248         has reference semantics, but you still want the lambda to execute OK when we pop stack. In PL we
3249         usually call this a "box". This is easy to do if the value that happened to be stack-allocated
3250         is also RefCounted, but that's rare, since stack-allocated values often have copy semantics. So,
3251         I've added a Box type to WTF. Behind the scenes, it allocates your object with fast malloc inside
3252         a ThreadSAfeRefCounted. When you pass Box<T>, you're passing the reference. This makes it a lot
3253         easier to work with by-reference capture.
3254
3255         * WTF.xcodeproj/project.pbxproj:
3256         * wtf/Box.h: Added.
3257         (WTF::Box::Box):
3258         (WTF::Box::create):
3259         (WTF::Box::get):
3260         (WTF::Box::operator*):
3261         (WTF::Box::operator->):
3262         (WTF::Box::operator bool):
3263         (WTF::Box::Data::Data):
3264
3265 2015-12-09  Andreas Kling  <akling@apple.com>
3266
3267         [iOS] ResourceUsageOverlay should work on iOS.
3268         <https://webkit.org/b/152021>
3269
3270         Reviewed by Antti Koivisto.
3271
3272         * wtf/Platform.h: Enable RESOURCE_USAGE_OVERLAY for all COCOA platforms.
3273
3274 2015-12-08  Joseph Pecoraro  <pecoraro@apple.com>
3275
3276         Create a Sandbox SPI header
3277         https://bugs.webkit.org/show_bug.cgi?id=151981
3278
3279         Reviewed by Andy Estes.
3280
3281         * WTF.xcodeproj/project.pbxproj:
3282         * wtf/spi/darwin/SandboxSPI.h: Added.
3283
3284 2015-12-07  Filip Pizlo  <fpizlo@apple.com>
3285
3286         FTL B3 should be able to flag the tag constants as being super important so that B3 can hoist them and Air can force them into registers
3287         https://bugs.webkit.org/show_bug.cgi?id=151955
3288
3289         Reviewed by Geoffrey Garen.
3290
3291         Remove some remaining DFG-specific snippets from Dominators. This used to be a non-template
3292         DFG class, and some time ago I hoisted it into WTF and made it generic. But since the only
3293         user of the class was the DFG, this class still had a handful of DFG-specific snippets that
3294         didn't compile when I started using it from B3.
3295
3296         Also renamed immediateDominatorOf() to idom(). This is the sort of abbreviation that we
3297         wouldn't ordinarily want to have in WebKit. But WebKit does allow for abbreviations that are
3298         "more canonical". The term "idom" is definitely more canonical than "immediateDominatorOf".
3299
3300         * wtf/Dominators.h:
3301         (WTF::Dominators::dominates):
3302         (WTF::Dominators::idom):
3303         (WTF::Dominators::forAllStrictDominatorsOf):
3304         (WTF::Dominators::NaiveDominators::dominates):
3305         (WTF::Dominators::NaiveDominators::dump):
3306         (WTF::Dominators::ValidationContext::handleErrors):
3307
3308 2015-12-03  Anders Carlsson  <andersca@apple.com>
3309
3310         Remove Objective-C GC support
3311         https://bugs.webkit.org/show_bug.cgi?id=151819
3312         rdar://problem/23746991
3313
3314         Reviewed by Dan Bernstein.
3315
3316         * Configurations/Base.xcconfig:
3317         * wtf/ThreadingPthreads.cpp:
3318         (WTF::initializeCurrentThreadInternal): Deleted.
3319         * wtf/text/cf/StringImplCF.cpp:
3320         (WTF::StringImpl::createCFString):
3321         (garbageCollectionEnabled): Deleted.
3322         (WTF::StringWrapperCFAllocator::create): Deleted.
3323
3324 2015-12-02  Filip Pizlo  <fpizlo@apple.com>
3325
3326         FTL B3 should support OSR exit
3327         https://bugs.webkit.org/show_bug.cgi?id=151710
3328
3329         Reviewed by Saam Barati.
3330
3331         Make sure that this has perfect forwarding.
3332
3333         * wtf/SegmentedVector.h:
3334         (WTF::SegmentedVector::append):
3335         (WTF::SegmentedVector::alloc):
3336
3337 2015-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>
3338
3339         [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
3340         https://bugs.webkit.org/show_bug.cgi?id=150792
3341
3342         Reviewed by Saam Barati.
3343
3344         * wtf/FastBitVector.h:
3345         (WTF::FastBitVector::forEachSetBit):
3346         * wtf/FeatureDefines.h:
3347
3348 2015-12-01  Commit Queue  <commit-queue@webkit.org>
3349
3350         Unreviewed, rolling out r192914.
3351         https://bugs.webkit.org/show_bug.cgi?id=151734
3352
3353         JSC tests for this change are failing on 32 and 64-bit bots
3354         (Requested by ryanhaddad on #webkit).
3355
3356         Reverted changeset:
3357
3358         "[ES6] Implement LLInt/Baseline Support for ES6 Generators and
3359         enable this feature"
3360         https://bugs.webkit.org/show_bug.cgi?id=150792
3361         http://trac.webkit.org/changeset/192914
3362
3363 2015-12-01  Myles C. Maxfield  <mmaxfield@apple.com>
3364
3365         Give String and AtomicString an existingHash() function
3366         https://bugs.webkit.org/show_bug.cgi?id=151717
3367
3368         Reviewed by Andreas Kling.
3369
3370         Test: WTF.AtomicStringExistingHash
3371               WTF.StringExistingHash
3372
3373         * wtf/text/AtomicString.h:
3374         (WTF::AtomicString::existingHash):
3375         * wtf/text/WTFString.h:
3376         (WTF::String::existingHash):
3377
3378 2015-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>
3379
3380         [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
3381         https://bugs.webkit.org/show_bug.cgi?id=150792
3382
3383         Reviewed by Saam Barati.
3384
3385         * wtf/FastBitVector.h:
3386         (WTF::FastBitVector::forEachSetBit):
3387         * wtf/FeatureDefines.h:
3388
3389 2015-11-30  Geoffrey Garen  <ggaren@apple.com>
3390
3391         Use a better RNG for Math.random()
3392         https://bugs.webkit.org/show_bug.cgi?id=151641
3393
3394         Reviewed by Anders Carlsson.
3395
3396         Use 64 bits in the random number generator instead of 32 bit. (In
3397         the end, JavaScript, which uses doubles, will only see 52 bits.) This
3398         prevents programs that multiply a random number by a large constant from
3399         seeing non-random "banding" caused by zeroes in the low 20 bits.
3400
3401         I also took the opportunity to upgrade from GameRandom to Xorshift+,
3402         since Xorshift+ passes more benchmarks for randomness, and is not any
3403         slower or more complicated.
3404
3405         Now let us all remember the fateful words of Steve Weibe, who would be
3406         King of Kong: "The randomness went the opposite way that it usually goes."
3407
3408         * wtf/WeakRandom.h:
3409         (WTF::WeakRandom::WeakRandom):
3410         (WTF::WeakRandom::setSeed): Use standard naming.
3411
3412         (WTF::WeakRandom::seed): This function is safe now. "Unsafe" in function
3413         names makes me itch.
3414
3415         (WTF::WeakRandom::get):
3416         (WTF::WeakRandom::getUint32): Update to 64bit.
3417
3418         (WTF::WeakRandom::advance): The Xorshift+ algorithm.
3419
3420         (WTF::WeakRandom::initializeSeed): Deleted.
3421         (WTF::WeakRandom::seedUnsafe): Deleted.
3422
3423 2015-11-30  Benjamin Poulain  <bpoulain@apple.com>
3424
3425         [JSC] Speed up Air Liveness Analysis on Tmps
3426         https://bugs.webkit.org/show_bug.cgi?id=151556
3427
3428         Reviewed by Filip Pizlo.
3429
3430         * WTF.xcodeproj/project.pbxproj:
3431         * wtf/IndexSparseSet.h: Added.
3432         (WTF::IndexSparseSet<OverflowHandler>::IndexSparseSet):
3433         (WTF::IndexSparseSet<OverflowHandler>::add):
3434         (WTF::IndexSparseSet<OverflowHandler>::remove):
3435         (WTF::IndexSparseSet<OverflowHandler>::clear):
3436         (WTF::IndexSparseSet<OverflowHandler>::size):
3437         (WTF::IndexSparseSet<OverflowHandler>::isEmpty):
3438         (WTF::IndexSparseSet<OverflowHandler>::contains):
3439
3440 2015-11-30  Tim Horton  <timothy_horton@apple.com>
3441
3442         Get rid of the !USE(ASYNC_NSTEXTINPUTCLIENT) codepath
3443         https://bugs.webkit.org/show_bug.cgi?id=151673
3444
3445         Reviewed by Anders Carlsson.
3446
3447         * wtf/Platform.h:
3448
3449 2015-11-30  Carlos Garcia Campos  <cgarcia@igalia.com>
3450
3451         [GLIB] Remove GMainLoopSource and GThreadSafeMainLoopSource
3452         https://bugs.webkit.org/show_bug.cgi?id=151633
3453
3454         Reviewed by Csaba Osztrogonác.
3455
3456         * WTF.vcxproj/WTF.vcxproj:
3457         * WTF.vcxproj/WTF.vcxproj.filters:
3458         * wtf/PlatformEfl.cmake:
3459         * wtf/PlatformGTK.cmake:
3460         * wtf/glib/GMainLoopSource.cpp: Removed.
3461         * wtf/glib/GMainLoopSource.h: Removed.
3462         * wtf/glib/GThreadSafeMainLoopSource.cpp: Removed.
3463         * wtf/glib/GThreadSafeMainLoopSource.h: Removed.
3464
3465 2015-11-27  Csaba Osztrogonác  <ossy@webkit.org>
3466
3467         Fix build warning in bignum.cc
3468         https://bugs.webkit.org/show_bug.cgi?id=150797
3469
3470         Reviewed by Geoffrey Garen.
3471
3472         * wtf/dtoa/bignum.cc:
3473
3474 2015-11-18  Daniel Bates  <dabates@apple.com>
3475
3476         [iOS] ASSERTION FAILED: temporaryFilePath.last() == '/' in WebCore::openTemporaryFile()
3477         https://bugs.webkit.org/show_bug.cgi?id=151392
3478         <rdar://problem/23595341>
3479
3480         Reviewed by Alexey Proskuryakov.
3481
3482         Workaround <rdar://problem/23579077> where confstr(_CS_DARWIN_USER_TEMP_DIR, ..., ...) retrieves
3483         the path to the user temporary directory without a trailing slash in the iOS simulator.
3484
3485         * wtf/DataLog.cpp:
3486         (WTF::initializeLogFileOnce):
3487
3488 2015-11-17  Filip Pizlo  <fpizlo@apple.com>
3489
3490         CheckAdd/Mul should have commutativity optimizations in B3->Air lowering
3491         https://bugs.webkit.org/show_bug.cgi?id=151214
3492
3493         Reviewed by Geoffrey Garen.
3494
3495         Disable my failed attempts at perfect forwarding, since they were incorrect, and caused compile
3496         errors if you tried to pass an argument that bound to lvalue. This shouldn't affect performance of
3497         anything we care about, and performance tests seem to confirm that it's all good.
3498
3499         * wtf/ScopedLambda.h:
3500
3501 2015-11-17  Filip Pizlo  <fpizlo@apple.com>
3502
3503         Air should lay out code optimally
3504         https://bugs.webkit.org/show_bug.cgi?id=150478
3505
3506         Reviewed by Geoffrey Garen.
3507
3508         * wtf/GraphNodeWorklist.h:
3509         (WTF::GraphNodeWorklist::push):
3510         (WTF::GraphNodeWorklist::isEmpty):
3511         (WTF::GraphNodeWorklist::notEmpty):
3512         (WTF::GraphNodeWorklist::pop):
3513
3514 2015-11-11  Anders Carlsson  <andersca@apple.com>
3515
3516         Enable cross-platform context menus by default
3517         https://bugs.webkit.org/show_bug.cgi?id=151173
3518
3519         Reviewed by Tim Horton.
3520
3521         * wtf/Platform.h:
3522
3523 2015-11-12  Csaba Osztrogonác  <ossy@webkit.org>
3524
3525         Remove ENABLE(SATURATED_LAYOUT_ARITHMETIC) guards
3526         https://bugs.webkit.org/show_bug.cgi?id=150972
3527
3528         Reviewed by Darin Adler.
3529
3530         * wtf/FeatureDefines.h:
3531
3532 2015-11-11  Filip Pizlo  <fpizlo@apple.com>
3533
3534         B3 should be able to compile and canonicalize Mul
3535         https://bugs.webkit.org/show_bug.cgi?id=151124
3536
3537         Reviewed by Geoffrey Garen.
3538
3539         * wtf/MathExtras.h:
3540         (WTF::fastLog2):
3541
3542 2015-11-10  Filip Pizlo  <fpizlo@apple.com>
3543
3544         B3 should be able to compile a program with ChillDiv
3545         https://bugs.webkit.org/show_bug.cgi?id=151114
3546
3547         Reviewed by Benjamin Poulain.
3548
3549         Needed to beef up some compiler algorithms. All of the hardening was about making them
3550         work with objects that have move semantics but not copy semantics. This arises in B3
3551         basic block insertion sets.
3552
3553         * wtf/BubbleSort.h:
3554         (WTF::bubbleSort):
3555         * wtf/Insertion.h:
3556         (WTF::Insertion::Insertion):
3557         (WTF::Insertion::index):
3558         (WTF::Insertion::element):
3559         (WTF::Insertion::operator<):
3560         (WTF::executeInsertions):
3561
3562 2015-11-10  Carlos Garcia Campos  <cgarcia@igalia.com>
3563
3564         [GTK] Use CROSS_PLATFORM_CONTEXT_MENUS
3565         https://bugs.webkit.org/show_bug.cgi?id=150642
3566
3567         Reviewed by Martin Robinson.
3568
3569         Enable CROSS_PLATFORM_CONTEXT_MENUS for GTK+ port.
3570
3571         * wtf/Platform.h:
3572
3573 2015-11-09  Anders Carlsson  <andersca@apple.com>
3574
3575         Introspect reply block types as well
3576         https://bugs.webkit.org/show_bug.cgi?id=151048
3577
3578         Reviewed by Tim Horton.
3579
3580         Fix operator-> implementation.
3581
3582         * wtf/Optional.h:
3583         (WTF::Optional::operator->):
3584
3585 2015-11-05  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>
3586
3587         Add runtime and compile time flags for enabling Web Animations API and model.
3588         https://bugs.webkit.org/show_bug.cgi?id=150914
3589
3590         Reviewed by Benjamin Poulain.
3591
3592         Add ENABLE_WEB_ANIMATIONS compile time flag, runtime flag webAnimationsEnabled and Expose WK2 preference for runtime flag.
3593
3594         * wtf/FeatureDefines.h:
3595
3596 2015-11-05  Zan Dobersek  <zdobersek@igalia.com>
3597
3598         [GLib] Avoid gint64, std::chrono::microseconds overflows in RunLoop::TimerBase
3599         https://bugs.webkit.org/show_bug.cgi?id=150930
3600
3601         Reviewed by Carlos Garcia Campos.
3602
3603         In RunLoop::TimerBase::start(), avoid overflowing the std::chrono::microseconds
3604         value in case the passed-in fire interval (in seconds) is too large (e.g. when
3605         std::chrono::microseconds::max() is used as the desired interval). This is
3606         achieved by using the passed-in fire interval, converted in microseconds, only
3607         if the value of this interval is smaller than std::chrono::microseconds::max().
3608
3609         In RunLoop::TimerBase::updateReadyTime(), the zero-delay is still considered a
3610         short cut, but we use G_MAXINT64 in case the sum of the current time and the
3611         desired fire interval (now in microseconds) would overflow.
3612
3613         * wtf/glib/RunLoopGLib.cpp:
3614         (WTF::RunLoop::TimerBase::updateReadyTime):
3615         (WTF::RunLoop::TimerBase::start):
3616
3617 2015-11-02  Filip Pizlo  <fpizlo@apple.com>
3618
3619         B3/Air should use bubble sort for their insertion sets, because it's faster than std::stable_sort
3620         https://bugs.webkit.org/show_bug.cgi?id=150828
3621
3622         Reviewed by Geoffrey Garen.
3623
3624         Add a pretty good bubble sort implementation to WTF. This implementation has three
3625         common tricks:
3626
3627         - Forward and backward scans. This reduces the severity of certain kinds of bubble sort
3628           pathologies.
3629
3630         - Return if a scan finds the list to be sorted. This gives the algorithm one of its most
3631           attractive properties: it's super fast when the list is already sorted.
3632
3633         - Each scan eliminates one element from future scans. This makes the algorithm no worse
3634           than insertion sort.
3635
3636         Why do we want this? Because bubble sort is a really great stable sort for small lists,
3637         or large lists in which only a handful of elements are out of order. Compiler insertion
3638         sets tend to be one of those or somewhere in between: usually they are very small, and
3639         usually they are sorted. It's rare that an element will be out of order, and when it is,
3640         it's usually very close to where it's supposed to be.
3641
3642         This is a significant speed-up for B3 compile times.
3643
3644         * WTF.xcodeproj/project.pbxproj:
3645         * wtf/BubbleSort.h: Added.
3646         (WTF::bubbleSort):
3647         * wtf/CMakeLists.txt:
3648
3649 2015-11-02  Andy Estes  <aestes@apple.com>
3650
3651         [Cocoa] Add tvOS and watchOS to SUPPORTED_PLATFORMS
3652         https://bugs.webkit.org/show_bug.cgi?id=150819
3653
3654         Reviewed by Dan Bernstein.
3655
3656         This tells Xcode to include these platforms in its Devices dropdown, making it possible to build in the IDE.
3657
3658         * Configurations/Base.xcconfig:
3659
3660 2015-11-02  Carlos Garcia Campos  <cgarcia@igalia.com>
3661
3662         [GLIB] Remove support for GSocket main loop sources from GMainLoopSource
3663         https://bugs.webkit.org/show_bug.cgi?id=150772
3664
3665         Reviewed by Žan Doberšek.
3666
3667         It complicated the code just to make generic what is only used in
3668         one place.
3669
3670         * wtf/glib/GMainLoopSource.cpp:
3671         (WTF::GMainLoopSource::cancel): Deleted.
3672         (WTF::GMainLoopSource::schedule): Deleted.
3673         (WTF::GMainLoopSource::scheduleTimeoutSource): Deleted.
3674         (WTF::GMainLoopSource::scheduleAfterDelay): Deleted.
3675         (WTF::GMainLoopSource::finishVoidCallback): Deleted.
3676         (WTF::GMainLoopSource::voidCallback): Deleted.
3677         (WTF::GMainLoopSource::prepareBoolCallback): Deleted.
3678         * wtf/glib/GMainLoopSource.h:
3679         (WTF::GMainLoopSource::Context::operator=): Deleted.
3680
3681 2015-11-02  Carlos Garcia Campos  <cgarcia@igalia.com>
3682
3683         [GLIB] Remove delete on destroy GMainLoopSources
3684         https://bugs.webkit.org/show_bug.cgi?id=150771
3685
3686         Reviewed by Žan Doberšek.
3687
3688         Delete on destroy sources made the GMainLoopSource implementation
3689         more complex and they are currently unused.
3690
3691         * wtf/glib/GMainLoopSource.cpp:
3692        &