Optimized equal() functions in StringImpl.h are not ASan compatible
[WebKit-https.git] / Source / WTF / ChangeLog
1 2015-02-04  Alexey Proskuryakov  <ap@apple.com>
2
3         Optimized equal() functions in StringImpl.h are not ASan compatible
4         https://bugs.webkit.org/show_bug.cgi?id=141258
5
6         Reviewed by Daniel Bates.
7
8         * wtf/text/StringImpl.h: (WTF::equal): Add custom implementations for ASan.
9
10 2015-02-04  Chris Dumez  <cdumez@apple.com>
11
12         Add removeFirst(value) / removeAll(value) methods to WTF::Vector
13         https://bugs.webkit.org/show_bug.cgi?id=141192
14
15         Reviewed by Benjamin Poulain.
16
17         Add removeFirst(value) / removeAll(value) convenience methods to
18         WTF::Vector to reduce complexity a bit at call sites.
19
20         I am planning to add overloads for these taking a lambda function for
21         matching in a follow-up patch as well. I have seen quite a few
22         Vector::remove(index) call sites that would benefit from it.
23
24         * wtf/Vector.h:
25         (WTF::OverflowHandler>::removeFirst):
26         (WTF::OverflowHandler>::removeAll):
27
28 2015-02-02  Dhi Aurrahman  <diorahman@rockybars.com>
29
30         Optimize matchesLangPseudoClass() of :lang()
31         https://bugs.webkit.org/show_bug.cgi?id=140873
32
33         Reviewed by Darin Adler.
34
35         Add some basic equality comparison operators.
36
37         * wtf/text/StringView.h:
38         (WTF::operator==):
39         (WTF::operator!=):
40         (WTF::equal):
41         (WTF::equalIgnoringASCIICase):
42
43 2015-02-02  Geoffrey Garen  <ggaren@apple.com>
44
45         Use FastMalloc (bmalloc) instead of BlockAllocator for GC pages
46         https://bugs.webkit.org/show_bug.cgi?id=140900
47
48         Reviewed by Mark Hahnenberg.
49
50         Re-landing just the HandleBlock piece of this patch.
51
52         * wtf/FastMalloc.cpp:
53         (WTF::fastAlignedMalloc):
54         (WTF::fastAlignedFree):
55         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
56         * wtf/FastMalloc.h:
57
58 2015-02-02  Daniel Bates  <dabates@apple.com>
59
60         [iOS] ASSERTION FAILED: m_scriptExecutionContext->isContextThread() in ContextDestructionObserver::observeContext
61         https://bugs.webkit.org/show_bug.cgi?id=141057
62         <rdar://problem/19068790>
63
64         Reviewed by Alexey Proskuryakov.
65
66         * wtf/MainThread.h:
67         * wtf/mac/MainThreadMac.mm:
68         (WTF::callOnWebThreadOrDispatchAsyncOnMainThread): Added.
69
70 2015-01-31  Sam Weinig  <sam@webkit.org>
71
72         Remove even more Mountain Lion support
73         https://bugs.webkit.org/show_bug.cgi?id=141124
74
75         Reviewed by Alexey Proskuryakov.
76
77         * Configurations/Base.xcconfig:
78         * Configurations/DebugRelease.xcconfig:
79         * wtf/Assertions.cpp:
80         * wtf/FeatureDefines.h:
81         * wtf/Platform.h:
82
83 2015-01-31  Commit Queue  <commit-queue@webkit.org>
84
85         Unreviewed, rolling out r179426.
86         https://bugs.webkit.org/show_bug.cgi?id=141119
87
88         "caused a memory use regression" (Requested by Guest45 on
89         #webkit).
90
91         Reverted changeset:
92
93         "Use FastMalloc (bmalloc) instead of BlockAllocator for GC
94         pages"
95         https://bugs.webkit.org/show_bug.cgi?id=140900
96         http://trac.webkit.org/changeset/179426
97
98 2015-01-31  Commit Queue  <commit-queue@webkit.org>
99
100         Unreviewed, rolling out r179408.
101         https://bugs.webkit.org/show_bug.cgi?id=141117
102
103         This didn't fully fix the issue (Requested by anttik on
104         #webkit).
105
106         Reverted changeset:
107
108         "OSObjectPtr does not work with dispatch_data_t on Maverics"
109         https://bugs.webkit.org/show_bug.cgi?id=141081
110         http://trac.webkit.org/changeset/179408
111
112 2015-01-30  Yusuke Suzuki  <utatane.tea@gmail.com>
113
114         Implement ES6 Symbol
115         https://bugs.webkit.org/show_bug.cgi?id=140435
116
117         Reviewed by Geoffrey Garen.
118
119         Introduce new unique string mechanizm into StringImpl.
120         It is used for implementing Symbol which holds a [[Description]] value.
121
122         * wtf/text/AtomicString.h:
123         (WTF::AtomicString::add):
124         (WTF::AtomicString::addWithStringTableProvider):
125
126         Previously, we checked `isAtomic()` or `!length()`. This guard can filter out EmptyUnique.
127         But now, we introduced new unique StringImpl. Since it has an actual string value, we need to check `isUnique()`.
128
129         * wtf/text/StringImpl.cpp:
130         (WTF::StringImpl::~StringImpl):
131         (WTF::StringImpl::createUnique):
132
133         In createUnique, we leverage Substring mechanizm to produce a new unique
134         string from an existing string.
135
136         * wtf/text/StringImpl.h:
137         (WTF::StringImpl::StringImpl):
138         (WTF::StringImpl::createUniqueEmpty):
139         (WTF::StringImpl::flagIsUnique):
140         (WTF::StringImpl::isUnique):
141         (WTF::StringImpl::setIsAtomic):
142         (WTF::StringImpl::createEmptyUnique): Deleted.
143         (WTF::StringImpl::isEmptyUnique): Deleted.
144
145         Instead of EmptyUnique, we introduced new flag to StringImpl, `isUnique`.
146         While EmptyUnique cannot hold any string values except for empty string,
147         the unique StringImpl can hold any String values.
148         We fold the Symbol's descriptiveString value here.
149
150         * wtf/text/StringStatics.cpp:
151         (WTF::StringImpl::hashAndFlagsForUnique):
152         (WTF::StringImpl::hashAndFlagsForEmptyUnique): Deleted.
153
154 2015-01-30  Geoffrey Garen  <ggaren@apple.com>
155
156         Use FastMalloc (bmalloc) instead of BlockAllocator for GC pages
157         https://bugs.webkit.org/show_bug.cgi?id=140900
158
159         Reviewed by Mark Hahnenberg.
160
161         Re-landing just the HandleBlock piece of this patch.
162
163         * wtf/FastMalloc.cpp:
164         (WTF::fastAlignedMalloc):
165         (WTF::fastAlignedFree):
166         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
167         * wtf/FastMalloc.h:
168
169 2015-01-30  Namhoon Kim  <yanhkim@gmail.com>
170
171         Call vsnprintf instead of _vsnprintf in vprintf_stderr_common
172         https://bugs.webkit.org/show_bug.cgi?id=141078
173
174         In windows _vsnprintf api does not place null character
175         automatically. Simply replace it with vsnprintf. Which is
176         polyfill to call wtf_vsnprintf in windows.
177
178         Reviewed by Brent Fulgham.
179
180         * wtf/Assertions.cpp:
181
182 2015-01-30  Brian J. Burg  <burg@cs.washington.edu>
183
184         Web Inspector: ASSERT in InspectorTimelineAgent::internalStop
185         https://bugs.webkit.org/show_bug.cgi?id=141039
186
187         Reviewed by Timothy Hatcher.
188
189         Add messages to Stopwatch assertions, and clean up constructor.
190
191         * wtf/Stopwatch.h:
192         (WTF::Stopwatch::Stopwatch):
193         (WTF::Stopwatch::start):
194         (WTF::Stopwatch::stop):
195
196 2015-01-30  Chris Dumez  <cdumez@apple.com>
197
198         Add match_constness<Reference, T> helper struct
199         https://bugs.webkit.org/show_bug.cgi?id=140905
200
201         Reviewed by Benjamin Poulain.
202
203         Add match_constness<Reference, T> helper struct to simplify downcast<>()
204         a bit. The purpose of this helper is to update T's constness to match
205         Reference's.
206
207         * wtf/TypeCasts.h:
208         (WTF::downcast):
209
210 2015-01-30  Chris Dumez  <cdumez@apple.com>
211
212         Add assertion in RefPtr's operator*() to make sure we don't dereference nullptr
213         https://bugs.webkit.org/show_bug.cgi?id=141092
214
215         Reviewed by Anders Carlsson.
216
217         Add assertion in RefPtr's operator*() to make sure we don't dereference
218         nullptr.
219
220         * wtf/RefPtr.h:
221         (WTF::RefPtr::operator*):
222
223 2015-01-30  Geoffrey Garen  <ggaren@apple.com>
224
225         GC marking threads should clear malloc caches
226         https://bugs.webkit.org/show_bug.cgi?id=141097
227
228         Reviewed by Andreas Kling.
229
230         Split the scavenging API into per-thread vs global, so that you can
231         request to scavenge your own thread without scavenging the whole heap.
232
233         * wtf/FastMalloc.cpp:
234         (WTF::releaseFastMallocFreeMemoryForThisThread):
235         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
236         * wtf/FastMalloc.h:
237
238 2015-01-30  Antti Koivisto  <antti@apple.com>
239
240         OSObjectPtr does not work with dispatch_data_t on Maverics
241         https://bugs.webkit.org/show_bug.cgi?id=141081
242
243         Reviewed by Pratik Solanki.
244         
245         Trying to use OSObjectPtr<dispatch_data_t> throws 
246         
247         -[OS_dispatch_data _xref_dispose]: unrecognized selector sent to instance 0
248
249         * wtf/OSObjectPtr.h:
250         (WTF::retainOSObject<dispatch_data_t>):
251         (WTF::releaseOSObject<dispatch_data_t>):
252         
253             Add specialization for dispatch_data_t on Maverics.
254
255 2015-01-29  Santosh Mahto  <santoshbit2007@gmail.com>
256
257         Refactor String::format to handle unreached va_end.
258         https://bugs.webkit.org/show_bug.cgi?id=140938
259
260         Reviewed by Alexey Proskuryakov.
261
262         Now va_end is called for all platform after getting length
263         of formatted string and again va_start/va_end is called to write
264         formatted string in buffer. This way it ensure va_end is always
265         reached for each va_start.
266
267         * wtf/text/WTFString.cpp:
268
269 2015-01-29  Csaba Osztrogonác  <ossy@webkit.org>
270
271         Move HAVE_DTRACE definition back to Platform.h
272         https://bugs.webkit.org/show_bug.cgi?id=141033
273
274         Reviewed by Dan Bernstein.
275
276         * wtf/Platform.h:
277
278 2015-01-28  Namhoon Kim  <namkim@ea.com>
279
280         Windows return -1 when calling vsnprintf with arguments that exceed target buffer size
281         https://bugs.webkit.org/show_bug.cgi?id=140917
282
283         Reviewed by Brent Fulgham.
284
285         Fix return value of vsnprintf when windows API return -1 to denote
286         requested buffer exceeded. Replace return value by calling vscprintf.
287
288         * wtf/StringExtras.h:
289         (snprintf): Fix return value by calling vscprintf when buffer exceeded.
290         (wtf_vsnprintf): Ditto.
291
292 2015-01-28  Geoffrey Garen  <ggaren@apple.com>
293
294         Removed fastMallocForbid / fastMallocAllow
295         https://bugs.webkit.org/show_bug.cgi?id=141012
296
297         Reviewed by Mark Hahnenberg.
298
299         Removed the forbid / allow API because it is no longer used.
300
301         * wtf/FastMalloc.cpp:
302         (WTF::tryFastMalloc):
303         (WTF::fastMalloc):
304         (WTF::tryFastCalloc):
305         (WTF::fastCalloc):
306         (WTF::fastFree):
307         (WTF::tryFastRealloc):
308         (WTF::fastRealloc):
309         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
310         (WTF::isForbidden): Deleted.
311         (WTF::fastMallocForbid): Deleted.
312         (WTF::fastMallocAllow): Deleted.
313         (WTF::initializeIsForbiddenKey): Deleted.
314         * wtf/FastMalloc.h:
315
316 2015-01-28  Dana Burkart  <dburkart@apple.com>
317
318         Move ASan flag settings from DebugRelease.xcconfig to Base.xcconfig
319         https://bugs.webkit.org/show_bug.cgi?id=136765
320
321         Reviewed by Alexey Proskuryakov.
322
323         * Configurations/Base.xcconfig:
324         * Configurations/DebugRelease.xcconfig:
325
326 2015-01-28  Darin Adler  <darin@apple.com>
327
328         Fix small leak in Collator
329         https://bugs.webkit.org/show_bug.cgi?id=140990
330
331         Reviewed by Andreas Kling.
332
333         * wtf/unicode/icu/CollatorICU.cpp:
334         (WTF::Collator::Collator): Use fastStrDup instead of strdup.
335         (WTF::Collator::~Collator): Use fastFree on the collator locale that we
336         are abandoning. The old code instead just called free on a null pointer.
337
338 2015-01-27  Geoffrey Garen  <ggaren@apple.com>
339
340         Removed WTF_MALLOC_VALIDATION
341         https://bugs.webkit.org/show_bug.cgi?id=140958
342
343         Reviewed by Anders Carlsson.
344
345         I don't think anyone has been using this, and the #ifdefs were driving
346         me crazy.
347
348         We have other options for validation -- like MallocGuardEdges,
349         MallocCheckHeapEach, MallocScribble, and GuardMalloc.
350
351         * wtf/FastMalloc.cpp:
352         (WTF::tryFastMalloc):
353         (WTF::fastMalloc):
354         (WTF::tryFastCalloc):
355         (WTF::fastCalloc):
356         (WTF::fastFree):
357         (WTF::tryFastRealloc):
358         (WTF::fastRealloc):
359         (WTF::fastMallocSize):
360         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
361         (WTF::Internal::fastMallocMatchFailed): Deleted.
362         * wtf/FastMalloc.h:
363         (WTF::Internal::fastMallocValidationHeader): Deleted.
364         (WTF::Internal::fastMallocValidationSuffix): Deleted.
365         (WTF::Internal::fastMallocMatchValidationType): Deleted.
366         (WTF::Internal::setFastMallocMatchValidationType): Deleted.
367         (WTF::fastMallocMatchValidateMalloc): Deleted.
368         (WTF::fastMallocMatchValidateFree): Deleted.
369         (WTF::fastMallocValidate): Deleted.
370
371 2015-01-27  Commit Queue  <commit-queue@webkit.org>
372
373         Unreviewed, rolling out r179192.
374         https://bugs.webkit.org/show_bug.cgi?id=140953
375
376         Caused numerous layout test failures (Requested by mattbaker_
377         on #webkit).
378
379         Reverted changeset:
380
381         "Use FastMalloc (bmalloc) instead of BlockAllocator for GC
382         pages"
383         https://bugs.webkit.org/show_bug.cgi?id=140900
384         http://trac.webkit.org/changeset/179192
385
386 2015-01-26  Geoffrey Garen  <ggaren@apple.com>
387
388         Use FastMalloc (bmalloc) instead of BlockAllocator for GC pages
389         https://bugs.webkit.org/show_bug.cgi?id=140900
390
391         Reviewed by Mark Hahnenberg.
392
393         New interface for aligned allocation: fastAlignedMalloc / fastAlignedFree.
394         We require a special function call on free because Windows.
395
396         * wtf/FastMalloc.cpp:
397         (WTF::fastAlignedMalloc):
398         (WTF::fastAlignedFree): Do it.
399
400         (WTF::do_memalign): Un-ifdef this, since we use it now.
401
402         * wtf/FastMalloc.h: Make our new function names visible like the rest
403         of fastMalloc.
404
405 2015-01-26  Brent Fulgham  <bfulgham@apple.com>
406
407         [Win] ASSERTION FAILED !m_ptr under AccessibilityController::winAddNotificationListener
408         https://bugs.webkit.org/show_bug.cgi?id=87426
409         <rdar://problem/11527899>
410
411         Reviewed by Darin Adler.
412
413         Revise internal containers to use std::addressof in preference to
414         to using the '&' operator.
415
416         * wtf/Deque.h:
417         (WTF::inlineCapacity>::append):
418         (WTF::inlineCapacity>::prepend):
419         (WTF::inlineCapacity>::removeFirst):
420         (WTF::inlineCapacity>::removeLast):
421         (WTF::inlineCapacity>::remove):
422         (WTF::inlineCapacity>::after):
423         (WTF::inlineCapacity>::before):
424         * wtf/GetPtr.h:
425         * wtf/HashTable.h:
426         (WTF::HashTableBucketInitializer<false>::initialize):
427         * wtf/HashTraits.h:
428         (WTF::SimpleClassHashTraits::constructDeletedValue):
429         (WTF::CustomHashTraits::constructDeletedValue):
430         * wtf/ListHashSet.h:
431         (WTF::ListHashSetConstIterator::get):
432         * wtf/Vector.h:
433         (WTF::Vector::swap):
434         (WTF::OverflowHandler>::append):
435         (WTF::OverflowHandler>::tryAppend):
436         (WTF::OverflowHandler>::insert):
437
438 2015-01-24  Chris Dumez  <cdumez@apple.com>
439
440         Provide implementation for WTF::DefaultHash<bool>
441         https://bugs.webkit.org/show_bug.cgi?id=140848
442
443         Reviewed by Anders Carlsson.
444
445         Provide implementation for WTF::DefaultHash<bool> so that we can use
446         HashMap<std::pair<XXX, bool>> in the code base. Right now, we need to
447         use some integer type to work around the issue.
448
449         * wtf/HashFunctions.h:
450
451 2015-01-23  Carlos Garcia Campos  <cgarcia@igalia.com>
452
453         [GTK] Add missing null check in some derefGPtr implementations
454         https://bugs.webkit.org/show_bug.cgi?id=140822
455
456         Reviewed by Sergio Villar Senin.
457
458         It's missing in GHashTable and GVariant implementations.
459
460         * wtf/gobject/GRefPtr.cpp:
461         (WTF::derefGPtr):
462
463 2015-01-23  Carlos Garcia Campos  <cgarcia@igalia.com>
464
465         [GTK] Add initial database process support
466         https://bugs.webkit.org/show_bug.cgi?id=139491
467
468         Reviewed by Sergio Villar Senin.
469
470         Add support for using GRefPtr with GVariantBuilder.
471
472         * wtf/gobject/GRefPtr.cpp:
473         (WTF::refGPtr):
474         (WTF::derefGPtr):
475         * wtf/gobject/GRefPtr.h:
476         * wtf/gobject/GTypedefs.h:
477
478 2015-01-22  Ryosuke Niwa  <rniwa@webkit.org>
479
480         Add a build flag for ES6 class syntax
481         https://bugs.webkit.org/show_bug.cgi?id=140760
482
483         Reviewed by Michael Saboff.
484
485         * wtf/FeatureDefines.h:
486
487 2015-01-21  Csaba Osztrogonác  <ossy@webkit.org>
488
489         Remove ENABLE(INSPECTOR) ifdef guards
490         https://bugs.webkit.org/show_bug.cgi?id=140668
491
492         Reviewed by Darin Adler.
493
494         * wtf/FeatureDefines.h:
495
496 2015-01-20  YunQiang Su  <wzssyqa@gmail.com>
497
498         Fix failed to build for Linux/MIPS64EL
499         https://bugs.webkit.org/show_bug.cgi?id=124370
500
501         Reviewed by Darin Adler.
502
503         Add MIPS64EL support.
504
505         * wtf/Platform.h:
506         * wtf/dtoa/utils.h:
507
508 2015-01-19  Alexey Proskuryakov  <ap@apple.com>
509
510         Make ASan do bounds checks for WTF::Vector
511         https://bugs.webkit.org/show_bug.cgi?id=140631
512         rdar://problem/19437718
513
514         Reviewed by Darin Adler.
515
516         * wtf/SizeLimits.cpp: Disable Vector object size checks for ASan enabled builds.
517
518         * wtf/Vector.h:
519         (WTF::VectorBuffer::endOfBuffer):
520         (WTF::Vector::Vector):
521         (WTF::Vector::~Vector):
522         (WTF::Vector::swap):
523         (WTF::OverflowHandler>::Vector):
524         (WTF::=):
525         (WTF::OverflowHandler>::fill):
526         (WTF::OverflowHandler>::resize):
527         (WTF::OverflowHandler>::shrink):
528         (WTF::OverflowHandler>::grow):
529         (WTF::OverflowHandler>::asanSetInitialBufferSizeTo):
530         (WTF::OverflowHandler>::asanSetBufferSizeToFullCapacity):
531         (WTF::OverflowHandler>::asanBufferSizeWillChangeTo):
532         (WTF::OverflowHandler>::reserveCapacity):
533         (WTF::OverflowHandler>::tryReserveCapacity):
534         (WTF::OverflowHandler>::shrinkCapacity):
535         (WTF::OverflowHandler>::append):
536         (WTF::OverflowHandler>::tryAppend):
537         (WTF::OverflowHandler>::appendSlowCase):
538         (WTF::OverflowHandler>::uncheckedAppend):
539         (WTF::OverflowHandler>::insert):
540         (WTF::OverflowHandler>::remove):
541         (WTF::OverflowHandler>::releaseBuffer):
542
543         * wtf/Compiler.h: Changed ASAN_ENABLED macro fallback value from false to 0,
544         MSVC was not happy with false.
545
546 2015-01-20  Csaba Osztrogonác  <ossy@webkit.org>
547
548         Remove non-Windows cruft from WebKit/win/Plugins
549         https://bugs.webkit.org/show_bug.cgi?id=140675
550
551         Reviewed by Anders Carlsson.
552
553         * wtf/FeatureDefines.h:
554
555 2015-01-16  Myles C. Maxfield  <mmaxfield@apple.com>
556
557         WeakPtr functions crash when created with default constructor
558         https://bugs.webkit.org/show_bug.cgi?id=140479
559
560         Reviewed by Andreas Kling.
561
562         This patch rearranges how WeakPtr works, and has the following ideas behind it:
563
564         1. WeakPtr should use Ref internally. This solves the crash by always having a
565         valid WeakReference.
566         2. Clients should not be able to construct WeakReferences directly. Instead,
567         only WeakPtrFactory (and WeakPtr's default constructor) should be able to
568         construct them. They are considered an implementation detail of WeakPtr.
569         3. Except for the default constructor, clients should not be able to construct
570         WeakPtrs directly. Instead, the WeakPtrFactory must construct them. This
571         guarantees that the WeakPtrs all reference the same WeakReference.
572         4. Clients can construct a WeakPtr using its default constructor, and then
573         use the assignment operator to make it non-null. (Or they could use
574         WeakPtrFactory to make it non-null at creation-time.)
575         5. No one was using WeakReference::bindTo(), and it doesn't seem useful, so I
576         removed it.
577
578         Tests: WTF_WeakPtr API tests
579
580         * wtf/Ref.h:
581         (WTF::Ref::Ref): Added extra ASSERT()s, and explicitly deleted copy
582         constructors with a comment.
583         (WTF::Ref::operator=): Added extra ASSERT()s, and explicitly deleted copy
584         assignment operators with a comment.
585         * wtf/WeakPtr.h:
586         (WTF::WeakReference::clear): Used nullptr.
587         (WTF::WeakReference::create): Moved to private:
588         (WTF::WeakPtr::WeakPtr): For the default constructor, initialized the Ref with
589         a new WeakReference. For the other constructor, moved it to private:. Also added
590         copy constructors and copy assignment operators (since Ref doesn't have them but
591         RefPtr does). These constructors/operators are relied upon in various places
592         throughout WebCore.
593         (WTF::WeakPtr::operator bool): Made non-explicit.
594         (WTF::WeakReference::createUnbound): Deleted.
595         (WTF::WeakReference::bindTo): Deleted.
596         (WTF::WeakReference::WeakReference): Deleted.
597         (WTF::WeakPtrFactory::WeakPtrFactory): Deleted.
598
599 2015-01-16  Yusuke Suzuki  <utatane.tea@gmail.com>
600
601         std::all_of requires complete C++ iterators in GCC 4.8
602         https://bugs.webkit.org/show_bug.cgi?id=140530
603
604         Reviewed by Darin Adler.
605
606         In the WebKit2/UIProcess/WebProcessLifetimeObserver.cpp, std::all_of
607         is used for HashIterators. However, std::all_of requires the complete
608         C++ iterator interface including iterator_category typedef member and
609         it raises compile error in GCC 4.8 (and libstdc++) environment.
610
611         This patch inherits std::iterator with appropriate type parameters.
612         It automatically defines required typedefs including iterator_category.
613
614         * wtf/HashIterators.h:
615
616 2015-01-15  Csaba Osztrogonác  <ossy@webkit.org>
617
618         Remove ENABLE(SQL_DATABASE) guards
619         https://bugs.webkit.org/show_bug.cgi?id=140434
620
621         Reviewed by Darin Adler.
622
623         * wtf/FeatureDefines.h:
624
625 2015-01-14  Csaba Osztrogonác  <ossy@webkit.org>
626
627         Unreviewed fix after r163330.
628
629         * wtf/Platform.h: Use C style comment.
630
631 2015-01-14  Marc Juul  <juul@sudomesh.org>
632
633         C++ style comment was preventing compile if CPU(ARM_NEON)
634         https://bugs.webkit.org/show_bug.cgi?id=133827
635
636         Reviewed by Csaba Osztrogonác.
637
638         * wtf/Platform.h:
639
640 2015-01-13  Chris Dumez  <cdumez@apple.com>
641
642         Make WTF::Optional work with msvc 2013
643         https://bugs.webkit.org/show_bug.cgi?id=140401
644
645         Reviewed by Anders Carlsson.
646
647         Update the WTF::Optional implementation to use std::aligned_memory and
648         placement new instead of an unrestricted union because msvc 2013 still
649         doesn't support unrestricted unions.
650
651         This change is a pre-requirement to fix Bug 140347 as this change uses
652         WTF::Optional with types that have non-trivial copy constructors.
653
654         This change is covered by the existing Optional WTF test.
655
656         * wtf/Optional.h:
657
658 2015-01-11  Sam Weinig  <sam@webkit.org>
659
660         Remove support for SharedWorkers
661         https://bugs.webkit.org/show_bug.cgi?id=140344
662
663         Reviewed by Anders Carlsson.
664
665         * wtf/FeatureDefines.h:
666
667 2015-01-12  Darin Adler  <darin@apple.com>
668
669         Modernize and streamline HTMLTokenizer
670         https://bugs.webkit.org/show_bug.cgi?id=140166
671
672         Reviewed by Sam Weinig.
673
674         * wtf/Forward.h: Removed PassRef, added OrdinalNumber and TextPosition.
675
676 2015-01-09  Commit Queue  <commit-queue@webkit.org>
677
678         Unreviewed, rolling out r178154, r178163, and r178164.
679         https://bugs.webkit.org/show_bug.cgi?id=140292
680
681         Still multiple assertion failures on tests (Requested by ap on
682         #webkit).
683
684         Reverted changesets:
685
686         "Modernize and streamline HTMLTokenizer"
687         https://bugs.webkit.org/show_bug.cgi?id=140166
688         http://trac.webkit.org/changeset/178154
689
690         "Unreviewed speculative buildfix after r178154."
691         http://trac.webkit.org/changeset/178163
692
693         "One more unreviewed speculative buildfix after r178154."
694         http://trac.webkit.org/changeset/178164
695
696 2015-01-08  Darin Adler  <darin@apple.com>
697
698         Modernize and streamline HTMLTokenizer
699         https://bugs.webkit.org/show_bug.cgi?id=140166
700
701         Reviewed by Sam Weinig.
702
703         * wtf/Forward.h: Removed PassRef, added OrdinalNumber and TextPosition.
704
705 2015-01-08  Benjamin Poulain  <benjamin@webkit.org>
706
707         [WK2] Start a prototype for declarative site specific extensions
708         https://bugs.webkit.org/show_bug.cgi?id=140160
709
710         Reviewed by Andreas Kling.
711
712         * wtf/FeatureDefines.h:
713
714 2015-01-07  Daniel Bates  <dabates@apple.com>
715
716         [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
717         https://bugs.webkit.org/show_bug.cgi?id=137371
718
719         As pointed out by Tim Horton, use C-style comment instead of C++-style comment as
720         wtf/Compiler.h is included in the sandbox profile and the sandbox profile compiler
721         doesn't understand C++-style comments.
722
723         * wtf/Compiler.h:
724
725 2015-01-07  Daniel Bates  <dabates@apple.com>
726
727         [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
728         https://bugs.webkit.org/show_bug.cgi?id=137371
729
730         Reviewed by David Kilzer.
731
732         Move EXTERN_C_BEGIN and EXTERN_C_END macros from file WebKit2/config.h to here and
733         rename them to WTF_EXTERN_C_BEGIN and WTF_EXTERN_C_END, respectively, so that we
734         can make use of these macros in SPI wrapper headers (e.g. UIKitSPI.h).
735
736         I'll look to transition existing code to WTF_EXTERN_C_BEGIN/WTF_EXTERN_C_END and
737         remove EXTERN_C in a subsequent commit(s).
738
739         * wtf/Compiler.h:
740
741 2015-01-07  Commit Queue  <commit-queue@webkit.org>
742
743         Unreviewed, rolling out r178068.
744         https://bugs.webkit.org/show_bug.cgi?id=140235
745
746         Breaks the iOS build (Requested by enrica on #webkit).
747
748         Reverted changeset:
749
750         "[iOS] Make WebKit2 build with public iOS SDK and more build
751         fixes for DRT"
752         https://bugs.webkit.org/show_bug.cgi?id=137371
753         http://trac.webkit.org/changeset/178068
754
755 2015-01-07  Daniel Bates  <dabates@apple.com>
756
757         [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
758         https://bugs.webkit.org/show_bug.cgi?id=137371
759
760         Reviewed by David Kilzer.
761
762         Move EXTERN_C_BEGIN and EXTERN_C_END macros from file WebKit2/config.h to here and
763         rename them to WTF_EXTERN_C_BEGIN and WTF_EXTERN_C_END, respectively, so that we
764         can make use of these macros in SPI wrapper headers (e.g. UIKitSPI.h).
765
766         I'll look to transition existing code to WTF_EXTERN_C_BEGIN/WTF_EXTERN_C_END and
767         remove EXTERN_C in a subsequent commit(s).
768
769         * wtf/Compiler.h:
770
771 2015-01-07  Brian J. Burg  <burg@cs.washington.edu>
772
773         Web Inspector: purge PassRefPtr from Inspector code and use Ref for typed and untyped protocol objects
774         https://bugs.webkit.org/show_bug.cgi?id=140053
775
776         Reviewed by Andreas Kling.
777
778         * wtf/Stopwatch.h:
779         (WTF::Stopwatch::create): Return a Ref.
780
781 2015-01-07  Commit Queue  <commit-queue@webkit.org>
782
783         Unreviewed, rolling out r178039.
784         https://bugs.webkit.org/show_bug.cgi?id=140187
785
786         Breaks ObjC Inspector Protocol (Requested by JoePeck on
787         #webkit).
788
789         Reverted changeset:
790
791         "Web Inspector: purge PassRefPtr from Inspector code and use
792         Ref for typed and untyped protocol objects"
793         https://bugs.webkit.org/show_bug.cgi?id=140053
794         http://trac.webkit.org/changeset/178039
795
796 2015-01-06  Brian J. Burg  <burg@cs.washington.edu>
797
798         Web Inspector: purge PassRefPtr from Inspector code and use Ref for typed and untyped protocol objects
799         https://bugs.webkit.org/show_bug.cgi?id=140053
800
801         Reviewed by Andreas Kling.
802
803         * wtf/Stopwatch.h:
804         (WTF::Stopwatch::create): Return a Ref.
805
806 2015-01-06  Alexey Proskuryakov  <ap@apple.com>
807
808         ADDRESS_SANITIZER macro is overloaded
809         https://bugs.webkit.org/show_bug.cgi?id=140130
810
811         Reviewed by Anders Carlsson.
812
813         * wtf/Compiler.h: Added an ASAN_ENABLED macro. The abbreviation should become well
814         known - we already use it in tools.
815
816         * wtf/Assertions.h:
817         * wtf/RefCounted.h:
818         * wtf/SizeLimits.cpp:
819         Change the conditional to ENABLE(SECURITY_ASSERTIONS). These checks will be used
820         in debug builds, and also when one explicitly passes -DENABLE_SECURITY_ASSERTIONS.
821
822 2015-01-05  Andreas Kling  <akling@apple.com>
823
824         Purge PassRefPtr from Page.
825         <https://webkit.org/b/140089>
826
827         Reviewed by Anders Carlsson.
828
829         Make SchedulePair::create() return Ref since it never fails.
830
831         * wtf/SchedulePair.h:
832         (WTF::SchedulePair::create):
833
834 2015-01-01  Darin Adler  <darin@apple.com>
835
836         Rework code that hides characters in password fields to streamline a little
837         https://bugs.webkit.org/show_bug.cgi?id=140035
838
839         Reviewed by Sam Weinig.
840
841         * wtf/text/StringImpl.cpp:
842         (WTF::StringImpl::fill): Deleted.
843         * wtf/text/StringImpl.h: Deleted StringImpl::fill.
844         * wtf/text/WTFString.h:
845         (WTF::String::fill): Deleted.
846
847 2014-12-26  Dan Bernstein  <mitz@apple.com>
848
849         Build fix.
850
851         Removed use of __builtin_s{add,sub}_overflow introduced in r177729 that was causing a compiler used at Apple to crash because of <rdar://problem/19347133>.
852
853         * wtf/SaturatedArithmetic.h:
854         (signedAddOverflows):
855         (signedSubtractOverflows):
856
857 2014-12-26  Dan Bernstein  <mitz@apple.com>
858
859         <rdar://problem/19348208> REGRESSION (r177027): iOS builds use the wrong toolchain
860         https://bugs.webkit.org/show_bug.cgi?id=139950
861
862         Reviewed by David Kilzer.
863
864         * Configurations/Base.xcconfig: Only define TOOLCHAINS when building for OS X, doing so
865         in a manner that works with Xcode 5.1.1.
866
867 2014-12-25  Dan Bernstein  <mitz@apple.com>
868
869         Try to fix the Windows build after r177733.
870
871         * wtf/Ref.h:
872
873 2014-12-25  Alexey Proskuryakov  <ap@apple.com>
874
875         Simplify saturated integer add/sub
876         https://bugs.webkit.org/show_bug.cgi?id=139854
877
878         Address Darin's post-commit feedback to fix API tests.
879
880         * wtf/SaturatedArithmetic.h: (saturatedSubtraction):
881
882 2014-12-24  Benjamin Poulain  <benjamin@webkit.org>
883
884         Simplify saturated integer add/sub
885         https://bugs.webkit.org/show_bug.cgi?id=139854
886
887         Reviewed by Darin Adler.
888
889         * wtf/Compiler.h:
890         Make a wrapper for __has_builtin for compilers that do not support it.
891
892         * wtf/SaturatedArithmetic.h:
893         (saturatedAddition):
894         (saturatedSubtraction):
895         Use the builtins when possible instead of reinventing the wheel.
896         On ARMv7, use the saturated math instructions.
897
898 2014-12-23  Anders Carlsson  <andersca@apple.com>
899
900         Move dynamic_objc_cast to RetainPtr.h
901         https://bugs.webkit.org/show_bug.cgi?id=139915
902
903         Reviewed by Sam Weinig.
904
905         * wtf/RetainPtr.h:
906         (WTF::dynamic_objc_cast):
907
908 2014-12-23  Anders Carlsson  <andersca@apple.com>
909
910         Re-indent RefPtr.h and RetainPtr.h.
911
912         Rubber-stamped by Sam Weinig.
913
914         * wtf/RefPtr.h:
915         * wtf/RetainPtr.h:
916
917 2014-12-20  Eric Carlson  <eric.carlson@apple.com>
918
919         [iOS] add optimized fullscreen API
920         https://bugs.webkit.org/show_bug.cgi?id=139833
921         <rdar://problem/18844486>
922
923         Reviewed by Simon Fraser.
924
925         * wtf/Platform.h: Define ENABLE_VIDEO_PRESENTATION_MODE.
926
927 2014-12-18  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
928
929         Fix build break on EFL and GTK since r177523
930         https://bugs.webkit.org/show_bug.cgi?id=139805
931
932         Reviewed by Csaba Osztrogonác.
933
934         * wtf/Ref.h: Include <wtf/StdLibExtras.h> to use std::exchange().
935
936 2014-12-18  Gavin Barraclough  <barraclough@apple.com>
937
938         Add strong typing to RefCounter interface, return value as a bool.
939         https://bugs.webkit.org/show_bug.cgi?id=139776
940
941         Unreviewed style fixes.
942
943         * wtf/RefCounter.h:
944         (WTF::=):
945
946 2014-12-18  Brent Fulgham  <bfulgham@apple.com>
947
948         [Win] Build correction after r177541.
949
950         * wtf/RefCounter.h:
951         (WTF::RefCounter::Token<T>::Token): Revise constructor inlines to correct
952         syntax error.
953
954 2014-12-18  Gavin Barraclough  <barraclough@apple.com>
955
956         Add strong typing to RefCounter interface, return value as a bool.
957         https://bugs.webkit.org/show_bug.cgi?id=139776
958
959         Reviewed by Geoff Garen.
960
961         Currently all token vended by a RefCounter have the same type - Ref<RefCounter::Count>.
962         This means there is no compile time type checking to prevent mistakes. Update the count()
963         method to token<>(), templated on type used to identify the token being returned.
964         Calls to token<T>() will return a result of type RefCounter::Token<T>.
965
966         There are a few problems with the fact the counter will return you an exact count of the
967         number of outstanding tokens:
968           - It is desirable to only fire the callback on zero-edge changes; it is more consistent
969             to do so if the value is only readable as a boolean.
970           - It is desirable to provide the value as an argument to the callback, however to make
971             this useful for integer values it is also necessary to indicate the direction of change
972             (0->1 is often interesting where 2->1 is not).
973           - There is a mismatch between the precision of returning a count, and the inherent
974             imprecision of a token based mechanism, where it may be difficult to guarantee
975             absolutely no unnecessary refcount churn, and thus unintentional counter values.
976
977         * wtf/RefCounter.cpp:
978         (WTF::RefCounter::Count::ref):
979         (WTF::RefCounter::Count::deref):
980             - only call the callback on zero-edge changes; provide the value.
981         (WTF::RefCounter::RefCounter):
982             - callback now takes a bool argument.
983         * wtf/RefCounter.h:
984         (WTF::RefCounter::Token::Token):
985             - New opaque type to reference the RefCounter::Count.
986         (WTF::RefCounter::Token::operator!):
987             - ! operator checks for null / anasigned Tokens.
988         (WTF::RefCounter::RefCounter):
989             - callback now takes a bool argument.
990         (WTF::RefCounter::token):
991             - renamed from count(), templated on type of token returned.
992         (WTF::RefCounter::value):
993             - now returns a bool.
994         (WTF::RefCounter::Token<T>::Token):
995         (WTF::=):
996             - Tokens can be copied & assigned.
997         (WTF::RefCounter::count): Deleted.
998             - renamed to token<>().
999
1000 2014-12-18  Anders Carlsson  <andersca@apple.com>
1001
1002         Simplify smart pointer classes by using std::exchange
1003         https://bugs.webkit.org/show_bug.cgi?id=139790
1004
1005         Reviewed by Andreas Kling.
1006
1007         * wtf/MallocPtr.h:
1008         * wtf/OSObjectPtr.h:
1009         * wtf/OwnPtr.h:
1010         (WTF::OwnPtr<T>::clear):
1011         (WTF::OwnPtr<T>::release):
1012         (WTF::OwnPtr<T>::leakPtr):
1013         (WTF::=):
1014         * wtf/PassOwnPtr.h:
1015         (WTF::PassOwnPtr<T>::leakPtr):
1016         * wtf/PassRefPtr.h:
1017         (WTF::PassRefPtr<T>::leakRef):
1018         * wtf/Ref.h:
1019         * wtf/RefPtr.h:
1020         (WTF::RefPtr<T>::clear):
1021         (WTF::RefPtr<T>::leakRef):
1022         * wtf/RetainPtr.h:
1023         (WTF::RetainPtr<T>::leakRef):
1024
1025 2014-12-18  Anders Carlsson  <andersca@apple.com>
1026
1027         Clean up MachSendRight and add a copySendRight member function
1028         https://bugs.webkit.org/show_bug.cgi?id=139788
1029
1030         Reviewed by Tim Horton.
1031
1032         * wtf/StdLibExtras.h:
1033         (std::exchange):
1034         Add an implementation of std::exchange.
1035
1036 2014-12-17  Chris Dumez  <cdumez@apple.com>
1037
1038         [iOS] Make it possible to toggle FeatureCounter support at runtime
1039         https://bugs.webkit.org/show_bug.cgi?id=139688
1040         <rdar://problem/19266254>
1041
1042         Reviewed by Andreas Kling.
1043
1044         Remove FeatureCounter API from WTF and move it to WebCore/platform
1045         instead so that it can log conditionally based on a WebCore setting.
1046
1047         * WTF.vcxproj/WTF.vcxproj:
1048         * WTF.xcodeproj/project.pbxproj:
1049         * wtf/CMakeLists.txt:
1050
1051 2014-12-17  Brent Fulgham  <bfulgham@apple.com>
1052
1053         [Win] Correct DebugSuffix builds under MSBuild
1054         https://bugs.webkit.org/show_bug.cgi?id=139733
1055         <rdar://problem/19276880>
1056
1057         Reviewed by Simon Fraser.
1058
1059         * WTF.vcxproj/WTF.proj: Make sure to use the '_debug' suffix
1060         when building the DebugSuffix target.
1061
1062 2014-12-17  Anders Carlsson  <andersca@apple.com>
1063
1064         Make Ref::copyRef const and ref-qualified
1065         https://bugs.webkit.org/show_bug.cgi?id=139730
1066
1067         Reviewed by Andreas Kling.
1068
1069         * wtf/Ref.h:
1070
1071 2014-12-16  Daniel Bates  <dabates@apple.com>
1072
1073         [iOS] WTF fails to build with public SDK due to missing header CPAggregateDictionary.h
1074         https://bugs.webkit.org/show_bug.cgi?id=139695
1075
1076         Reviewed by Chris Dumez.
1077
1078         Add USE(APPLE_INTERNAL_SDK)-guard around iOS-specific feature counter implementation
1079         as we are only interested in counting features in builds of iOS WebKit that were built
1080         with the Apple Internal SDK.
1081
1082         * wtf/FeatureCounter.cpp:
1083         * wtf/ios/FeatureCounter.mm:
1084
1085 2014-12-16  Geoffrey Garen  <ggaren@apple.com>
1086
1087         Enable FastMalloc in debug builds
1088         https://bugs.webkit.org/show_bug.cgi?id=139692
1089
1090         Reviewed by Alexey Proskuryakov.
1091
1092         This will give debug builds greater fidelity to the real thing.
1093
1094         FastMalloc now transparently supports all the malloc debugging APIs I
1095         know of by disabling itself at runtime -- and it should be easy to add
1096         support for any APIs I missed -- so there's no need to turn it off in
1097         debug builds.
1098
1099         * wtf/FastMalloc.cpp:
1100
1101 2014-12-16  Anders Carlsson  <andersca@apple.com>
1102
1103         RefPtr::copyRef should be const
1104         https://bugs.webkit.org/show_bug.cgi?id=139689
1105
1106         Reviewed by Andreas Kling.
1107
1108         copyRef() doesn't modify the original object so it should be const.
1109         Also, add a && qualified overload and mark it deleted so that calls to copyRef() where
1110         the object is an rvalue will fail to compile.
1111
1112         * wtf/RefPtr.h:
1113
1114 2014-12-15  Chris Dumez  <cdumez@apple.com>
1115
1116         [iOS] Add feature counting support
1117         https://bugs.webkit.org/show_bug.cgi?id=139652
1118         <rdar://problem/19255690>
1119
1120         Reviewed by Gavin Barraclough.
1121
1122         Add a FeatureCounter API for to log / count when a feature
1123         is used. For now, this is only implementated on iOS.
1124
1125         * WTF.vcxproj/WTF.vcxproj:
1126         * WTF.xcodeproj/project.pbxproj:
1127         * wtf/CMakeLists.txt:
1128         * wtf/FeatureCounter.cpp: Added.
1129         (WTF::incrementFeatureCounterKey):
1130         (WTF::setFeatureCounterKey):
1131         * wtf/FeatureCounter.h: Added.
1132         * wtf/ios/FeatureCounter.mm: Added.
1133         (WTF::incrementFeatureCounterKey):
1134         (WTF::setFeatureCounterKey):
1135
1136 2014-12-12  Anders Carlsson  <andersca@apple.com>
1137
1138         Get rid of the DONT_FINALIZE_ON_MAIN_THREAD #define
1139         https://bugs.webkit.org/show_bug.cgi?id=139613
1140
1141         Reviewed by Sam Weinig.
1142
1143         * wtf/Platform.h:
1144         Remove the #define.
1145
1146 2014-12-15  Commit Queue  <commit-queue@webkit.org>
1147
1148         Unreviewed, rolling out r177284.
1149         https://bugs.webkit.org/show_bug.cgi?id=139658
1150
1151         "Breaks API tests and LayoutTests on Yosemite Debug"
1152         (Requested by msaboff on #webkit).
1153
1154         Reverted changeset:
1155
1156         "Make sure range based iteration of Vector<> still receives
1157         bounds checking"
1158         https://bugs.webkit.org/show_bug.cgi?id=138821
1159         http://trac.webkit.org/changeset/177284
1160
1161 2014-12-15  Andreas Kling  <akling@apple.com>
1162
1163         Purge PassRefPtr from FocusEvent code.
1164         <https://webkit.org/b/139647>
1165
1166         Reviewed by Anders Carlsson.
1167
1168         Add a RefPtr::copyRef() to use when passing a RefPtr to a RefPtr&& without
1169         transferring the ownership.
1170
1171         * wtf/RefPtr.h:
1172
1173 2014-12-15  Oliver Hunt  <oliver@apple.com>
1174
1175         Make sure range based iteration of Vector<> still receives bounds checking
1176         https://bugs.webkit.org/show_bug.cgi?id=138821
1177
1178         Reviewed by Mark Lam.
1179
1180         Add a new IndexedIterator struct to WTF that wraps a
1181         Vector type and index to provide pointer like semantics
1182         while still performing runtime bounds checking, even in
1183         release builds. We store a simple index into the vector
1184         which means that this iterator allows vector resizing
1185         during iteration. If the vector is resized such that the
1186         iterator is out of bounds, then any attempt to dereference
1187         the iterator will crash safely.
1188
1189         For the purpose of retaining semantically equivalent
1190         behaviour, the iterator can be moved to m_index == size()
1191         as that is the standard "end" terminator for these types.
1192         Attempting to dereference at that point will still crash
1193         rather than perform an unsafe memory operation.
1194
1195         By necessity there are many overrides for operator + and - as
1196         we otherwise hit many different type promotion ambiguities when
1197         performing arithmetic with iterators. These ambiguities are also
1198         different for 32- vs. 64-bit, so duplicating the functions
1199         and then forwarding to the core implementations that performed
1200         the bounds checking and mutation seemed like the right call.
1201
1202         * WTF.vcxproj/WTF.vcxproj:
1203         * WTF.vcxproj/WTF.vcxproj.filters:
1204         * WTF.xcodeproj/project.pbxproj:
1205         * wtf/IndexedIterator.h: Added.
1206         (WTF::IndexedIterator::IndexedIterator):
1207         (WTF::IndexedIterator::operator->):
1208         (WTF::IndexedIterator::operator*):
1209         (WTF::IndexedIterator::get):
1210         (WTF::IndexedIterator::operator++):
1211         (WTF::IndexedIterator::operator--):
1212         (WTF::IndexedIterator::operator UnspecifiedBoolType):
1213         (WTF::IndexedIterator::operator-):
1214         (WTF::IndexedIterator::operator=):
1215         (WTF::IndexedIterator::operator==):
1216         (WTF::IndexedIterator::operator!=):
1217         (WTF::IndexedIterator::operator<):
1218         (WTF::IndexedIterator::operator<=):
1219         (WTF::IndexedIterator::operator>):
1220         (WTF::IndexedIterator::operator>=):
1221         (WTF::IndexedIterator::operator const_iterator):
1222         (WTF::IndexedIterator::unsafeGet):
1223         (WTF::getPtr):
1224         (WTF::operator-):
1225         (WTF::operator==):
1226         (WTF::operator!=):
1227         (WTF::operator<=):
1228         (WTF::operator>=):
1229         (WTF::operator<):
1230         (WTF::operator>):
1231         (WTF::IndexedIteratorSelector::makeIterator):
1232         (WTF::IndexedIteratorSelector::makeConstIterator):
1233         * wtf/RefCountedArray.h:
1234         (WTF::RefCountedArray::RefCountedArray):
1235         * wtf/Vector.h:
1236         (WTF::Vector::Vector):
1237         (WTF::Vector::begin):
1238         (WTF::Vector::end):
1239         (WTF::OverflowHandler>::Vector):
1240         (WTF::=):
1241         (WTF::OverflowHandler>::fill):
1242         (WTF::OverflowHandler>::expandCapacity):
1243         (WTF::OverflowHandler>::tryExpandCapacity):
1244         (WTF::OverflowHandler>::resize):
1245         (WTF::OverflowHandler>::shrink):
1246         (WTF::OverflowHandler>::grow):
1247         (WTF::OverflowHandler>::reserveCapacity):
1248         (WTF::OverflowHandler>::tryReserveCapacity):
1249         (WTF::OverflowHandler>::shrinkCapacity):
1250         (WTF::OverflowHandler>::append):
1251         (WTF::OverflowHandler>::tryAppend):
1252         (WTF::OverflowHandler>::appendSlowCase):
1253         (WTF::OverflowHandler>::uncheckedAppend):
1254         (WTF::OverflowHandler>::appendVector):
1255         (WTF::OverflowHandler>::insert):
1256         (WTF::OverflowHandler>::insertVector):
1257         (WTF::OverflowHandler>::remove):
1258
1259 2014-12-14  Andreas Kling  <akling@apple.com>
1260
1261         Minor follow-up tweaks suggested by Darin on bug 139587.
1262
1263         * wtf/text/WTFString.h:
1264         (WTF::String::String):
1265
1266 2014-12-14  Andreas Kling  <akling@apple.com>
1267
1268         Replace PassRef with Ref/Ref&& across the board.
1269         <https://webkit.org/b/139587>
1270
1271         Reviewed by Darin Adler.
1272
1273         Kill the PassRef class and replace it by Ref/Ref&&.
1274         Usage is simple:
1275
1276             - For locals and members, keep using Ref<T>.
1277             - For return types, use Ref<T>.
1278             - For (ownership-transferring) arguments, use Ref<T>&&.
1279
1280         When passing to a Ref&&, use WTF::move() to mobilize the value
1281         at the call site, e.g:
1282
1283             void myFunction(Ref<Foo>&&);
1284
1285             Ref<Foo> myFoo(Foo::create());
1286             myFunction(WTF::move(myFoo));
1287             // 'myFoo' is invalid from this point forward.
1288
1289         As you can see, it works a lot like PassRefPtr, but unlike PassRefPtr
1290         it won't surprise you by becoming null *unless* you WTF::move it.
1291
1292         I've also added a Ref::copyRef() for instances where you want to
1293         return a Ref *without* transferring ownership, e.g code like:
1294
1295             Ref<Foo> foo() { return m_foo; }
1296
1297         ... now becomes ...
1298
1299             Ref<Foo> foo() { return m_foo.copyRef(); }
1300
1301         This makes it explicit that a refcount bump will occur.
1302
1303         Finally, do note that unlike last year's PassRef, Ref&& does not
1304         require you to move it to avoid leaking; it will clean itself up.
1305
1306         * wtf/PassRef.h:
1307         (WTF::adopted): Deleted.
1308         (WTF::PassRef<T>::PassRef): Deleted.
1309         (WTF::PassRef<T>::~PassRef): Deleted.
1310         (WTF::PassRef<T>::get): Deleted.
1311         (WTF::PassRef<T>::ptr): Deleted.
1312         (WTF::PassRef<T>::leakRef): Deleted.
1313         (WTF::adoptRef): Deleted.
1314         (WTF::createRefCounted): Deleted.
1315         * wtf/PassRefPtr.h:
1316         (WTF::PassRefPtr::PassRefPtr):
1317         * wtf/Ref.h:
1318         (WTF::adopted):
1319         (WTF::Ref::~Ref):
1320         (WTF::Ref::Ref):
1321         (WTF::Ref::operator=):
1322         (WTF::Ref::operator->):
1323         (WTF::Ref::ptr):
1324         (WTF::Ref::get):
1325         (WTF::Ref::operator T&):
1326         (WTF::Ref::operator const T&):
1327         (WTF::Ref<T>::replace):
1328         (WTF::adoptRef):
1329         * wtf/RefCounter.h:
1330         (WTF::RefCounter::count):
1331         * wtf/RefPtr.h:
1332         (WTF::RefPtr::releaseNonNull):
1333         (WTF::RefPtr<T>::RefPtr):
1334         (WTF::=):
1335         * wtf/text/AtomicString.cpp:
1336         (WTF::addToStringTable):
1337         (WTF::AtomicString::add):
1338         (WTF::AtomicString::addFromLiteralData):
1339         (WTF::AtomicString::addSlowCase):
1340         * wtf/text/AtomicString.h:
1341         * wtf/text/StringImpl.cpp:
1342         (WTF::StringImpl::createFromLiteral):
1343         (WTF::StringImpl::createWithoutCopying):
1344         (WTF::StringImpl::createUninitializedInternal):
1345         (WTF::StringImpl::createUninitializedInternalNonEmpty):
1346         (WTF::StringImpl::createUninitialized):
1347         (WTF::StringImpl::reallocateInternal):
1348         (WTF::StringImpl::reallocate):
1349         (WTF::StringImpl::createInternal):
1350         (WTF::StringImpl::create):
1351         (WTF::StringImpl::create8BitIfPossible):
1352         (WTF::StringImpl::substring):
1353         (WTF::StringImpl::lower):
1354         (WTF::StringImpl::upper):
1355         (WTF::StringImpl::fill):
1356         (WTF::StringImpl::foldCase):
1357         (WTF::StringImpl::convertToASCIILowercase):
1358         (WTF::StringImpl::stripMatchedCharacters):
1359         (WTF::StringImpl::stripWhiteSpace):
1360         (WTF::StringImpl::removeCharacters):
1361         (WTF::StringImpl::simplifyMatchedCharactersToSpace):
1362         (WTF::StringImpl::simplifyWhiteSpace):
1363         (WTF::StringImpl::replace):
1364         (WTF::StringImpl::adopt):
1365         * wtf/text/StringImpl.h:
1366         (WTF::StringImpl::create8BitIfPossible):
1367         (WTF::StringImpl::create):
1368         (WTF::StringImpl::createSubstringSharingImpl8):
1369         (WTF::StringImpl::createSubstringSharingImpl):
1370         (WTF::StringImpl::createFromLiteral):
1371         (WTF::StringImpl::createEmptyUnique):
1372         (WTF::StringImpl::adopt):
1373         (WTF::StringImpl::replace):
1374         (WTF::StringImpl::constructInternal<LChar>):
1375         (WTF::StringImpl::constructInternal<UChar>):
1376         (WTF::StringImpl::isolatedCopy):
1377         * wtf/text/WTFString.h:
1378         (WTF::String::String):
1379
1380 2014-12-10  Geoffrey Garen  <ggaren@apple.com>
1381
1382         Please disable the webkitFirstVersionWithInitConstructorSupport check on Apple TV
1383         https://bugs.webkit.org/show_bug.cgi?id=139501
1384
1385         Reviewed by Gavin Barraclough.
1386
1387         Added a platform definition for APPLETV.
1388
1389         (It's not an OS because it's not mutually exclusive with other OS definitions.)
1390
1391         * wtf/Platform.h:
1392
1393 2014-12-10  Martin Robinson  <mrobinson@igalia.com>
1394
1395         [GTK] Add support for text-decoration-skip
1396         https://bugs.webkit.org/show_bug.cgi?id=131540
1397
1398         Reviewed by Gustavo Noronha Silva.
1399
1400         * wtf/Platform.h: Enable text decoration skip by default.
1401
1402 2014-12-09  David Kilzer  <ddkilzer@apple.com>
1403
1404         Switch from using PLATFORM_NAME to SDK selectors in ANGLE, bmalloc, gtest, JavaScriptCore, WTF
1405         <http://webkit.org/b/139212>
1406
1407         Reviewed by Joseph Pecoraro.
1408
1409         * Configurations/Base.xcconfig:
1410         - Only set GCC_ENABLE_OBJC_GC, GCC_MODEL_TUNING and TOOLCHAINS
1411           on OS X.
1412         * Configurations/DebugRelease.xcconfig:
1413         - Only set MACOSX_DEPLOYMENT_TARGET and SDKROOT on OS X.
1414
1415 2014-12-09  Dean Jackson  <dino@apple.com>
1416
1417         [Apple] Use Accelerate framework to speed-up FEGaussianBlur
1418         https://bugs.webkit.org/show_bug.cgi?id=139310
1419
1420         Unreviewed followup, after comments by Andreas Kling.
1421
1422         It was pointed out that we already have a USE(ACCELERATE), so
1423         we don't need a HAVE(ACCELERATE) :)
1424
1425         * wtf/Platform.h:
1426
1427 2014-12-09  Alberto Garcia  <berto@igalia.com>
1428
1429         Undefined Symbol build error "_objc_registerThreadWithCollector" when building WebKit GTK Mac OS X on Snow Leopard
1430         https://bugs.webkit.org/show_bug.cgi?id=58737
1431
1432         Reviewed by Darin Adler.
1433
1434         Replace OS(MAC_OS_X) with PLATFORM(MAC) to prevent using
1435         osx-specific code in WebKitGTK+ builds.
1436
1437         * wtf/ThreadingPthreads.cpp:
1438         (WTF::initializeCurrentThreadInternal):
1439
1440 2014-12-08  Dean Jackson  <dino@apple.com>
1441
1442         [Apple] Use Accelerate framework to speed-up FEGaussianBlur
1443         https://bugs.webkit.org/show_bug.cgi?id=139310
1444         <rdar://problem/18434594>
1445
1446         Reviewed by Simon Fraser.
1447
1448         Add a HAVE_ACCELERATE flag, true on Apple platforms.
1449
1450         * wtf/Platform.h:
1451
1452 2014-12-08  Myles C. Maxfield  <mmaxfield@apple.com>
1453
1454         Fix iOS build after r176971.
1455
1456         I had previously modified the WTF forwarding header instead of modifying the real source.
1457
1458         * wtf/unicode/CharacterNames.h:
1459
1460 2014-12-08  Anders Carlsson  <andersca@apple.com>
1461
1462         Change WTF::currentCPUTime to return std::chrono::microseconds and get rid of currentCPUTimeMS
1463         https://bugs.webkit.org/show_bug.cgi?id=139410
1464
1465         Reviewed by Andreas Kling.
1466
1467         * wtf/CurrentTime.cpp:
1468         (WTF::currentCPUTime):
1469         (WTF::currentCPUTimeMS): Deleted.
1470         * wtf/CurrentTime.h:
1471
1472 2014-12-08  Chris Dumez  <cdumez@apple.com>
1473
1474         Revert r176293 & r176275
1475
1476         Unreviewed, revert r176293 & r176275 changing the Vector API to use unsigned type
1477         instead of size_t. There is some disagreement regarding the long-term direction
1478         of the API and we shouldn’t leave the API partly transitioned to unsigned type
1479         while making a decision.
1480
1481         * wtf/Forward.h:
1482         * wtf/Vector.h:
1483         (WTF::VectorTypeOperations::compare):
1484         (WTF::VectorBufferBase::allocateBuffer):
1485         (WTF::VectorBufferBase::tryAllocateBuffer):
1486         (WTF::VectorBufferBase::shouldReallocateBuffer):
1487         (WTF::VectorBufferBase::reallocateBuffer):
1488         (WTF::VectorBufferBase::capacity):
1489         (WTF::VectorBufferBase::VectorBufferBase):
1490         (WTF::VectorBuffer::VectorBuffer):
1491         (WTF::VectorBuffer::allocateBuffer):
1492         (WTF::VectorBuffer::tryAllocateBuffer):
1493         (WTF::VectorBuffer::shouldReallocateBuffer):
1494         (WTF::VectorBuffer::reallocateBuffer):
1495         (WTF::VectorBuffer::swap):
1496         (WTF::VectorBuffer::swapInlineBuffer):
1497         (WTF::VectorBuffer::swapInlineBuffers):
1498         (WTF::Vector::Vector):
1499         (WTF::Vector::capacity):
1500         (WTF::Vector::at):
1501         (WTF::Vector::operator[]):
1502         (WTF::OverflowHandler>::find):
1503         (WTF::OverflowHandler>::reverseFind):
1504         (WTF::OverflowHandler>::fill):
1505         (WTF::OverflowHandler>::expandCapacity):
1506         (WTF::OverflowHandler>::tryExpandCapacity):
1507         (WTF::OverflowHandler>::resize):
1508         (WTF::OverflowHandler>::resizeToFit):
1509         (WTF::OverflowHandler>::shrink):
1510         (WTF::OverflowHandler>::grow):
1511         (WTF::OverflowHandler>::reserveCapacity):
1512         (WTF::OverflowHandler>::tryReserveCapacity):
1513         (WTF::OverflowHandler>::reserveInitialCapacity):
1514         (WTF::OverflowHandler>::shrinkCapacity):
1515         (WTF::OverflowHandler>::append):
1516         (WTF::OverflowHandler>::tryAppend):
1517         (WTF::OverflowHandler>::insert):
1518         (WTF::OverflowHandler>::insertVector):
1519         (WTF::OverflowHandler>::remove):
1520         (WTF::OverflowHandler>::reverse):
1521         (WTF::OverflowHandler>::checkConsistency):
1522         * wtf/text/AtomicString.h:
1523         * wtf/text/StringImpl.h:
1524         (WTF::StringImpl::adopt):
1525         (WTF::equalIgnoringNullity):
1526         * wtf/text/StringView.h:
1527         (WTF::append):
1528         * wtf/text/WTFString.h:
1529
1530 2014-12-07  Andreas Kling  <akling@apple.com>
1531
1532         Use more PassRef in AtomicString.
1533         <https://webkit.org/b/139319>
1534
1535         Reviewed by Antti Koivisto.
1536
1537         Make a pass over AtomicString and convert functions that return PassRefPtr
1538         into returning RefPtr (where it may be null) and PassRef otherwise.
1539         This allows the compiler to skip null checks in many places.
1540
1541         * wtf/text/AtomicString.cpp:
1542         (WTF::addToStringTable):
1543         (WTF::AtomicString::add):
1544         (WTF::AtomicString::addFromLiteralData):
1545         (WTF::AtomicString::addSlowCase):
1546         * wtf/text/AtomicString.h:
1547         (WTF::AtomicString::add):
1548         (WTF::AtomicString::addWithStringTableProvider):
1549         * wtf/text/cf/AtomicStringCF.cpp:
1550         (WTF::AtomicString::add):
1551
1552 2014-12-05  Roger Fong  <roger_fong@apple.com>
1553
1554         [Win] proj files copying over too many resources..
1555         https://bugs.webkit.org/show_bug.cgi?id=139315.
1556         <rdar://problem/19148278>
1557
1558         Reviewed by Brent Fulgham.
1559
1560         * WTF.vcxproj/WTF.proj: Only copy WTF.dll.
1561
1562 2014-12-05  Andreas Kling  <akling@apple.com>
1563
1564         PassRef should deref on destruction if pointee was not moved.
1565         <https://webkit.org/b/139309>
1566
1567         Reviewed by Antti Koivisto.
1568
1569         Let PassRef become nullptr internally after having WTF::move()'d the pointee.
1570         This means that PassRef is now essentially a PassRefPtr that can only be
1571         constructed with a non-null pointee.
1572
1573         This should make it possible for all ::create()-style construction helpers to
1574         return PassRef, removing a branch in each case.
1575
1576         * wtf/PassRef.h:
1577         (WTF::PassRef<T>::PassRef):
1578         (WTF::PassRef<T>::~PassRef):
1579         (WTF::PassRef<T>::get):
1580         (WTF::PassRef<T>::ptr):
1581         (WTF::PassRef<T>::leakRef):
1582         (WTF::PassRef<T>::dropRef): Deleted.
1583
1584 2014-12-05  Jer Noble  <jer.noble@apple.com>
1585
1586         [WTF] MediaTime should support round-tripping from and to doubles.
1587         https://bugs.webkit.org/show_bug.cgi?id=139248
1588
1589         Reviewed by Eric Carlson.
1590
1591         MediaTimes should be able to return precisely the same double value as was used
1592         when the MediaTime was created, so long as that MediaTime was not modified in a
1593         non-destructive way. This will allow API which accepts floating-point values to
1594         return the exact same value when asked, but still be able to store that value
1595         as a MediaTime.
1596
1597         * wtf/MediaTime.cpp:
1598         (WTF::MediaTime::createWithFloat): Added; store the floating-point value in a union.
1599         (WTF::MediaTime::createWithDouble): Ditto.
1600         (WTF::MediaTime::toFloat): If the value is a double, just return it.
1601         (WTF::MediaTime::toDouble): Ditto.
1602         (WTF::MediaTime::operator+): Special case when one or both sides are doubles.
1603         (WTF::MediaTime::operator-): Ditto.
1604         (WTF::MediaTime::operator*): Ditto.
1605         (WTF::MediaTime::compare): Ditto.
1606         (WTF::abs): Ditto.
1607         (WTF::MediaTime::setTimeScale): Convert the MediaTime from a double.
1608
1609 2014-12-05  peavo@outlook.com  <peavo@outlook.com>
1610
1611         [WinCairo] WTF project is missing a GStreamer source file.
1612         https://bugs.webkit.org/show_bug.cgi?id=139296
1613
1614         Reviewed by Philippe Normand.
1615
1616         The WTF project file is missing a GStreamer source file,
1617         causing a link error when compiling with GStreamer enabled.
1618
1619         * WTF.vcxproj/WTF.vcxproj:
1620         * WTF.vcxproj/WTF.vcxproj.filters:
1621
1622 2014-12-04  David Kilzer  <ddkilzer@apple.com>
1623
1624         REGRESSION (r176683): RefCounter.h is installed outside SDKROOT
1625
1626         * WTF.xcodeproj/project.pbxproj: Don't mark RefCounter.h as a
1627         private header.  WTF headers use a special build phase script to
1628         be installed.
1629
1630 2014-12-04  Anders Carlsson  <andersca@apple.com>
1631
1632         Make API::String copy the underlying strings if needed, for thread safety
1633         https://bugs.webkit.org/show_bug.cgi?id=139261
1634
1635         Reviewed by Sam Weinig.
1636
1637         * wtf/RefPtr.h:
1638         (WTF::RefPtr<T>::leakRef):
1639         Add a leakRef() to RefPtr so we don't have to go through PassRefPtr.
1640
1641         * wtf/text/WTFString.cpp:
1642         (WTF::String::isSafeToSendToAnotherThread):
1643         Check if the string is empty before checking whether it's in an atomic string table.
1644         It's safe to send empty strings to other threads even if they're in the atomic string table
1645         since they will never be deallocated.
1646
1647 2014-12-04  Csaba Osztrogonác  <ossy@webkit.org>
1648
1649         Fix cast-align warning in StringImpl.h
1650         https://bugs.webkit.org/show_bug.cgi?id=139222
1651
1652         Reviewed by Anders Carlsson.
1653
1654         * wtf/text/StringImpl.h:
1655         (WTF::StringImpl::tailPointer):
1656
1657 2014-12-02  Mark Lam  <mark.lam@apple.com>
1658
1659         Rolling out r176592, r176603, r176616, and r176705 until build and perf issues are resolved.
1660         https://bugs.webkit.org/show_bug.cgi?id=138821
1661
1662         Not reviewed.
1663
1664         * WTF.vcxproj/WTF.vcxproj:
1665         * WTF.vcxproj/WTF.vcxproj.filters:
1666         * WTF.xcodeproj/project.pbxproj:
1667         * wtf/IndexedIterator.h: Removed.
1668         * wtf/RefCountedArray.h:
1669         (WTF::RefCountedArray::RefCountedArray):
1670         * wtf/Vector.h:
1671         (WTF::Vector::Vector):
1672         (WTF::Vector::begin):
1673         (WTF::Vector::end):
1674         (WTF::OverflowHandler>::Vector):
1675         (WTF::=):
1676         (WTF::OverflowHandler>::fill):
1677         (WTF::OverflowHandler>::expandCapacity):
1678         (WTF::OverflowHandler>::tryExpandCapacity):
1679         (WTF::OverflowHandler>::resize):
1680         (WTF::OverflowHandler>::shrink):
1681         (WTF::OverflowHandler>::grow):
1682         (WTF::OverflowHandler>::reserveCapacity):
1683         (WTF::OverflowHandler>::tryReserveCapacity):
1684         (WTF::OverflowHandler>::shrinkCapacity):
1685         (WTF::OverflowHandler>::append):
1686         (WTF::OverflowHandler>::tryAppend):
1687         (WTF::OverflowHandler>::appendSlowCase):
1688         (WTF::OverflowHandler>::uncheckedAppend):
1689         (WTF::OverflowHandler>::appendVector):
1690         (WTF::OverflowHandler>::insert):
1691         (WTF::OverflowHandler>::insertVector):
1692         (WTF::OverflowHandler>::remove):
1693
1694 2014-12-02  Oliver Hunt  <oliver@apple.com>
1695
1696         Fix IOS builds.
1697
1698         * wtf/IndexedIterator.h:
1699
1700 2014-12-02  Gavin Barraclough  <barraclough@apple.com>
1701
1702         Generalize PageActivityAssertionToken
1703         https://bugs.webkit.org/show_bug.cgi?id=139106
1704
1705         Reviewed by Sam Weinig.
1706
1707         PageActivityAssertionToken is a RAII mechanism implementing a counter, used by PageThrottler
1708         to count user visible activity in progress on the page (currently page load and media playback).
1709         Use of an RAII type is prevents a number of possible errors, including double counting a single
1710         media element, or failing to decrement the count after a media element has been deallocated.
1711
1712         The current implementation has a number of drawbacks that have been addressed by this refactoring:
1713          - specific to single use in PageThrottler class - not reusable.
1714          - incomplete encapsulation - the counter and WeakPtrFactory that comprise the current implementation
1715            are not encapsulated (are in the client type, PageThrottler).
1716          - tokens are not shared - PageActivityAssertionToken instances are managed by std::unique, every
1717            increment requires an object allocation.
1718          - redundancy - the current implementation uses a WeakPtr to safely reference the PageThrottler, this
1719            is internally implemented using a reference counted type, resulting in two counters being
1720            incremented (one in the PageActivityAssertionToken, one in the PageThrottler).
1721
1722         In the reimplementation:
1723          - a callback is provided via a lambda function, which allows for easy reuse without a lot of
1724            boilerplate code.
1725          - the counter, callback and ownership of the otherwise weakly-owned token is encapsulated within the
1726            RefCounter type.
1727          - a single count within RefCounter::Count stores the counter value, and also manage the lifetime
1728            of this object.
1729          - standard RefPtrs are used to manage references to the RefCounter::Count.
1730
1731         * WTF.xcodeproj/project.pbxproj:
1732             - added RefCounter.cpp/.h
1733         * wtf/RefCounter.cpp: Added.
1734         (WTF::RefCounter::Count::ref):
1735             - increment the counter.
1736         (WTF::RefCounter::Count::deref):
1737             - decrement the counter, and delete as necessary.
1738         (WTF::RefCounter::RefCounter):
1739             - create a RefCounter::Count.
1740         (WTF::RefCounter::~RefCounter):
1741             - eagerly delete the Counter if it has no references, otherwise let it be deleted on last deref.
1742         * wtf/RefCounter.h: Added.
1743         (WTF::RefCounter::Count::Count):
1744             - initialize count to 0.
1745         (WTF::RefCounter::RefCounter):
1746             - takes a lambda to be called when the value changes.
1747         (WTF::RefCounter::count):
1748             - reference the counter (and in doing so increment the count).
1749         (WTF::RefCounter::value):
1750             - access the current value of the counter.
1751
1752 2014-12-01  Andreas Kling  <akling@apple.com>
1753
1754         Optimize constructing JSC::Identifier from AtomicString.
1755         <https://webkit.org/b/139157>
1756
1757         Reviewed by Michael Saboff.
1758
1759         Make AtomicString::isInAtomicStringTable() public so it can be used
1760         in some Identifier assertions.
1761
1762         * wtf/text/AtomicString.h:
1763
1764 2014-12-01  Oliver Hunt  <oliver@apple.com>
1765
1766         Fix non-mac builds.
1767
1768         * wtf/IndexedIterator.h:
1769
1770 2014-12-01  Oliver Hunt  <oliver@apple.com>
1771
1772         Fix 32-bit build.
1773
1774         * wtf/IndexedIterator.h:
1775
1776 2014-11-17  Oliver Hunt  <oliver@apple.com>
1777
1778         Make sure range based iteration of Vector<> still receives bounds checking
1779         https://bugs.webkit.org/show_bug.cgi?id=138821
1780
1781         Reviewed by Mark Lam.
1782
1783         Add a new IndexedIterator struct to WTF that wraps a
1784         Vector type and index to provide pointer like semantics
1785         while still performing runtime bounds checking, even in
1786         release builds. We store a simple index into the vector
1787         which means that this iterator allows vector resizing
1788         during iteration. If the vector is resized such that the
1789         iterator is out of bounds, then any attempt to dereference
1790         the iterator will crash safely. Any other errors, including
1791         overflows, and over extending the iterator will likewise
1792         crash.
1793
1794         For the purpose of retaining semantically equivalent
1795         behaviour, the iterator can be moved to m_index == size()
1796         as that is the standard "end" terminator for these types.
1797         Attempting to dereference at that point will still crash
1798         rather than perform an unsafe memory operation.
1799
1800         In order to maintain the validity of all the bounds checking,
1801         we perform full integer range checking prior to any mutation
1802         of the iterator location. If we detect an arithmetic overflow
1803         we will crash rather than attempting to carry on.
1804
1805         By necessity there are many overrides for operator + and - as
1806         we otherwise hit many different type promotion ambiguities when
1807         performing arithmetic with iterators. These ambiguities are also
1808         different for 32- vs. 64-bit, so duplicating the functions
1809         and then forwarding to the core implementations that performed
1810         the bounds checking and mutation seemed like the right call.
1811
1812         * WTF.xcodeproj/project.pbxproj:
1813         * wtf/IndexedIterator.h: Added.
1814         (WTF::IndexedIterator::IndexedIterator):
1815         (WTF::IndexedIterator::operator->):
1816         (WTF::IndexedIterator::operator*):
1817         (WTF::IndexedIterator::get):
1818         (WTF::IndexedIterator::operator++):
1819         (WTF::IndexedIterator::operator--):
1820         (WTF::IndexedIterator::operator UnspecifiedBoolType):
1821         (WTF::IndexedIterator::operator+=):
1822         (WTF::IndexedIterator::operator-=):
1823         (WTF::IndexedIterator::operator+):
1824         (WTF::IndexedIterator::operator-):
1825         (WTF::IndexedIterator::operator=):
1826         (WTF::IndexedIterator::operator==):
1827         (WTF::IndexedIterator::operator!=):
1828         (WTF::IndexedIterator::operator<):
1829         (WTF::IndexedIterator::operator<=):
1830         (WTF::IndexedIterator::operator>):
1831         (WTF::IndexedIterator::operator>=):
1832         (WTF::IndexedIterator::operator const_iterator):
1833         (WTF::IndexedIterator::isSafeToCompare):
1834         (WTF::IndexedIterator::unsafeGet):
1835         (WTF::getPtr):
1836         (WTF::operator-):
1837         (WTF::operator==):
1838         (WTF::operator!=):
1839         (WTF::operator<=):
1840         (WTF::operator>=):
1841         (WTF::operator<):
1842         (WTF::operator>):
1843         (WTF::IndexedIteratorSelector::makeIterator):
1844         (WTF::IndexedIteratorSelector::makeConstIterator):
1845         * wtf/RefCountedArray.h:
1846         (WTF::RefCountedArray::RefCountedArray):
1847         * wtf/Vector.h:
1848         (WTF::Vector::Vector):
1849         (WTF::Vector::begin):
1850         (WTF::Vector::end):
1851         (WTF::OverflowHandler>::Vector):
1852         (WTF::=):
1853         (WTF::OverflowHandler>::fill):
1854         (WTF::OverflowHandler>::expandCapacity):
1855         (WTF::OverflowHandler>::tryExpandCapacity):
1856         (WTF::OverflowHandler>::resize):
1857         (WTF::OverflowHandler>::shrink):
1858         (WTF::OverflowHandler>::grow):
1859         (WTF::OverflowHandler>::reserveCapacity):
1860         (WTF::OverflowHandler>::tryReserveCapacity):
1861         (WTF::OverflowHandler>::shrinkCapacity):
1862         (WTF::OverflowHandler>::append):
1863         (WTF::OverflowHandler>::tryAppend):
1864         (WTF::OverflowHandler>::appendSlowCase):
1865         (WTF::OverflowHandler>::uncheckedAppend):
1866         (WTF::OverflowHandler>::appendVector):
1867         (WTF::OverflowHandler>::insert):
1868         (WTF::OverflowHandler>::insertVector):
1869         (WTF::OverflowHandler>::remove):
1870
1871 2014-11-30  Ryuan Choi  <ryuan.choi@navercorp.com>
1872
1873         [EFL] Drop support for the EFL 1.7
1874         https://bugs.webkit.org/show_bug.cgi?id=139114
1875
1876         Reviewed by Gyuyoung Kim.
1877
1878         * wtf/efl/EflTypedefs.h: Removed old definitions which EFL 1.7 used.
1879
1880 2014-11-21  Anders Carlsson  <andersca@apple.com>
1881
1882         Remove the Timer parameters from timer callbacks
1883         https://bugs.webkit.org/show_bug.cgi?id=138974
1884
1885         Reviewed by Antti Koivisto.
1886
1887         * wtf/RunLoopTimer.h:
1888         (WTF::RunLoopTimer::RunLoopTimer):
1889         (WTF::RunLoopTimer::fired):
1890
1891 2014-11-18  Chris Dumez  <cdumez@apple.com>
1892
1893         Have Vector::capacity() return an unsigned instead of a size_t
1894         https://bugs.webkit.org/show_bug.cgi?id=138842
1895
1896         Reviewed by Andreas Kling.
1897
1898         Have Vector::capacity() return an unsigned instead of a size_t as
1899         capacity is stored as an unsigned internally.
1900
1901         * wtf/Vector.h:
1902         (WTF::Vector::capacity):
1903         (WTF::OverflowHandler>::expandCapacity):
1904         (WTF::OverflowHandler>::tryExpandCapacity):
1905
1906 2014-11-18  Geoffrey Garen  <ggaren@apple.com>
1907
1908         Removed the custom allocator for ListHashSet nodes
1909         https://bugs.webkit.org/show_bug.cgi?id=138841
1910
1911         Reviewed by Andreas Kling.
1912
1913         bmalloc is fast, so we don't need a custom allocator.
1914
1915         The MallocBench test for linked list node allocation (list_allocate) is
1916         4.09X faster in bmalloc than TCMalloc. Also, I wrote a stress test to
1917         add/remove link elements, which modify a ListHashSet on insertion and
1918         removal, and it was 1% faster / in the noise with bmalloc enabled.
1919
1920         * wtf/ListHashSet.h:
1921         (WTF::ListHashSetNode::ListHashSetNode):
1922         (WTF::ListHashSetTranslator::translate):
1923         (WTF::U>::ListHashSet):
1924         (WTF::=):
1925         (WTF::U>::swap):
1926         (WTF::U>::~ListHashSet):
1927         (WTF::U>::size):
1928         (WTF::U>::capacity):
1929         (WTF::U>::isEmpty):
1930         (WTF::U>::first):
1931         (WTF::U>::removeFirst):
1932         (WTF::U>::takeFirst):
1933         (WTF::U>::last):
1934         (WTF::U>::removeLast):
1935         (WTF::U>::takeLast):
1936         (WTF::U>::contains):
1937         (WTF::U>::remove):
1938         (WTF::U>::clear):
1939         (WTF::U>::unlink):
1940         (WTF::U>::unlinkAndDelete):
1941         (WTF::U>::appendNode):
1942         (WTF::U>::prependNode):
1943         (WTF::U>::insertNodeBefore):
1944         (WTF::U>::deleteAllNodes):
1945         (WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): Deleted.
1946         (WTF::ListHashSetNodeAllocator::allocate): Deleted.
1947         (WTF::ListHashSetNodeAllocator::deallocate): Deleted.
1948         (WTF::ListHashSetNodeAllocator::pool): Deleted.
1949         (WTF::ListHashSetNodeAllocator::pastPool): Deleted.
1950         (WTF::ListHashSetNodeAllocator::inPool): Deleted.
1951         (WTF::ListHashSetNode::operator new): Deleted.
1952         (WTF::ListHashSetNode::destroy): Deleted.
1953
1954 2014-11-18  Chris Dumez  <cdumez@apple.com>
1955
1956         Update the Vector API to deal with unsigned types instead of size_t
1957         https://bugs.webkit.org/show_bug.cgi?id=138824
1958
1959         Reviewed by Andreas Kling.
1960
1961         Update part of the Vector API to deal with unsigned types instead of
1962         size_t. The Vector class is already using unsigned type for its
1963         capacity and size data members. However, the Vector API was never
1964         updated accordingly.
1965
1966         The rest of the Vector API will be ported in follow-up patches to
1967         make the change smaller and more easily reviewable.
1968
1969         * wtf/Forward.h:
1970         * wtf/Vector.h:
1971         (WTF::VectorTypeOperations::compare):
1972         (WTF::VectorBufferBase::allocateBuffer):
1973         (WTF::VectorBufferBase::tryAllocateBuffer):
1974         (WTF::VectorBufferBase::shouldReallocateBuffer):
1975         (WTF::VectorBufferBase::reallocateBuffer):
1976         (WTF::VectorBufferBase::capacity):
1977         (WTF::VectorBufferBase::VectorBufferBase):
1978         (WTF::VectorBuffer::VectorBuffer):
1979         (WTF::VectorBuffer::allocateBuffer):
1980         (WTF::VectorBuffer::tryAllocateBuffer):
1981         (WTF::VectorBuffer::shouldReallocateBuffer):
1982         (WTF::VectorBuffer::reallocateBuffer):
1983         (WTF::VectorBuffer::swap):
1984         (WTF::VectorBuffer::swapInlineBuffer):
1985         (WTF::VectorBuffer::swapInlineBuffers):
1986         (WTF::Vector::Vector):
1987         (WTF::Vector::at):
1988         (WTF::Vector::operator[]):
1989         (WTF::OverflowHandler>::find):
1990         (WTF::OverflowHandler>::reverseFind):
1991         (WTF::OverflowHandler>::fill):
1992         (WTF::OverflowHandler>::expandCapacity):
1993         (WTF::OverflowHandler>::tryExpandCapacity):
1994         (WTF::OverflowHandler>::resize):
1995         (WTF::OverflowHandler>::resizeToFit):
1996         (WTF::OverflowHandler>::shrink):
1997         (WTF::OverflowHandler>::grow):
1998         (WTF::OverflowHandler>::reserveCapacity):
1999         (WTF::OverflowHandler>::tryReserveCapacity):
2000         (WTF::OverflowHandler>::reserveInitialCapacity):
2001         (WTF::OverflowHandler>::shrinkCapacity):
2002         (WTF::OverflowHandler>::append):
2003         (WTF::OverflowHandler>::tryAppend):
2004         (WTF::OverflowHandler>::insert):
2005         (WTF::OverflowHandler>::insertVector):
2006         (WTF::OverflowHandler>::remove):
2007         (WTF::OverflowHandler>::reverse):
2008         (WTF::OverflowHandler>::checkConsistency):
2009         * wtf/text/AtomicString.h:
2010         * wtf/text/StringImpl.h:
2011         (WTF::StringImpl::adopt):
2012         (WTF::equalIgnoringNullity):
2013         * wtf/text/StringView.h:
2014         (WTF::append):
2015         * wtf/text/WTFString.h:
2016
2017 2014-11-18  peavo@outlook.com  <peavo@outlook.com>
2018
2019         [WinCairo] Compile errors when GStreamer is enabled.
2020         https://bugs.webkit.org/show_bug.cgi?id=137000
2021
2022         Reviewed by Philippe Normand.
2023
2024         MSVC does not allow the keyword default on move constructors and move assignment operators.
2025
2026         * wtf/gobject/GMainLoopSource.cpp:
2027         (WTF::GMainLoopSource::cancel):
2028         (WTF::GMainLoopSource::socketCallback):
2029         * wtf/gobject/GMainLoopSource.h:
2030         (WTF::GMainLoopSource::Context::operator=):
2031
2032 2014-11-17  Anders Carlsson  <andersca@apple.com>
2033
2034         Fix WTF build with newer versions of clang.
2035         <rdar://problem/18978705>
2036
2037         * wtf/HashTable.h:
2038         (WTF::removeIterator):
2039         * wtf/dtoa/utils.h:
2040         (WTF::double_conversion::BitCast):
2041
2042 2014-11-13  Myles C. Maxfield  <mmaxfield@apple.com>
2043
2044         Allow constructing a base PassRef with a derived Ref
2045         https://bugs.webkit.org/show_bug.cgi?id=138701
2046
2047         Reviewed by Andreas Kling
2048
2049         * wtf/PassRef.h:
2050         (WTF::PassRef<T>::PassRef):
2051
2052 2014-11-12  Ryuan Choi  <ryuan.choi@navercorp.com>
2053
2054         [EFL] Fix the build with EFL 1.12
2055         https://bugs.webkit.org/show_bug.cgi?id=138245
2056
2057         Reviewed by Gyuyoung Kim.
2058
2059         * wtf/efl/UniquePtrEfl.h:
2060         Removed Evas_GL.h from UniquePtrEfl.h, which is commonly included, because
2061         it should not be included with official GL headers.
2062
2063 2014-11-12  Mark Lam  <mark.lam@apple.com>
2064
2065         Rename USE(MASM_PROBE) to ENABLE(MASM_PROBE).
2066         <https://webkit.org/b/138661>
2067
2068         Reviewed by Michael Saboff.
2069
2070         Also move the switch for enabling the use of MASM_PROBE from JavaScriptCore's
2071         config.h to WTF's Platform.h.  This ensures that the setting is consistently
2072         applied even when building WebCore parts as well.
2073
2074         * wtf/Platform.h:
2075
2076 2014-11-09  Antti Koivisto  <antti@apple.com>
2077
2078         Remove BloomFilter size limit
2079         https://bugs.webkit.org/show_bug.cgi?id=138549
2080
2081         Reviewed by Andreas Kling.
2082
2083         * wtf/BloomFilter.h: Remove the static_assert, the code works fine with somewhat larger sizes.
2084
2085 2014-11-09  Chris Dumez  <cdumez@apple.com>
2086
2087         Add a more correct way to compare floating point numbers and use it
2088         https://bugs.webkit.org/show_bug.cgi?id=138527
2089
2090         Reviewed by Darin Adler.
2091
2092         To compare floating point numbers in the code base, we would often rely
2093         on the following check:
2094         std::abs(a - b) <= std::numeric_limits<T>::epsilon()
2095
2096         However, this is not correct for arbitrary floating point values, and
2097         will fail for values that are not close to zero.
2098
2099         This patch introduces a WTF::areEssentiallyEqual() templated function
2100         that can only be called with floating point types and relies on the
2101         following formula from [1][2] that defines u as being "essentially
2102         equal" to v if: | u - v | / |u| <= e and | u - v | / |v| <= e
2103
2104         [1] Knuth, D. E. "Accuracy of Floating Point Arithmetic." The Art of
2105             Computer Programming. 3rd ed. Vol. 2. Boston: Addison-Wesley, 1998.
2106             229-45.
2107         [2] http://www.boost.org/doc/libs/1_34_0/libs/test/doc/components/test_tools/floating_point_comparison.html
2108
2109         * wtf/MathExtras.h:
2110         (WTF::safeFPDivision):
2111         (WTF::areEssentiallyEqual):
2112         (WTF::withinEpsilon): Deleted.
2113
2114 2014-11-08  Darin Adler  <darin@apple.com>
2115
2116         Replace FileThread class with a single function
2117         https://bugs.webkit.org/show_bug.cgi?id=138282
2118
2119         Reviewed by Alexey Proskuryakov.
2120
2121         * wtf/MessageQueue.h: Made queue work on any type and not require wrapping
2122         everything in a unique_ptr.
2123
2124         * wtf/Threading.cpp:
2125         (WTF::threadEntryPoint): Changed to use a std::function instead of a function pointer.
2126         (WTF::createThread): Add a version that takes a std::function. Reimplemented the
2127         old version using lambdas. Removed the obsolete versions that were there just to support
2128         binary compatibility with very old versions of Safari.
2129
2130         * wtf/Threading.h: Removed an incorrect license header that covers code that was long ago
2131         moved to a different file. Changed createThread to take a std::function instead of a function
2132         pointer and data pointer. Moved internal functions after public functions.
2133
2134 2014-11-05  Chris Dumez  <cdumez@apple.com>
2135
2136         Assertion hit DOMTimer::updateTimerIntervalIfNecessary()
2137         https://bugs.webkit.org/show_bug.cgi?id=138440
2138
2139         Reviewed by Geoffrey Garen.
2140
2141         Move the withinEpsilon() function to WTF to avoid code duplication.
2142
2143         * wtf/MathExtras.h:
2144         (WTF::withinEpsilon):
2145
2146 2014-11-05  Chris Dumez  <cdumez@apple.com>
2147
2148         Allow constructing a PassRef from a Ref
2149         https://bugs.webkit.org/show_bug.cgi?id=138389
2150
2151         Reviewed by Andreas Kling.
2152
2153         Allow constructing a PassRef from a Ref, similarly to PassRefPtr that
2154         can be constructed from a RefPtr already. This avoids having to call
2155         Ref::get() and simplifies the code a bit.
2156
2157         * wtf/PassRef.h:
2158         (WTF::PassRef<T>::PassRef):
2159
2160 2014-11-05  Dan Bernstein  <mitz@apple.com>
2161
2162         Remove the unused deletion UI feature
2163         https://bugs.webkit.org/show_bug.cgi?id=138442
2164
2165         Rubber-stamped by Alexey Proskuryakov.
2166
2167         * wtf/FeatureDefines.h: Removed definition of ENABLE_DELETION_UI.
2168
2169 2014-11-03  Dean Jackson  <dino@apple.com>
2170
2171         Add ENABLE_FILTERS_LEVEL_2 feature guard.
2172         https://bugs.webkit.org/show_bug.cgi?id=138362
2173
2174         Reviewed by Tim Horton.
2175
2176         Add a new feature define for Level 2 of CSS Filters.
2177         http://dev.w3.org/fxtf/filters-2/
2178
2179         * wtf/FeatureDefines.h:
2180
2181 2014-11-05  Csaba Osztrogonác  <ossy@webkit.org>
2182
2183         Enable ARMv7 disassembler for all platforms
2184         https://bugs.webkit.org/show_bug.cgi?id=138415
2185
2186         Reviewed by Darin Adler.
2187
2188         * wtf/Platform.h:
2189
2190 2014-11-04  Chris Dumez  <cdumez@apple.com>
2191
2192         Add ptr() method to Ref class
2193         https://bugs.webkit.org/show_bug.cgi?id=138361
2194
2195         Reviewed by Darin Adler.
2196
2197         It is a very common pattern in our code base to get a pointer from a
2198         Ref object. Previously, we have to call Ref.get() and take its address
2199         which is not very nice. This patch adds a ptr() method to Ref class
2200         to simplify the code a bit.
2201
2202         * wtf/PassRef.h:
2203         (WTF::PassRef<T>::ptr):
2204         * wtf/Ref.h:
2205         (WTF::Ref::ptr):
2206         (WTF::GetPtrHelper<Ref<T>>::getPtr):
2207
2208 2014-11-04  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>
2209
2210         ATTR_USED incorrectly applying to Clang
2211         https://bugs.webkit.org/show_bug.cgi?id=138313
2212
2213         Reviewed by Csaba Osztrogonác.
2214
2215         ATTR_USED was only intended for GCC. Also limit it to ENABLE(FTL_NATIVE_CALL_INLINING)
2216         since that's the only thing it's needed for.
2217
2218         * wtf/Platform.h:
2219
2220 2014-11-03  Chris Dumez  <cdumez@apple.com>
2221
2222         Allow implicit conversion from Ref<T> to T&
2223         https://bugs.webkit.org/show_bug.cgi?id=138331
2224
2225         Reviewed by Andreas Kling.
2226
2227         Allow implicit conversion from Ref<T> to T& to reduce the amount of
2228         Ref<>::get() calls in the code and increase readability. Unlike for
2229         RefPtr, doing this for Ref should not be error prone.
2230
2231         * wtf/Ref.h:
2232         (WTF::Ref::operator T&):
2233         (WTF::Ref::operator const T&):
2234         * wtf/RunLoop.cpp:
2235         (WTF::RunLoop::Holder::runLoop):
2236
2237 2014-10-31  Jeffrey Pfau  <jpfau@apple.com>
2238
2239         Unreviewed, fix ASan build after r175382
2240
2241         * wtf/SizeLimits.cpp:
2242
2243 2014-10-31  Geoffrey Garen  <ggaren@apple.com>
2244
2245         Rolled in r175389.
2246
2247         WebKit was failing to build 32bit on some Apple internal systems because
2248         those systems were configured to build bmalloc 64-bit-only. Those systems
2249         have been updated to build bmalloc as a universal binary, so everything
2250         should work fine now.
2251
2252         The relevant setting is controlled by an environment variable on the
2253         build system, and not by the project file in the source tree, so there's
2254         no new code change here.
2255
2256                 Enable bmalloc in 32bit builds
2257                 https://bugs.webkit.org/show_bug.cgi?id=138232
2258
2259                 Reviewed by Andreas Kling.
2260
2261         * wtf/FastMalloc.cpp:
2262
2263 2014-10-31  Lucas Forschler  <lforschler@apple.com>
2264
2265         Unreviewed rollout r175389.
2266         
2267 2014-10-30  Dana Burkart  <dburkart@apple.com>
2268
2269         <rdar://problem/18821260> Prepare for the mysterious future
2270
2271         Reviewed by Lucas Forschler.
2272
2273         * Configurations/Base.xcconfig:
2274         * Configurations/DebugRelease.xcconfig:
2275
2276 2014-10-30  Geoffrey Garen  <ggaren@apple.com>
2277
2278         Enable bmalloc in 32bit builds
2279         https://bugs.webkit.org/show_bug.cgi?id=138232
2280
2281         Reviewed by Andreas Kling.
2282
2283         Seems to work fine.
2284
2285         * wtf/FastMalloc.cpp:
2286
2287 2014-10-30  Jeffrey Pfau  <jpfau@apple.com>
2288
2289         ASSERT(!m_deletionHasBegun) in RefCounted.h should be ASSERT_WITH_SECURITY_IMPLICATION
2290         https://bugs.webkit.org/show_bug.cgi?id=138141
2291
2292         Reviewed by Alexey Proskuryakov.
2293
2294         * wtf/RefCounted.h:
2295         (WTF::RefCountedBase::ref):
2296         (WTF::RefCountedBase::relaxAdoptionRequirement):
2297         (WTF::RefCountedBase::derefBase):
2298         (WTF::adopted):
2299
2300 2014-10-28  Milan Crha  <mcrha@redhat.com>
2301
2302         Use constants from wtf/MathExtras.h
2303         https://bugs.webkit.org/show_bug.cgi?id=137967
2304
2305         Reviewed by Darin Adler.
2306
2307         * wtf/MathExtras.h:
2308
2309 2014-10-28  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>
2310
2311         [EFL] Remove unnecessary defines from OptionsEfl.cmake
2312         https://bugs.webkit.org/show_bug.cgi?id=138132
2313
2314         Reviewed by Csaba Osztrogonác.
2315
2316         * wtf/Platform.h:
2317
2318 2014-10-27  Chris Dumez  <cdumez@apple.com>
2319
2320         Use separate HashMaps for common and uncommon headers in HTTPHeaderMap
2321         https://bugs.webkit.org/show_bug.cgi?id=138079
2322
2323         Reviewed by Anders Carlsson.
2324
2325         Add HashTraits for C++11 strong enum types. Using integer HashTraits for
2326         strong enums would be inconvenient as it would require casting between
2327         integer and strong enum types.
2328
2329         * wtf/HashTraits.h:
2330         (WTF::StrongEnumHashTraits::emptyValue):
2331         (WTF::StrongEnumHashTraits::constructDeletedValue):
2332         (WTF::StrongEnumHashTraits::isDeletedValue):
2333
2334 2014-10-25  Brian J. Burg  <burg@cs.washington.edu>
2335
2336         Web Inspector: timelines should not count time elapsed while paused in the debugger
2337         https://bugs.webkit.org/show_bug.cgi?id=136351
2338
2339         Unreviewed, follow-up fix after r175203. The debugger agent should not assume
2340         that the inspector environment's stopwatch has already been started.
2341
2342         * wtf/Stopwatch.h:
2343         (WTF::Stopwatch::isActive): Added. Allow peeking at the stopwatch state.
2344
2345 2014-10-18  Brian J. Burg  <burg@cs.washington.edu>
2346
2347         Web Inspector: timelines should not count time elapsed while paused in the debugger
2348         https://bugs.webkit.org/show_bug.cgi?id=136351
2349
2350         Reviewed by Timothy Hatcher.
2351
2352         * WTF.vcxproj/WTF.vcxproj:
2353         * WTF.vcxproj/WTF.vcxproj.filters:
2354         * WTF.xcodeproj/project.pbxproj:
2355         * wtf/CMakeLists.txt:
2356         * wtf/Stopwatch.h: Added. This implements a refcounted monotonic stopwatch.
2357         (WTF::Stopwatch::create):
2358         (WTF::Stopwatch::Stopwatch):
2359         (WTF::Stopwatch::reset):
2360         (WTF::Stopwatch::start):
2361         (WTF::Stopwatch::stop):
2362         (WTF::Stopwatch::elapsedTime):
2363
2364 2014-10-23  Joseph Pecoraro  <pecoraro@apple.com>
2365
2366         Web Inspector: Provide a way to have alternate inspector agents
2367         https://bugs.webkit.org/show_bug.cgi?id=137901
2368
2369         Reviewed by Brian Burg.
2370
2371         * wtf/FeatureDefines.h:
2372
2373 2014-10-23  Alberto Garcia  <berto@igalia.com>
2374
2375         [GTK] Fix build on Hurd
2376         https://bugs.webkit.org/show_bug.cgi?id=138003
2377
2378         Reviewed by Carlos Garcia Campos.
2379
2380         * wtf/InlineASM.h:
2381         * wtf/Platform.h:
2382
2383 2014-10-22  Byungseon Shin  <sun.shin@lge.com>
2384
2385         String(new Date(Mar 30 2014 01:00:00)) is wrong in CET
2386         https://bugs.webkit.org/show_bug.cgi?id=130967
2387
2388         Reviewed by Mark Lam.
2389
2390         By definition of calculateLocalTimeOffset, input time should be UTC time.
2391         But there are many cases when input time is based on local time.
2392         So, it gives erroneous results while calculating offset of DST boundary time.
2393         By adding a argument to distinguish UTC and local time, we can get the correct offset.
2394
2395         * wtf/DateMath.cpp:
2396         (WTF::calculateLocalTimeOffset):
2397         (WTF::parseDateFromNullTerminatedCharacters):
2398         Compensate time offset depends on UTC time or local time.
2399         * wtf/DateMath.h:
2400         Add argument to differenciate UTC or local time.
2401
2402 2014-10-21  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>
2403
2404         Fix FTL Native Inlining for EFL
2405         https://bugs.webkit.org/show_bug.cgi?id=137774
2406
2407         Reviewed by Michael Saboff.
2408
2409         Updated guard definition for Native Inlining, and added an attribute define for marking functions
2410         that should not be left out of the symbol table.
2411
2412         * wtf/Platform.h:
2413
2414 2014-10-20  Chris Dumez  <cdumez@apple.com>
2415
2416         Use is<>() / downcast<>() for Accessibility objects
2417         https://bugs.webkit.org/show_bug.cgi?id=137286
2418
2419         Reviewed by Darin Adler.
2420
2421         Remove the legacy TYPE_CASTS_BASE() macro now that it is no longer
2422         used.
2423
2424         * wtf/Assertions.h:
2425
2426 2014-10-18  Dan Bernstein  <mitz@apple.com>
2427
2428         WorkQueue dispatches functions but isn’t a FunctionDispatcher
2429         https://bugs.webkit.org/show_bug.cgi?id=137853
2430
2431         Reviewed by Anders Carlsson.
2432
2433         * wtf/FunctionDispatcher.h: Added header guards.
2434
2435 2014-10-17  Carlos Garcia Campos  <cgarcia@igalia.com>
2436
2437         [GLIB] Add API to GMainLoopSource to schedule sources after a delay in microseconds
2438         https://bugs.webkit.org/show_bug.cgi?id=137782
2439
2440         Reviewed by Sergio Villar Senin.
2441
2442         In some cases when we have a double with the time in seconds, the
2443         conversion to milliseconds ends up truncating the value to 0, and
2444         the source scheduled immediately.
2445
2446         * wtf/gobject/GMainLoopSource.cpp:
2447         (WTF::createMicrosecondsTimeoutSource): Use a custom timeout
2448         source that handles the interval in microseconds instead of milliseconds.
2449         (WTF::GMainLoopSource::scheduleAfterDelay): Use MicrosecondsTimeoutSource.
2450         (WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy): Ditto.
2451         * wtf/gobject/GMainLoopSource.h:
2452
2453 2014-10-17  Dan Bernstein  <mitz@apple.com>
2454
2455         Reverted incorrect build fix attempt.
2456
2457         * wtf/Threading.cpp:
2458
2459 2014-10-17  Dan Bernstein  <mitz@apple.com>
2460
2461         Tried to fix the Yosemite build.
2462
2463         * wtf/Threading.cpp:
2464
2465 2014-10-16  Dan Bernstein  <mitz@apple.com>
2466
2467         OSObjectPtr is missing leakRef()
2468         https://bugs.webkit.org/show_bug.cgi?id=137798
2469
2470         Reviewed by Sam Weinig.
2471
2472         * wtf/OSObjectPtr.h:
2473
2474 2014-10-14  Brent Fulgham  <bfulgham@apple.com>
2475
2476         [Win] Unreviewed gardening. Ignore Visual Studio *.sdf files.
2477
2478         * WTF.vcxproj: Modified property svn:ignore.
2479
2480 2014-10-13  Antti Koivisto  <antti@apple.com>
2481
2482         Add StringCapture helper for thread-safe lambda capture
2483         https://bugs.webkit.org/show_bug.cgi?id=137664
2484
2485         Reviewed by Anders Carlsson.
2486
2487         There is currently no clean way to capture a String in a thread-safe manner. This will now work:
2488
2489         StringCapture stringCapture(string);
2490         auto lambdaThatRunsInAnotherThread = [stringCapture] { String string = stringCapture.string(); ... }
2491
2492         This type won't be necessary with C++14 initialized lambda capture: [string = string.isolatedCopy()].
2493
2494         * wtf/text/WTFString.h:
2495         (WTF::StringCapture::StringCapture): Create isolated copy in copy-constructor.
2496         (WTF::StringCapture::string):
2497
2498 2014-10-11  KwangHyuk Kim  <hyuki.kim@samsung.com>
2499
2500         [EFL] Enable WebP support.
2501         https://bugs.webkit.org/show_bug.cgi?id=136156
2502
2503         Reviewed by Gyuyoung Kim.
2504
2505         Enable WTF_USE_WEBP macro for WK2 Efl.
2506
2507         * wtf/Platform.h:
2508
2509 2014-10-11  Carlos Garcia Campos  <cgarcia@igalia.com>
2510
2511         [GLIB] Split GMainLoopSource moving thread safe implementation to its own class GThreadSafeMainLoopSource
2512         https://bugs.webkit.org/show_bug.cgi?id=137485
2513
2514         Reviewed by Sergio Villar Senin.
2515
2516         We made GMainLoopSource thread safe, but in most of the cases we
2517         know the sources are used by a single thread, which has an impact
2518         in the performance (mutex, GCancellable, etc.). The new class
2519         GThreadSafeMainLoopSource inherits from GMainLoopSource overriding
2520         the new virtual methods and calling the parent for the common code.
2521         GMutexLocker now supports recursive mutexes, it's a template that
2522         can wrap a GMutex or a GRecMutex. GThreadSafeMainLoopSource uses a
2523         recursive mutex using the new GMutexLocker API.
2524
2525         * wtf/PlatformEfl.cmake: Add new file to compilation.
2526         * wtf/PlatformGTK.cmake: Ditto.
2527         * wtf/gobject/GMainLoopSource.cpp:
2528         (WTF::GMainLoopSource::GMainLoopSource):
2529         (WTF::GMainLoopSource::~GMainLoopSource):
2530         (WTF::GMainLoopSource::cancel):
2531         (WTF::GMainLoopSource::schedule):
2532         (WTF::GMainLoopSource::scheduleAfterDelay):
2533         (WTF::GMainLoopSource::prepareVoidCallback):
2534         (WTF::GMainLoopSource::finishVoidCallback):
2535         (WTF::GMainLoopSource::voidCallback):
2536         (WTF::GMainLoopSource::prepareBoolCallback):
2537         (WTF::GMainLoopSource::finishBoolCallback):
2538         (WTF::GMainLoopSource::boolCallback):
2539         (WTF::GMainLoopSource::socketCallback):
2540         (WTF::GMainLoopSource::cancelWithoutLocking): Deleted.
2541         * wtf/gobject/GMainLoopSource.h:
2542         * wtf/gobject/GMutexLocker.h:
2543         (WTF::MutexWrapper<GMutex>::lock):
2544         (WTF::MutexWrapper<GMutex>::unlock):
2545         (WTF::MutexWrapper<GRecMutex>::lock):
2546         (WTF::MutexWrapper<GRecMutex>::unlock):
2547         (WTF::GMutexLocker::GMutexLocker):
2548         (WTF::GMutexLocker::lock):
2549         (WTF::GMutexLocker::unlock):
2550         * wtf/gobject/GThreadSafeMainLoopSource.cpp: Added.
2551         (WTF::GThreadSafeMainLoopSource::GThreadSafeMainLoopSource):
2552         (WTF::GThreadSafeMainLoopSource::~GThreadSafeMainLoopSource):
2553         (WTF::GThreadSafeMainLoopSource::cancel):
2554         (WTF::GThreadSafeMainLoopSource::schedule):
2555         (WTF::GThreadSafeMainLoopSource::scheduleAfterDelay):
2556         (WTF::GThreadSafeMainLoopSource::prepareVoidCallback):
2557         (WTF::GThreadSafeMainLoopSource::finishVoidCallback):
2558         (WTF::GThreadSafeMainLoopSource::voidCallback):
2559         (WTF::GThreadSafeMainLoopSource::prepareBoolCallback):
2560         (WTF::GThreadSafeMainLoopSource::finishBoolCallback):
2561         (WTF::GThreadSafeMainLoopSource::boolCallback):
2562         * wtf/gobject/GThreadSafeMainLoopSource.h: Added.
2563
2564 2014-10-09  Dean Jackson  <dino@apple.com>
2565
2566         Remove ENABLE_CSS3_CONDITIONAL_RULES
2567         https://bugs.webkit.org/show_bug.cgi?id=137571
2568
2569         Reviewed by Simon Fraser.
2570
2571         * wtf/FeatureDefines.h:
2572
2573 2014-10-09  Akos Kiss  <akiss@inf.u-szeged.hu>
2574
2575         Enable ARM64 disassembler for all platforms
2576         https://bugs.webkit.org/show_bug.cgi?id=137560
2577
2578         Reviewed by Michael Saboff.
2579
2580         Remove PLATFORM conditions from around WTF_USE_ARM64_DISASSEMBLER since
2581         the ARM64 disassembler has no platform dependencies anymore.
2582
2583         * wtf/Platform.h:
2584
2585 2014-10-08  peavo@outlook.com  <peavo@outlook.com>
2586
2587         [WinCairo] Enable JIT on 32-bit.
2588         https://bugs.webkit.org/show_bug.cgi?id=137521
2589
2590         Reviewed by Mark Lam.
2591
2592         Enable JIT on Windows 32-bit, but disable it at runtime if SSE2 is not present.
2593
2594         * wtf/Platform.h:
2595
2596 2014-10-08  Brent Fulgham  <bfulgham@apple.com>
2597
2598         [Win] Resolve warnings about missing __has_include macro under MSVC
2599         https://bugs.webkit.org/show_bug.cgi?id=137524
2600
2601         Reviewed by Anders Carlsson.
2602
2603         * wtf/Compiler.h: Provide a dummy implementation of __has_include that
2604         avoids the warning without changing compile behavior.
2605
2606 2014-10-07  Brent Fulgham  <bfulgham@apple.com>
2607
2608         [Win] Resolve some MSVC static analyzer warnings
2609         https://bugs.webkit.org/show_bug.cgi?id=137504
2610
2611         Reviewed by Dean Jackson.
2612
2613         * wtf/GregorianDateTime.cpp:
2614         (WTF::GregorianDateTime::setToCurrentLocalTime): Properly handle
2615         possible timezone error case.
2616         * wtf/OSAllocatorWin.cpp:
2617         (WTF::OSAllocator::decommit): Silence a spurious warning about using
2618         MEM_DECOMMIT instead of MEM_RELEASE.
2619         * wtf/ThreadingWin.cpp: Silence a spurious warning about how the
2620         tryLock method is implemented.
2621
2622 2014-10-07  Christophe Dumez  <cdumez@apple.com>
2623
2624         [WK2] Use is<>() / downcast<>() for DrawingAreaProxy subclasses
2625         https://bugs.webkit.org/show_bug.cgi?id=137477
2626
2627         Reviewed by Andreas Kling.
2628
2629         Rename wtf/cf/TypeCasts.h to wtf/cf/TypeCastsCF.h to avoid conflict
2630         with wtf/TypeCasts.h. They were using the same #ifndef guard and it
2631         was causing problems when both were included in the same context.
2632
2633         * WTF.xcodeproj/project.pbxproj:
2634         * wtf/cf/TypeCastsCF.h: Renamed from Source/WTF/wtf/cf/TypeCasts.h.
2635         (WTF::dynamic_cf_cast):
2636         (WTF::checked_cf_cast):
2637
2638 2014-10-07  Anders Carlsson  <andersca@apple.com>
2639
2640         Try to fix the Mountain Lion build.
2641
2642         * wtf/text/StringView.h:
2643         (WTF::StringView::underlyingStringIsValid):
2644         (WTF::StringView::setUnderlyingString):
2645         (WTF::StringView::invalidate):
2646
2647 2014-10-07  Anders Carlsson  <andersca@apple.com>
2648
2649         Use "1", not "true".
2650
2651         * wtf/text/StringView.h:
2652
2653 2014-10-07  Anders Carlsson  <andersca@apple.com>
2654
2655         Temporarily disable the StringView lifetime checking.
2656
2657         * wtf/text/StringView.h:
2658
2659 2014-10-07  Anders Carlsson  <andersca@apple.com>
2660
2661         Another build fix attempt.
2662
2663         * wtf/text/StringView.cpp:
2664         (WTF::StringView::UnderlyingString::UnderlyingString):
2665
2666 2014-10-07  Anders Carlsson  <andersca@apple.com>
2667
2668         Try to fix the Windows build.
2669
2670         * wtf/text/StringView.cpp:
2671         (WTF::StringView::UnderlyingString::UnderlyingString):
2672
2673 2014-10-06  Darin Adler  <darin@apple.com>
2674
2675         Make StringView check the lifetime of the StringImpl it's created from
2676         https://bugs.webkit.org/show_bug.cgi?id=137202
2677
2678         Reviewed by Anders Carlsson.
2679
2680         * WTF.vcxproj/WTF.vcxproj: Added StringView.cpp.
2681         * WTF.vcxproj/WTF.vcxproj.filters: Added StringView.cpp.
2682         * WTF.xcodeproj/project.pbxproj: Added StringView.cpp.
2683         * wtf/CMakeLists.txt: Added StringView.cpp.
2684
2685         * wtf/text/StringImpl.cpp:
2686         (WTF::StringImpl::~StringImpl): Call StringView::invalidate.
2687
2688         * wtf/text/StringView.cpp: Added.
2689         (WTF::underlyingStrings): Returns map from StringImpl to the underlying
2690         string object used by StringView to track validity.
2691         (WTF::StringView::invalidate): Mark the underlying string object invalid,
2692         and remove it from the map, so any future StringImpl will get a new one,
2693         even if it has the same pointer.
2694         (WTF::StringView::underlyingStringIsValid): Return true only if the
2695         underlying string is still valid.
2696         (WTF::StringView::setUnderlyingString): Create and manage reference counts
2697         of underlying string objects as needed.
2698
2699         * wtf/text/StringView.h: Moved function bodies out of the class definition,
2700         so we can now read a clean class definition to see the class design and what
2701         functions it offers.
2702         (WTF::StringView::StringView): Added a comment to the default constructor.
2703         Also added copy and move constructors so they can call setUnderlyingString
2704         and assert the underlying string is valid as needed, replacing the
2705         compiler-generated ones.
2706         (WTF::StringView::~StringView): Added a call to setUnderlyingString.
2707         (WTF::StringView::operator=): Added these assignment operators with the same
2708         job as the constructors above.
2709         (WTF::StringView::initialize): Added a comment.
2710         (WTF::StringView::characters8): Added an assertion that the underlying
2711         string is valid.
2712         (WTF::StringView::characters16): Ditto.
2713         (WTF::StringView::substring): Added code to propagate the underlying string
2714         from the original string to the substring.
2715         (WTF::StringView::invalidate): Inline empty version of this function for
2716         non-debug builds.
2717         (WTF::StringView::underlyingStringIsValid): Ditto.
2718         (WTF::StringView::setUnderlyingString): Ditto.
2719
2720 2014-10-06  Brent Fulgham  <bfulgham@apple.com>
2721
2722         [Win] DateMath's calculateUTFOffset does not account for DST.
2723         https://bugs.webkit.org/show_bug.cgi?id=137458
2724         <rdar://problem/18559172>
2725
2726         Reviewed by Geoffrey Garen.
2727
2728         Check the return value of GetTimeZoneInformation and use the
2729         proper bias against UTC (depending on whether we are in daylight
2730         savings time, or standard time).
2731
2732         Also, handle possible error cases in the FileTimeToSystemTime
2733         and SystemTimeToTzSpecificLocalTime, rather than using potentially
2734         uninitialized values.
2735
2736         * wtf/DateMath.cpp:
2737         (WTF::calculateUTCOffset): Use proper daylight-savings-time state.
2738         (WTF::calculateDSTOffset): Avoid uninitialized data due to failing
2739         API calls.
2740
2741 2014-10-06  Christophe Dumez  <cdumez@apple.com>
2742
2743         Add is<>() / downcast<>() support for RenderObject subclasses
2744         https://bugs.webkit.org/show_bug.cgi?id=137424
2745
2746         Reviewed by Benjamin Poulain.
2747
2748         Handle correctly calling TypeCastTraits<ExpectedType, ArgType>::isOfType(ArgType&)
2749         with ExpectedType being a base class of ArgType (or the same as ArgType). The
2750         previous template specialization was only meant to support the case where
2751         ExpectedType is the same as ArgType but even that wasn't working as the compiler
2752         would complain about ambiguous partial specializations. Since this is needed by
2753         RenderTraversal functions, this patch adds an extra isBaseType template parameter
2754         to TypeCastTraits to resolve the ambiguity and relies on std::is_base_of for the
2755         detection.
2756
2757         * wtf/TypeCasts.h:
2758
2759 2014-10-06  Brent Fulgham  <bfulgham@apple.com>
2760
2761         [Win] Project file gardening.
2762
2763         * WTF.vcxproj/WTF.vcxproj.filters: Move HashMethod.h and
2764         FastBitVector.cpp to proper places in hierarchy.
2765
2766 2014-10-04  Brian J. Burg  <burg@cs.washington.edu>
2767
2768         Unreviewed, rolling out r174319.
2769
2770         Causes assertions in fast/profiler tests. Needs nontrivial
2771         investigation, will take offline.
2772
2773         Reverted changeset:
2774
2775         "Web Inspector: timelines should not count time elapsed while
2776         paused in the debugger"
2777         https://bugs.webkit.org/show_bug.cgi?id=136351
2778         http://trac.webkit.org/changeset/174319
2779
2780 2014-10-04  Brian J. Burg  <burg@cs.washington.edu>
2781
2782         Web Inspector: timelines should not count time elapsed while paused in the debugger
2783         https://bugs.webkit.org/show_bug.cgi?id=136351
2784
2785         Reviewed by Timothy Hatcher.
2786
2787         * WTF.vcxproj/WTF.vcxproj:
2788         * WTF.vcxproj/WTF.vcxproj.filters:
2789         * WTF.xcodeproj/project.pbxproj:
2790         * wtf/CMakeLists.txt:
2791         * wtf/Stopwatch.h: Added. This implements a refcounted monotonic stopwatch.
2792         (WTF::Stopwatch::reset):
2793         (WTF::Stopwatch::start):
2794         (WTF::Stopwatch::stop):
2795
2796 2014-10-04  Filip Pizlo  <fpizlo@apple.com>
2797
2798         FTL should sink PutLocals
2799         https://bugs.webkit.org/show_bug.cgi?id=137168
2800
2801         Reviewed by Oliver Hunt.
2802         
2803         Make the set bits of a BitVector iterable.
2804
2805         * wtf/BitVector.h:
2806         (WTF::BitVector::SetBitsIterable::SetBitsIterable):
2807         (WTF::BitVector::SetBitsIterable::iterator::iterator):
2808         (WTF::BitVector::SetBitsIterable::iterator::operator*):
2809         (WTF::BitVector::SetBitsIterable::iterator::operator++):
2810         (WTF::BitVector::SetBitsIterable::iterator::operator==):
2811         (WTF::BitVector::SetBitsIterable::iterator::operator!=):
2812         (WTF::BitVector::SetBitsIterable::begin):
2813         (WTF::BitVector::SetBitsIterable::end):
2814         (WTF::BitVector::setBits):
2815
2816 2014-10-03  Commit Queue  <commit-queue@webkit.org>
2817
2818         Unreviewed, rolling out r174275.
2819         https://bugs.webkit.org/show_bug.cgi?id=137408
2820
2821         Build failures on the internal bots. (Requested by dethbakin
2822         on #webkit).
2823
2824         Reverted changeset:
2825
2826         "FTL should sink PutLocals"
2827         https://bugs.webkit.org/show_bug.cgi?id=137168
2828         http://trac.webkit.org/changeset/174275
2829
2830 2014-10-03  Christophe Dumez  <cdumez@apple.com>
2831
2832         Add TypeCasts.h to xcodeproject
2833         https://bugs.webkit.org/show_bug.cgi?id=137403
2834
2835         Reviewed by Benjamin Poulain.
2836
2837         Add TypeCasts.h to xcodeproject.
2838
2839         * WTF.xcodeproj/project.pbxproj:
2840
2841 2014-09-28  Filip Pizlo  <fpizlo@apple.com>
2842
2843         FTL should sink PutLocals
2844         https://bugs.webkit.org/show_bug.cgi?id=137168
2845
2846         Reviewed by Oliver Hunt.
2847         
2848         Make the set bits of a BitVector iterable.
2849
2850         * wtf/BitVector.h:
2851         (WTF::BitVector::SetBitsIterable::SetBitsIterable):
2852         (WTF::BitVector::SetBitsIterable::iterator::iterator):
2853         (WTF::BitVector::SetBitsIterable::iterator::operator*):
2854         (WTF::BitVector::SetBitsIterable::iterator::operator++):
2855         (WTF::BitVector::SetBitsIterable::iterator::operator==):
2856         (WTF::BitVector::SetBitsIterable::iterator::operator!=):
2857         (WTF::BitVector::SetBitsIterable::begin):
2858         (WTF::BitVector::SetBitsIterable::end):
2859         (WTF::BitVector::setBits):
2860
2861 2014-10-03  Myles C. Maxfield  <mmaxfield@apple.com>
2862
2863         Support modern for loops over StringViews
2864         https://bugs.webkit.org/show_bug.cgi?id=137165
2865
2866         Reviewed by Darin Adler.
2867
2868         This patch adds two functions, codePoints() and codeUnits(), on StringView.
2869         These two functions return small objects which have begin() and end() functions,
2870         which means it can be used by the modern for loop style. This small class also
2871         has an inner iterator class which can be incremented, dereferenced, and
2872         compared.
2873
2874         Using these new objects looks like this:
2875         for (UChar codeunit : stringView.codeUnits()) { } and
2876         for (UChar32 codepoint : stringView.codePoints()) { }.
2877
2878         * wtf/text/StringView.h:
2879         (WTF::StringView::codepoints):
2880         (WTF::StringView::codeunits):
2881         (WTF::StringViewCodePointIterator::StringViewCodePointIterator):
2882         (WTF::StringViewCodePointIterator::Iterator::Iterator):
2883         (WTF::StringViewCodePointIterator::Iterator::operator*):
2884         (WTF::StringViewCodePointIterator::Iterator::operator!=):
2885         (WTF::StringViewCodeUnitIterator::StringViewCodeUnitIterator):
2886         (WTF::StringViewCodeUnitIterator::Iterator::Iterator):
2887         (WTF::StringViewCodeUnitIterator::Iterator::operator*):
2888         (WTF::StringViewCodeUnitIterator::Iterator::operator!=):
2889
2890 2014-09-28  Sam Weinig  <sam@webkit.org>
2891
2892         Remove RefPtrHashMap
2893         https://bugs.webkit.org/show_bug.cgi?id=137200
2894
2895         Reviewed by Darin Adler.
2896
2897         HashMap now has all the features of the RefPtr specialization of HashMap
2898         (which lived in RefPtrHashMap.h) and is in fact more efficient when moving
2899         items into it. For instance:
2900
2901         For HashMap<RefPtr<Foo>, Bar> map:
2902
2903         RefPtr<Foo> foo = ...;
2904         map.add(WTF::move(foo), Bar());
2905
2906         will now not cause a ref() / deref(), but will successfully move the item in
2907         without churn. The same is true if foo.release() was used.
2908
2909         * WTF.vcxproj/WTF.vcxproj:
2910         * WTF.vcxproj/WTF.vcxproj.filters:
2911         * WTF.xcodeproj/project.pbxproj:
2912         * wtf/CMakeLists.txt:
2913         Remove references to RefPtrHashMap.h.
2914
2915         * wtf/RefPtrHashMap.h: Removed.
2916
2917         * wtf/HashMap.h:
2918         Remove #include of RefPtrHashMap.h and add inlineGet to match the interface
2919         exposed by the RefPtrHashMap specialization.
2920
2921 2014-10-02  Anders Carlsson  <andersca@apple.com>
2922
2923         Add back debugging/testing code that I accidentally removed.
2924
2925         * wtf/text/StringConcatenate.h:
2926         (WTF::StringTypeAdapter<String>::writeTo):
2927
2928 2014-10-02  Anders Carlsson  <andersca@apple.com>
2929
2930         Simplify StringTypeAdapter templates
2931         https://bugs.webkit.org/show_bug.cgi?id=137356
2932
2933         Reviewed by Andreas Kling.
2934
2935         * wtf/text/StringConcatenate.h:
2936         Use StringView for copying characters. Use inheritance for char* vs const char* etc. Make all StringAdapter member functions const.
2937
2938         * wtf/text/StringView.h:
2939         Move enough functions out of line so we can include WTFString.h after the StringView class definition.
2940
2941 2014-10-01  Christophe Dumez  <cdumez@apple.com>
2942
2943         Have is<>(T*) function do a null check on the pointer argument
2944         https://bugs.webkit.org/show_bug.cgi?id=137333
2945
2946         Reviewed by Gavin Barraclough.
2947
2948         Have is<>(T*) function do a null check on the argument instead of a
2949         simple assertion. This makes sense for 2 reasons:
2950         1. It is more consistent with downcast<>(T*), which will succeed even
2951            if the argument is a nullptr.
2952         2. It simplifies the code a bit as it gets rid of a lot of explicit
2953            null checks.
2954
2955         * wtf/TypeCasts.h:
2956         (WTF::is):
2957
2958 2014-10-02  Daniel Bates  <dabates@apple.com>
2959
2960         Clean up: Move XPC forward declarations in JavaScriptCore to WTF SPI wrapper header
2961         https://bugs.webkit.org/show_bug.cgi?id=137277
2962
2963         Reviewed by Alexey Proskuryakov.
2964
2965         Towards centralizing the declarations of XPC functions used in JavaScriptCore
2966         and WebKit2, add a header that wraps these function declarations called XPCSPI.h
2967         and use it instead of including the corresponding XPC API/SPI headers/forward
2968         declaring XPC functions. This will also aid in the effort to make WebKit2 build
2969         for iOS with the public iOS SDK.
2970
2971         * WTF.xcodeproj/project.pbxproj:
2972         * wtf/spi/darwin/XPCSPI.h: Added.
2973
2974 2014-10-01  Christophe Dumez  <cdumez@apple.com>
2975
2976         Unreviewed build fix after r174193.
2977
2978         Adding a return statement as that function is returning a boolean.
2979
2980         * wtf/TypeCasts.h:
2981         (WTF::TypeCastTraits::isOfType):
2982
2983 2014-10-01  Christophe Dumez  <cdumez@apple.com>
2984
2985         Fail better when is<>() / downcast<>() is used for an unsupported type
2986         https://bugs.webkit.org/show_bug.cgi?id=137323
2987
2988         Reviewed by Benjamin Poulain.
2989
2990         We should fail better when is<>() / downcast<>() is used for an
2991         unsupported type (i.e. a type that doesn't have the needed
2992         TypeCastTraits template specialization). Previously, we would get an
2993         obscure linking error, which was sub-optimal.
2994
2995         With this patch, you would now hit a static_assert() at build time if
2996         you tried to use is<>() / downcast<>() for a type that did not have the
2997         needed template specialization. There is also a helpful comment above
2998         the assertion letting the developer know how to add the needed template
2999         specialization.
3000
3001         * wtf/TypeCasts.h:
3002         (WTF::TypeCastTraits::isOfType):
3003
3004 2014-10-01  Commit Queue  <commit-queue@webkit.org>
3005
3006         Unreviewed, rolling out r174180, r174183, and r174186.
3007         https://bugs.webkit.org/show_bug.cgi?id=137320
3008
3009         Broke the Mac MountainLion build. Will investigate offline.
3010         (Requested by dydz on #webkit).
3011
3012         Reverted changesets:
3013
3014         "Clean up: Move XPC forward declarations in JavaScriptCore to
3015         WTF SPI wrapper header"
3016         https://bugs.webkit.org/show_bug.cgi?id=137277
3017         http://trac.webkit.org/changeset/174180
3018
3019         "Attempt to fix the build after
3020         <https://trac.webkit.org/changeset/174180>"
3021         https://bugs.webkit.org/show_bug.cgi?id=137277
3022         http://trac.webkit.org/changeset/174183
3023
3024         "Another attempt to fix the Mac build after
3025         <https://trac.webkit.org/changeset/174180>"
3026         https://bugs.webkit.org/show_bug.cgi?id=137277
3027         http://trac.webkit.org/changeset/174186
3028
3029 2014-10-01  Daniel Bates  <dabates@apple.com>
3030
3031         Another attempt to fix the Mac build after <https://trac.webkit.org/changeset/174180>
3032         (https://bugs.webkit.org/show_bug.cgi?id=137277)
3033
3034         Include header AvailabilityMacros.h instead of Availability.h, which actually defines the
3035         macro __MAC_OS_X_VERSION_MIN_REQUIRED.
3036
3037         * wtf/spi/darwin/XPCSPI.h:
3038
3039 2014-10-01  Daniel Bates  <dabates@apple.com>
3040
3041         Attempt to fix the build after <https://trac.webkit.org/changeset/174180>
3042         (https://bugs.webkit.org/show_bug.cgi?id=137277)
3043
3044         Include header <Availability.h> for the definition of __MAC_OS_X_VERSION_MIN_REQUIRED.
3045         Also, we want to define CONST_ON_OR_AFTER_MAC_OS_X_VERSION_1090 to be const when building
3046         on iOS.
3047
3048         * wtf/spi/darwin/XPCSPI.h:
3049
3050 2014-10-01  Daniel Bates  <dabates@apple.com>
3051
3052         Clean up: Move XPC forward declarations in JavaScriptCore to WTF SPI wrapper header
3053         https://bugs.webkit.org/show_bug.cgi?id=137277
3054
3055         Reviewed by Alexey Proskuryakov.
3056
3057         Towards centralizing the declarations of XPC functions used in JavaScriptCore
3058         and WebKit2, add a header that wraps these function declarations called XPCSPI.h
3059         and use it instead of including the corresponding XPC API/SPI headers/forward
3060         declaring XPC functions. This will also aid in the effort to make WebKit2 build
3061         for iOS with the public iOS SDK.
3062
3063         * WTF.xcodeproj/project.pbxproj:
3064         * wtf/spi/darwin/XPCSPI.h: Added.
3065
3066 2014-10-01  Brent Fulgham  <bfulgham@apple.com>
3067
3068         [Win] 32-bit JavaScriptCore should limit itself to the C loop
3069         https://bugs.webkit.org/show_bug.cgi?id=137304
3070         <rdar://problem/18375370>
3071
3072         Reviewed by Michael Saboff.
3073
3074         * wtf/Platform.h: Force the C loop when building for 32-bit Windows.
3075
3076 2014-09-30  Christophe Dumez  <cdumez@apple.com>
3077
3078         Generalize is<>() / downcast<>() support to all types
3079         https://bugs.webkit.org/show_bug.cgi?id=137243
3080
3081         Reviewed by Benjamin Poulain.
3082
3083         Generalize is<>() / downcast<>() support to all types, not just Nodes.
3084
3085         * wtf/Assertions.h:
3086         * wtf/TypeCasts.h: Added.
3087         (WTF::is):
3088         (WTF::downcast):
3089
3090 2014-09-30  Anders Carlsson  <andersca@apple.com>
3091
3092         Get the STRING_STATS codepath compiling again, and add calls to ref/deref
3093         https://bugs.webkit.org/show_bug.cgi?id=137259
3094
3095         Reviewed by Andreas Kling.
3096
3097         * wtf/text/StringImpl.cpp:
3098         (WTF::StringStats::removeString):
3099         (WTF::StringStats::printStats):
3100         (WTF::StringImpl::~StringImpl):
3101         * wtf/text/StringImpl.h:
3102         (WTF::StringImpl::StringImpl):
3103         (WTF::StringImpl::isSubString):
3104         (WTF::StringImpl::ref):
3105         (WTF::StringImpl::deref):
3106         (WTF::StringStats::addUpconvertedString): Deleted.
3107
3108 2014-09-30  Daniel Bates  <dabates@apple.com>
3109
3110         REGRESSION (r172532): JSBase.h declares NSMapTable functions that are SPI
3111         https://bugs.webkit.org/show_bug.cgi?id=137170
3112         <rdar://problem/18477384>
3113
3114         Reviewed by Geoffrey Garen.
3115
3116         Add SPI wrapper header, NSMapTableSPI.h.
3117
3118         Additionally, define convenience macro EXTERN_C that can be used to specify the C linkage
3119         convention for a declaration. For example, the declaration "EXTERN_C const int x;" will
3120         expand to:
3121
3122         extern const int x;
3123
3124         and
3125
3126         extern "C" const int x;
3127
3128         when used in a C and C++ file, respectively.
3129
3130         * WTF.xcodeproj/project.pbxproj:
3131         * wtf/Compiler.h:
3132         * wtf/spi/cocoa/NSMapTableSPI.h: Added.
3133
3134 2014-09-29  Commit Queue  <commit-queue@webkit.org>
3135
3136         Unreviewed, rolling out r174045.
3137         https://bugs.webkit.org/show_bug.cgi?id=137231
3138
3139         Introduced a crash during page loading tests on Mac (Requested
3140         by rniwa on #webkit).
3141
3142         Reverted changeset:
3143
3144         "Replace OSObjectPtr with RetainPtr/adoptOS"
3145         https://bugs.webkit.org/show_bug.cgi?id=137158
3146         http://trac.webkit.org/changeset/174045
3147
3148 2014-09-26  Sam Weinig  <sam@webkit.org>
3149
3150         Replace OSObjectPtr with RetainPtr/adoptOS
3151         https://bugs.webkit.org/show_bug.cgi?id=137158
3152
3153         Reviewed by Dan Bernstein.
3154
3155         * WTF.xcodeproj/project.pbxproj:
3156         * wtf/OSObjectPtr.h: Removed.
3157         * wtf/RetainPtr.h:
3158         (WTF::adoptOS):
3159         Added. This adopt function is slightly different than both adoptCF and adoptNS,
3160         in that unlike adoptCF(), it can be passed an Objective-C type (since OS objects
3161         are sometimes Objective-C objects, but not always), and unlike adoptNS() it doesn't 
3162         require us to jump through hoops to appease GC (since OS objects are not Objective-C
3163         objects if GC is enabled).
3164
3165 2014-09-24  Filip Pizlo  <fpizlo@apple.com>
3166
3167         FTL should sink object allocations
3168         https://bugs.webkit.org/show_bug.cgi?id=136330
3169
3170         Reviewed by Oliver Hunt.
3171         
3172         Make it possible to reset a Bag.
3173
3174         * wtf/Bag.h:
3175         (WTF::Bag::Bag):
3176         (WTF::Bag::~Bag):
3177         (WTF::Bag::clear):
3178
3179 2014-09-25  Roger Fong  <roger_fong@apple.com>
3180
3181         [Windows] Unreviewed build fix. Ensure that python2.7 is used for Windows builds.
3182
3183         * WTF.vcxproj/WTFGenerated.make:
3184
3185 2014-09-25  Csaba Osztrogonác  <ossy@webkit.org>
3186
3187         Remove WinCE port from trunk
3188         https://bugs.webkit.org/show_bug.cgi?id=136951
3189
3190         Reviewed by Alex Christensen.
3191
3192         * config.h:
3193         * wtf/Assertions.cpp:
3194         * wtf/Assertions.h:
3195         * wtf/Atomics.h:
3196         (WTF::weakCompareAndSwap):
3197         * wtf/CurrentTime.cpp:
3198         (WTF::lowResUTCTime):
3199         * wtf/DataLog.cpp:
3200         * wtf/DateMath.cpp:
3201         (WTF::getLocalTime):
3202         (WTF::calculateDSTOffset):
3203         * wtf/FastMalloc.cpp:
3204         * wtf/FeatureDefines.h:
3205         * wtf/OSAllocator.h:
3206         (WTF::OSAllocator::decommitAndRelease):
3207         * wtf/Platform.h:
3208         * wtf/PlatformWin.cmake:
3209         * wtf/RAMSize.cpp:
3210         (WTF::computeRAMSize):
3211         * wtf/RandomNumberSeed.h:
3212         (WTF::initializeRandomNumberGenerator):
3213         * wtf/StackBounds.cpp:
3214         (WTF::StackBounds::initialize):
3215         * wtf/StackBounds.h:
3216         (WTF::StackBounds::isGrowingDownward):
3217         * wtf/StdLibExtras.h:
3218         (wtf_bsearch): Deleted.
3219         * wtf/StringExtras.h:
3220         (strnicmp): Deleted.
3221         (stricmp): Deleted.
3222         (strdup): Deleted.
3223         * wtf/ThreadSpecific.h:
3224         * wtf/ThreadingWin.cpp:
3225         (WTF::createThreadInternal):
3226         * wtf/WindowsExtras.h:
3227         (WTF::getRegistryValue):
3228         (WTF::getWindowPointer):
3229         (WTF::setWindowPointer):
3230         * wtf/dtoa/utils.h:
3231         * wtf/text/WTFString.cpp:
3232         (WTF::String::format):
3233
3234 2014-09-24  Geoffrey Garen  <ggaren@apple.com>
3235
3236         Do the bmalloc.
3237         https://bugs.webkit.org/show_bug.cgi?id=132629
3238
3239         Reviewed by Gavin Barraclough.
3240
3241         64-bit only for now, just to try it out.
3242
3243         * wtf/FastMalloc.cpp:
3244
3245 2014-09-23  Geoffrey Garen  <ggaren@apple.com>
3246
3247         Rolled out r173346.
3248
3249             bmalloc should honor the FastMalloc statistics API
3250             https://bugs.webkit.org/show_bug.cgi?id=136592
3251
3252         This didn't really work. Because we allow ranges with and without
3253         physical pages to merge, and we allow double-committing and
3254         double-decommitting, we can't rely on commit actions to track memory
3255         footprint.
3256
3257         * wtf/FastMalloc.cpp:
3258         (WTF::fastMallocStatistics):
3259
3260 2014-09-23  Joseph Pecoraro  <pecoraro@apple.com>
3261
3262         Web Inspector: Should be able to attach a debugger to a JSContext before anything is executed
3263         https://bugs.webkit.org/show_bug.cgi?id=136893
3264
3265         Reviewed by Timothy Hatcher.
3266
3267         Currently automatic inspection only happens in processes that have a
3268         debugger attached. That condition may change in the future, but this
3269         function can stand on its own in WTF. It may be useful in the future
3270         to perhaps continue though ASSERTs if you have a debugger attached.
3271
3272         * wtf/Assertions.cpp:
3273         * wtf/Assertions.h:
3274
3275 2014-09-22  Sam Weinig  <sam@webkit.org>
3276
3277         Eliminate redundant PtrHash specializations
3278         https://bugs.webkit.org/show_bug.cgi?id=136990
3279
3280         Reviewed by Darin Adler.
3281
3282         Now that we have IsSmartPtr, we can eliminate all the specializations
3283         of PtrHash that we had (for RefPtr, OwnPtr, RetainPtr, and std::unique_ptr)
3284         and instead just have one that uses GetPtrHelper.
3285
3286         No changes of behavior intended.
3287
3288         * wtf/GetPtr.h:
3289         Remove unnecessary const_cast that Darin noticed.
3290
3291         * wtf/HashFunctions.h:
3292         (WTF::PtrHash::hash): Deleted.
3293         (WTF::PtrHash::equal): Deleted.
3294         (WTF::PtrHash<RefPtr<P>>::hash): Deleted.
3295         (WTF::PtrHash<RefPtr<P>>::equal): Deleted.
3296         Specialize PtrHash based on whether the type is a smart pointer, and use GetPtrHelper
3297         to implement the smart pointer specialized variant.
3298
3299         * wtf/HashMap.h:
3300         Remove include of GetPtr.h that is now included by HashFunctions.h
3301
3302         * wtf/OwnPtr.h:
3303         (WTF::PtrHash<OwnPtr<P>>::hash): Deleted.
3304         (WTF::PtrHash<OwnPtr<P>>::equal): Deleted.
3305         Remove unnecessary specialization of PtrHash.
3306
3307         * wtf/RetainPtr.h:
3308         (WTF::PtrHash<RetainPtr<P>>::hash): Deleted.
3309         (WTF::PtrHash<RetainPtr<P>>::equal): Deleted.
3310         Specialize IsSmartPointer for RetainPtr and remove the then unnecessary specialization of PtrHash.
3311         (This is already tested in the API test WTF/cf/RetainPtrHashing).
3312
3313 2014-09-20  Sam Weinig  <sam@webkit.org>
3314
3315         Make possible HashSet<std::unique_ptr<>>
3316         https://bugs.webkit.org/show_bug.cgi?id=136166
3317
3318         Reviewed by Darin Adler.
3319
3320         * wtf/GetPtr.h:
3321         (WTF::getPtr):
3322         (WTF::GetPtrHelper<std::unique_ptr<T>>::getPtr):
3323         Make specializing GetPtrHelper a bit cleaner (you don't have to put 
3324         IsSmartPtr<T>::value everywhere any more) and add specializations for
3325         std::unique_ptr.
3326
3327         * wtf/HashFunctions.h:
3328         (WTF::PtrHash<std::unique_ptr<P>>):
3329         Add specialization for PtrHash for std::unique_ptr and set it as the DefaultHash
3330         for it as well.
3331
3332         * wtf/HashMap.h:    
3333         * wtf/HashSet.h:
3334         Add overloads of find(), contains(), remove(), take() (and get() for HashMap) for "smart pointers" that
3335         take the raw pointer type as the parameter. These use SFINAE to make themselves only available
3336         when the IsSmartPtr<KeyType>::value is true. 
3337
3338         * wtf/HashTraits.h:
3339         Override constructDeletedValue() and isDeletedValue() in the std::unique_ptr specialization
3340         since the default implementation depends on the type having a constructor that takes a HashTableDeletedValue
3341         and function named isHashTableDeletedValue().
3342
3343         * wtf/OwnPtr.h:
3344         (WTF::OwnPtr::OwnPtr):
3345         (WTF::OwnPtr::isHashTableDeletedValue):
3346         (WTF::OwnPtr::hashTableDeletedValue):
3347         Add HashTableDeletedValue constructor/functions to allow the constructDeletedValue() and isDeletedValue()
3348         hash traits to work.
3349
3350         (WTF::PtrHash<OwnPtr<P>>::hash):
3351         (WTF::PtrHash<OwnPtr<P>>::equal):
3352         Add specialization for PtrHash for OwnPtr and set it as the DefaultHash
3353         for it as well.
3354
3355         * wtf/Ref.h:
3356         Update for the less verbose GetPtrHelper specialization.
3357
3358 2014-09-19  Chris Dumez  <cdumez@apple.com>
3359
3360         Allow DOM methods to return references instead of pointers
3361         https://bugs.webkit.org/show_bug.cgi?id=136931
3362
3363         Add support for having WTF::getPtr() transform reference arguments
3364         into raw pointers so that DOM methods can now return references when
3365         appropriate and so that the generated bindings code can handle this
3366         via WTF::getPtr().
3367
3368         This patch had to alter the way getPtr() was overloaded for smart
3369         pointer types so that we don't call &p on smart pointers but p.get().
3370         This was needed because the new WTF::getPtr(T&) was being called for
3371         RefPtr<T> arguments instead of the getPtr(const RefPtr<T>&) overload.
3372         This was addressed using traits and template specialization to
3373         distinguish WTF smart pointers from other types.
3374
3375         Reviewed by Sam Weinig.
3376
3377         * wtf/GetPtr.h:
3378         (WTF::getPtr):
3379         * wtf/OwnPtr.h:
3380         (WTF::getPtr): Deleted.
3381         * wtf/PassOwnPtr.h:
3382         (WTF::getPtr): Deleted.
3383         * wtf/PassRefPtr.h:
3384         (WTF::getPtr): Deleted.
3385         * wtf/Ref.h:
3386         * wtf/RefPtr.h:
3387         (WTF::getPtr): Deleted.
3388         * wtf/gobject/GRefPtr.h:
3389         (WTF::getPtr): Deleted.
3390
3391 2014-09-19  Daniel Bates  <dabates@apple.com>
3392
3393         Always assume internal SDK when building configuration Production
3394         https://bugs.webkit.org/show_bug.cgi?id=136925
3395         <rdar://problem/18362399>
3396
3397         Reviewed by Dan Bernstein.
3398
3399         * Configurations/Base.xcconfig:
3400
3401 2014-09-19  Diego Pino Garcia  <dpino@igalia.com>
3402
3403         Simple ES6 feature:String prototype additions
3404         https://bugs.webkit.org/show_bug.cgi?id=131704
3405
3406         Reviewed by Darin Adler.
3407
3408         * wtf/text/StringImpl.cpp:
3409         (WTF::StringImpl::find):
3410         (WTF::equalInner): Added.
3411         (WTF::StringImpl::startsWith): Add implementation that supports
3412         'startOffset' parameter.
3413         (WTF::StringImpl::endsWith): Add implementation that supports
3414         'endOffset' parameter.
3415         * wtf/text/StringImpl.h:
3416         * wtf/text/WTFString.h:
3417         (WTF::String::contains): Modify current implementation to allow
3418         setting a startOffset, 0 by default.
3419         (WTF::String::startsWith):
3420         (WTF::String::endsWith):
3421
3422 2014-09-18  Carlos Garcia Campos  <cgarcia@igalia.com>
3423
3424         [GTK] Dot not allow to create delete-on-destroy GMainLoopSources
3425         https://bugs.webkit.org/show_bug.cgi?id=136923
3426
3427         Reviewed by Gustavo Noronha Silva.
3428
3429         We have several asserts to ensure that delete-on-destroy sources
3430         are not misused, like not scheduling socket sources on a
3431         delete-on-destroy GMainLoopSource or not allowing to cancel them
3432         before they have been dispatched. It's better to ensure all those
3433         things at compile time, using static methods to schedule sources
3434         creating a delete-on-destroy GMainLoopSource that is not returned
3435         to the user.
3436
3437         * wtf/gobject/GMainLoopSource.cpp:
3438         (WTF::GMainLoopSource::create): Private static method to create a
3439         delete-on-destroy GMainLoopSource.
3440         (WTF::GMainLoopSource::cancelWithoutLocking): Return early in case
3441         of delete-on-destroy source, since they can't be cancelled.
3442         (WTF::GMainLoopSource::schedule): Remove assertion to ensure
3443         socket sources are not scheduled on a delete-on-destroy GMainLoopSource.
3444         (WTF::GMainLoopSource::scheduleAndDeleteOnDestroy):
3445         (WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy):
3446         (WTF::GMainLoopSource::createAndDeleteOnDestroy): Deleted.
3447         * wtf/gobject/GMainLoopSource.h:
3448         * wtf/gtk/MainThreadGtk.cpp:
3449         (WTF::scheduleDispatchFunctionsOnMainThread): Use GMainLoopSource::scheduleAndDeleteOnDestroy()
3450         * wtf/gtk/RunLoopGtk.cpp:
3451         (WTF::RunLoop::wakeUp): Ditto.
3452
3453 2014-09-18  Joseph Pecoraro  <pecoraro@apple.com>
3454
3455         Unreviewed rollout r173731. Broke multiple builds.
3456
3457         * wtf/Assertions.cpp:
3458         * wtf/Assertions.h:
3459
3460 2014-09-18  Joseph Pecoraro  <pecoraro@apple.com>
3461
3462         Web Inspector: Should be able to attach a debugger to a JSContext before anything is executed
3463         https://bugs.webkit.org/show_bug.cgi?id=136893
3464
3465         Reviewed by Timothy Hatcher.
3466
3467         Currently automatic inspection only happens in processes that have a
3468         debugger attached. That condition may change in the future, but this
3469         function can stand on its own in WTF. It may be useful in the future
3470         to perhaps continue though ASSERTs if you have a debugger attached.
3471
3472         * wtf/Assertions.cpp:
3473         * wtf/Assertions.h:
3474
3475 2014-09-18  Zan Dobersek  <zdobersek@igalia.com>
3476
3477         GMainLoopSource is exposed to race conditions
3478         https://bugs.webkit.org/show_bug.cgi?id=135800
3479
3480         Reviewed by Carlos Garcia Campos.
3481
3482         GMainLoopSource objects can be dispatching tasks on one thread
3483         while having a new task scheduled on a different thread. This
3484         can for instance occur in WebKitVideoSink, where the timeout
3485         callback can be called on main thread while at the same time
3486         it is being rescheduled on a different thread (created through
3487         GStreamer).
3488
3489         The initial solution is to use GMutex to prevent parallel data
3490         access from different threads. In the future I plan to look at
3491         the possibility of creating thread-specific GMainLoopSource
3492         objects that wouldn't require the use of GMutex.
3493
3494         GSource, GCancellable and std::function<> objects are now packed
3495         into an internal Context structure. Using the C++11 move semantics
3496         it's simple to, at the time of dispatch, move the current context
3497         out of the GMainLoopSource object in case the dispatch causes a
3498         rescheduling on that same object.
3499
3500         Also added in the Context struct is a new GCancellable. The pointer
3501         of that object is shared with the GMainLoopSource before the Context
3502         is moved out for the callback dispatch. This makes it safe to cancel
3503         or even delete the GMainLoopSource during the dispatch and prevents
3504         use-after-delete on GMainLoopSource once the dispatch is done in
3505         the GMainLoopSource::*Callback() methods.
3506
3507         All the schedule*() methods and the cancelWithoutLocking() method
3508         callers now lock the GMutex to ensure no one else is accessing the
3509         data at that moment. Similar goes for the dispatch methods, but those
3510         do the dispatch and possible destruction duties with the mutex unlocked.
3511         The dispatch can cause rescheduling on the same GMainLoopSource object,
3512         which must not be done with a locked mutex.
3513
3514         * wtf/gobject/GMainLoopSource.cpp:
3515         (WTF::GMainLoopSource::GMainLoopSource):
3516         (WTF::GMainLoopSource::~GMainLoopSource):
3517         (WTF::GMainLoopSource::cancel):
3518         (WTF::GMainLoopSource::cancelWithoutLocking):
3519         (WTF::GMainLoopSource::scheduleIdleSource):
3520         (WTF::GMainLoopSource::schedule):
3521         (WTF::GMainLoopSource::scheduleTimeoutSource):
3522         (WTF::GMainLoopSource::scheduleAfterDelay):
3523         (WTF::GMainLoopSource::voidCallback):
3524         (WTF::GMainLoopSource::boolCallback):
3525         (WTF::GMainLoopSource::socketCallback):
3526         (WTF::GMainLoopSource::socketSourceCallback):
3527         (WTF::GMainLoopSource::Context::destroySource):
3528         (WTF::GMainLoopSource::reset): Deleted.
3529         (WTF::GMainLoopSource::destroy): Deleted.
3530         * wtf/gobject/GMainLoopSource.h:
3531
3532 2014-09-17  Daniel Bates  <dabates@apple.com>
3533
3534         Unreviewed, rolling out r173695.
3535
3536         Broke building third-party Legacy WebKit apps; will
3537         investigate offline
3538
3539         Reverted changeset:
3540
3541         "[iOS] Make WebCore build with public iOS SDK"
3542         https://bugs.webkit.org/show_bug.cgi?id=136487
3543         http://trac.webkit.org/changeset/173695
3544
3545 2014-09-17  Benjamin Poulain  <bpoulain@apple.com>
3546
3547         CSS value in whitespace-separated list attribute selector (~=) mishandles tab/newline/etc.
3548         https://bugs.webkit.org/show_bug.cgi?id=136807
3549
3550         Reviewed by Antti Koivisto.
3551
3552         * wtf/text/AtomicString.h:
3553         (WTF::AtomicString::find):
3554
3555 2014-09-17  Daniel Bates  <dabates@apple.com>
3556
3557         [iOS] Make WebCore build with public iOS SDK
3558         https://bugs.webkit.org/show_bug.cgi?id=136487
3559
3560         Reviewed by David Kilzer.
3561
3562         Define convenience macro EXTERN_C that can be used to specify the C linkage convention
3563         for a declaration. For example, the declaration "EXTERN_C const int x;" will expand to:
3564
3565         extern const int x;
3566
3567         and
3568
3569         extern "C" const int x;
3570
3571         when used in a C and C++ file, respectively.
3572
3573         * wtf/Compiler.h:
3574
3575 2014-09-16  Filip Pizlo  <fpizlo@apple.com>
3576
3577         Unreviewed, disable native inlining because it causes build failures.
3578
3579         * wtf/Platform.h:
3580
3581 2014-09-15  Jer Noble  <jer.noble@apple.com>
3582
3583         [Mac] Support audioSourceProvider() in MediaPlayerPrivateAVFoundationObjC
3584         https://bugs.webkit.org/show_bug.cgi?id=135042
3585
3586         Reviewed by Eric Carlson.
3587
3588         * wtf/Platform.h: Add WTF_USE_MEDIATOOLBOX.
3589
3590 2014-09-15  peavo@outlook.com  <peavo@outlook.com>
3591
3592         [WinCairo] Make it easier to enable/disable GStreamer.
3593         https://bugs.webkit.org/show_bug.cgi?id=135766
3594
3595         Reviewed by Brent Fulgham.
3596
3597         Make it possible to enable/disable GStreamer by editing the new user macro ENABLE_GSTREAMER_WINCAIRO.
3598
3599         * WTF.vcxproj/WTFDebugWinCairo.props: Import GStreamer property file.
3600         * WTF.vcxproj/WTFReleaseWinCairo.props: Ditto.
3601         * wtf/Platform.h: Enable GStreamer if ENABLE(GSTREAMER_WINCAIRO) is true, otherwise use Media Foundation.
3602
3603 2014-09-10  Jon Honeycutt  <jhoneycutt@apple.com>
3604
3605         Re-add the request autocomplete feature
3606
3607         <https://bugs.webkit.org/show_bug.cgi?id=136730>
3608
3609         This feature was rolled out in r148731 because it was only used by
3610         Chromium. As we consider supporting this feature, roll it back in, but
3611         leave it disabled.
3612
3613         This rolls out r148731 (which removed the feature) with small changes
3614         needed to make the code build in ToT, to make the tests run, and to
3615         remove unused code.
3616
3617         Reviewed by Andy Estes.
3618
3619         * wtf/FeatureDefines.h:
3620
3621 2014-09-12  Tim Horton  <timothy_horton@apple.com>
3622
3623         Swiping back from a Twitter image to Twitter flashes to the wrong position
3624         https://bugs.webkit.org/show_bug.cgi?id=136798
3625         <rdar://problem/18324338>
3626
3627         Reviewed by Darin Adler and Sam Weinig.
3628
3629         * wtf/RunLoop.h:
3630         (WTF::RunLoop::TimerBase::startRepeating):
3631         Add a std::chrono veresion of RunLoop::TimerBase::startRepeating.
3632
3633 2014-09-12  Geoffrey Garen  <ggaren@apple.com>
3634
3635         Rolled out r173540.