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