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