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