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