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