Add WebSocketProvider stub
[WebKit-https.git] / Source / WTF / ChangeLog
1 2016-06-13  Alex Christensen  <achristensen@webkit.org>
2
3         Add WebSocketProvider stub
4         https://bugs.webkit.org/show_bug.cgi?id=158702
5
6         Reviewed by Brady Eidson.
7
8         * wtf/UniqueRef.h:
9         (WTF::UniqueRef::operator->):
10         (WTF::UniqueRef::operator T&):
11         (WTF::UniqueRef::operator const T&):
12         Added operator T& to avoid unneeded .get() calls.
13
14 2016-06-13  Sam Weinig  <sam@webkit.org>
15
16         Make HashMap and HashSet work with Refs
17         https://bugs.webkit.org/show_bug.cgi?id=158638
18
19         Reviewed by Darin Adler.
20
21         * wtf/GetPtr.h:
22         Move HashTableDeletedValueType and HashTableEmptyValueType here, as they are now shared
23         by more than one smart pointer. This file should probably be renamed to something else
24         at some point to indicate that it contains helpers for pointer and ref related functionality.
25
26         * wtf/HashFunctions.h:
27         Add a DefaultHash for Refs. Customize the PtrHash to indicate that it is not safe to compare
28         to empty or deleted Refs.
29
30         * wtf/HashMap.h:
31         (WTF::HashMapTranslator::equal):
32         (WTF::HashMapTranslator::translate):
33         (WTF::HashMapEnsureTranslator::equal):
34         (WTF::HashMapEnsureTranslator::translate):
35         * wtf/HashSet.h:
36         (WTF::IdentityExtractor::extract):
37         (WTF::HashSetTranslator::hash):
38         (WTF::HashSetTranslator::equal):
39         (WTF::HashSetTranslator::translate):
40         * wtf/HashTable.h:
41         (WTF::IdentityHashTranslator::hash):
42         (WTF::IdentityHashTranslator::equal):
43         (WTF::IdentityHashTranslator::translate):
44         Use the new assignToEmpty trait function to allow uninitialized Ref's to be safely assigned to.
45
46         * wtf/HashTraits.h:
47         (WTF::HashTraits<Ref<P>>::emptyValue):
48         (WTF::HashTraits<Ref<P>>::isEmptyValue):
49         (WTF::HashTraits<Ref<P>>::assignToEmpty):
50         (WTF::HashTraits<Ref<P>>::peek):
51         (WTF::HashTraits<Ref<P>>::customDeleteBucket):
52         Add custom HashTraits for Ref. Also, introduce a new trait function, assignToEmpty, for use
53         in translation assignments. This is necessary since the default assignment operator for Ref
54         will not allow assignment to the empty Ref, which we need to do here.
55
56         * wtf/Ref.h:
57         (WTF::Ref::operator=):
58         (WTF::Ref::Ref):
59         (WTF::Ref::isHashTableDeletedValue):
60         (WTF::Ref::hashTableDeletedValue):
61         (WTF::Ref::isHashTableEmptyValue):
62         (WTF::Ref::hashTableEmptyValue):
63         Add explicit constructors/predicates for making deleted/empty Refs.
64
65         (WTF::Ref::assignToHashTableEmptyValue):
66         Add a special function that allows assignment to an empty Ref, which the
67         assignment operator does not.
68         
69         (WTF::IsSmartPtr):
70         Add an IsSmartPtr override to indicate that Ref is a smart pointer.
71
72         * wtf/RefPtr.h:
73         Move HashTableDeletedValueType to GetPtr.h.
74
75 2016-06-13  Fujii Hironori  <Hironori.Fujii@sony.com>
76
77         Stack overflow at RefPtr::release on Windows port since r201782
78         https://bugs.webkit.org/show_bug.cgi?id=158687
79
80         Reviewed by Chris Dumez.
81
82         RefPtr::release calls RefPtr::RefPtr, and RefPtr::RefPtr calls
83         RefPtr::release.
84
85         RefPtr::RefPtr does not need to call RefPtr::release.
86
87         * wtf/RefPtr.h:
88         (WTF::RefPtr::RefPtr): Do not call RefPtr::release.
89
90 2016-06-11  Myles C. Maxfield  <mmaxfield@apple.com>
91
92         Addressing post-review comments after r201978.
93         https://bugs.webkit.org/show_bug.cgi?id=158649
94         <rdar://problem/13258122>
95
96         Unreviewed.
97
98         * wtf/text/StringCommon.h:
99         (WTF::equal):
100         (WTF::naiveEqualWithoutPerformingUnicodeNormalization): Deleted.
101
102 2016-06-11  Myles C. Maxfield  <mmaxfield@apple.com>
103
104         [Cocoa] Map commonly used Chinese Windows font names to names present on Cocoa operating systems
105         https://bugs.webkit.org/show_bug.cgi?id=158649
106         <rdar://problem/13258122>
107
108         Reviewed by Darin Adler.
109
110         * wtf/text/StringCommon.h:
111         (WTF::naiveEqualWithoutPerformingUnicodeNormalization): Added.
112
113 2016-06-11  Chris Dumez  <cdumez@apple.com>
114
115         WorkerNavigator is missing some attributes
116         https://bugs.webkit.org/show_bug.cgi?id=158593
117         <rdar://problem/26731334>
118
119         Reviewed by Darin Adler.
120
121         * wtf/PlatformUserPreferredLanguages.h:
122         * wtf/PlatformUserPreferredLanguagesWin.cpp:
123         (WTF::platformLanguage):
124         (WTF::platformUserPreferredLanguages):
125
126         Make platformUserPreferredLanguages() thread safe on Windows. The
127         Mac and Unix implementations are already thread-safe.
128
129 2016-06-10  Alex Christensen  <achristensen@webkit.org>
130
131         Introduce WTF::UniqueRef
132         https://bugs.webkit.org/show_bug.cgi?id=158596
133
134         Reviewed by Brady Eidson.
135
136         WTF::UniqueRef is like a std::unique_ptr that is guaranteed to be non-null.
137         std::make_unique returns a non-null value that is put into a std::unique_ptr, a type
138         that could contain null values.  To be able to pass such values around and store them
139         without wondering if they are null, we now have WTF::UniqueRef which cannot be null.
140
141         * WTF.xcodeproj/project.pbxproj:
142         * wtf/CMakeLists.txt:
143         * wtf/UniqueRef.h: Added.
144         (WTF::makeUniqueRef):
145         (WTF::UniqueRef::UniqueRef):
146         (WTF::UniqueRef::get):
147         (WTF::UniqueRef::operator&):
148         (WTF::UniqueRef::operator->):
149
150 2016-06-09  Brady Eidson  <beidson@apple.com>
151
152         Unaddressed review feedback from r201872
153
154         * wtf/CrossThreadTask.h:
155         (WTF::callFunctionForCrossThreadTask): Fix typo.
156
157 2016-06-09  Brady Eidson  <beidson@apple.com>
158
159         Greatly simplify CrossThreadTask.h.
160         https://bugs.webkit.org/show_bug.cgi?id=158542
161
162         Reviewed by Darin Adler.
163
164         * wtf/CrossThreadTask.h:
165         (WTF::crossThreadCopy):
166         (WTF::callFunctionForCrossThreadTaskImpl):
167         (WTF::callFunctionForCrossThreadTask):
168         (WTF::createCrossThreadTask):
169         (WTF::callMemberFunctionForCrossThreadTaskImpl):
170         (WTF::callMemberFunctionForCrossThreadTask):
171
172 2016-06-08  Brady Eidson  <beidson@apple.com>
173
174         Make CrossThreadCopier more efficient (fewer copies!).
175         https://bugs.webkit.org/show_bug.cgi?id=158456
176
177         Reviewed by Alex Christensen.
178
179         Previously, we'd run all arguments through CrossThreadCopier, then immediately make
180         an unnecessary copy of the result during lambda capture.
181
182         Instead, we should just put the CrossThreadCopier generated objects directly in lambdas,
183         which are then captured by NoncopyableFunctions.
184
185         This reduces the number of constructor calls per argument from 2 copies to 1 move.
186
187         * wtf/CrossThreadTask.h:
188         (WTF::CrossThreadTask::CrossThreadTask):
189         (WTF::createCrossThreadTask):
190
191 2016-06-07  Filip Pizlo  <fpizlo@apple.com>
192
193         Implement Air::allocateStack() in ES6 to see how much of a bad idea that is
194         https://bugs.webkit.org/show_bug.cgi?id=158318
195
196         Reviewed by Saam Barati.
197
198         * wtf/Insertion.h:
199         (WTF::executeInsertions): I found a bug while rewriting this code in JS.
200         * wtf/PrintStream.h:
201         (WTF::PrintStream::print):
202         (WTF::PrintStream::println): This is useful to have.
203
204 2016-06-07  Keith Rollin  <krollin@apple.com>
205
206         Remove all uses of PassRefPtr in WTF
207         https://bugs.webkit.org/show_bug.cgi?id=157596
208         <rdar://problem/26234391>
209
210         Reviewed by Chris Dumez.
211
212         Remove/update most interfaces that take or return PassRefPtrs.
213         Remaining references include those in non-Cocoa implementations and
214         those required for continued compatibility with modules that still use
215         PassRefPtrs (specifically: Forward.h, RefPtr interoperability,
216         SizeLimits.h, WorkQueue (Windows) DispatchQueueEfl,
217         DispatchWorkItemEfl, and PassRefPtr itself).
218
219         Update calls to interfaces that no longer take or return PassRefPtrs.
220
221         Update adoptRef(T*) to return a RefPtr instead of a PassRefPtr and
222         move it to RefPtr.h from PassRefPtr.h.
223
224         * wtf/MetaAllocator.cpp:
225         (WTF::MetaAllocator::allocate):
226         * wtf/MetaAllocator.h:
227         * wtf/ParallelJobsGeneric.h:
228         (WTF::ParallelEnvironment::ThreadPrivate::create):
229         * wtf/text/AtomicStringImpl.cpp:
230         (WTF::HashAndUTF8CharactersTranslator::translate):
231         (WTF::SubstringTranslator::translate):
232         * wtf/text/CString.cpp:
233         (WTF::CStringBuffer::createUninitialized):
234         * wtf/text/CString.h:
235         * wtf/text/StringBuilder.cpp:
236         (WTF::StringBuilder::reifyString):
237         (WTF::StringBuilder::resize):
238         (WTF::StringBuilder::reallocateBuffer<LChar>):
239         (WTF::StringBuilder::reallocateBuffer<UChar>):
240         * wtf/text/StringImpl.cpp:
241         (WTF::StringImpl::reallocateInternal):
242         (WTF::StringImpl::reallocate):
243         (WTF::StringImpl::create8BitIfPossible):
244         (WTF::StringImpl::createSymbol):
245         (WTF::StringImpl::createNullSymbol):
246         (WTF::StringImpl::convertToLowercaseWithoutLocale):
247         (WTF::StringImpl::convertToUppercaseWithoutLocale):
248         (WTF::StringImpl::convertToLowercaseWithLocale):
249         (WTF::StringImpl::convertToUppercaseWithLocale):
250         (WTF::StringImpl::convertASCIICase):
251         * wtf/text/StringImpl.h:
252         (WTF::StringImpl::StringImpl):
253         (WTF::StringImpl::createSubstringSharingImpl):
254         (WTF::StringImpl::tryCreateUninitialized):
255         (WTF::StringImpl::extractFoldedStringInSymbol):
256         * wtf/text/SymbolRegistry.cpp:
257         (WTF::SymbolRegistry::symbolForKey):
258         * wtf/text/WTFString.cpp:
259         (WTF::String::substringSharingImpl):
260         * wtf/text/WTFString.h:
261         (WTF::String::String): Deleted.
262         * wtf/text/cf/StringImplCF.cpp:
263
264 2016-06-07  Yusuke Suzuki  <utatane.tea@gmail.com>
265
266         [JSC] Do not allocate unnecessary UTF-8 string for encodeXXX functions
267         https://bugs.webkit.org/show_bug.cgi?id=158416
268
269         Reviewed by Darin Adler and Geoffrey Garen.
270
271         * wtf/Bitmap.h:
272         (WTF::Bitmap::size):
273         (WTF::WordType>::Bitmap):
274         (WTF::WordType>::get):
275         (WTF::WordType>::set):
276         (WTF::WordType>::testAndSet):
277         (WTF::WordType>::testAndClear):
278         (WTF::WordType>::concurrentTestAndSet):
279         (WTF::WordType>::concurrentTestAndClear):
280         (WTF::WordType>::clear):
281         (WTF::WordType>::clearAll):
282         (WTF::WordType>::nextPossiblyUnset):
283         (WTF::WordType>::findRunOfZeros):
284         (WTF::WordType>::count):
285         (WTF::WordType>::isEmpty):
286         (WTF::WordType>::isFull):
287
288 2016-06-06  Saam Barati  <sbarati@apple.com>
289
290         equal(StringView, StringView) for strings should have a fast path for pointer equality
291         https://bugs.webkit.org/show_bug.cgi?id=158452
292
293         Reviewed by Andreas Kling.
294
295         JSBench does a lot of StringView::operator== on StringViews that have
296         the same underlying characters pointer. This becomes hot inside JSBench
297         because JSBench heavily stresses JSC's UnlinkedCodeCache with a high
298         hit rate. This means that when we get a hit in the cache, we used to
299         do the long form of string compare. However, we were often comparing
300         two StringViews that had the same underlying buffer and length.
301         This patch speeds this case up to run in constant time instead of
302         linear time.
303
304         * wtf/text/StringCommon.h:
305         (WTF::equalCommon):
306         * wtf/text/StringImpl.h:
307         (WTF::StringImpl::StringImpl):
308         (WTF::StringImpl::data):
309         * wtf/text/StringView.h:
310         (WTF::StringView::data):
311
312 2016-06-04  Anders Carlsson  <andersca@apple.com>
313
314         Get rid of WorkItemWin
315         https://bugs.webkit.org/show_bug.cgi?id=158381
316
317         Reviewed by Sam Weinig.
318
319         * wtf/PlatformWin.cmake:
320         * wtf/WorkQueue.h:
321         * wtf/win/WorkItemWin.cpp: Removed.
322         (WTF::WorkItemWin::WorkItemWin): Deleted.
323         (WTF::WorkItemWin::create): Deleted.
324         (WTF::WorkItemWin::~WorkItemWin): Deleted.
325         * wtf/win/WorkItemWin.h: Removed.
326         (WTF::WorkItemWin::function): Deleted.
327         (WTF::WorkItemWin::queue): Deleted.
328         * wtf/win/WorkQueueWin.cpp:
329         (WTF::WorkQueue::performWorkOnRegisteredWorkThread):
330         (WTF::WorkQueue::dispatch):
331
332 2016-06-03  Anders Carlsson  <andersca@apple.com>
333
334         Get rid of HANDLE registration code in WorkQueueWin
335         https://bugs.webkit.org/show_bug.cgi?id=158375
336
337         Reviewed by Darin Adler.
338
339         * wtf/WorkQueue.h:
340         * wtf/win/WorkItemWin.cpp:
341         (WTF::HandleWorkItem::HandleWorkItem): Deleted.
342         (WTF::HandleWorkItem::createByAdoptingHandle): Deleted.
343         (WTF::HandleWorkItem::~HandleWorkItem): Deleted.
344         * wtf/win/WorkItemWin.h:
345         (WTF::HandleWorkItem::setWaitHandle): Deleted.
346         (WTF::HandleWorkItem::waitHandle): Deleted.
347         * wtf/win/WorkQueueWin.cpp:
348         (WTF::WorkQueue::handleCallback): Deleted.
349         (WTF::WorkQueue::platformInvalidate): Deleted.
350         (WTF::WorkQueue::unregisterWaitAndDestroyItemSoon): Deleted.
351         (WTF::WorkQueue::unregisterWaitAndDestroyItemCallback): Deleted.
352
353 2016-06-03  Commit Queue  <commit-queue@webkit.org>
354
355         Unreviewed, rolling out r201663.
356         https://bugs.webkit.org/show_bug.cgi?id=158374
357
358         Broke the Windows build (Requested by andersca on #webkit).
359
360         Reverted changeset:
361
362         "Rename NoncopyableFunction to Function"
363         https://bugs.webkit.org/show_bug.cgi?id=158354
364         http://trac.webkit.org/changeset/201663
365
366 2016-06-03  Anders Carlsson  <andersca@apple.com>
367
368         Rename NoncopyableFunction to Function
369         https://bugs.webkit.org/show_bug.cgi?id=158354
370
371         Reviewed by Chris Dumez.
372
373         * WTF.xcodeproj/project.pbxproj:
374         * wtf/CrossThreadTask.h:
375         (WTF::CrossThreadTask::CrossThreadTask):
376         * wtf/Function.h: Renamed from Source/WTF/wtf/NoncopyableFunction.h.
377         * wtf/FunctionDispatcher.h:
378         * wtf/MainThread.cpp:
379         (WTF::functionQueue):
380         (WTF::dispatchFunctionsFromMainThread):
381         (WTF::callOnMainThread):
382         * wtf/MainThread.h:
383         * wtf/RunLoop.cpp:
384         (WTF::RunLoop::performWork):
385         (WTF::RunLoop::dispatch):
386         * wtf/RunLoop.h:
387         * wtf/WorkQueue.h:
388         * wtf/cocoa/WorkQueueCocoa.cpp:
389         (WTF::WorkQueue::dispatch):
390         (WTF::WorkQueue::dispatchAfter):
391         * wtf/efl/DispatchQueueWorkItemEfl.h:
392         (WorkItem::WorkItem):
393         (TimerWorkItem::create):
394         (TimerWorkItem::TimerWorkItem):
395         * wtf/efl/WorkQueueEfl.cpp:
396         (WTF::WorkQueue::dispatch):
397         (WTF::WorkQueue::dispatchAfter):
398         * wtf/generic/RunLoopGeneric.cpp:
399         (WTF::RunLoop::TimerBase::ScheduledTask::create):
400         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
401         (WTF::RunLoop::dispatchAfter):
402         * wtf/generic/WorkQueueGeneric.cpp:
403         (WorkQueue::dispatch):
404         (WorkQueue::dispatchAfter):
405         * wtf/glib/RunLoopGLib.cpp:
406         (WTF::DispatchAfterContext::DispatchAfterContext):
407         (WTF::RunLoop::dispatchAfter):
408         * wtf/win/WorkItemWin.cpp:
409         (WTF::WorkItemWin::WorkItemWin):
410         (WTF::WorkItemWin::create):
411         (WTF::HandleWorkItem::HandleWorkItem):
412         (WTF::HandleWorkItem::createByAdoptingHandle):
413         * wtf/win/WorkItemWin.h:
414         (WTF::WorkItemWin::function):
415         * wtf/win/WorkQueueWin.cpp:
416         (WTF::WorkQueue::dispatch):
417         (WTF::WorkQueue::dispatchAfter):
418
419 2016-06-03  Mark Lam  <mark.lam@apple.com>
420
421         Clean up how StackVisitor dumps its frames.
422         https://bugs.webkit.org/show_bug.cgi?id=158316
423
424         Reviewed by Keith Miller.
425
426         Added an Indenter class what works with dataLog.
427
428         * WTF.xcodeproj/project.pbxproj:
429         * wtf/Indenter.h: Added.
430         (WTF::Indenter::Indenter):
431         (WTF::Indenter::dump):
432         (WTF::Indenter::operator++):
433         (WTF::Indenter::operator--):
434
435 2016-06-02  Said Abou-Hallawa  <sabouhallawa@apple,com>
436
437         [iOS] PDFDocumentImage should not create a cached image larger than 4M pixels
438         https://bugs.webkit.org/show_bug.cgi?id=157857
439
440         Reviewed by Darin Adler.
441
442         * wtf/StdLibExtras.h: Add a constant value for GB (2^30).
443
444 2016-06-02  Oliver Hunt  <oliver@apple.com>
445
446         JS parser incorrectly handles invalid utf8 in error messages.
447         https://bugs.webkit.org/show_bug.cgi?id=158128
448
449         Reviewed by Saam Barati.
450
451         Add a new toStringWithLatin1Fallback that simply uses
452         String::fromUTF8WithLatin1Fallback, so we can avoid the
453         standard String::fromUTF8 null return.
454
455         * wtf/StringPrintStream.cpp:
456         (WTF::StringPrintStream::toStringWithLatin1Fallback):
457         * wtf/StringPrintStream.h:
458
459 2016-06-02  Keith Miller  <keith_miller@apple.com>
460
461         Unreviewed, reland r201532. The associated regressions have been fixed
462         by r201584.
463
464 2016-06-02  Filip Pizlo  <fpizlo@apple.com>
465
466         Use "= delete" for Locker(int) 
467
468         Rubber stamped by Saam Barati.
469         
470         See discussion: https://bugs.webkit.org/show_bug.cgi?id=158306#c8
471
472         * wtf/Locker.h:
473         (WTF::Locker::Locker):
474         (WTF::Locker::~Locker):
475
476 2016-06-02  Filip Pizlo  <fpizlo@apple.com>
477
478         Make it harder to accidentally pass an integer to a locker.
479
480         Rubber stamped by Keith Miller.
481         
482         See here for the discussion: https://bugs.webkit.org/show_bug.cgi?id=158306#c3
483
484         * wtf/Locker.h:
485         (WTF::Locker::Locker):
486         (WTF::Locker::~Locker):
487
488 2016-06-02  Filip Pizlo  <fpizlo@apple.com>
489
490         Make it easier to use NoLockingNecessary
491         https://bugs.webkit.org/show_bug.cgi?id=158306
492
493         Reviewed by Keith Miller.
494         
495         An idiom that we borrowed from LLVM is that if a function requires a lock to be held, we
496         have it take a const Locker& as its first argument. This may not communicate which lock is
497         to be held, but it does help us to remember that some lock must be held. So far, it's been
498         relatively easy to then figure out which lock. We've had bugs where we forgot to hold a
499         lock but I don't remember the last time we had a bug where we grabbed the wrong lock.
500         
501         But sometimes, we know at the point where we call such a method that we actually don't
502         need to hold any lock. This usually happens during object construction. If we're
503         constructing some object then we usually know that we have not escaped it yet, so we don't
504         need to waste time acquiring its lock. We could solve this by having a separate set of
505         methods that don't do or require locking. This would be cumbersome, since usually for
506         every variant that takes const Locker&, there is already one that doesn't, and that one
507         will grab the lock for you. So this means having a third variant, that also doesn't take a
508         const Locker&, but does no locking. That's pretty weird.
509         
510         So, we introduced NoLockingNecessary for situations like this. The idiom went like so:
511         
512             Locker<Whatever> locker(Locker<Whatever>::NoLockingNecessary)
513             stuff->foo(locker);
514         
515         Usually though, there would be some distance between where the locker is defined and where
516         it's used, so when you just look at stuff->foo(locker) in isolation you don't know if this
517         is a real locker or a NoLockingNecessary cast. Also, requiring two lines for this just
518         adds code.
519         
520         This change makes this easier. Now you can just do:
521         
522             stuff->foo(NoLockingNecessary).
523         
524         This is because NoLockingNecessary has been pulled out into the WTF namespace (and is
525         usinged from the global namespace) and the Locker<> constructor that takes
526         NoLockingNecessaryTag is now implicit.
527         
528         The only possible downside of this change is that people might use this idiom more
529         frequently now that it's easier to use. I don't think that's a bad thing. I'm now
530         convinced that this is not a bad idiom. When I was fixing an unrelated bug, I almost went
531         the way of adding more locking to some core JSC data structures, and in the process, I
532         needed to use NoLockingNecessary. It's clear that this is a general-purpose idiom and we
533         should not impose artificial constraints on its use.
534
535         * wtf/Locker.h:
536         (WTF::Locker::Locker):
537         (WTF::Locker::~Locker):
538
539 2016-06-01  Brady Eidson  <beidson@apple.com>
540
541         Get rid of StringCapture.
542         https://bugs.webkit.org/show_bug.cgi?id=158285
543
544         Reviewed by Chris Dumez.
545
546         * wtf/text/WTFString.h:
547         (WTF::StringCapture::StringCapture): Deleted.
548         (WTF::StringCapture::string): Deleted.
549         (WTF::StringCapture::releaseString): Deleted.
550         (WTF::StringCapture::operator=): Deleted.
551
552 2016-06-01  Benjamin Poulain  <bpoulain@apple.com>
553
554         [JSC] Some setters for components of Date do not timeClip() their result
555         https://bugs.webkit.org/show_bug.cgi?id=158278
556
557         Unreviewed.
558
559         * wtf/DateMath.cpp:
560         (WTF::equivalentYearForDST): Deleted.
561         The assertion is bogus.
562         As the comments above explains, the function is completely wrong for years
563         outside [1900-2100].
564         The tests passing large values for years are failing (year <= maxYear).
565         The weird NaN test is a mystery. The old changelog does not explain it.
566
567 2016-05-31  Commit Queue  <commit-queue@webkit.org>
568
569         Unreviewed, rolling out r201363 and r201456.
570         https://bugs.webkit.org/show_bug.cgi?id=158240
571
572         "40% regression on date-format-xparb" (Requested by
573         keith_miller on #webkit).
574
575         Reverted changesets:
576
577         "LLInt should be able to cache prototype loads for values in
578         GetById"
579         https://bugs.webkit.org/show_bug.cgi?id=158032
580         http://trac.webkit.org/changeset/201363
581
582         "get_by_id should support caching unset properties in the
583         LLInt"
584         https://bugs.webkit.org/show_bug.cgi?id=158136
585         http://trac.webkit.org/changeset/201456
586
587 2016-05-31  Brady Eidson  <beidson@apple.com>
588
589         Make createCrossThreadTask() functions return on the stack instead of the heap.
590         https://bugs.webkit.org/show_bug.cgi?id=158215
591
592         Reviewed by Darin Adler.
593
594         * WTF.xcodeproj/project.pbxproj:
595
596         * wtf/CrossThreadCopier.cpp:
597
598         * wtf/CrossThreadQueue.h: Added. A lightweight of MessageQueue that deals directly
599           in objects instead of in std::unique_ptrs.
600         (WTF::CrossThreadQueue::isKilled):
601         (WTF::CrossThreadQueue<DataType>::append):
602         (WTF::CrossThreadQueue<DataType>::waitForMessage):
603         (WTF::CrossThreadQueue<DataType>::tryGetMessage):
604
605         * wtf/CrossThreadTask.h:
606         (WTF::createCrossThreadTask):
607         (WTF::CrossThreadTask::CrossThreadTask): Deleted.
608
609 2016-05-30  Brady Eidson  <beidson@apple.com>
610
611         Move CrossThreadCopier/CrossThreadTask to WTF.
612         https://bugs.webkit.org/show_bug.cgi?id=158207
613
614         Reviewed by Alex Christensen.
615
616         * WTF.xcodeproj/project.pbxproj:
617         * wtf/CMakeLists.txt:
618
619         * wtf/CrossThreadCopier.cpp: Renamed from Source/WebCore/platform/CrossThreadCopier.cpp.
620         * wtf/CrossThreadCopier.h: Renamed from Source/WebCore/platform/CrossThreadCopier.h.
621         (WTF::CrossThreadCopierPassThrough::copy):
622         
623         * wtf/CrossThreadTask.h: Renamed from Source/WebCore/platform/CrossThreadTask.h.
624         (WTF::CrossThreadTask::CrossThreadTask):
625         (WTF::CrossThreadTask::performTask):
626         (WTF::createCrossThreadTask):
627
628 2016-05-28  Chris Dumez  <cdumez@apple.com>
629
630         Templatize NoncopyableFunction class similarly to std::function
631         https://bugs.webkit.org/show_bug.cgi?id=158185
632
633         Reviewed by Darin Adler.
634
635         Templatize NoncopyableFunction class similarly to std::function, so
636         that it can be used as a std::function replacement in more places.
637
638         Previously, NoncopyableFunction could only support "void()" lambdas.
639
640         * wtf/FunctionDispatcher.h:
641         * wtf/MainThread.cpp:
642         (WTF::functionQueue):
643         (WTF::dispatchFunctionsFromMainThread):
644         (WTF::callOnMainThread):
645         * wtf/MainThread.h:
646         * wtf/NoncopyableFunction.h:
647         * wtf/RunLoop.cpp:
648         (WTF::RunLoop::performWork):
649         (WTF::RunLoop::dispatch):
650         * wtf/RunLoop.h:
651         * wtf/WorkQueue.h:
652         * wtf/cocoa/WorkQueueCocoa.cpp:
653         (WTF::WorkQueue::dispatch):
654         (WTF::WorkQueue::dispatchAfter):
655         * wtf/efl/DispatchQueueWorkItemEfl.h:
656         (WorkItem::WorkItem):
657         (TimerWorkItem::create):
658         (TimerWorkItem::TimerWorkItem):
659         * wtf/efl/WorkQueueEfl.cpp:
660         (WTF::WorkQueue::dispatch):
661         (WTF::WorkQueue::dispatchAfter):
662         * wtf/generic/RunLoopGeneric.cpp:
663         (WTF::RunLoop::TimerBase::ScheduledTask::create):
664         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
665         (WTF::RunLoop::dispatchAfter):
666         * wtf/generic/WorkQueueGeneric.cpp:
667         (WorkQueue::dispatch):
668         (WorkQueue::dispatchAfter):
669         * wtf/glib/RunLoopGLib.cpp:
670         (WTF::DispatchAfterContext::DispatchAfterContext):
671         (WTF::RunLoop::dispatchAfter):
672         * wtf/win/WorkItemWin.cpp:
673         (WTF::WorkItemWin::WorkItemWin):
674         (WTF::WorkItemWin::create):
675         (WTF::HandleWorkItem::HandleWorkItem):
676         (WTF::HandleWorkItem::createByAdoptingHandle):
677         * wtf/win/WorkItemWin.h:
678         (WTF::WorkItemWin::function):
679         * wtf/win/WorkQueueWin.cpp:
680         (WTF::WorkQueue::dispatch):
681         (WTF::WorkQueue::dispatchAfter):
682
683 2016-05-28  Dan Bernstein  <mitz@apple.com>
684
685         Build fix for projects that include MainThread.h without including FastMalloc.h.
686
687         * wtf/NoncopyableFunction.h: Include FastMalloc.h from here.
688
689 2016-05-27  Chris Dumez  <cdumez@apple.com>
690
691         callOnMainThread() should not copy captured lambda variables
692         https://bugs.webkit.org/show_bug.cgi?id=158166
693
694         Reviewed by Brady Eidson.
695
696         callOnMainThread() should not copy captured lambda variables. This
697         function is usually called cross-thread with a lambda and copying
698         the lambda (and its captured variables) can lead to thread-safety
699         issues.
700
701         This patch updates callOnMainThread() to take a NoncopyableFunction&&
702         in parameter instead of a std::function. The call sites of
703         callOnMainThread() have also been updated to use C++14's lambda
704         capture with initializer.
705
706         * WTF.xcodeproj/project.pbxproj:
707
708         * wtf/FunctionDispatcher.h:
709         * wtf/NoncopyableFunction.h:
710         - Moved NoncopyableFunction from FunctionDispatcher.h to
711           NoncopyableFunction.h.
712         - Add a new operator=(nullptr_t) operator to NoncopyableFunction to
713           match std::function, as one of the call sites needed it.
714
715         * wtf/MainThread.cpp:
716         (WTF::functionQueue):
717         (WTF::dispatchFunctionsFromMainThread):
718         (WTF::callOnMainThread):
719         * wtf/MainThread.h:
720
721 2016-05-27  Yusuke Suzuki  <utatane.tea@gmail.com>
722
723         Unreviewed, build fix for JSCOnly port.
724         https://bugs.webkit.org/show_bug.cgi?id=158111
725
726         Use NoncopyableFunction instead of std::function<>.
727
728         * wtf/generic/RunLoopGeneric.cpp:
729         (WTF::RunLoop::TimerBase::ScheduledTask::create):
730         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
731
732 2016-05-27  Chris Dumez  <cdumez@apple.com>
733
734         WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables
735         https://bugs.webkit.org/show_bug.cgi?id=158111
736
737         Reviewed by Darin Adler.
738
739         WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables.
740         These are often used cross-thread and copying the captured lambda variables can be
741         dangerous (e.g. we do not want to copy a String after calling isolatedCopy() upon
742         capture).
743
744         This patch introduces a new NoncopyableFunction type that behaves similarly to
745         std::function but guarantees that the passed-in lambda (and its captured variables)
746         cannot be copied. This new NoncopyableFunction type is now used for
747         WorkQueue / RunLoop's dispatch() / dispatchAfter() which are commonly used
748         cross-thread. This should now allow us to call WorkQueue::dispatch() with a lambda
749         that captures a String like so:
750         [str = str.isolatedCopy()]() { }
751
752         Also note that even though this is not leveraged in this patch, NoncopyableFunction
753         would allow us to capture move-only types such as std::unique_ptr as so:
754         [p = WTFMove(p)]() { }
755         This does not work if we convert the lambda into an std::function because
756         std::function requires the lambda to be copyable, NoncopyableFunction does not.
757
758         * wtf/FunctionDispatcher.h:
759         (WTF::CallableWrapperBase::~CallableWrapperBase):
760         (WTF::NoncopyableFunction::NoncopyableFunction):
761         (WTF::NoncopyableFunction::operator()):
762         (WTF::NoncopyableFunction::operator bool):
763         (WTF::NoncopyableFunction::operator=):
764         * wtf/RunLoop.cpp:
765         (WTF::RunLoop::performWork):
766         (WTF::RunLoop::dispatch):
767         * wtf/RunLoop.h:
768         * wtf/WorkQueue.h:
769         * wtf/cocoa/WorkQueueCocoa.cpp:
770         (WTF::WorkQueue::dispatch):
771         (WTF::WorkQueue::dispatchAfter):
772         * wtf/efl/DispatchQueueWorkItemEfl.h:
773         (WorkItem::WorkItem):
774         (TimerWorkItem::create):
775         (TimerWorkItem::TimerWorkItem):
776         * wtf/efl/WorkQueueEfl.cpp:
777         (WTF::WorkQueue::dispatch):
778         (WTF::WorkQueue::dispatchAfter):
779         * wtf/generic/RunLoopGeneric.cpp:
780         (WTF::RunLoop::dispatchAfter):
781         * wtf/generic/WorkQueueGeneric.cpp:
782         (WorkQueue::dispatch):
783         (WorkQueue::dispatchAfter):
784         * wtf/glib/RunLoopGLib.cpp:
785         (WTF::DispatchAfterContext::DispatchAfterContext):
786         (WTF::RunLoop::dispatchAfter):
787         * wtf/win/WorkItemWin.cpp:
788         (WTF::WorkItemWin::WorkItemWin):
789         (WTF::WorkItemWin::create):
790         (WTF::HandleWorkItem::HandleWorkItem):
791         (WTF::HandleWorkItem::createByAdoptingHandle):
792         * wtf/win/WorkItemWin.h:
793         (WTF::WorkItemWin::function):
794         * wtf/win/WorkQueueWin.cpp:
795         (WTF::WorkQueue::dispatch):
796         (WTF::WorkQueue::timerCallback):
797         (WTF::WorkQueue::dispatchAfter):
798
799 2016-05-26  Filip Pizlo  <fpizlo@apple.com>
800
801         ScopedLambda should have a lifetime story that makes sense to the compiler
802         https://bugs.webkit.org/show_bug.cgi?id=158118
803
804         Reviewed by Mark Lam.
805
806         Prior to this change, there were two lifetime bugs in ScopedLambda:
807         
808         - scopedLambda(Functor&&) would bind Functor to const lambda&, so the resulting ScopedLambdaFunctor
809           would hold a reference to the original lambda. This would have surprising behavior; for example
810           it meant that this code was wrong:
811           
812           auto l = scopedLambda<things>([&] ...);
813           
814           The solution is to have explicit copy/move versions of scopedLambda() rather than rely on perfect
815           forwarding.
816         
817         - ScopedLambdaFunctor did not override its copy or move operations, so if the compiler did not RVO
818           scopedLambda(), it would return a ScopedLambdaFunctor whose m_arg points to a dead temporary
819           ScopedLambdaFunctor instance. The solution is to have explicit copy/move constructors and
820           operators, which preserve the invariant that ScopedLambda::m_arg points to this.
821         
822         One nice side-effect of all of these constructors and operators being explicit is that we can rely
823         on WTFMove's excellent assertions, which helped catch the first issue.
824         
825         This reverts ParkingLot to use ScopedLambda again.
826
827         * wtf/ParkingLot.cpp:
828         (WTF::ParkingLot::parkConditionallyImpl):
829         (WTF::ParkingLot::unparkOne):
830         (WTF::ParkingLot::unparkOneImpl):
831         * wtf/ParkingLot.h:
832         (WTF::ParkingLot::parkConditionally):
833         (WTF::ParkingLot::unparkOne):
834         * wtf/ScopedLambda.h:
835         (WTF::scopedLambda):
836
837 2016-05-25  Anders Carlsson  <andersca@apple.com>
838
839         Get rid of WTF/Functional.h
840         https://bugs.webkit.org/show_bug.cgi?id=158081
841
842         Reviewed by Chris Dumez.
843
844         This is no longer used, and removing it will free up the name for a new Functional.h implementation.
845
846         * WTF.xcodeproj/project.pbxproj:
847         * wtf/Functional.h: Removed.
848         (WTF::RefAndDeref::ref): Deleted.
849         (WTF::RefAndDeref::deref): Deleted.
850         (WTF::ParamStorageTraits::wrap): Deleted.
851         (WTF::ParamStorageTraits::unwrap): Deleted.
852         (WTF::ParamStorageTraits<PassRefPtr<T>>::wrap): Deleted.
853         (WTF::ParamStorageTraits<PassRefPtr<T>>::unwrap): Deleted.
854         (WTF::ParamStorageTraits<RefPtr<T>>::wrap): Deleted.
855         (WTF::ParamStorageTraits<RefPtr<T>>::unwrap): Deleted.
856         (WTF::ParamStorageTraits<RetainPtr<T>>::wrap): Deleted.
857         (WTF::ParamStorageTraits<RetainPtr<T>>::unwrap): Deleted.
858         (WTF::FunctionImplBase::~FunctionImplBase): Deleted.
859         (WTF::FunctionBase::isNull): Deleted.
860         (WTF::FunctionBase::FunctionBase): Deleted.
861         (WTF::FunctionBase::impl): Deleted.
862         (WTF::bind): Deleted.
863         * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
864
865 2016-05-24  Keith Miller  <keith_miller@apple.com>
866
867         LLInt should be able to cache prototype loads for values in GetById
868         https://bugs.webkit.org/show_bug.cgi?id=158032
869
870         Reviewed by Filip Pizlo.
871
872         Add move constructors/initializers to Bags.
873
874         * wtf/Bag.h:
875         (WTF::Bag::Bag):
876         (WTF::Bag::operator=):
877
878 2016-05-24  Chris Dumez  <cdumez@apple.com>
879
880         Use auto for some of our lambda function parameters
881         https://bugs.webkit.org/show_bug.cgi?id=158001
882
883         Reviewed by Darin Adler.
884
885         Use auto for some of our lambda function parameters now that we build with c++14.
886
887         * wtf/BubbleSort.h:
888         (WTF::bubbleSort):
889
890 2016-05-23  Chris Dumez  <cdumez@apple.com>
891
892         Speed up move of vectors of POD types that have an inline buffer
893         https://bugs.webkit.org/show_bug.cgi?id=158003
894
895         Reviewed by Benjamin Poulain.
896
897         When moving a vector of POD types that have an inline buffer, we would
898         call std::swap() on the inline buffers. This unnecessarily slow because:
899         1. It does not consider the vector size, and therefore may end up doing
900            more work than necessary when the inline buffer is not full.
901         2. In the "move" case, the destination buffer is completely empty so
902            we don't really want a swap. We merely want the move the content of
903            the source's inline buffer into the destination's one.
904
905         Instead of calling std::swap(), we now call swapInlineBuffers() which
906         was already used for non-POD types. swapInlineBuffers() will do just
907         what we want in the "move" case because swapBound is going to be 0.
908         As a result, we will only move the content of the source buffer into
909         the destination one. Also swapInlineBuffers() is aware of the source
910         vector's size so it will only move what's strictly needed.
911
912         This seems to be a 2% progression on Dromaeo DOM attributes test.
913
914         * wtf/Vector.h:
915         (WTF::VectorBuffer::swapInlineBuffer):
916
917 2016-05-22  Dan Bernstein  <mitz@apple.com>
918
919         Added NSEventMaskMouseMoved to AppKitCompatibilityDeclarations.h.
920
921         Rubber-stamped by Anders Carlsson.
922
923         * wtf/mac/AppKitCompatibilityDeclarations.h:
924
925 2016-05-22  Dan Bernstein  <mitz@apple.com>
926
927         Another attempt to fix the GTK build after my previous changes.
928
929         * wtf/StdLibExtras.h:
930
931 2016-05-22  Dan Bernstein  <mitz@apple.com>
932
933         Tried to fix the GTK build after r201257.
934
935         * wtf/StdLibExtras.h:
936
937 2016-05-22  Dan Bernstein  <mitz@apple.com>
938
939         Additional fixes for non-C++14 Apple projects that use WTF.
940
941         * wtf/StdLibExtras.h:
942         (std::exchange):
943
944 2016-05-22  Dan Bernstein  <mitz@apple.com>
945
946         Additional fixes for non-C++14 Apple projects that use WTF.
947
948         * wtf/StdLibExtras.h:
949         (std::make_unique):
950         (std::move):
951
952 2016-05-22  Dan Bernstein  <mitz@apple.com>
953
954         Correct the previous build fix attempt.
955
956         * wtf/StdLibExtras.h:
957
958 2016-05-22  Dan Bernstein  <mitz@apple.com>
959
960         Build fix for non-C++14 Apple projects that use WTF.
961
962         Rubber-stamped by Anders.
963
964         * wtf/StdLibExtras.h:
965
966 2016-05-22  Brady Eidson  <beidson@apple.com>
967
968         Move to C++14.
969         https://bugs.webkit.org/show_bug.cgi?id=157948
970
971         Reviewed by Michael Catanzaro.
972
973         * Configurations/Base.xcconfig:
974         
975         Delete a lot of "stl additions until we can adopt C++14" code:
976         * wtf/StdLibExtras.h:
977         (std::make_unique): Deleted.
978         (std::index_sequence::size): Deleted.
979         (std::exchange): Deleted.
980         (std::literals::chrono_literals::operator _s): Deleted.
981         (std::literals::chrono_literals::operator _ms): Deleted.
982
983 2016-05-20  Rawinder Singh  <rawinder.singh-webkit@cisra.canon.com.au>
984
985         Implement operator== for WeakPtr
986         https://bugs.webkit.org/show_bug.cgi?id=157883
987
988         Reviewed by Chris Dumez.
989
990         Implement operator== and operator!= for WeakPtr and update code to use the operators.
991
992         * wtf/WeakPtr.h:
993         (WTF::operator==):
994         (WTF::operator!=):
995
996 2016-05-19  Chris Dumez  <cdumez@apple.com>
997
998         Improve compile-time assertions in is<>() / downcast<>()
999         https://bugs.webkit.org/show_bug.cgi?id=157817
1000
1001         Reviewed by Darin Adler.
1002
1003         * wtf/Ref.h:
1004         (WTF::is):
1005         Add is<>() overloads taking a Ref<>() so that is<>() keeps working when
1006         passing a Ref<>(), despite the new static assertions on the input type.
1007         Some call sites were already leveraging this as it was working by
1008         implicitly converting the Ref<T> into a T&.
1009
1010         * wtf/TypeCasts.h:
1011         (WTF::is):
1012         (WTF::downcast):
1013         Make static assertions stricter in is<>() / downcast<>() to catch more
1014         cases where those are either unnecessary or incorrect.
1015
1016 2016-05-19  Filip Pizlo  <fpizlo@apple.com>
1017
1018         Unreviewed, fix all of the builds. I failed a second time.
1019
1020         * wtf/BackwardsGraph.h:
1021         (WTF::BackwardsGraph::rootName):
1022
1023 2016-05-19  Filip Pizlo  <fpizlo@apple.com>
1024
1025         Unreviewed, fix all of the builds. I had made an additional change that I did not mean to
1026         commit. This fixes it.
1027
1028         * wtf/BackwardsGraph.h:
1029         (WTF::BackwardsGraph::rootName):
1030         (WTF::BackwardsGraph::Set::dump):
1031         (WTF::BackwardsGraph::dump):
1032
1033 2016-05-18  Filip Pizlo  <fpizlo@apple.com>
1034
1035         DFG::LICMPhase shouldn't hoist type checks unless it knows that the check will succeed at the loop pre-header
1036         https://bugs.webkit.org/show_bug.cgi?id=144527
1037
1038         Reviewed by Saam Barati.
1039         
1040         This adds an adaptor for graphs called BackwardsGraph. The WTF graph framework is based on
1041         passing around a Graph template argument that follows the protocol shared by DFG::CFG,
1042         B3::CFG, and Air::CFG. These graphs always have a single root node but may have many leaf
1043         nodes. This new BackwardsGraph adaptor reverses the graph by creating a synthetic return
1044         node that it uses as the root in the inverted graph. This currently may resort to some
1045         heuristics in programs that have an infinite loop, but other than that, it'll work well in
1046         the general case.
1047         
1048         This allows us to say Dominators<BackwardsGraph<some graph type>> as a way of computing
1049         backwards dominators, which then allows us to easily answer control flow equivalence
1050         queries.
1051
1052         * CMakeLists.txt:
1053         * WTF.xcodeproj/project.pbxproj:
1054         * wtf/BackwardsGraph.h: Added.
1055         (WTF::BackwardsGraph::Node::Node):
1056         (WTF::BackwardsGraph::Node::root):
1057         (WTF::BackwardsGraph::Node::operator==):
1058         (WTF::BackwardsGraph::Node::operator!=):
1059         (WTF::BackwardsGraph::Node::operator bool):
1060         (WTF::BackwardsGraph::Node::isRoot):
1061         (WTF::BackwardsGraph::Node::node):
1062         (WTF::BackwardsGraph::Set::Set):
1063         (WTF::BackwardsGraph::Set::add):
1064         (WTF::BackwardsGraph::Set::remove):
1065         (WTF::BackwardsGraph::Set::contains):
1066         (WTF::BackwardsGraph::Set::dump):
1067         (WTF::BackwardsGraph::Map::Map):
1068         (WTF::BackwardsGraph::Map::clear):
1069         (WTF::BackwardsGraph::Map::size):
1070         (WTF::BackwardsGraph::Map::operator[]):
1071         (WTF::BackwardsGraph::BackwardsGraph):
1072         (WTF::BackwardsGraph::root):
1073         (WTF::BackwardsGraph::newMap):
1074         (WTF::BackwardsGraph::successors):
1075         (WTF::BackwardsGraph::predecessors):
1076         (WTF::BackwardsGraph::index):
1077         (WTF::BackwardsGraph::node):
1078         (WTF::BackwardsGraph::numNodes):
1079         (WTF::BackwardsGraph::dump):
1080         * wtf/Dominators.h:
1081         (WTF::Dominators::Dominators):
1082         (WTF::Dominators::dump):
1083         (WTF::Dominators::LengauerTarjan::computeDepthFirstPreNumbering):
1084         * wtf/GraphNodeWorklist.h:
1085         (WTF::GraphNodeWith::GraphNodeWith):
1086         (WTF::GraphNodeWith::operator bool):
1087         * wtf/StdLibExtras.h:
1088         (WTF::callStatelessLambda):
1089         (WTF::checkAndSet):
1090
1091 2016-05-18  Saam barati  <sbarati@apple.com>
1092
1093         StringBuilder::appendQuotedJSONString doesn't properly protect against the math it's doing. Make the math fit the assertion.
1094         https://bugs.webkit.org/show_bug.cgi?id=157868
1095
1096         Reviewed by Benjamin Poulain.
1097
1098         appendQuotedJSONString was rounding up to the next power of two when resizing
1099         its buffer. Lets call the allocation size X. If X > 2^31, then
1100         roundUpToPowerOfTwo(X) == 0. This patch fixes this by making the
1101         assertion reflect what the code is doing. We now allocate to a size
1102         of X = std::max(maximumCapacityRequired , roundUpToPowerOfTwo(maximumCapacityRequired))
1103
1104         * wtf/text/StringBuilder.cpp:
1105         (WTF::StringBuilder::appendQuotedJSONString):
1106
1107 2016-05-17  Joseph Pecoraro  <pecoraro@apple.com>
1108
1109         REGRESSION(r192855): Math.random() always produces the same first 7 decimal points the first two invocations
1110         https://bugs.webkit.org/show_bug.cgi?id=157805
1111         <rdar://problem/26327851>
1112
1113         Reviewed by Geoffrey Garen.
1114
1115         * wtf/WeakRandom.h:
1116         (WTF::WeakRandom::setSeed):
1117         Advance once to randomize the 32bit seed across the 128bit state
1118         and avoid re-using 64bits of state in the second advance.
1119
1120 2016-05-17  Dean Jackson  <dino@apple.com>
1121
1122         Remove ES6_GENERATORS flag
1123         https://bugs.webkit.org/show_bug.cgi?id=157815
1124         <rdar://problem/26332894>
1125
1126         Reviewed by Geoffrey Garen.
1127
1128         This flag isn't needed. Generators are enabled everywhere and
1129         part of a stable specification.
1130
1131         * wtf/FeatureDefines.h:
1132
1133 2016-05-17  Filip Pizlo  <fpizlo@apple.com>
1134
1135         WTF should know about Language
1136         https://bugs.webkit.org/show_bug.cgi?id=157756
1137
1138         Reviewed by Geoffrey Garen.
1139
1140         This contains two changes:
1141
1142         - Move everything that WebCore's logic for getting the platform user preferred language
1143           depended on into WTF. This means CFBundleSPI.h and BlockObjCExceptions.h|cpp.
1144
1145         - Move WebCore::platformUserPreferredLanguages() to WTF::platformUserPreferredLanguages().
1146           This is needed by https://bugs.webkit.org/show_bug.cgi?id=157755, which will make JSC
1147           use this to detect the platform user preferred language when running standalone.
1148
1149         Moving the dependencies accounts for a huge chunk of this change, since we have to rewire
1150         all of the references to those headers in all of WebKit.
1151
1152         Moving platformUserPreferredLanguages() is mostly easy except for the weird callback.
1153         That function would call languageDidChange(), which needs to stay in WebCore. So, this
1154         gives WebCore the ability to register a languageDidChange callback. Other than this new
1155         logic, the code being added to WTF is just being lifted out of WebCore.
1156
1157         * WTF.xcodeproj/project.pbxproj:
1158         * wtf/BlockObjCExceptions.h: Added.
1159         * wtf/BlockObjCExceptions.mm: Added.
1160         (ReportBlockedObjCException):
1161         * wtf/PlatformEfl.cmake:
1162         * wtf/PlatformGTK.cmake:
1163         * wtf/PlatformJSCOnly.cmake:
1164         * wtf/PlatformMac.cmake:
1165         * wtf/PlatformUserPreferredLanguages.h: Added.
1166         * wtf/PlatformUserPreferredLanguagesMac.mm: Added.
1167         (WTF::setPlatformUserPreferredLanguagesChangedCallback):
1168         (WTF::preferredLanguages):
1169         (+[WTFLanguageChangeObserver languagePreferencesDidChange:]):
1170         (WTF::httpStyleLanguageCode):
1171         (WTF::isValidICUCountryCode):
1172         (WTF::platformUserPreferredLanguages):
1173         * wtf/PlatformUserPreferredLanguagesUnix.cpp: Added.
1174         (WTF::setPlatformUserPreferredLanguagesChangedCallback):
1175         (WTF::platformLanguage):
1176         (WTF::platformUserPreferredLanguages):
1177         * wtf/PlatformUserPreferredLanguagesWin.cpp: Added.
1178         (WTF::setPlatformUserPreferredLanguagesChangedCallback):
1179         (WTF::localeInfo):
1180         (WTF::platformLanguage):
1181         (WTF::platformUserPreferredLanguages):
1182         * wtf/PlatformWin.cmake:
1183         * wtf/spi/cf: Added.
1184         * wtf/spi/cf/CFBundleSPI.h: Added.
1185
1186 2016-05-17  Youenn Fablet  <youenn.fablet@crf.canon.fr>
1187
1188         DOMPromise should only restrict the resolution type
1189         https://bugs.webkit.org/show_bug.cgi?id=157307
1190
1191         Reviewed by Darin Adler.
1192
1193         * wtf/Ref.h: Adding static constexpr to ease detection of Ref for templates.
1194         * wtf/RefPtr.h: Ditto.
1195
1196 2016-05-16  Michael Saboff  <msaboff@apple.com>
1197
1198         ARMV7K: Crash at JavaScriptCore: WTF::ScopedLambdaFunctor<bool
1199         https://bugs.webkit.org/show_bug.cgi?id=157781
1200
1201         Reviewed by Filip Pizlo.
1202
1203         Replaced use of ScopedLambda in locking code with std::function much as it was
1204         before change set 199760 to work around what appears to be a clang compiler issue.
1205
1206         * wtf/ParkingLot.cpp:
1207         (WTF::ParkingLot::parkConditionallyImpl):
1208         (WTF::ParkingLot::unparkOne):
1209         (WTF::ParkingLot::unparkAll):
1210         (WTF::ParkingLot::forEach):
1211         (WTF::ParkingLot::unparkOneImpl): Deleted.
1212         (WTF::ParkingLot::forEachImpl): Deleted.
1213         * wtf/ParkingLot.h:
1214         (WTF::ParkingLot::parkConditionally):
1215         (WTF::ParkingLot::unparkOne): Deleted.
1216         (WTF::ParkingLot::forEach): Deleted.
1217
1218 2016-05-15  Chris Dumez  <cdumez@apple.com>
1219
1220         Use more references in JS wrappers related code
1221         https://bugs.webkit.org/show_bug.cgi?id=157721
1222
1223         Reviewed by Darin Adler.
1224
1225         Add new static_reference_cast() overload that takes a Ref<U>&& in
1226         in order to downcast Ref<> types without causing ref-counting
1227         churn.
1228
1229         * wtf/Ref.h:
1230         (WTF::static_reference_cast):
1231
1232 2016-05-13  Chris Dumez  <cdumez@apple.com>
1233
1234         Unreviewed, rolling out r200837.
1235
1236         Seems to have regressed Speedometer and JetStream on iOS
1237
1238         Reverted changeset:
1239
1240         "DOMPromise should only restrict the resolution type"
1241         https://bugs.webkit.org/show_bug.cgi?id=157307
1242         http://trac.webkit.org/changeset/200837
1243
1244 2016-05-13  Beth Dakin  <bdakin@apple.com>
1245
1246         Add dyldSPI.h
1247         https://bugs.webkit.org/show_bug.cgi?id=157401
1248         -and corresponding-
1249         rdar://problem/26253396
1250
1251         Reviewed by Darin Adler.
1252
1253         New header for dyld spi.
1254         * WTF.xcodeproj/project.pbxproj:
1255         * wtf/spi/darwin/dyldSPI.h: Added.
1256
1257 2016-05-13  Youenn Fablet  <youenn.fablet@crf.canon.fr>
1258
1259         DOMPromise should only restrict the resolution type
1260         https://bugs.webkit.org/show_bug.cgi?id=157307
1261
1262         Reviewed by Darin Adler.
1263
1264         * wtf/Ref.h: Adding static constexpr to ease detection of Ref for templates.
1265         * wtf/RefPtr.h: Ditto.
1266
1267 2016-05-12  Daniel Bates  <dabates@apple.com>
1268
1269         Use SecTask SPI to retrieve code signing identifier for user directory suffix
1270         https://bugs.webkit.org/show_bug.cgi?id=157570
1271
1272         Reviewed by Darin Adler.
1273         <rdar://problem/25706517>
1274
1275         Forward declare SPI SecTaskCopySigningIdentifier().
1276
1277         * wtf/spi/cocoa/SecuritySPI.h:
1278
1279 2016-05-12  Csaba Osztrogonác  <ossy@webkit.org>
1280
1281         Remove ENABLE(ES6_ARROWFUNCTION_SYNTAX) guards
1282         https://bugs.webkit.org/show_bug.cgi?id=157564
1283
1284         Reviewed by Darin Adler.
1285
1286         * wtf/FeatureDefines.h:
1287
1288 2016-05-10  Filip Pizlo  <fpizlo@apple.com>
1289
1290         Internal JSC profiler should have a timestamped log of events for each code block
1291         https://bugs.webkit.org/show_bug.cgi?id=157538
1292
1293         Reviewed by Benjamin Poulain.
1294
1295         * wtf/PrintStream.h:
1296         (WTF::PrintStream::print):
1297
1298 2016-05-10  Chris Dumez  <cdumez@apple.com>
1299
1300         Get rid of a lot of calls to RefPtr::release()
1301         https://bugs.webkit.org/show_bug.cgi?id=157505
1302
1303         Reviewed by Alex Christensen.
1304
1305         Get rid of a lot of calls to RefPtr::release() and use WTFMove() instead.
1306
1307         * wtf/text/AtomicStringImpl.cpp:
1308         (WTF::HashAndUTF8CharactersTranslator::translate):
1309         * wtf/text/CString.cpp:
1310         (WTF::CString::copyBufferIfNeeded):
1311         * wtf/text/StringBuilder.cpp:
1312         (WTF::StringBuilder::allocateBuffer):
1313         (WTF::StringBuilder::allocateBufferUpConvert):
1314         (WTF::StringBuilder::shrinkToFit):
1315         * wtf/text/WTFString.cpp:
1316         (WTF::String::append):
1317         (WTF::String::insert):
1318         (WTF::String::removeInternal):
1319         * wtf/text/WTFString.h:
1320         (WTF::String::String):
1321         (WTF::String::operator=):
1322         (WTF::String::releaseImpl):
1323         (WTF::String::isNull): Deleted.
1324
1325 2016-05-08  Chris Dumez  <cdumez@apple.com>
1326
1327         [COCOA] Disable HAVE_DTRACE at build time
1328         https://bugs.webkit.org/show_bug.cgi?id=157433
1329         <rdar://problem/26148841>
1330
1331         Reviewed by Mark Lam.
1332
1333         Disable HAVE_DTRACE on COCOA since it is mostly unused and has a performance
1334         impact, at least on iOS.
1335
1336         * wtf/Platform.h:
1337
1338 2016-05-08  Chris Dumez  <cdumez@apple.com>
1339
1340         [Bindings] Simplify [RequiresExistingAtomicString] IDL extended attribute handling
1341         https://bugs.webkit.org/show_bug.cgi?id=157465
1342
1343         Reviewed by Darin Adler.
1344
1345         Add an AtomicString(RefPtr<AtomicStringImpl>&&) constructor that is now
1346         used by the bindings when [RequiresExistingAtomicString] is used. This
1347         is more efficient than using AtomicString(AtomicStringImpl*) as the
1348         caller has a RefPtr<AtomicStringImpl> and is consistent with the
1349         pre-existing String(RefPtr<AtomicStringImpl>&&) constructor.
1350
1351         * wtf/text/AtomicString.h:
1352         (WTF::AtomicString::AtomicString):
1353
1354 2016-05-08  Darin Adler  <darin@apple.com>
1355
1356         * wtf/text/WTFString.h: Remove pragma once. Not working for some reason.
1357
1358 2016-05-08  Darin Adler  <darin@apple.com>
1359
1360         Follow-up to that last patch (missed review comments).
1361
1362         * wtf/text/WTFString.h: Use nullptr instead of 0 as needed. Also use pragma once.
1363
1364 2016-05-08  Darin Adler  <darin@apple.com>
1365
1366         Change EventSource constructor to take an IDL dictionary instead of a WebCore::Dictionary
1367         https://bugs.webkit.org/show_bug.cgi?id=157459
1368
1369         Reviewed by Chris Dumez.
1370
1371         * wtf/text/WTFString.h: Export a symbol now used in WebCore.
1372
1373 2016-05-02  Sam Weinig  <sam@webkit.org>
1374
1375         On platforms that support it, use a SecTrustRef as the basis of CertificateInfo instead of a chain of SecCertificateRefs.
1376         https://bugs.webkit.org/show_bug.cgi?id=157220
1377
1378         Reviewed by Darin Adler.
1379
1380         * wtf/Platform.h:
1381         Add support for HAVE(SEC_TRUST_SERIALIZATION).
1382
1383         * wtf/spi/cocoa/SecuritySPI.h:
1384         Add SPI access to SecTrustSerialize and SecTrustDeserialize.
1385
1386 2016-05-04  Filip Pizlo  <fpizlo@apple.com>
1387
1388         Add HLE locks and synchronic TTAS locks to the ToyLocks benchmark suite
1389         https://bugs.webkit.org/show_bug.cgi?id=157367
1390
1391         Rubber stamped by Benjamin Poulain.
1392         
1393         Turns out they are both a lot slower than WTF::Lock. The HLE lock is written according to Intel's
1394         documentation. The synchronic lock follows the algorithm of the "ttas_lock" in the synchronic
1395         test.hpp.
1396
1397         * benchmarks/ToyLocks.h:
1398
1399 2016-05-04  Filip Pizlo  <fpizlo@apple.com>
1400
1401         Add a few more WTF locking benchmarks
1402         https://bugs.webkit.org/show_bug.cgi?id=157365
1403
1404         Rubber stamped by Benjamin Poulain.
1405         
1406         Factors out our toy locks into ToyLocks.h and adds a new test (LockFairnessTest) that measures
1407         the fairness of locks.
1408         
1409         The result: WTF::Lock is pretty fair enough.
1410
1411         * benchmarks/LockFairnessTest.cpp: Added.
1412         (main):
1413         * benchmarks/LockSpeedTest.cpp:
1414         (main):
1415         * benchmarks/ToyLocks.h: Added.
1416
1417 2016-05-04  Filip Pizlo  <fpizlo@apple.com>
1418
1419         Speed up JSGlobalObject initialization by making some properties lazy
1420         https://bugs.webkit.org/show_bug.cgi?id=157045
1421
1422         Reviewed by Keith Miller.
1423         
1424         This WTF change is at the heart of a large JSC change. In JSC I found myself wanting to
1425         do this a lot:
1426         
1427             static void callback(Foo& foo) { ... }
1428         
1429             foo.setCallback(callback);
1430         
1431         But that's not very nice to write if many different setCallback() calls are inside of the
1432         same very large function: you'll have to have a lot of static function definitions in
1433         one part of the file, and then a bunch of setCallback() calls in another part. It's hard
1434         to reason about what's going on with such code.
1435         
1436         So what if you wrote this instead:
1437         
1438             foo.setCallback([] (Foo& foo) { ... });
1439         
1440         Much nicer! There is a standard way to do this: lambdas that are stateless are
1441         convertible to function pointers. This change also offers another approach that is a bit
1442         more general.
1443         
1444         These additions to WTF help you do it:
1445         
1446         isStatelessLambda<Func>(): tells you if Func is a stateless lambda. This uses is_empty to
1447         test if the lambda is stateless. This turns out to be a stronger property than
1448         convertibility to function pointers. For example, a function pointer is convertible to a
1449         function pointer, but it is definitely stateful: you cannot successfully call it if you
1450         only has its type. On the other hand, a stateless lambda is really stateless in the sense
1451         that you only need its type to call it.
1452         
1453         callStatelessLambda<ResultType, Func>(Arguments&&...): calls the given stateless lambda.
1454         
1455         JSC uses these to build up some sophisticated lazy-initialization APIs. The use of
1456         statelessness allows JSC to combine a lambda with other logic into a single function
1457         pointer.
1458
1459         * wtf/StdLibExtras.h:
1460         (WTF::isStatelessLambda):
1461         (WTF::callStatelessLambda):
1462
1463 2016-05-04  Per Arne Vollan  <peavo@outlook.com>
1464
1465         [Win] Use NeverDestroyed template.
1466         https://bugs.webkit.org/show_bug.cgi?id=157345
1467
1468         Reviewed by Darin Adler.
1469
1470         * wtf/ThreadingWin.cpp:
1471         (WTF::threadMapMutex):
1472         (WTF::threadMap):
1473
1474 2016-05-04  Chris Dumez  <cdumez@apple.com>
1475
1476         Unreviewed, rolling out r200383 and r200406.
1477
1478         Seems to have caused crashes on iOS / ARMv7s
1479
1480         Reverted changesets:
1481
1482         "Speed up JSGlobalObject initialization by making some
1483         properties lazy"
1484         https://bugs.webkit.org/show_bug.cgi?id=157045
1485         http://trac.webkit.org/changeset/200383
1486
1487         "REGRESSION(r200383): Setting lazily initialized properties
1488         across frame boundaries crashes"
1489         https://bugs.webkit.org/show_bug.cgi?id=157333
1490         http://trac.webkit.org/changeset/200406
1491
1492 2016-05-03  Filip Pizlo  <fpizlo@apple.com>
1493
1494         Speed up JSGlobalObject initialization by making some properties lazy
1495         https://bugs.webkit.org/show_bug.cgi?id=157045
1496
1497         Reviewed by Keith Miller.
1498         
1499         This WTF change is at the heart of a large JSC change. In JSC I found myself wanting to
1500         do this a lot:
1501         
1502             static void callback(Foo& foo) { ... }
1503         
1504             foo.setCallback(callback);
1505         
1506         But that's not very nice to write if many different setCallback() calls are inside of the
1507         same very large function: you'll have to have a lot of static function definitions in
1508         one part of the file, and then a bunch of setCallback() calls in another part. It's hard
1509         to reason about what's going on with such code.
1510         
1511         So what if you wrote this instead:
1512         
1513             foo.setCallback([] (Foo& foo) { ... });
1514         
1515         Much nicer! There is a standard way to do this: lambdas that are stateless are
1516         convertible to function pointers. This change also offers another approach that is a bit
1517         more general.
1518         
1519         These additions to WTF help you do it:
1520         
1521         isStatelessLambda<Func>(): tells you if Func is a stateless lambda. This uses is_empty to
1522         test if the lambda is stateless. This turns out to be a stronger property than
1523         convertibility to function pointers. For example, a function pointer is convertible to a
1524         function pointer, but it is definitely stateful: you cannot successfully call it if you
1525         only has its type. On the other hand, a stateless lambda is really stateless in the sense
1526         that you only need its type to call it.
1527         
1528         callStatelessLambda<ResultType, Func>(Arguments&&...): calls the given stateless lambda.
1529         
1530         JSC uses these to build up some sophisticated lazy-initialization APIs. The use of
1531         statelessness allows JSC to combine a lambda with other logic into a single function
1532         pointer.
1533
1534         * wtf/StdLibExtras.h:
1535         (WTF::isStatelessLambda):
1536         (WTF::callStatelessLambda):
1537
1538 2016-05-03  Per Arne Vollan  <peavo@outlook.com>
1539
1540         [Win] Remove Windows XP Compatibility Requirements
1541         https://bugs.webkit.org/show_bug.cgi?id=152899
1542
1543         Reviewed by Brent Fulgham.
1544
1545         Windows XP is not supported anymore, we can remove workarounds.
1546
1547         * wtf/Assertions.cpp:
1548
1549 2016-05-03  Per Arne Vollan  <peavo@outlook.com>
1550
1551         [Win] Warning fix.
1552         https://bugs.webkit.org/show_bug.cgi?id=157309
1553
1554         Reviewed by Darin Adler.
1555
1556         MSVC gives a warning when converting from signed to unsigned.
1557
1558         * wtf/SmallPtrSet.h:
1559         (WTF::SmallPtrSet::begin):
1560
1561 2016-05-02  Brady Eidson  <beidson@apple.com>
1562
1563         Add the ability to accumulate logs for specific logging channels to help diagnose test timeouts.
1564         https://bugs.webkit.org/show_bug.cgi?id=157274
1565
1566         Reviewed by Alex Christensen.
1567
1568         This patch changes WTFLog to add the logging string to the logging accumulator if the logging channel says so.
1569         It also adds support for using this new accumulation mechanism.
1570
1571         * WTF.xcodeproj/project.pbxproj:
1572
1573         * wtf/Assertions.cpp:
1574         (WTF::resetAccumulatedLogs):
1575         (WTF::getAndResetAccumulatedLogs):
1576         * wtf/Assertions.h:
1577
1578         * wtf/LoggingAccumulator.h: Added. Expose functions to get accumulated logs and to reset the accumulation.
1579
1580         * wtf/text/WTFString.cpp:
1581         (WTF::String::format): Update to handle %@ on CF (Well, really ObjC) platforms.
1582
1583 2016-05-02  Per Arne Vollan  <peavo@outlook.com>
1584
1585         [Win] Enable IndexedDB.
1586         https://bugs.webkit.org/show_bug.cgi?id=157192
1587
1588         Reviewed by Brent Fulgham.
1589
1590         Fix compile errors when format specifiers like PRIu64 is used, by defining
1591         __STDC_FORMAT_MACROS before inttypes.h is included.
1592
1593         * wtf/Platform.h: 
1594
1595 2016-04-27  Brady Eidson  <beidson@apple.com>
1596
1597         Modern IDB: Implement native IDBFactory.getAllDatabaseNames for WebInspector.
1598         https://bugs.webkit.org/show_bug.cgi?id=157072
1599
1600         Reviewed by Alex Christensen.
1601
1602         Moved these Hex Digit utilities from WebCore URL code (???), 
1603         and add a checked version of getting the hex digit value.
1604         
1605         * wtf/HexNumber.h:
1606         (WTF::isHexDigit):
1607         (WTF::uncheckedHexDigit):
1608         (WTF::hexDigitValue):
1609         (WTF::uncheckedHexDigitValue):
1610
1611 2016-04-25  Ryosuke Niwa  <rniwa@webkit.org>
1612
1613         Remove the build flag for template elements
1614         https://bugs.webkit.org/show_bug.cgi?id=157022
1615
1616         Reviewed by Daniel Bates.
1617
1618         * wtf/FeatureDefines.h:
1619
1620 2016-04-25  Fujii Hironori  <Hironori.Fujii@sony.com>
1621
1622         Heap corruption is detected when destructing JSGlobalObject
1623         https://bugs.webkit.org/show_bug.cgi?id=156831
1624
1625         Reviewed by Mark Lam.
1626
1627         WebKit uses CRT static library on Windows.  Each copy of the CRT
1628         library has its own heap manager, allocating memory in one CRT
1629         library and passing the pointer across a DLL boundary to be freed
1630         by a different copy of the CRT library is a potential cause for
1631         heap corruption.
1632
1633           Potential Errors Passing CRT Objects Across DLL Boundaries
1634           <https://msdn.microsoft.com/en-us/library/ms235460(v=vs.140).aspx>
1635
1636         JSGlobalObject::createRareDataIfNeeded is inlined but
1637         JSGlobalObject::~JSGlobalObject is not.  Then, the heap of
1638         allocating JSGlobalObjectRareData is WebKit.dll, but deallocating
1639         JavaScriptCore.dll.  Adding WTF_MAKE_FAST_ALLOCATED to
1640         JSGlobalObjectRareData ensures heap consistency of it.  WTF::Lock
1641         also needs WTF_MAKE_FAST_ALLOCATED because it is allocated from
1642         the inlined constructor of JSGlobalObjectRareData.
1643
1644         * wtf/Lock.h: Add WTF_MAKE_FAST_ALLOCATED.
1645
1646 2016-04-21  Saam barati  <sbarati@apple.com>
1647
1648         Lets do less locking of symbol tables in the BytecodeGenerator where we don't have race conditions
1649         https://bugs.webkit.org/show_bug.cgi?id=156821
1650
1651         Reviewed by Filip Pizlo.
1652
1653         This patch introduces a new constructor for Locker which implies no
1654         locking is necessary. You instantiate such a locker like so:
1655         `Locker<Lock> locker(Locker<Lock>::NoLockingNecessary);`
1656
1657         This is useful to for very specific places when it is not yet
1658         required to engage in a specified locking protocol. As an example,
1659         we use this in JSC when we allocate a particular object that
1660         engages in a locking protocol with the concurrent compiler thread,
1661         but before a concurrent compiler thread that could have access
1662         to the object exists.
1663
1664         * wtf/Locker.h:
1665         (WTF::Locker::Locker):
1666         (WTF::Locker::~Locker):
1667
1668 2016-04-19  Michael Saboff  <msaboff@apple.com>
1669
1670         iTunes crashing JavaScriptCore.dll
1671         https://bugs.webkit.org/show_bug.cgi?id=156647
1672
1673         Reviewed by Filip Pizlo.
1674
1675         If a thread was created without using the WTF thread apis and that thread uses
1676         a JavaScript VM and that thread exits with the VM still around, JSC won't know
1677         that the thread has exited.  Currently, we use ThreadSpecificThreadExit() to
1678         clean up any thread specific keys.  Cleaning up these keys is how JSC is
1679         notified of a thread exit.  We only call ThreadSpecificThreadExit() from
1680         wtfThreadEntryPoint() when the thread entry point function returns.
1681         This mechanism was put in place for Windows because we layer the WTF::ThreadSpecific
1682         functionality on top of TLS (Thread Local Storage), but TLS doesn't have
1683         a thread exiting callback the way that pthread_create_key does.
1684
1685         The fix is to change from using TLS to using FLS (Fiber Local Storage).  Although
1686         Windows allows multiple fibers per thread, WebKit is not designed to work with a
1687         multiple fibers per thread.  When there is only one fiber per thread, FLS works just
1688         like TLS, but it has the destroy callback.
1689
1690         I restructured the Windows version of WTF::ThreadSpecific to be almost the same
1691         as the pthread version.  Added THREAD_SPECIFIC_CALL to set the correct
1692         calling convenction for Windows 32 bit.
1693
1694         * wtf/ThreadSpecific.h:
1695         (WTF::threadSpecificKeyCreate):
1696         (WTF::threadSpecificKeyDelete):
1697         (WTF::threadSpecificSet):
1698         (WTF::threadSpecificGet):
1699         (WTF::ThreadSpecific<T>::ThreadSpecific):
1700         (WTF::ThreadSpecific<T>::~ThreadSpecific):
1701         (WTF::ThreadSpecific<T>::get):
1702         (WTF::ThreadSpecific<T>::set):
1703         (WTF::ThreadSpecific<T>::destroy):
1704         Restructured to use FLS.  Renamed TLS* to FLS*.
1705
1706         * wtf/ThreadSpecificWin.cpp:
1707         (WTF::flsKeyCount):
1708         (WTF::flsKeys):
1709         Renamed from tlsKey*() to flsKey*().
1710
1711         (WTF::destructorsList): Deleted.
1712         (WTF::destructorsMutex): Deleted.
1713         (WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
1714         (WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
1715         (WTF::PlatformThreadSpecificKey::setValue): Deleted.
1716         (WTF::PlatformThreadSpecificKey::value): Deleted.
1717         (WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
1718         (WTF::tlsKeyCount): Deleted.
1719         (WTF::tlsKeys): Deleted.
1720         (WTF::threadSpecificKeyCreate): Deleted.
1721         (WTF::threadSpecificKeyDelete): Deleted.
1722         (WTF::threadSpecificSet): Deleted.
1723         (WTF::threadSpecificGet): Deleted.
1724         (WTF::ThreadSpecificThreadExit): Deleted.
1725
1726         * wtf/ThreadingWin.cpp:
1727         (WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
1728
1729 2016-04-19  Filip Pizlo  <fpizlo@apple.com>
1730
1731         Add more locking algorithms to the LockSpeedTest.
1732
1733         Rubber stamped by Saam Barati.
1734
1735         * benchmarks/LockSpeedTest.cpp:
1736         (main):
1737
1738 2016-04-19  Filip Pizlo  <fpizlo@apple.com>
1739
1740         Clean up the ParkingLot uparking API a bit
1741         https://bugs.webkit.org/show_bug.cgi?id=156746
1742
1743         Reviewed by Saam Barati and Geoffrey Garen.
1744         
1745         Previously, unparkOne() would either return a boolean to tell you if there are any more threads on
1746         the queue or it would pass your callback a pair of booleans - one to tell if a thread was unparked
1747         and another to tell if there are any more threads. This was an annoying inconsistency. What if you
1748         wanted to know if unparkOne() unparked a thread but you don't care to use callbacks?
1749
1750         This fixes unparkOne() to use a struct called UnparkResult for both of its variants. This makes the
1751         code a bit cleaner.
1752
1753         * wtf/Atomics.h: Add some more atomic ops.
1754         (WTF::Atomic::exchangeAndAdd):
1755         (WTF::Atomic::exchange):
1756         * wtf/Condition.h: Change calls to unparkOne().
1757         (WTF::ConditionBase::notifyOne):
1758         * wtf/Lock.cpp: Change calls to unparkOne().
1759         (WTF::LockBase::unlockSlow):
1760         * wtf/ParkingLot.cpp:
1761         (WTF::ParkingLot::parkConditionally):
1762         (WTF::ParkingLot::unparkOne):
1763         * wtf/ParkingLot.h: Switch to using ScopedLambda and introduce UnparkResult.
1764
1765 2016-04-19  Commit Queue  <commit-queue@webkit.org>
1766
1767         Unreviewed, rolling out r199726.
1768         https://bugs.webkit.org/show_bug.cgi?id=156748
1769
1770         WebKit tests crash on Windows 32 (Requested by msaboff on
1771         #webkit).
1772
1773         Reverted changeset:
1774
1775         "iTunes crashing JavaScriptCore.dll"
1776         https://bugs.webkit.org/show_bug.cgi?id=156647
1777         http://trac.webkit.org/changeset/199726
1778
1779 2016-04-19  Michael Saboff  <msaboff@apple.com>
1780
1781         iTunes crashing JavaScriptCore.dll
1782         https://bugs.webkit.org/show_bug.cgi?id=156647
1783
1784         Reviewed by Saam Barati.
1785
1786         If a thread was created without using the WTF thread apis and that thread uses
1787         a JavaScript VM and that thread exits with the VM still around, JSC won't know
1788         that the thread has exited.  Currently, we use ThreadSpecificThreadExit() to
1789         clean up any thread specific keys.  Cleaning up these keys is how JSC is
1790         notified of a thread exit.  We only call ThreadSpecificThreadExit() from
1791         wtfThreadEntryPoint() when the thread entry point function returns.
1792         This mechanism was put in place for Windows because we layer the WTF::ThreadSpecific
1793         functionality on top of TLS (Thread Local Storage), but TLS doesn't have
1794         a thread exiting callback the way that pthread_create_key.
1795
1796         The fix is to change from using TLS to using FLS (Fiber Local Storage).  Although
1797         Windows allows multiple fibers per thread, WebKit is not designed to work with a
1798         multiple fibers per thread.  When there is only one fiber per thread, FLS works just
1799         like TLS, but it has the destroy callback.
1800
1801         I restructured the Windows version of WTF::ThreadSpecific to be almost the same
1802         as the pthread version.
1803
1804         * wtf/ThreadSpecific.h:
1805         (WTF::threadSpecificKeyCreate):
1806         (WTF::threadSpecificKeyDelete):
1807         (WTF::threadSpecificSet):
1808         (WTF::threadSpecificGet):
1809         (WTF::ThreadSpecific<T>::ThreadSpecific):
1810         (WTF::ThreadSpecific<T>::~ThreadSpecific):
1811         (WTF::ThreadSpecific<T>::get):
1812         (WTF::ThreadSpecific<T>::set):
1813         (WTF::ThreadSpecific<T>::destroy):
1814         Restructured to use FLS.  Renamed TLS* to FLS*.
1815
1816         * wtf/ThreadSpecificWin.cpp:
1817         (WTF::flsKeyCount):
1818         (WTF::flsKeys):
1819         Renamed from tlsKey*() to flsKey*().
1820
1821         (WTF::destructorsList): Deleted.
1822         (WTF::destructorsMutex): Deleted.
1823         (WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
1824         (WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
1825         (WTF::PlatformThreadSpecificKey::setValue): Deleted.
1826         (WTF::PlatformThreadSpecificKey::value): Deleted.
1827         (WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
1828         (WTF::tlsKeyCount): Deleted.
1829         (WTF::tlsKeys): Deleted.
1830         (WTF::threadSpecificKeyCreate): Deleted.
1831         (WTF::threadSpecificKeyDelete): Deleted.
1832         (WTF::threadSpecificSet): Deleted.
1833         (WTF::threadSpecificGet): Deleted.
1834         (WTF::ThreadSpecificThreadExit): Deleted.
1835
1836         * wtf/ThreadingWin.cpp:
1837         (WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
1838
1839 2016-04-19  Yusuke Suzuki  <utatane.tea@gmail.com>
1840
1841         [GTK] Use Generic WorkQueue instead of WorkQueueGLib
1842         https://bugs.webkit.org/show_bug.cgi?id=156721
1843
1844         Reviewed by Benjamin Poulain.
1845
1846         WorkQueueGLib includes platform-dependent part only for WorkQueue::dispatchAfter.
1847         However, its code is related to RunLoopGLib rather than WorkQueueGLib.
1848         In this patch, we move the code from WorkQueueGLib to RunLoopGLib, drop WorkQueueGLib
1849         and use WorkQueueGeneric.
1850
1851         * wtf/PlatformGTK.cmake:
1852         * wtf/RunLoop.h:
1853         * wtf/WorkQueue.h:
1854         * wtf/glib/RunLoopGLib.cpp:
1855         (WTF::DispatchAfterContext::DispatchAfterContext):
1856         (WTF::DispatchAfterContext::dispatch):
1857         (WTF::RunLoop::dispatchAfter):
1858         * wtf/glib/WorkQueueGLib.cpp: Removed.
1859         (WTF::WorkQueue::platformInitialize): Deleted.
1860         (WTF::WorkQueue::platformInvalidate): Deleted.
1861         (WTF::WorkQueue::dispatch): Deleted.
1862         (WTF::DispatchAfterContext::DispatchAfterContext): Deleted.
1863         (WTF::DispatchAfterContext::~DispatchAfterContext): Deleted.
1864         (WTF::DispatchAfterContext::dispatch): Deleted.
1865         (WTF::WorkQueue::dispatchAfter): Deleted.
1866
1867 2016-04-18  Yusuke Suzuki  <utatane.tea@gmail.com>
1868
1869         [JSCOnly] Implement RunLoop and remove glib dependency
1870         https://bugs.webkit.org/show_bug.cgi?id=155706
1871
1872         Reviewed by Michael Catanzaro.
1873
1874         Add missing RunLoop and WorkQueue platform code for JSCOnly port.
1875         The implementation does not use platform specific things. Instead, we
1876         implement them on WTF framework; using condition variables to construct
1877         the run loop and timers.
1878
1879         Since the fallback is implemented, it is not necessary for JSCOnly port
1880         to depend on GLib's RunLoop abstraction. So this patch removes its
1881         dependency. As a result, now, JSCOnly port removes dependencies except for the system ICU.
1882
1883         We clean up event loop ifdefs by introducing USE_XXX_EVENT_LOOP flags.
1884         USE(XXX_EVENT_LOOP) is exclusive to each other. So from now, we do not need to take care
1885         of the order of if-defs for the event loops. (For example, USE(GLIB) should have lead before
1886         OS(DARWIN) in WorkQueue.h for WebKitGTK on Darwin.)
1887
1888         EVENT_LOOP determination is done in Platform.h. This follows the style of WTF PLATFORM.
1889
1890         * wtf/Platform.h:
1891         * wtf/PlatformJSCOnly.cmake:
1892         * wtf/RunLoop.h:
1893         * wtf/WorkQueue.h:
1894         * wtf/generic/MainThreadGeneric.cpp: Renamed from Source/WTF/wtf/none/MainThreadNone.cpp.
1895         (WTF::initializeMainThreadPlatform):
1896         (WTF::scheduleDispatchFunctionsOnMainThread):
1897         * wtf/generic/RunLoopGeneric.cpp: Added.
1898         (WTF::RunLoop::TimerBase::ScheduledTask::create):
1899         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
1900         (WTF::RunLoop::TimerBase::ScheduledTask::fired):
1901         (WTF::RunLoop::TimerBase::ScheduledTask::scheduledTimePoint):
1902         (WTF::RunLoop::TimerBase::ScheduledTask::updateReadyTime):
1903         (WTF::RunLoop::TimerBase::ScheduledTask::EarliestSchedule::operator()):
1904         (WTF::RunLoop::TimerBase::ScheduledTask::isActive):
1905         (WTF::RunLoop::TimerBase::ScheduledTask::deactivate):
1906         (WTF::RunLoop::RunLoop):
1907         (WTF::RunLoop::~RunLoop):
1908         (WTF::RunLoop::populateTasks):
1909         (WTF::RunLoop::runImpl):
1910         (WTF::RunLoop::run):
1911         (WTF::RunLoop::iterate):
1912         (WTF::RunLoop::stop):
1913         (WTF::RunLoop::wakeUp):
1914         (WTF::RunLoop::schedule):
1915         (WTF::RunLoop::scheduleAndWakeUp):
1916         (WTF::RunLoop::dispatchAfter):
1917         (WTF::RunLoop::TimerBase::TimerBase):
1918         (WTF::RunLoop::TimerBase::~TimerBase):
1919         (WTF::RunLoop::TimerBase::start):
1920         (WTF::RunLoop::TimerBase::stop):
1921         (WTF::RunLoop::TimerBase::isActive):
1922         * wtf/generic/WorkQueueGeneric.cpp: Added.
1923         (WorkQueue::platformInitialize):
1924         (WorkQueue::platformInvalidate):
1925         (WorkQueue::dispatch):
1926         (WorkQueue::dispatchAfter):
1927         * wtf/none/MainThreadNone.cpp:
1928         (WTF::initializeMainThreadPlatform): Deleted.
1929         (WTF::scheduleDispatchFunctionsOnMainThread): Deleted.
1930         * wtf/none/RunLoopNone.cpp:
1931         (WTF::RunLoop::RunLoop): Deleted.
1932         (WTF::RunLoop::~RunLoop): Deleted.
1933         (WTF::RunLoop::run): Deleted.
1934         (WTF::RunLoop::stop): Deleted.
1935         (WTF::RunLoop::wakeUp): Deleted.
1936         (WTF::RunLoop::TimerBase::TimerBase): Deleted.
1937         (WTF::RunLoop::TimerBase::~TimerBase): Deleted.
1938         (WTF::RunLoop::TimerBase::start): Deleted.
1939         (WTF::RunLoop::TimerBase::stop): Deleted.
1940         (WTF::RunLoop::TimerBase::isActive): Deleted.
1941         * wtf/none/WorkQueueNone.cpp:
1942         (WorkQueue::platformInitialize): Deleted.
1943         (WorkQueue::platformInvalidate): Deleted.
1944         (WorkQueue::dispatch): Deleted.
1945         (WorkQueue::dispatchAfter): Deleted.
1946
1947 2016-04-18  Commit Queue  <commit-queue@webkit.org>
1948
1949         Unreviewed, rolling out r199621.
1950         https://bugs.webkit.org/show_bug.cgi?id=156708
1951
1952         made windows tests crash (Requested by alexchristensen on
1953         #webkit).
1954
1955         Reverted changeset:
1956
1957         "iTunes crashing JavaScriptCore.dll"
1958         https://bugs.webkit.org/show_bug.cgi?id=156647
1959         http://trac.webkit.org/changeset/199621
1960
1961 2016-04-15  Michael Saboff  <msaboff@apple.com>
1962
1963         iTunes crashing JavaScriptCore.dll
1964         https://bugs.webkit.org/show_bug.cgi?id=156647
1965
1966         Reviewed by Geoffrey Garen.
1967
1968         If a thread was created without using the WTF thread apis and that thread uses
1969         a JavaScript VM and that thread exits with the VM still around, JSC won't know
1970         that the thread has exited.  Currently, we use ThreadSpecificThreadExit() to
1971         clean up any thread specific keys.  Cleaning up these keys is how JSC is
1972         notified of a thread exit.  We only call ThreadSpecificThreadExit() from
1973         wtfThreadEntryPoint() when the thread entry point function returns.
1974         This mechanism was put in place for Windos because we layer the WTF::ThreadSpecific
1975         functionality on top of TLS (Thread Local Storage), but TLS doesn't have
1976         a thread exiting callback the way that pthread_create_key.
1977
1978         The fix is to change from using TLS to using FLS (Fiber Local Storage).  Although
1979         Windows allows multiple fibers per thread, WebKit is not designed to work with a
1980         multiple fibers per thread.  When ther is only one fiber per thread, FLS works just
1981         like TLS, but it has the destroy callback.
1982
1983         I restructured the Windows version of WTF::ThreadSpecific to be almost the same
1984         as the pthread version.
1985         
1986         * wtf/ThreadSpecific.h:
1987         (WTF::threadSpecificKeyCreate):
1988         (WTF::threadSpecificKeyDelete):
1989         (WTF::threadSpecificSet):
1990         (WTF::threadSpecificGet):
1991         (WTF::ThreadSpecific<T>::ThreadSpecific):
1992         (WTF::ThreadSpecific<T>::~ThreadSpecific):
1993         (WTF::ThreadSpecific<T>::get):
1994         (WTF::ThreadSpecific<T>::set):
1995         (WTF::ThreadSpecific<T>::destroy):
1996         Restructured to use FLS.  Renamed TLS* to FLS*.
1997
1998         * wtf/ThreadSpecificWin.cpp:
1999         (WTF::flsKeyCount):
2000         (WTF::flsKeys):
2001         Renamed from tlsKey*() to flsKey*().
2002
2003         (WTF::destructorsList): Deleted.
2004         (WTF::destructorsMutex): Deleted.
2005         (WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
2006         (WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
2007         (WTF::PlatformThreadSpecificKey::setValue): Deleted.
2008         (WTF::PlatformThreadSpecificKey::value): Deleted.
2009         (WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
2010         (WTF::tlsKeyCount): Deleted.
2011         (WTF::tlsKeys): Deleted.
2012         (WTF::threadSpecificKeyCreate): Deleted.
2013         (WTF::threadSpecificKeyDelete): Deleted.
2014         (WTF::threadSpecificSet): Deleted.
2015         (WTF::threadSpecificGet): Deleted.
2016         (WTF::ThreadSpecificThreadExit): Deleted.
2017
2018         * wtf/ThreadingWin.cpp:
2019         (WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
2020
2021 2016-04-12  Filip Pizlo  <fpizlo@apple.com>
2022
2023         PolymorphicAccess should buffer AccessCases before regenerating
2024         https://bugs.webkit.org/show_bug.cgi?id=156457
2025
2026         Reviewed by Benjamin Poulain.
2027
2028         * wtf/TinyPtrSet.h:
2029         (WTF::TinyPtrSet::add): Add a helpful comment because I had forgotten what the bool return meant.
2030
2031 2016-04-12  Tomas Popela  <tpopela@redhat.com>
2032
2033         S390X and PPC64 architectures detection is wrong
2034         https://bugs.webkit.org/show_bug.cgi?id=156337
2035
2036         Reviewed by Carlos Garcia Campos.
2037
2038         After the http://trac.webkit.org/changeset/198919 was committed
2039         it showed that the PPC64 detection is wrong as the CPU(PPC) path was
2040         activated even for PPC64. The thing is that GCC defines __ppc__
2041         even on PPC64 and not just on PPC(32). The same applies for S390X.
2042
2043         * wtf/Platform.h:
2044
2045 2016-04-05  Oliver Hunt  <oliver@apple.com>
2046
2047         Remove compile time define for SEPARATED_HEAP
2048         https://bugs.webkit.org/show_bug.cgi?id=155508
2049
2050         Reviewed by Mark Lam.
2051
2052         * wtf/FeatureDefines.h:
2053         * wtf/Platform.h:
2054
2055 2016-04-11  Fujii Hironori  <Hironori.Fujii@jp.sony.com>
2056
2057         [CMake] Make FOLDER property INHERITED
2058         https://bugs.webkit.org/show_bug.cgi?id=156460
2059
2060         Reviewed by Brent Fulgham.
2061
2062         * CMakeLists.txt:
2063         Set FOLDER directory property
2064
2065 2016-04-08  Alex Christensen  <achristensen@webkit.org>
2066
2067         Progress towards running CMake WebKit2 on Mac
2068         https://bugs.webkit.org/show_bug.cgi?id=156426
2069
2070         Reviewed by Tim Horton.
2071
2072         * wtf/PlatformMac.cmake:
2073
2074 2016-04-08  Yusuke Suzuki  <utatane.tea@gmail.com>
2075
2076         [JSC] Enable Concurrent JIT by default
2077         https://bugs.webkit.org/show_bug.cgi?id=156341
2078
2079         Reviewed by Filip Pizlo.
2080
2081         We enable Concurrent JIT by default when DFG JIT and JSVALUE64 are enabled.
2082         This change offers Concurrent JIT to the JSCOnly port.
2083
2084         * wtf/Platform.h:
2085
2086 2016-04-07  Joseph Pecoraro  <pecoraro@apple.com>
2087
2088         Remove ENABLE(ENABLE_ES6_CLASS_SYNTAX) guards
2089         https://bugs.webkit.org/show_bug.cgi?id=156384
2090
2091         Reviewed by Ryosuke Niwa.
2092
2093         * wtf/FeatureDefines.h:
2094
2095 2016-04-06  Filip Pizlo  <fpizlo@apple.com>
2096
2097         JSC should have a simple way of gathering IC statistics
2098         https://bugs.webkit.org/show_bug.cgi?id=156317
2099
2100         Reviewed by Benjamin Poulain.
2101         
2102         Make it easier to do relative sleeping on a condition. Previously you could do this using
2103         std::chrono. I now believe that std::chrono is just a bad decision, and I always want to
2104         use doubles instead. This makes it easier to do the right thing and use doubles.
2105
2106         * wtf/Condition.h:
2107         (WTF::ConditionBase::waitUntilMonotonicClockSeconds):
2108         (WTF::ConditionBase::waitForSeconds):
2109
2110 2016-04-06  Simon Fraser  <simon.fraser@apple.com>
2111
2112         Fix Windows build by converting clampToInteger() into a template that only
2113         takes integral types.
2114
2115         * wtf/MathExtras.h:
2116         (clampToInteger):
2117
2118 2016-04-06  Simon Fraser  <simon.fraser@apple.com>
2119
2120         Page tiles are missing when graphics acceleration is unavailable
2121         https://bugs.webkit.org/show_bug.cgi?id=156325
2122
2123         Reviewed by Tim Horton.
2124
2125         Add clampToInteger(size_t).
2126
2127         * wtf/MathExtras.h:
2128         (clampToInteger):
2129
2130 2016-04-05  Simon Fraser  <simon.fraser@apple.com>
2131
2132         Implement operator== and operator!= for Optional<>
2133         https://bugs.webkit.org/show_bug.cgi?id=156266
2134
2135         Reviewed by Anders Carlsson.
2136         
2137         Implement non-member operator== and operator!= variants for Optional<>.
2138
2139         * wtf/Optional.h:
2140         (WTF::operator==):
2141         (WTF::operator!=):
2142
2143 2016-03-19  Filip Pizlo  <fpizlo@apple.com>
2144
2145         DFG and FTL should constant-fold RegExpExec
2146         https://bugs.webkit.org/show_bug.cgi?id=155270
2147
2148         Reviewed by Saam Barati.
2149
2150         Make executeInsertions() return the amount by which the vector increased in size. This is a
2151         convenient feature that I use in DFG::InsertionSet.
2152
2153         * wtf/Insertion.h:
2154         (WTF::executeInsertions):
2155
2156 2016-04-05  Antoine Quint  <graouts@apple.com>
2157
2158         [WebGL2] Allow enabling WebGL2 with a runtime flag
2159         https://bugs.webkit.org/show_bug.cgi?id=156166
2160         <rdar://problem/25526929>
2161
2162         Removed the manual overrides of ENABLE_WEBGL2.
2163
2164         Reviewed by Dean Jackson.
2165
2166         * wtf/FeatureDefines.h:
2167
2168 2016-03-31  Konstantin Tokarev  <annulen@yandex.ru>
2169
2170         Removed leftovers of ENABLE(INSPECTOR) and ENABLE(VIEWPORT).
2171         https://bugs.webkit.org/show_bug.cgi?id=156064
2172
2173         Reviewed by Csaba Osztrogonác.
2174
2175         This ifdef guards were removed in r178820 and r147714, respectively.
2176
2177         * wtf/FeatureDefines.h:
2178
2179 2016-03-31  Brent Fulgham  <bfulgham@apple.com>
2180
2181         [WK2] Support download attribute feature
2182         https://bugs.webkit.org/show_bug.cgi?id=102914
2183         <rdar://problem/13177492>
2184
2185         Reviewed by Darin Adler.
2186
2187         * wtf/FeatureDefines.h: Turn the ENABLE_DOWNLOAD_ATTRIBUTE flag
2188         on to see what happens.
2189
2190 2016-03-30  Brian Burg  <bburg@apple.com>
2191
2192         Web Automation: Add Automation.performKeyboardInteractions
2193         https://bugs.webkit.org/show_bug.cgi?id=155990
2194         <rdar://problem/25426408>
2195
2196         Reviewed by Timothy Hatcher.
2197
2198         Add a missing NSEventType declaration.
2199
2200         * wtf/mac/AppKitCompatibilityDeclarations.h:
2201
2202 2016-03-29  Benjamin Poulain  <bpoulain@apple.com>
2203
2204         [WTF] Removing a smart pointer from HashTable issues two stores to the same location
2205         https://bugs.webkit.org/show_bug.cgi?id=155676
2206
2207         Reviewed by Darin Adler.
2208
2209         While working on the hot loop of r198376, I noticed something
2210         weird...
2211         Every time we removed a smart pointer from the hash table,
2212         the code generated was something like:
2213             Load([bucket]) -> Tmp
2214             Store(0 -> [bucket])
2215             JumpIfZero(Tmp, ->End)
2216             Call fastFree()
2217             Store(-1 -> [bucket])
2218             -> End:
2219
2220         The useless store before the branch is annoying, especially on ARM.
2221
2222         Here is what happens:
2223             1) The destructor of the smart pointer swaps its internal value with nullptr.
2224             2) Since the smart pointer is not a local in-register value, that nullptr
2225                is stored in memory because it could be observable from fastFree().
2226             3) The destructor destroy the value if not zero (or deref for RefPtr).
2227                The "if-not-zero" may or may not be eliminated depending on what
2228                is between getting the iterator and the call to remove().
2229             4) fastFree() is called.
2230             5) The deleted value is set in the bucket.
2231
2232         This patch adds custom deletion for those cases to avoid the useless
2233         store. The useless null check is still eliminated when we are lucky.
2234
2235         I went this path instead of changing the destructor of RefPtr for two reasons:
2236         -I need this to work in unique_ptr for JSC.
2237         -Nulling the memory may have security advantages in the cases where we do not immediately
2238          write over that memory again.
2239
2240         This patch removes 13kb out of x86_64 WebCore.
2241
2242         * wtf/HashTable.h:
2243         (WTF::HashTable::deleteBucket):
2244         (WTF::KeyTraits>::removeIf):
2245         * wtf/HashTraits.h:
2246         (WTF::HashTraits<RefPtr<P>>::customDeleteBucket):
2247         (WTF::hashTraitsDeleteBucket):
2248         (WTF::KeyValuePairHashTraits::customDeleteBucket):
2249         * wtf/text/AtomicStringHash.h:
2250         (WTF::HashTraits<WTF::AtomicString>::isEmptyValue):
2251         (WTF::HashTraits<WTF::AtomicString>::customDeleteBucket):
2252         * wtf/text/StringHash.h:
2253         (WTF::HashTraits<String>::customDeleteBucket):
2254
2255 2016-03-28  Brian Burg  <bburg@apple.com>
2256
2257         Web Automation: implement Automation.performMouseInteraction
2258         https://bugs.webkit.org/show_bug.cgi?id=155606
2259         <rdar://problem/25227576>
2260
2261         Reviewed by Timothy Hatcher.
2262
2263         * wtf/mac/AppKitCompatibilityDeclarations.h: Add missing some NSEventTypes.
2264
2265 2016-03-29  Yusuke Suzuki  <utatane.tea@gmail.com>
2266
2267         REGRESSION(r192914): 10% regression on Sunspider's date-format-tofte
2268         https://bugs.webkit.org/show_bug.cgi?id=155559
2269
2270         Reviewed by Saam Barati.
2271
2272         Add HashTable::inlineLookup and HashMap::fastGet.
2273
2274         * wtf/HashMap.h:
2275         * wtf/HashTable.h:
2276
2277 2016-03-25  Alex Christensen  <achristensen@webkit.org>
2278
2279         Add a compile time flag for using QTKit
2280         https://bugs.webkit.org/show_bug.cgi?id=155868
2281
2282         Reviewed by Dan Bates.
2283
2284         * wtf/Platform.h:
2285
2286 2016-03-24  Alex Christensen  <achristensen@webkit.org>
2287
2288         Fix iOS9 performance regression after r197572
2289         https://bugs.webkit.org/show_bug.cgi?id=155845
2290         <rdar://problem/25144924>
2291
2292         Reviewed by Chris Dumez.
2293
2294         * wtf/Platform.h:
2295         Use CFURLConnection instead of NSURLConnection on internal iOS9 builds.
2296
2297 2016-03-23  Saam Barati  <sbarati@apple.com>
2298
2299         SmallPtrSet leaks memory in its move assignment operator when !this->isSmall()
2300         https://bugs.webkit.org/show_bug.cgi?id=155701
2301
2302         Reviewed by Darin Adler.
2303
2304         * wtf/SmallPtrSet.h:
2305         (WTF::SmallPtrSet::SmallPtrSet):
2306         (WTF::SmallPtrSet::operator=):
2307
2308 2016-03-22  Per Arne Vollan  <peavo@outlook.com>
2309
2310         [Win] [64-bit] Remove MSVC 2013 FMA3 Bug Workaround
2311         https://bugs.webkit.org/show_bug.cgi?id=141499
2312
2313         Reviewed by Brent Fulgham.
2314
2315         As we have moved on to VS2015, this workaround is no longer needed.
2316
2317         * wtf/PlatformWin.cmake:
2318         * wtf/win/WTFDLL.cpp: Removed.
2319
2320 2016-03-20  Dan Bernstein  <mitz@apple.com>
2321
2322         [Mac] Determine TARGET_MAC_OS_X_VERSION_MAJOR from MACOSX_DEPLOYMENT_TARGET rather than from MAC_OS_X_VERSION_MAJOR
2323         https://bugs.webkit.org/show_bug.cgi?id=155707
2324         <rdar://problem/24980691>
2325
2326         Reviewed by Darin Adler.
2327
2328         * Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last
2329           component of MACOSX_DEPLOYMENT_TARGET.
2330         * Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of
2331           TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.
2332
2333 2016-03-20  Dan Bernstein  <mitz@apple.com>
2334
2335         Update build settings
2336
2337         Rubber-stamped by Andy Estes.
2338
2339         * Configurations/DebugRelease.xcconfig:
2340
2341 2016-03-17  Benjamin Poulain  <bpoulain@apple.com>
2342
2343         [JSC] Make CSE's ImpureData faster when dealing with large blocks
2344         https://bugs.webkit.org/show_bug.cgi?id=155594
2345
2346         Reviewed by Filip Pizlo.
2347
2348         * wtf/HashSet.h:
2349         (WTF::V>::removeIf):
2350
2351 2016-03-17  Saam barati  <sbarati@apple.com>
2352
2353         Implement SmallPtrSet and integrate it into the Parser
2354         https://bugs.webkit.org/show_bug.cgi?id=155552
2355
2356         Reviewed by Filip Pizlo.
2357
2358         This patch implements the SmallPtrSet data struture.
2359         Inspired by the implementation in llvm:
2360         http://llvm.org/docs/doxygen/html/SmallPtrSet_8h_source.html
2361
2362         The data structure uses an inline array for storage up until
2363         a fixed limit (8 entries in our implementation). If that storage
2364         fills up, we fall back to a simple hash table implementation.
2365         Crucially, this implementation doesn't support the remove
2366         operation. This is on purpose. The hash table will only ever
2367         grow.
2368
2369         Also, the implementation allows for it to be memcopied around.
2370         I.e, we can put SmallPtrSet inside a Vector and allow that
2371         Vector to use memcpy as its move operation (of course this
2372         is only valid if the SmallPtrSet in the old memory doesn't have 
2373         its destructor called unless it is set back to its initial state.)
2374
2375         For now, SmallPtrSet only supports pointer types that are trivially
2376         destructible. It's probably not too difficult to extend this to
2377         smart pointers, but it's not part of this original implementation.
2378
2379         I've also implemented a pure forwarding varargs constructAndAppend
2380         method on Vector. This allows you to do:
2381         Vector<T> v;
2382         v.constructAndAppend(a1, a2, ...)
2383         as long as T has a constructor that accepts arguments (a1, a2, ...).
2384
2385         * WTF.xcodeproj/project.pbxproj:
2386         * wtf/CMakeLists.txt:
2387         * wtf/SmallPtrSet.h: Added.
2388         (WTF::SmallPtrSet::SmallPtrSet):
2389         (WTF::SmallPtrSet::operator=):
2390         (WTF::SmallPtrSet::~SmallPtrSet):
2391         (WTF::SmallPtrSet::add):
2392         (WTF::SmallPtrSet::contains):
2393         (WTF::SmallPtrSet::iterator::operator++):
2394         (WTF::SmallPtrSet::iterator::operator*):
2395         (WTF::SmallPtrSet::iterator::operator==):
2396         (WTF::SmallPtrSet::iterator::operator!=):
2397         (WTF::SmallPtrSet::begin):
2398         (WTF::SmallPtrSet::end):
2399         (WTF::SmallPtrSet::size):
2400         (WTF::SmallPtrSet::emptyValue):
2401         (WTF::SmallPtrSet::isValidEntry):
2402         (WTF::SmallPtrSet::isSmall):
2403         (WTF::SmallPtrSet::initialize):
2404         (WTF::SmallPtrSet::grow):
2405         (WTF::SmallPtrSet::bucket):
2406         * wtf/Vector.h:
2407         (WTF::Vector::append):
2408         (WTF::Vector::uncheckedAppend):
2409         (WTF::minCapacity>::append):
2410         (WTF::minCapacity>::constructAndAppend):
2411         (WTF::minCapacity>::appendSlowCase):
2412         (WTF::minCapacity>::constructAndAppendSlowCase):
2413
2414 2016-03-16  Filip Pizlo  <fpizlo@apple.com>
2415
2416         Replace all of the various non-working and non-compiling sampling profiler hacks with a single super hack
2417         https://bugs.webkit.org/show_bug.cgi?id=155561
2418
2419         Reviewed by Saam Barati.
2420
2421         This patch replaces all of our various ad hoc profiling hacks with a single ad hoc profiling hack.
2422         That needs to be able to sleep a thread, so I added a portable way to do it.
2423
2424         This also removes a bunch of ENABLE flags for all of the old non-working hacks.
2425
2426         * wtf/CurrentTime.cpp:
2427         (WTF::currentCPUTime):
2428         (WTF::sleep):
2429         * wtf/CurrentTime.h:
2430         (WTF::sleepMS):
2431         * wtf/Platform.h:
2432
2433 2016-03-17  Chris Dumez  <cdumez@apple.com>
2434
2435         Set the WebContent process's main thread QoS to USER-INTERACTIVE
2436         https://bugs.webkit.org/show_bug.cgi?id=155595
2437         <rdar://problem/22534965>
2438
2439         Reviewed by Antti Koivisto.
2440
2441         Add a relativePriority parameter to setCurrentThreadIsUser*() so that
2442         we can do more fine-grained prioritization of threads that have the
2443         same QoS.
2444
2445         * wtf/Threading.cpp:
2446         (WTF::setCurrentThreadIsUserInteractive):
2447         (WTF::setCurrentThreadIsUserInitiated):
2448         (WTF::createThread): Deleted.
2449         * wtf/Threading.h:
2450
2451 2016-03-17  Filip Pizlo  <fpizlo@apple.com>
2452
2453         Silence leaks in ParkingLot
2454         https://bugs.webkit.org/show_bug.cgi?id=155510
2455
2456         Reviewed by Alexey Proskuryakov.
2457
2458         ParkingLot has a concurrent hashtable that it reallocates on demand. It will not reallocate
2459         it in steady state. The hashtable is sized to accommodate the high watermark of the number
2460         of active threads - so long as the program doesn't just keep starting an unbounded number
2461         of threads that are all active, the hashtable will stop resizing. Each resize operation is
2462         designed to stay out of the way of the data-access-parallel normal path, in which two
2463         threads operating on different lock addresses don't have to synchronize. To do this, it
2464         simply drops the old hashtable without deleting it, so that threads that were still using
2465         it don't crash. They will realize that they have the wrong hashtable before doing anything
2466         bad, but we don't have a way of proving when all of those threads are no longer going to
2467         read from the old hashtables. So, we just leak them.
2468
2469         This is a bounded leak, since the hashtable resizes exponentially. Thus the total memory
2470         utilization of all hashtables, including the leaked ones, converges to a linear function of
2471         the current hashtable's size (it's 2 * size of current hashtable).
2472
2473         But this leak is a problem for leaks tools, which will always report this leak. This is not
2474         useful. It's better to silence the leak. That's what this patch does by ensuring that all
2475         hashtables, including leaked ones, end up in a global vector. This is perf-neutral.
2476
2477         This requires making a StaticWordLock variant of WordLock. That's probably the biggest part
2478         of this change.
2479
2480         * wtf/ParkingLot.cpp:
2481         * wtf/WordLock.cpp:
2482         (WTF::WordLockBase::lockSlow):
2483         (WTF::WordLockBase::unlockSlow):
2484         (WTF::WordLock::lockSlow): Deleted.
2485         (WTF::WordLock::unlockSlow): Deleted.
2486         * wtf/WordLock.h:
2487         (WTF::WordLockBase::lock):
2488         (WTF::WordLockBase::isLocked):
2489         (WTF::WordLock::WordLock):
2490         (WTF::WordLock::lock): Deleted.
2491         (WTF::WordLock::isLocked): Deleted.
2492
2493 2016-03-16  Chris Dumez  <cdumez@apple.com>
2494
2495         Unreviewed, rolling out r198235, r198240, r198241, and
2496         r198252.
2497
2498         Causing crashes on ARM
2499
2500         Reverted changesets:
2501
2502         "Remove compile time define for SEPARATED_HEAP"
2503         https://bugs.webkit.org/show_bug.cgi?id=155508
2504         http://trac.webkit.org/changeset/198235
2505
2506         "Gardening: build fix after r198235."
2507         http://trac.webkit.org/changeset/198240
2508
2509         "Build fix."
2510         http://trac.webkit.org/changeset/198241
2511
2512         "Rename performJITMemcpy to something more inline with our
2513         normal webkit function names"
2514         https://bugs.webkit.org/show_bug.cgi?id=155525
2515         http://trac.webkit.org/changeset/198252
2516
2517 2016-03-15  Oliver Hunt  <oliver@apple.com>
2518
2519         Remove compile time define for SEPARATED_HEAP
2520         https://bugs.webkit.org/show_bug.cgi?id=155508
2521
2522         Reviewed by Mark Lam.
2523
2524         Remove the feature define.
2525
2526         * wtf/FeatureDefines.h:
2527         * wtf/Platform.h:
2528
2529 2016-03-14  Mark Lam  <mark.lam@apple.com>
2530
2531         Need to distinguish between Symbol() and Symbol("").
2532         https://bugs.webkit.org/show_bug.cgi?id=155438
2533
2534         Reviewed by Saam Barati.
2535
2536         While toString of both Symbol() and Symbol("") yields "Symbol()", Function.name
2537         should yield "" and "[]" respectively.  Hence, we need to tell between the two.
2538         This functionality will be needed later in https://bugs.webkit.org/show_bug.cgi?id=155437.
2539
2540         We achieve this by creating another singleton instance like the empty StringImpl
2541         as the null StringImpl.  isNullSymbol() tests if the Stringimpl instance is a
2542         symbol, and its substring is the null() singleton.
2543
2544         * wtf/text/StringImpl.cpp:
2545         (WTF::StringImpl::createSymbol):
2546         (WTF::StringImpl::createNullSymbol):
2547         (WTF::StringImpl::containsOnlyWhitespace):
2548         (WTF::StringImpl::createSymbolEmpty): Deleted.
2549         * wtf/text/StringImpl.h:
2550         (WTF::StringImpl::tryCreateUninitialized):
2551         (WTF::StringImpl::stringKind):
2552         (WTF::StringImpl::isSymbol):
2553         (WTF::StringImpl::isAtomic):
2554         (WTF::StringImpl::isNullSymbol):
2555         * wtf/text/StringStatics.cpp:
2556         (WTF::StringImpl::null):
2557
2558 2016-03-13  Joseph Pecoraro  <pecoraro@apple.com>
2559
2560         Remove ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX) guards
2561         https://bugs.webkit.org/show_bug.cgi?id=155417
2562
2563         Reviewed by Yusuke Suzuki.
2564
2565         * wtf/FeatureDefines.h:
2566
2567 2016-03-13  Konstantin Tokarev  <annulen@yandex.ru>
2568
2569         Added new port JSCOnly.
2570         https://bugs.webkit.org/show_bug.cgi?id=154512
2571
2572         Reviewed by Michael Catanzaro.
2573
2574         This port allows to build JavaScriptCore engine with minimal
2575         dependencies.
2576
2577         * wtf/PlatformJSCOnly.cmake: Added.
2578         * wtf/none/MainThreadNone.cpp: Added.
2579         * wtf/none/RunLoopNone.cpp: Added.
2580         * wtf/none/WorkQueueNone.cpp: Added.
2581
2582 2016-03-13  David Kilzer  <ddkilzer@apple.com>
2583
2584         REGRESSION (r198079): Windows build broke because of "%PRId64" format specifier
2585
2586         This fixes the following build failure in WebCore for Windows:
2587             C:\Source\WebCore\page\DOMTimer.cpp(396): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
2588             C:\Source\WebCore\page\DOMTimer.cpp(399): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
2589
2590         * wtf/StdLibExtras.h: Define "PRId64" for Windows here so it may
2591         be shared.  This should fix DOMTimer.cpp after r198079 since it
2592         already includes StdLibExtras.h.
2593
2594 2016-03-11  Youenn Fablet  <youenn.fablet@crf.canon.fr>
2595
2596         WTF should have a similar function as equalLettersIgnoringASCIICase to match beginning of strings
2597         https://bugs.webkit.org/show_bug.cgi?id=153419
2598
2599         Reviewed by Darin Adler.
2600
2601         Introducing startsWithLettersIgnoringASCIICase, to check the beginning of a string.
2602         Moving some code from WTF::equalLettersIgnoringASCIICaseCommonWithoutLength in
2603         WTF::hasPrefixWithLettersIgnoringASCIICaseCommon to enable reuse in
2604         WTF::startsWithLettersIgnoringASCIICaseCommon.
2605
2606         * wtf/text/StringCommon.h:
2607         (WTF::hasPrefixWithLettersIgnoringASCIICaseCommon):
2608         (WTF::equalLettersIgnoringASCIICaseCommonWithoutLength):
2609         (WTF::startsWithLettersIgnoringASCIICaseCommonWithoutLength):
2610         (WTF::startsWithLettersIgnoringASCIICaseCommon):
2611         * wtf/text/StringImpl.h:
2612         (WTF::startsWithLettersIgnoringASCIICase):
2613         * wtf/text/WTFString.h:
2614         (WTF::startsWithLettersIgnoringASCIICase):
2615
2616 2016-03-10  Frederic Wang  <fwang@igalia.com>
2617
2618         [GTK] Add support for WOFF2
2619         https://bugs.webkit.org/show_bug.cgi?id=152616
2620
2621         Reviewed by Carlos Garcia Campos.
2622
2623         * wtf/FeatureDefines.h: Enable USE_WOFF2 flag on GTK.
2624
2625 2016-03-09  Ryosuke Niwa  <rniwa@webkit.org>
2626
2627         Add runtime flags for shadow DOM and custom elements
2628         https://bugs.webkit.org/show_bug.cgi?id=155213
2629
2630         Reviewed by Dean Jackson.
2631
2632         Removed the manual overrides of ENABLE_SHADOW_DOM and ENABLE_CUSTOM_ELEMENTS as they were
2633         making --no-shadow-dom and --no-custom-elements flags on build-webkit useless.
2634
2635         * wtf/FeatureDefines.h:
2636
2637 2016-03-09  Keith Rollin  <krollin@apple.com>
2638
2639         Add state dumping facility
2640         https://bugs.webkit.org/show_bug.cgi?id=154930
2641         <rdar://problem/24939135>
2642
2643         Reviewed by Anders Carlsson.
2644
2645         Add an OS_STATE flag to control the inclusion of process state dumping
2646         functionality.
2647
2648         * wtf/Platform.h:
2649
2650 2016-03-09  Oliver Hunt  <oliver@apple.com>
2651
2652         Fix old iOS
2653
2654         * wtf/Platform.h:
2655
2656 2016-03-08  Filip Pizlo  <fpizlo@apple.com>
2657
2658         Remove failing assertion. There are strings that claim to be atomic but that the
2659         compiler thread can totally deal with, like the empty string.
2660
2661         Rubber stamped by Mark Lam.
2662
2663         * wtf/text/StringImpl.h:
2664         (WTF::StringImpl::ref):
2665         (WTF::StringImpl::deref):
2666
2667 2016-03-08  Filip Pizlo  <fpizlo@apple.com>
2668
2669         DFG should be able to constant-fold strings
2670         https://bugs.webkit.org/show_bug.cgi?id=155200
2671
2672         Reviewed by Geoffrey Garen.
2673
2674         Also disable assertions about reference counting strings on the JIT thread. We will do
2675         that now and it's OK.
2676
2677         * wtf/text/StringImpl.h:
2678         (WTF::StringImpl::ref):
2679         (WTF::StringImpl::deref):
2680
2681 2016-03-08  Anders Carlsson  <andersca@apple.com>
2682
2683         Fix AppKitCompatibilityDeclarations build.
2684
2685         * wtf/mac/AppKitCompatibilityDeclarations.h:
2686         Remove duplicate declarations, conditionally define NSTextAlignment and
2687         add a NSWindowStyleMask typedef.
2688
2689 2016-03-08  Oliver Hunt  <oliver@apple.com>
2690
2691         Start moving to separated writable and executable mappings in the JIT
2692         https://bugs.webkit.org/show_bug.cgi?id=155178
2693
2694         Reviewed by Fil Pizlo.
2695
2696         Update feature defines.
2697
2698         * wtf/FeatureDefines.h:
2699         * wtf/Platform.h: ARM64 for now.
2700
2701 2016-03-08  Anders Carlsson  <andersca@apple.com>
2702
2703         Add AppKit compatibility header
2704         https://bugs.webkit.org/show_bug.cgi?id=155202
2705
2706         Reviewed by Beth Dakin.
2707
2708         * WTF.xcodeproj/project.pbxproj:
2709         * wtf/mac/AppKitCompatibilityDeclarations.h: Added.
2710
2711 2016-03-08  Commit Queue  <commit-queue@webkit.org>
2712
2713         Unreviewed, rolling out r197793 and r197799.
2714         https://bugs.webkit.org/show_bug.cgi?id=155195
2715
2716         something weird happened while landing this and everything
2717         broke (Requested by olliej on #webkit).
2718
2719         Reverted changesets:
2720
2721         "Start moving to separated writable and executable mappings in
2722         the JIT"
2723         https://bugs.webkit.org/show_bug.cgi?id=155178
2724         http://trac.webkit.org/changeset/197793
2725
2726         "arm64 build fix after r197793."
2727         http://trac.webkit.org/changeset/197799
2728
2729 2016-03-08  Oliver Hunt  <oliver@apple.com>
2730
2731         Start moving to separated writable and executable mappings in the JIT
2732         https://bugs.webkit.org/show_bug.cgi?id=155178
2733
2734         Reviewed by Filip Pizlo.
2735
2736         Update feature defines.
2737
2738         * wtf/FeatureDefines.h:
2739         * wtf/Platform.h: ARM64 for now.
2740
2741 2016-03-08  Daniel Bates  <dabates@apple.com>
2742
2743         Support iterating over an OptionSet and checking if it is empty
2744         https://bugs.webkit.org/show_bug.cgi?id=154941
2745         <rdar://problem/24964187>
2746
2747         Reviewed by Darin Adler.
2748
2749         Implements support for iterating over the enumerators in an OptionSet as well as
2750         determining if the set is empty.
2751
2752         Iterating over an OptionSet is in Big Theta(N) where N is the number of items in
2753         the set. More precisely, it is in Big Theta(log M) where M is the bitmask represented
2754         by the bitwise OR-ing of all enumerators in the set.
2755
2756         * wtf/OptionSet.h: Added comment to describe the purpose of this class and its invariant -
2757         the enumerators must be positive powers of two.
2758         (WTF::OptionSet::Iterator::operator*): Returns the enumerator pointed to by the iterator.
2759         (WTF::OptionSet::Iterator::operator++): Advance to the next smallest enumerator in the set.
2760         (WTF::OptionSet::Iterator::operator==): Returns whether the iterator is equal to the specified iterator.
2761         (WTF::OptionSet::Iterator::operator!=): Returns whether the iterator is not equal to the specified iterator.
2762         (WTF::OptionSet::Iterator::Iterator): Added.
2763         (WTF::OptionSet::fromRaw): Instantiate using specialized private constructor to allow
2764         instantiation with a raw value of 0.
2765         (WTF::OptionSet::OptionSet): Specialized constructor that asserts that the specified value
2766         is a positive power of two. This variant is only compiled when assertions are enabled (i.e. !ASSERT_DISABLED).
2767         (WTF::OptionSet::isEmpty): Returns whether the set is empty.
2768         (WTF::OptionSet::begin): Returns an iterator to the enumerator with the smallest value in the set.
2769         (WTF::OptionSet::end): Returns an iterator that represents the end sentinel of the set.
2770
2771 2016-03-07  Keith Rollin  <krollin@apple.com>
2772
2773         Enhance logging: Use "always on" macros
2774         https://bugs.webkit.org/show_bug.cgi?id=154499
2775         <rdar://problem/24757730>
2776
2777         Reviewed by Chris Dumez.
2778
2779         Update LOG_ALWAYS and LOG_ALWAYS_ERROR macros to take an expression to
2780         be evaluated. If the expression evaluates to True, the associated
2781         message is logged. This facility is used to prevent logging from being
2782         performed in private sessions, but it could be extended to prevent
2783         logging under other circumstances as well.
2784
2785         * wtf/Assertions.h:
2786
2787 2016-03-04  Alex Christensen  <achristensen@webkit.org>
2788
2789         Remove vcxproj build system
2790         https://bugs.webkit.org/show_bug.cgi?id=154388
2791
2792         Rubber-stamped by Brent Fulgham.
2793
2794         * WTF.vcxproj/WTF.submit.sln: Removed.
2795         * WTF.vcxproj/WTF.vcxproj: Removed.
2796         * WTF.vcxproj/WTF.vcxproj.filters: Removed.
2797         * WTF.vcxproj/WTFCFLite.props: Removed.
2798         * WTF.vcxproj/WTFCommon.props: Removed.
2799         * WTF.vcxproj/WTFCoreFoundation.props: Removed.
2800         * WTF.vcxproj/WTFDebug.props: Removed.
2801         * WTF.vcxproj/WTFDebugWinCairo.props: Removed.
2802         * WTF.vcxproj/WTFGenerated.make: Removed.
2803         * WTF.vcxproj/WTFGenerated.vcxproj: Removed.
2804         * WTF.vcxproj/WTFGenerated.vcxproj.filters: Removed.
2805         * WTF.vcxproj/WTFGeneratedCommon.props: Removed.
2806         * WTF.vcxproj/WTFGeneratedDebug.props: Removed.
2807         * WTF.vcxproj/WTFGeneratedProduction.props: Removed.
2808         * WTF.vcxproj/WTFGeneratedRelease.props: Removed.
2809         * WTF.vcxproj/WTFPostBuild.cmd: Removed.
2810         * WTF.vcxproj/WTFPreBuild.cmd: Removed.
2811         * WTF.vcxproj/WTFProduction.props: Removed.
2812         * WTF.vcxproj/WTFRelease.props: Removed.
2813         * WTF.vcxproj/WTFReleaseWinCairo.props: Removed.
2814         * WTF.vcxproj/build-generated-files.pl: Removed.
2815         * WTF.vcxproj/copy-files.cmd: Removed.
2816         * WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py: Removed.
2817
2818 2016-03-04  Alex Christensen  <achristensen@webkit.org>
2819
2820         Use NSURLSession for loading in WebKit2
2821         https://bugs.webkit.org/show_bug.cgi?id=154993
2822
2823         Reviewed by Sam Weinig.
2824
2825         * wtf/Platform.h:
2826
2827 2016-03-03  Daniel Bates  <dabates@apple.com>
2828
2829         Add unit tests for WTF::OptionSet
2830         https://bugs.webkit.org/show_bug.cgi?id=154925
2831         <rdar://problem/24964211>
2832
2833         Reviewed by Darin Adler.
2834
2835         * wtf/CMakeLists.txt: Add header OptionSet.h to the list of WTF headers.
2836         * wtf/OptionSet.h: Use in-class initialization to initialize m_storage and declare
2837         the trivial constexpr constructor as default.
2838         (WTF::OptionSet::OptionSet): For convenience add a constructor that takes a std::initializer_list.
2839         This code was written by Anders Carlsson.
2840
2841 2016-03-03  Andy Estes  <aestes@apple.com>
2842
2843         Adopt CFNetwork storage partitioning SPI
2844         https://bugs.webkit.org/show_bug.cgi?id=154957
2845         rdar://problem/23614620
2846
2847         Reviewed by Darin Adler.
2848
2849         * wtf/Platform.h: Defined HAVE_CFNETWORK_STORAGE_PARTITIONING.
2850
2851 2016-03-02  Konstantin Tokarev  <annulen@yandex.ru>
2852
2853         [cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
2854         https://bugs.webkit.org/show_bug.cgi?id=154651
2855
2856         Reviewed by Alex Christensen.
2857
2858         * CMakeLists.txt: Moved shared code to WEBKIT_FRAMEWORK macro.
2859
2860 2016-03-01  Commit Queue  <commit-queue@webkit.org>
2861
2862         Unreviewed, rolling out r197226 and r197256.
2863         https://bugs.webkit.org/show_bug.cgi?id=154910
2864
2865         Caused crashes on Mac 32-bit and on ARM (Requested by ap on
2866         #webkit).
2867
2868         Reverted changesets:
2869
2870         "Remove the on demand executable allocator"
2871         https://bugs.webkit.org/show_bug.cgi?id=154749
2872         http://trac.webkit.org/changeset/197226
2873
2874         "CLoop build fix."
2875         http://trac.webkit.org/changeset/197256
2876
2877 2016-03-01  Alex Christensen  <achristensen@webkit.org>
2878
2879         Reduce size of internal windows build output
2880         https://bugs.webkit.org/show_bug.cgi?id=154763
2881
2882         Reviewed by Brent Fulgham.
2883
2884         * WTF.vcxproj/WTF.proj:
2885
2886 2016-03-01  Commit Queue  <commit-queue@webkit.org>
2887
2888         Unreviewed, rolling out r197056.
2889         https://bugs.webkit.org/show_bug.cgi?id=154870
2890
2891         broke win ews (Requested by alexchristensen on #webkit).
2892
2893         Reverted changeset:
2894
2895         "[cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK."
2896         https://bugs.webkit.org/show_bug.cgi?id=154651
2897         http://trac.webkit.org/changeset/197056
2898
2899 2016-02-29  Gavin Barraclough  <barraclough@apple.com>
2900
2901         RefCounter<T>::Event -> RefCounterEvent
2902         https://bugs.webkit.org/show_bug.cgi?id=154767
2903
2904         Reviewed by Darin Adler.
2905
2906         RefCounter<T>::Event is kinda verbose to use, and there is no need for this
2907         to be specific to a particular typeof RefCounter. Move the enum class up to
2908         the top level & rename to RefCounterEvent.
2909
2910         * wtf/RefCounter.h:
2911         (WTF::RefCounter<T>::Count::ref):
2912         (WTF::RefCounter<T>::Count::deref):
2913
2914 2016-02-26  Oliver Hunt  <oliver@apple.com>
2915
2916         Remove the on demand executable allocator
2917         https://bugs.webkit.org/show_bug.cgi?id=154749
2918
2919         Reviewed by Geoffrey Garen.
2920
2921         Remove the DeamndExecutableAllocator compile flags.
2922
2923         * wtf/Platform.h:
2924
2925 2016-02-26  Keith Rollin  <krollin@apple.com>
2926
2927         Enhance logging: Add "always on" macros
2928         https://bugs.webkit.org/show_bug.cgi?id=154498
2929         <rdar://problem/24757759>
2930
2931         Reviewed by Chris Dumez.
2932
2933         Add support for efficient always-on logging (logging that is available
2934         in both debug and release builds). This is implemented in the form of
2935         some new macros:
2936
2937         - LOG_ALWAYS: Always log information-level statements.
2938         - LOG_ALWAYS_ERROR: Always log error-level statements. These can be
2939           filtered out of the normal logging so that they can be found more
2940           easily.
2941
2942         In cases where there is no efficient underlying facility for it to
2943         utilize, LOG_ALWAYS_ERROR is redirected to WTFReportError as a backup
2944         mechanism. LOG_ALWAYS is not given a similar treatment so that we
2945         don't overwhelm other logging systems that aren't prepared for "always
2946         on" logging.
2947
2948         * wtf/Assertions.h:
2949         * wtf/Platform.h:
2950
2951 2016-02-26  Anders Carlsson  <andersca@apple.com>
2952
2953         Add WTF::OptionSet and use it for the website data types enum
2954         https://bugs.webkit.org/show_bug.cgi?id=154733
2955
2956         Reviewed by Geoffrey Garen.
2957
2958         Add WTF::OptionSet which makes it easier to use strong enums as flags.
2959
2960         * WTF.xcodeproj/project.pbxproj:
2961         * wtf/Forward.h:
2962         * wtf/OptionSet.h: Copied from Source/WebKit2/Shared/WebsiteData/WebsiteData.h.
2963         (WTF::OptionSet::fromRaw):
2964         (WTF::OptionSet::OptionSet):
2965         (WTF::OptionSet::toRaw):
2966         (WTF::OptionSet::contains):
2967         (WTF::OptionSet::operator|=):
2968
2969 2016-02-26  Commit Queue  <commit-queue@webkit.org>
2970
2971         Unreviewed, rolling out r197168.
2972         https://bugs.webkit.org/show_bug.cgi?id=154728
2973
2974         crashing on some devices (Requested by kling on #webkit).
2975
2976         Reverted changeset:
2977
2978         "[Darwin] Use vm_kernel_page_size for WTF::pageSize()."
2979         https://bugs.webkit.org/show_bug.cgi?id=154726
2980         http://trac.webkit.org/changeset/197168
2981
2982 2016-02-26  Andreas Kling  <akling@apple.com>
2983
2984         [Darwin] Use vm_kernel_page_size for WTF::pageSize().
2985         <https://webkit.org/b/154726>
2986
2987         Reviewed by Antti Koivisto.
2988
2989         Make sure we use the right VM page size on Darwin systems.
2990         On devices where the native page size is 4 KB, it's both
2991         possible and profitable to madvise in smaller chunks.
2992
2993         * wtf/PageBlock.cpp:
2994         (WTF::systemPageSize):
2995
2996 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
2997
2998         RefCounter value changed callback should be called on all changes (not just zero edge).
2999         https://bugs.webkit.org/show_bug.cgi?id=154699
3000
3001         Reviewed by Anders Carlsson.
3002
3003         RefCounter currently only triggers a callback when the count goes from zero
3004         to non-zero and vice-versa. Change that, to be useful to more clients.
3005
3006         * wtf/RefCounter.h:
3007         (WTF::RefCounter::Count::Count):
3008         (WTF::RefCounter::RefCounter):
3009             - Removed superfluous WTF_EXPORT_PRIVATE.
3010         (WTF::RefCounter::value):
3011             - Changed value() to a size_t.
3012         (WTF::RefCounter<T>::Count::ref):
3013         (WTF::RefCounter<T>::Count::deref):
3014             - Trigger the callback on all increments/decrements.
3015         (WTF::RefCounter<T>::RefCounter):
3016             - Changed siganture of callback.
3017
3018 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
3019
3020         Replace RefCounter::Token implementation with RefPtr
3021         https://bugs.webkit.org/show_bug.cgi?id=154698
3022
3023         Reviewed by Anders Carlsson.
3024
3025         * wtf/RefCounter.h:
3026         (WTF::RefCounter::RefCounter):
3027         (WTF::RefCounter::count):
3028         (WTF::RefCounter::value):
3029         (WTF::RefCounter<T>::~RefCounter):
3030         (WTF::RefCounter::Token::Token): Deleted.
3031         (WTF::RefCounter::Token::operator bool): Deleted.
3032         (WTF::RefCounter<T>::Token::Token): Deleted.
3033         (WTF::=): Deleted.
3034             - Delete.
3035
3036 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
3037
3038         Should template RefCounter instead of RefCounter::Token
3039         https://bugs.webkit.org/show_bug.cgi?id=154691
3040
3041         Speculative windows build fix.
3042
3043         * wtf/RefCounter.h:
3044         (WTF::RefCounter::RefCounter):
3045         (WTF::RefCounter::count):
3046
3047 2016-02-25  Commit Queue  <commit-queue@webkit.org>
3048
3049         Unreviewed, rolling out r197137.
3050         https://bugs.webkit.org/show_bug.cgi?id=154700
3051
3052         broke windows build (Requested by alexchristensen on #webkit).
3053
3054         Reverted changeset:
3055
3056         "Replace RefCounter::Token implementation with RefPtr"
3057         https://bugs.webkit.org/show_bug.cgi?id=154698
3058         http://trac.webkit.org/changeset/197137
3059
3060 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
3061
3062         Replace RefCounter::Token implementation with RefPtr
3063         https://bugs.webkit.org/show_bug.cgi?id=154698
3064
3065         Reviewed by Anders Carlsson.
3066
3067         * wtf/RefCounter.h:
3068         (WTF::RefCounter::RefCounter):
3069         (WTF::RefCounter::count):
3070         (WTF::RefCounter::value):
3071         (WTF::RefCounter<T>::~RefCounter):
3072         (WTF::RefCounter::Token::Token): Deleted.
3073         (WTF::RefCounter::Token::operator bool): Deleted.
3074         (WTF::RefCounter<T>::Token::Token): Deleted.
3075         (WTF::=): Deleted.
3076             - Delete.
3077
3078 2016-02-25  Gavin Barraclough  <barraclough@apple.com>
3079
3080         Should template RefCounter instead of RefCounter::Token
3081         https://bugs.webkit.org/show_bug.cgi?id=154691
3082
3083         Reviewed by Anders Carlsson.
3084
3085         My real goal here is to make the counter accurate. Currently returning a Token from token<>()
3086         results in ref-count churn. Fixing this either means changing the return value, or improving
3087         Token (which will probably mean replacing it with RefPtr). Either way would break the current
3088         type checking. Move type tag to RefCount so this can still be enforced.
3089
3090         * WTF.vcxproj/WTF.vcxproj:
3091         * WTF.vcxproj/WTF.vcxproj.filters:
3092         * WTF.xcodeproj/project.pbxproj:
3093         * wtf/CMakeLists.txt:
3094         * wtf/RefCounter.cpp: Removed.
3095             - Removed RefCounter.cpp.
3096         * wtf/RefCounter.h:
3097         (WTF::RefCounter::Token::Token):
3098         (WTF::RefCounter::Token::operator bool):
3099         (WTF::RefCounter::RefCounter):
3100         (WTF::RefCounter::count):
3101         (WTF::RefCounter::value):
3102         (WTF::RefCounter<T>::Count::ref):
3103         (WTF::RefCounter<T>::Count::deref):
3104         (WTF::RefCounter<T>::RefCounter):
3105         (WTF::RefCounter<T>::~RefCounter):
3106         (WTF::RefCounter<T>::Token::Token):
3107         (WTF::=):
3108         (WTF::RefCounter::token): Deleted.
3109         (WTF::RefCounter::Token<T>::Token): Deleted.
3110             - RefCounter -> RefCounter<T>,
3111             - Token<T> -> Token,
3112             - renamed token<>() -> count().
3113
3114 2016-02-25  Sam Weinig  <sam@webkit.org>
3115
3116         HashMap::ensure() should return an AddResult like all the other add-like functions.
3117         https://bugs.webkit.org/show_bug.cgi?id=154680
3118
3119         Reviewed by Anders Carlsson.
3120
3121         While adopting HashMap::ensure(), I found it was useful in some circumstances to know
3122         if the value was added or not. While I could discern this information by setting a bool
3123         in the passed in lambda, it seemed clearer and more idiomatic to just have ensure return
3124         an AddResult like all the other add-like functions do.
3125
3126         * wtf/HashMap.h:
3127         Change return type of HashMap::ensure() to be an AddResult.
3128
3129 2016-02-24  Nikos Andronikos  <nikos.andronikos-webkit@cisra.canon.com.au>
3130
3131         [web-animations] Add AnimationTimeline, DocumentTimeline and add extensions to Document interface
3132         https://bugs.webkit.org/show_bug.cgi?id=151688
3133
3134         Reviewed by Dean Jackson.
3135
3136         Enables the WEB_ANIMATIONS compiler switch.
3137
3138         * wtf/FeatureDefines.h:
3139
3140 2016-02-24  Konstantin Tokarev  <annulen@yandex.ru>
3141
3142         [cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
3143         https://bugs.webkit.org/show_bug.cgi?id=154651
3144
3145         Reviewed by Alex Christensen.
3146
3147         * CMakeLists.txt: Moved shared code to WEBKIT_FRAMEWORK macro.
3148
3149 2016-02-23  Dan Bernstein  <mitz@apple.com>
3150
3151         [Xcode] Linker errors display mangled names, but no longer should
3152         https://bugs.webkit.org/show_bug.cgi?id=154632
3153
3154         Reviewed by Sam Weinig.
3155
3156         * Configurations/Base.xcconfig: Stop setting LINKER_DISPLAYS_MANGLED_NAMES to YES.
3157
3158 2016-02-23  Gavin Barraclough  <barraclough@apple.com>
3159
3160         Remove HIDDEN_PAGE_DOM_TIMER_THROTTLING feature define
3161         https://bugs.webkit.org/show_bug.cgi?id=112323
3162
3163         Reviewed by Chris Dumez.
3164
3165         This feature is controlled by a runtime switch, and defaults off.
3166
3167         * wtf/FeatureDefines.h:
3168
3169 2016-02-22  Konstantin Tokarev  <annulen@yandex.ru>
3170
3171         [cmake] Moved library setup code to WEBKIT_FRAMEWORK macro.
3172         https://bugs.webkit.org/show_bug.cgi?id=154450
3173
3174         Reviewed by Alex Christensen.
3175
3176         * wtf/CMakeLists.txt:
3177
3178 2016-02-20  Mark Lam  <mark.lam@apple.com>
3179
3180         Use of inlined asm statements causes problems for -std=c99 builds.
3181         https://bugs.webkit.org/show_bug.cgi?id=154507
3182
3183         Reviewed by Dan Bernstein.
3184
3185         WTF's Assertions.h may inadvertantly get included by other projects that are built
3186         with -std=c99.  The use of the inlined asm statements with the keyword "asm" is
3187         not recognized when the -std compiler flag is used.
3188
3189         https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html says "When writing code that
3190         can be compiled with -ansi and the various -std options, use __asm__ instead of
3191         asm (see Alternate Keywords)."
3192
3193         So, to be a good citizen, we can change the use of "asm" in CRASH() to "__asm__"
3194         so that we don't break the build of such other projects.
3195
3196         * wtf/Assertions.h:
3197
3198 2016-02-18  Brent Fulgham  <bfulgham@apple.com>
3199
3200         Extend HashCountedSet with a method to efficiently set the count of an entry
3201         https://bugs.webkit.org/show_bug.cgi?id=154352
3202
3203         Reviewed by Geoffrey Garen.
3204
3205         Tested by new TestWebKitAPI tests.
3206
3207         Update the HashCountedSet class with a new 'add' method to support efficient initialization of
3208         the count of a given key. Also provide move and pointer template specializations to expand the
3209         types of data that can be used as 'keys' in the HashCountedSet to match the underlying HashMap
3210         implementation.
3211
3212         * wtf/HashCountedSet.h:
3213         (WTF::Traits>::add): Added new overload supporting a supplied count.
3214
3215 2016-02-18  Commit Queue  <commit-queue@webkit.org>
3216
3217         Unreviewed, rolling out r196791.
3218         https://bugs.webkit.org/show_bug.cgi?id=154438
3219
3220         broke windows build (Requested by alexchristensen on #webkit).
3221
3222         Reverted changeset:
3223
3224         "Extend HashCountedSet with a method to efficiently set the
3225         count of an entry"
3226         https://bugs.webkit.org/show_bug.cgi?id=154352
3227         http://trac.webkit.org/changeset/196791
3228
3229 2016-02-18  Brent Fulgham  <bfulgham@apple.com>
3230
3231         Extend HashCountedSet with a method to efficiently set the count of an entry
3232         https://bugs.webkit.org/show_bug.cgi?id=154352
3233
3234         Reviewed by Geoffrey Garen.
3235
3236         Tested by new TestWebKitAPI tests.
3237
3238         Update the HashCountedSet class with a new 'add' method to support efficient initialization of
3239         the count of a given key. Also provide move and pointer template specializations to expand the
3240         types of data that can be used as 'keys' in the HashCountedSet to match the underlying HashMap
3241         implementation.
3242
3243         * wtf/HashCountedSet.h:
3244         (WTF::Traits>::add): Added new overload supporting a supplied count.
3245
3246 2016-02-17  Filip Pizlo  <fpizlo@apple.com>
3247
3248         Remove LLVM dependencies from WebKit
3249         https://bugs.webkit.org/show_bug.cgi?id=154323
3250
3251         Reviewed by Antti Koivisto and Benjamin Poulain.
3252
3253         * wtf/Platform.h:
3254
3255 2016-02-16  Sam Weinig  <sam@webkit.org>
3256
3257         Add an ensure function on HashMap that takes a key and a function to make the lazy value initialization idiom easier
3258         https://bugs.webkit.org/show_bug.cgi?id=134857
3259
3260         Reviewed by Geoffrey Garen.
3261
3262         The current idiom for adding a value to a HashMap if the key is not already present, to allow for not
3263         unnecessarily constructing the new value if it won't be used, is:
3264         
3265         {
3266             auto result = map.add(key, Value());
3267             if (!result.isNewEntry)
3268                 return result.iterator->value;
3269
3270             result.iterator->value = createNewValue();
3271             return result.iterator->value;
3272         }
3273
3274         or sometimes
3275
3276         {
3277             auto& value = map.add(key, Value()).iterator->value;
3278             if (!value)
3279                 value = createNewValue();
3280             return value;
3281         }
3282
3283         With this patch, you can now use the new function HashMap::ensure(key, functor). This will allow us to 
3284         change to using the following idiom:
3285
3286         {
3287             return map.ensure(key, [] { return createNewValue(); });
3288         }
3289
3290         The passed in functor will only be called if the key is not already present in the HashMap.
3291
3292         * wtf/HashMap.h:
3293         (WTF::HashMapTranslator::translate):
3294         (WTF::HashMapEnsureTranslator::hash):
3295         (WTF::HashMapEnsureTranslator::equal):
3296         (WTF::HashMapEnsureTranslator::translate):
3297         (WTF::HashMapTranslatorAdapter::hash):
3298
3299 2016-02-16  Filip Pizlo  <fpizlo@apple.com>
3300
3301         FTL_USES_B3 should be unconditionally true
3302         https://bugs.webkit.org/show_bug.cgi?id=154324
3303
3304         Reviewed by Benjamin Poulain.
3305
3306         * wtf/Platform.h:
3307
3308 2016-02-13  Mark Lam  <mark.lam@apple.com>
3309
3310         Eliminate the need for WTFCrashImpl().
3311         https://bugs.webkit.org/show_bug.cgi?id=154202
3312
3313         Reviewed by Alexey Proskuryakov.
3314
3315         * wtf/Assertions.cpp:
3316         * wtf/Assertions.h:
3317
3318 2016-02-12  Sukolsak Sakshuwong  <sukolsak@gmail.com>
3319
3320         Update ICU header files to version 52
3321         https://bugs.webkit.org/show_bug.cgi?id=154160
3322
3323         Reviewed by Alex Christensen.
3324
3325         Update ICU header files to version 52 to allow the use of newer APIs.
3326
3327         * icu/unicode/bytestream.h:
3328         * icu/unicode/localpointer.h:
3329         * icu/unicode/platform.h:
3330         * icu/unicode/ptypes.h:
3331         * icu/unicode/putil.h:
3332         * icu/unicode/rep.h:
3333         (Replaceable::Replaceable):
3334         * icu/unicode/std_string.h:
3335         * icu/unicode/strenum.h:
3336         * icu/unicode/stringpiece.h:
3337         * icu/unicode/uchar.h:
3338         * icu/unicode/ucnv.h:
3339         * icu/unicode/ucol.h:
3340         * icu/unicode/uconfig.h:
3341         * icu/unicode/uenum.h:
3342         * icu/unicode/uiter.h:
3343         * icu/unicode/uloc.h:
3344         * icu/unicode/umachine.h:
3345         * icu/unicode/unistr.h:
3346         (UnicodeString::UnicodeString):
3347         (UnicodeString::operator== ):
3348         (UnicodeString::startsWith):
3349         (UnicodeString::setTo):
3350         (UnicodeString::remove):
3351         (UnicodeString::replace): Deleted.
3352         (UnicodeString::extract): Deleted.
3353         (UnicodeString::char32At): Deleted.
3354         (UnicodeString::getChar32Start): Deleted.
3355         (UnicodeString::getChar32Limit): Deleted.
3356         (UnicodeString::getTerminatedBuffer): Deleted.
3357         (UnicodeString::append): Deleted.
3358         (UnicodeString::truncate): Deleted.
3359         * icu/unicode/unorm2.h:
3360         * icu/unicode/uobject.h:
3361         * icu/unicode/urename.h:
3362         * icu/unicode/uscript.h:
3363         * icu/unicode/uset.h:
3364         * icu/unicode/ustring.h:
3365         * icu/unicode/utf.h:
3366         * icu/unicode/utf16.h:
3367         * icu/unicode/utf8.h:
3368         * icu/unicode/utf_old.h:
3369         * icu/unicode/utypes.h:
3370         * icu/unicode/uvernum.h:
3371         * icu/unicode/uversion.h:
3372
3373 2016-02-11  Mark Lam  <mark.lam@apple.com>
3374
3375         Need WTFCrash workaround for shipping SafariForWebKitDevelopment binaries.
3376         https://bugs.webkit.org/show_bug.cgi?id=154125
3377
3378         Reviewed by Joseph Pecoraro.
3379
3380         Presently shipping SafariForWebKitDevelopment binaries still expect to link to a
3381         WTFCrash function.  We need to provide this function as a workaround until we can
3382         update SafariForWebKitDevelopment to use the new inlined version.
3383
3384         We do this by doing:
3385         1. Make WTFCrashImpl() the sole function for implementing a crash.
3386            The CRASH() macro is now defined to be WTFCrashImpl() instead of WTFCrash().
3387         2. Renamed the legacy WTFCrash() to WTFCrashImpl() for debug or non-Darwin builds.
3388            For (non-debug && OS(DARWIN)) builds, WTFCrashImpl() will be an inlined
3389            function with an asm statement that issues a breakpoint trap.
3390         3. Implement WTFCrash() as a function that calls CRASH().
3391            This satisfies the need of shipping SafariForWebKitDevelopment binaries.
3392         4. Change WTFCrashWithSecurityImplication() to call CRASH().
3393            This ensures that we have a consistent implementation of how we crash.
3394         5. Changed WTFLogAlwaysAndCrash() to call CRASH() instead of WTFCrash().
3395            This is just to have consistency in that all code in the WebKit project
3396            now crashes by calling CRASH(), not WTFCrash().
3397
3398         * wtf/Assertions.cpp:
3399         * wtf/Assertions.h:
3400
3401 2016-02-09  Mark Lam  <mark.lam@apple.com>
3402
3403         Changed WTFCrash to not trash the crash site register state.
3404         https://bugs.webkit.org/show_bug.cgi?id=153996
3405
3406         Reviewed by Geoffrey Garen.
3407
3408         When doing post-mortem crash site analysis using data from crash reports, it is
3409         immensely valuable to be able to infer the crashing program's state from the
3410         register values at crash time.  However, for RELEASE_ASSERT failures, we crash
3411         using WTFCrash(), and WTFCrash() is currently implemented as a function call
3412         that, in turn, calls a lot of other functions to do crash handling before
3413         actually crashing.  As a result, the register values captured in the crash
3414         reports are not likely to still contain the values used by the caller function
3415         that failed the RELEASE_ASSERT.
3416
3417         This patch aims to remedy this issue for non-debug builds on OS(DARWIN) ports.
3418         It does so by changing WTFCrash() into an inlined function that has an inlined
3419         asm statement to issues the CPU specific breakpoint trap instruction.  As a
3420         result, for non-debug OS(DARWIN) builds, crashes due to failed RELEASE_ASSERTs
3421         will now show up in crash reports as crashing due to EXC_BREAKPOINT (SIGTRAP)
3422         instead of a EXC_BAD_ACCESS (SIGSEGV) on address 0xbbadbeef.
3423
3424         For debug and non-DARWIN builds, WTFCrash() behavior currently remains unchanged.
3425
3426         * wtf/Assertions.cpp:
3427         * wtf/Assertions.h:
3428
3429 2016-02-09  Csaba Osztrogonác  <ossy@webkit.org>
3430
3431         [GTK][EFL] Fix several build configuration related to SamplingProfiler after r196245
3432         https://bugs.webkit.org/show_bug.cgi?id=154033
3433
3434         Reviewed by Michael Catanzaro.
3435
3436         * wtf/Platform.h:
3437
3438 2016-02-08  Filip Pizlo  <fpizlo@apple.com>
3439
3440         Make sure that locking code that relies on module boundaries for compiler fences uses NEVER_INLINE
3441         https://bugs.webkit.org/show_bug.cgi?id=153972
3442
3443         Reviewed by Andreas Kling.
3444
3445         When this code was written, we assumed that module boundaries were compiler fences. That might
3446         not be the case if we ever do LTO.
3447
3448         * wtf/Lock.cpp:
3449         (WTF::LockBase::lockSlow):
3450         (WTF::LockBase::unlockSlow):
3451         * wtf/ParkingLot.cpp:
3452         (WTF::ParkingLot::parkConditionally):
3453         (WTF::ParkingLot::unparkOne):
3454         (WTF::ParkingLot::unparkAll):
3455         (WTF::ParkingLot::forEach):
3456         * wtf/WordLock.cpp:
3457         (WTF::WordLock::lockSlow):
3458         (WTF::WordLock::unlockSlow):
3459
3460 2016-02-07  Yusuke Suzuki  <utatane.tea@gmail.com>
3461
3462         [GTK][EFL] Enable SamplingProfiler
3463         https://bugs.webkit.org/show_bug.cgi?id=153638
3464
3465         Reviewed by Michael Catanzaro.
3466
3467         * wtf/Platform.h:
3468
3469 2016-02-07  Dan Bernstein  <mitz@apple.com>
3470
3471         [Cocoa] Replace __has_include guards around inclusion of Apple-internal-SDK headers with USE(APPLE_INTERNAL_SDK)
3472         https://bugs.webkit.org/show_bug.cgi?id=153963
3473
3474         Reviewed by Sam Weinig.
3475
3476         * wtf/SystemTracing.h:
3477         * wtf/WTFThreadData.h:
3478         * wtf/spi/darwin/CommonCryptoSPI.h:
3479
3480 2016-02-06  Darin Adler  <darin@apple.com>
3481
3482         Finish auditing call sites of upper() and lower(), eliminate many, and rename the functions
3483         https://bugs.webkit.org/show_bug.cgi?id=153905
3484
3485         Reviewed by Sam Weinig.
3486
3487         * wtf/text/AtomicString.cpp:
3488         (WTF::AtomicString::lower): Deleted.
3489         * wtf/text/AtomicString.h: Deleted the lower function.
3490
3491         * wtf/text/StringImpl.cpp:
3492         (WTF::StringImpl::convertToLowercaseWithoutLocale): Renamed from lower.
3493         (WTF::StringImpl::convertToUppercaseWithoutLocale): Renamed from upper.
3494         (WTF::StringImpl::convertToLowercaseWithLocale): Renamed from lower.
3495         (WTF::StringImpl::convertToUppercaseWithLocale): Renamed from upper.
3496         (WTF::StringImpl::foldCase): Added fast cases for ASCII since this is
3497         now used in some more-performance-critical code.
3498         * wtf/text/StringImpl.h: Renamed lower and upper.
3499
3500         * wtf/text/WTFString.cpp:
3501         (WTF::String::convertToLowercaseWithoutLocale): Renamed from lower.
3502         (WTF::String::convertToUppercaseWithoutLocale): Renamed from upper.
3503         (WTF::String::convertToLowercaseWithLocale): Renamed from lower.
3504         (WTF::String::convertToUppercaseWithLocale): Renamed from upper.
3505         * wtf/text/WTFString.h: Renamed lower and upper. Removed unneeded comment.
3506
3507 2016-02-03  Darin Adler  <darin@apple.com>
3508
3509         Convert another batch of String::lower callsites to something better, typically convertToASCIILowercase
3510         https://bugs.webkit.org/show_bug.cgi?id=153789
3511
3512         Reviewed by Sam Weinig.
3513
3514         * wtf/text/StringView.h:
3515         (WTF::StringView::toInt): Added an overload without the out parameter.
3516
3517 2016-02-03  Michael Catanzaro  <mcatanzaro@igalia.com>
3518
3519         [GTK][EFL] Switch FTL to B3
3520         https://bugs.webkit.org/show_bug.cgi?id=153478
3521
3522         Reviewed by Csaba Osztrogonác.
3523
3524         Enable B3 by default on all x86.
3525
3526         * wtf/Platform.h:
3527
3528 2016-02-03  Anders Carlsson  <andersca@apple.com>
3529
3530         Fix BlockPtr's call operator
3531         https://bugs.webkit.org/show_bug.cgi?id=153836
3532
3533         Reviewed by Enrica Casucci.
3534
3535         * wtf/BlockPtr.h:
3536
3537 2016-02-01  Said Abou-Hallawa  <sabouhallawa@apple.com>
3538
3539         Cache the Path instead of creating it every time it is required
3540         https://bugs.webkit.org/show_bug.cgi?id=152939
3541
3542         Reviewed by Darin Adler.
3543
3544         If the key type of an LRU cache can't to be strongly tided to a specific
3545         data type; e.g. FloatRect -> Path, we need to be able to pass the policy
3546         type to the TinyLRUCache template instead of just specializing it. This
3547         will make the code more readable and will allow different caches for the
3548         same key type.
3549
3550         * wtf/TinyLRUCache.h:
3551         (WebCore::TinyLRUCache::get):
3552
3553 2016-02-01  Alex Christensen  <achristensen@webkit.org>
3554
3555         [Win] WTFHeaderDetection.h no longer needed
3556         https://bugs.webkit.org/show_bug.cgi?id=153753
3557         rdar://problem/24434627
3558
3559         Reviewed by Darin Adler.
3560
3561         * wtf/Platform.h:
3562         * wtf/PlatformWin.cmake:
3563
3564 2016-01-31  Darin Adler  <darin@apple.com>
3565
3566         Cut down on calls to String::lower; mostly replace with convertToASCIILowercase
3567         https://bugs.webkit.org/show_bug.cgi?id=153732
3568
3569         Reviewed by Dean Jackson.
3570
3571         * wtf/text/StringView.h: Added toIntStrict. Not thrilled about the name of this
3572         function, but generally it seems likely to be useful more often than toInt.
3573         And it's needed for one call site in WebCore that was using String::lower.
3574
3575 2016-01-31  Darin Adler  <darin@apple.com>
3576
3577         Get rid of most calls to String::upper; mostly replace them with convertToASCIIUppercase
3578         https://bugs.webkit.org/show_bug.cgi?id=153715
3579
3580         Reviewed by Gyuyoung Kim.
3581
3582         * wtf/text/AtomicString.h:
3583         (WTF::AtomicString::upper): Deleted.
3584
3585 2016-01-31  Dan Bernstein  <mitz@apple.com>