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