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