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