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