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