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