Heap::isMarked() shouldn't pay the price of concurrent lazy flipping
[WebKit-https.git] / Source / WTF / ChangeLog
1 2016-09-08  Filip Pizlo  <fpizlo@apple.com>
2
3         Heap::isMarked() shouldn't pay the price of concurrent lazy flipping
4         https://bugs.webkit.org/show_bug.cgi?id=161760
5
6         Reviewed by Mark Lam.
7
8         * wtf/MainThread.cpp:
9         (WTF::isMainThreadOrGCThread):
10         (WTF::mayBeGCThread):
11         * wtf/MainThread.h:
12
13 2016-09-08  Myles C. Maxfield  <mmaxfield@apple.com>
14
15         Support new emoji group candidates
16         https://bugs.webkit.org/show_bug.cgi?id=161664
17         <rdar://problem/24802695>
18         <rdar://problem/27666433>
19
20         Reviewed by Simon Fraser.
21
22         Update breaking rules.
23
24         * wtf/text/TextBreakIterator.cpp:
25         (WTF::cursorMovementIterator):
26
27 2016-09-07  JF Bastien  <jfbastien@apple.com>
28
29         bitwise_cast: allow const destination type
30         https://bugs.webkit.org/show_bug.cgi?id=161719
31
32         Reviewed by Saam Barati.
33
34         * wtf/StdLibExtras.h:
35         (WTF::bitwise_cast): allow `const To to = bitwise_cast<const To>(from);`
36
37 2016-09-07  Mark Lam  <mark.lam@apple.com>
38
39         Add CatchScope and force all exception checks to be via ThrowScope or CatchScope.
40         https://bugs.webkit.org/show_bug.cgi?id=161498
41
42         Reviewed by Geoffrey Garen.
43
44         * wtf/Platform.h:
45
46 2016-09-07  Youenn Fablet  <youenn@apple.com>
47
48         [Streams API] Separate compile flag for ReadableStream and WritableStream
49         https://bugs.webkit.org/show_bug.cgi?id=161044
50
51         Reviewed by Alex Christensen.
52
53         * wtf/FeatureDefines.h:
54
55 2016-09-06  Saam Barati  <sbarati@apple.com>
56
57         Make JSMap and JSSet faster
58         https://bugs.webkit.org/show_bug.cgi?id=160989
59
60         Reviewed by Filip Pizlo.
61
62         I made s_flagCount public in StringImpl since JSC's JITs now use this field.
63
64         * wtf/text/StringImpl.h:
65
66 2016-09-06  Commit Queue  <commit-queue@webkit.org>
67
68         Unreviewed, rolling out r205504.
69         https://bugs.webkit.org/show_bug.cgi?id=161645
70
71         Broke the iOS device build (Requested by ryanhaddad on
72         #webkit).
73
74         Reverted changeset:
75
76         "Make JSMap and JSSet faster"
77         https://bugs.webkit.org/show_bug.cgi?id=160989
78         http://trac.webkit.org/changeset/205504
79
80 2016-09-06  Saam Barati  <sbarati@apple.com>
81
82         Make JSMap and JSSet faster
83         https://bugs.webkit.org/show_bug.cgi?id=160989
84
85         Reviewed by Filip Pizlo.
86
87         I made s_flagCount public since JSC's JITs now use this field.
88
89         * wtf/text/StringImpl.h:
90
91 2016-09-06  Per Arne Vollan  <pvollan@apple.com>
92
93         [Win] Enable strict runtime stack buffer checks.
94         https://bugs.webkit.org/show_bug.cgi?id=161629
95
96         Reviewed by Brent Fulgham.
97
98         * wtf/Platform.h:
99
100 2016-09-06  Daniel Bates  <dabates@apple.com>
101
102         Remove EXTERN_C from WTF
103         https://bugs.webkit.org/show_bug.cgi?id=161090
104
105         Reviewed by Brent Fulgham.
106
107         Guard external C declarations in WTF_EXTERN_C_BEGIN, WTF_EXTERN_C_END.
108
109         * wtf/Compiler.h: Remove macro definition EXTERN_C.
110         * wtf/spi/cf/CFBundleSPI.h:
111         * wtf/spi/cocoa/NSMapTableSPI.h:
112         * wtf/spi/cocoa/SecuritySPI.h:
113         * wtf/spi/darwin/CommonCryptoSPI.h:
114         * wtf/spi/darwin/SandboxSPI.h:
115         * wtf/spi/darwin/XPCSPI.h:
116         * wtf/spi/darwin/dyldSPI.h:
117
118 2016-08-31  Filip Pizlo  <fpizlo@apple.com>
119
120         Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression
121         https://bugs.webkit.org/show_bug.cgi?id=160125
122
123         Reviewed by Geoffrey Garen and Keith Miller.
124         
125         I needed tryFastAlignedMalloc() so I added it.
126
127         * wtf/FastMalloc.cpp:
128         (WTF::tryFastAlignedMalloc):
129         * wtf/FastMalloc.h:
130         * wtf/ParkingLot.cpp:
131         (WTF::ParkingLot::forEachImpl):
132         (WTF::ParkingLot::forEach): Deleted.
133         * wtf/ParkingLot.h:
134         (WTF::ParkingLot::parkConditionally):
135         (WTF::ParkingLot::unparkOne):
136         (WTF::ParkingLot::forEach):
137         * wtf/ScopedLambda.h:
138         (WTF::scopedLambdaRef):
139         * wtf/SentinelLinkedList.h:
140         (WTF::SentinelLinkedList::forEach):
141         (WTF::RawNode>::takeFrom):
142         * wtf/SimpleStats.h:
143         (WTF::SimpleStats::operator bool):
144         (WTF::SimpleStats::operator!): Deleted.
145
146 2016-09-02  JF Bastien  <jfbastien@apple.com>
147
148         bitwise_cast infinite loops if called from the default constructor in ToType
149         https://bugs.webkit.org/show_bug.cgi?id=161365
150
151         Reviewed by Saam Barati.
152
153         * wtf/StdLibExtras.h:
154         (WTF::bitwise_cast): use aggregate initialization to avoid ctor
155
156 2016-09-01  Anders Carlsson  <andersca@apple.com>
157
158         Use BlockPtr::fromCallable in WorkQueue::dispatch and WorkQueue::dispatchAfter
159         https://bugs.webkit.org/show_bug.cgi?id=161512
160
161         Reviewed by Chris Dumez.
162
163         This lets us get rid of leakCallable and adoptCallable.
164
165         * wtf/BlockPtr.h:
166         * wtf/Function.h:
167         * wtf/cocoa/WorkQueueCocoa.cpp:
168         (WTF::WorkQueue::dispatch):
169         (WTF::WorkQueue::dispatchAfter):
170
171 2016-09-01  Anders Carlsson  <andersca@apple.com>
172
173         add BlockPtr::fromCallable
174         https://bugs.webkit.org/show_bug.cgi?id=161504
175
176         Reviewed by Tim Horton.
177
178         BlockPtr::fromCallable lets you create an Objective-C block from any callable object - including lambdas that contain move-only types.
179         The block will be allocated on the heap so it doesn't ever need to be copied (which is how it can work with move-only types).
180
181         * wtf/BlockPtr.h:
182
183 2016-08-31  Keith Rollin  <krollin@apple.com>
184
185         WebKit should set a subsystem for os_log so it's easier to filter for WebKit log messages
186         https://bugs.webkit.org/show_bug.cgi?id=160969
187         <rdar://problem/26068734>
188
189         Reviewed by Simon Fraser.
190
191         Add support for attaching a subsystem and category when logging via
192         the RELEASE_LOG macros. This support is provided by adding subsystem
193         and category information to WTFLogChannel. An os_log_t object is then
194         created to enacpsulate that information. When using RELEASE_LOG to log
195         through that channel, the associated log object is used when calling
196         os_log.
197
198         To help support the inclusion of the subsystem and category
199         information in WTFLogChannel, the DECLARE_LOG_CHANNEL,
200         DEFINE_LOG_CHANNEL, and LOG_CHANNEL_ADDRESS macros that were defined
201         in various modules are consolidated and moved to Assertions.h.
202         DEFINE_LOG_CHANNEL is now defined to initialize the subsystem and
203         category.
204
205         * wtf/Assertions.cpp:
206         * wtf/Assertions.h:
207         * wtf/RefCountedLeakCounter.cpp:
208
209 2016-08-31  Alex Christensen  <achristensen@webkit.org>
210
211         Implement IPv6 parsing in URLParser
212         https://bugs.webkit.org/show_bug.cgi?id=161390
213
214         Reviewed by Darin Adler.
215
216         * wtf/ASCIICType.h:
217         (WTF::lowerNibbleToLowercaseASCIIHexDigit):
218         (WTF::upperNibbleToLowercaseASCIIHexDigit):
219
220 2016-08-30  Brady Eidson  <beidson@apple.com>
221
222         GameController.framework backend for gamepad API.
223         https://bugs.webkit.org/show_bug.cgi?id=161086
224
225         Reviewed by Alex Christensen.
226
227         * wtf/RunLoop.h:
228         (WTF::RunLoop::TimerBase::startOneShot):
229
230 2016-08-30  Mark Lam  <mark.lam@apple.com>
231
232         Introduce the ThrowScope and force every throw site to instantiate a ThrowScope.
233         https://bugs.webkit.org/show_bug.cgi?id=161171
234
235         Reviewed by Filip Pizlo and Geoffrey Garen.
236
237         * wtf/Platform.h:
238         - Introduced the ENABLE(THROW_SCOPE_VERIFICATION) flag.
239
240 2016-08-27  Alex Christensen  <achristensen@webkit.org>
241
242         URLParser should parse relative URLs
243         https://bugs.webkit.org/show_bug.cgi?id=161282
244
245         Reviewed by Darin Adler.
246
247         * wtf/text/StringView.h:
248         Use a std::reference_wrapper for the StringView& to make it reassignable so we can add an operator=.
249
250 2016-08-26  JF Bastien  <jfbastien@apple.com>
251
252         bitwise_cast uses inactive member of union
253         https://bugs.webkit.org/show_bug.cgi?id=161244
254
255         Reviewed by Benjamin Poulain.
256
257         * wtf/Compiler.h:
258         Add COMPILER_HAS_CLANG_FEATURE
259         * wtf/StdLibExtras.h:
260         (WTF::bitwise_cast):
261         Fix C++ UB, add trivially-copyable check.
262
263         bitwise_cast stores into a union with one type and reads with
264         another, which is technically C++ undefined behavior because it's
265         accessing the wrong active member of the union. The better way to
266         do this is through memcpy, which compilers optimize as well
267         because it's known-size in known-not-to-escape storage (for small
268         types they'll inline and then convert stack memory access to SSA
269         values which may be in-register if that makes sense, which would
270         be a move between int/FP registers at worst).
271
272         The C++ Standard's section [basic.types] explicitly blesses memcpy:
273
274           For any trivially copyable type T, if two pointers to T point to
275           distinct T objects obj1 and obj2, where neither obj1 nor obj2 is a
276           base-class subobject, if the underlying bytes (1.7) making up obj1
277           are copied into obj2, 42 obj2 shall subsequently hold the same
278           value as obj1.
279
280           [Example:
281             T* t1p;
282             T* t2p;
283             // provided that t2p points to an initialized object ...
284             std::memcpy(t1p, t2p, sizeof(T));
285             // at this point, every subobject of trivially copyable type in *t1p contains
286             // the same value as the corresponding subobject in *t2p
287           — end example ]
288
289         Whereas section [class.union] says:
290
291           In a union, at most one of the non-static data members can be
292           active at any time, that is, the value of at most one of the
293           non-static data members can be stored in a union at any time.
294
295         While we're at it, checking that sizeof(To) == sizeof(From) is
296         good, but we should also check that both types are trivially
297         copyable (can have a ctor, no dtor, and copy is defaulted as if by
298         memcpy for type and all subtypes). Unfortunately that trait isn't
299         implemented consistently in all recent compiler+stdlib
300         implementations, but recent clang has an equivalent builtin
301         (other compilers simply won't do the check, and will break on bots
302         with the right compilers which is better than the current silent
303         breakage). This builtin hack also avoids #include <type_traits>
304         which really doesn't save much.
305
306 2016-08-26  Johan K. Jensen  <johan_jensen@apple.com>
307
308         Web Inspector: Frontend should have access to Resource Timing information
309         https://bugs.webkit.org/show_bug.cgi?id=160095
310
311         Reviewed by Alex Christensen.
312
313         Add method to get elapsed time for any monotonic time.
314         Used by InspectorNetworkAgent.
315
316         * wtf/Stopwatch.h:
317         (WTF::Stopwatch::elapsedTimeSinceMonotonicTime):
318
319 2016-08-26  Csaba Osztrogonác  <ossy@webkit.org>
320
321         Fix the ENABLE(WEBASSEMBLY) build on Linux
322         https://bugs.webkit.org/show_bug.cgi?id=161197
323
324         Reviewed by Mark Lam.
325
326         * wtf/Platform.h:
327
328 2016-08-25  Yusuke Suzuki  <utatane.tea@gmail.com>
329
330         [DFG][FTL] Implement ES6 Generators in DFG / FTL
331         https://bugs.webkit.org/show_bug.cgi?id=152723
332
333         Reviewed by Filip Pizlo.
334
335         * wtf/FastBitVector.h:
336         (WTF::FastBitVector::FastBitVector):
337
338 2016-08-25  JF Bastien  <jfbastien@apple.com>
339
340         TryGetById should have a ValueProfile so that it can predict its output type
341         https://bugs.webkit.org/show_bug.cgi?id=160921
342
343         Reviewed by Saam Barati.
344
345         Add WTF_CONCAT to StdLibExtras.h
346
347         * wtf/StdLibExtras.h:
348
349 2016-08-25  Johan K. Jensen  <johan_jensen@apple.com>
350
351         Don't store networkLoadTiming in the disk cache
352         https://bugs.webkit.org/show_bug.cgi?id=161161
353
354         Reviewed by Antti Koivisto.
355
356         * wtf/Forward.h:
357         Remove Encode and Decode forward declarations.
358
359 2016-08-24  Yusuke Suzuki  <utatane.tea@gmail.com>
360
361         [JSC] Move generic data structures out of B3
362         https://bugs.webkit.org/show_bug.cgi?id=161155
363
364         Reviewed by Saam Barati.
365
366         Add IndexSet, IndexMap, and IndexedContainerIterator.
367
368         * WTF.xcodeproj/project.pbxproj:
369         * wtf/CMakeLists.txt:
370         * wtf/IndexMap.h: Copied from Source/JavaScriptCore/b3/B3IndexMap.h.
371         (WTF::IndexMap::IndexMap):
372         (WTF::IndexMap::resize):
373         (WTF::IndexMap::clear):
374         (WTF::IndexMap::size):
375         (WTF::IndexMap::operator[]):
376         * wtf/IndexSet.h: Renamed from Source/JavaScriptCore/b3/B3IndexSet.h.
377         (WTF::IndexSet::IndexSet):
378         (WTF::IndexSet::add):
379         (WTF::IndexSet::addAll):
380         (WTF::IndexSet::remove):
381         (WTF::IndexSet::contains):
382         (WTF::IndexSet::size):
383         (WTF::IndexSet::isEmpty):
384         (WTF::IndexSet::Iterable::Iterable):
385         (WTF::IndexSet::Iterable::iterator::iterator):
386         (WTF::IndexSet::Iterable::iterator::operator*):
387         (WTF::IndexSet::Iterable::iterator::operator++):
388         (WTF::IndexSet::Iterable::iterator::operator==):
389         (WTF::IndexSet::Iterable::iterator::operator!=):
390         (WTF::IndexSet::Iterable::begin):
391         (WTF::IndexSet::Iterable::end):
392         (WTF::IndexSet::values):
393         (WTF::IndexSet::indices):
394         (WTF::IndexSet::dump):
395         * wtf/IndexedContainerIterator.h: Renamed from Source/JavaScriptCore/b3/B3IndexMap.h.
396         (WTF::IndexedContainerIterator::IndexedContainerIterator):
397         (WTF::IndexedContainerIterator::operator++):
398         (WTF::IndexedContainerIterator::operator==):
399         (WTF::IndexedContainerIterator::operator!=):
400         (WTF::IndexedContainerIterator::findNext):
401
402 2016-08-24  Andreas Kling  <akling@apple.com>
403
404         Add WTF::isFastMallocEnabled().
405         <https://webkit.org/b/160534>
406
407         Reviewed by Joseph Pecoraro.
408
409         * wtf/FastMalloc.cpp:
410         (WTF::isFastMallocEnabled):
411         * wtf/FastMalloc.h:
412
413 2016-08-23  Anders Carlsson  <andersca@apple.com>
414
415         Add enum traits and use them in the IPC::Decoder
416         https://bugs.webkit.org/show_bug.cgi?id=161103
417
418         Reviewed by Sam Weinig.
419
420         Add EnumTraits.h which provides a forward declaration for WTF::EnumTraits as well as
421         the WTF::isValidEnum function.
422
423         * WTF.xcodeproj/project.pbxproj:
424         * wtf/EnumTraits.h: Added.
425
426 2016-08-24  Filip Pizlo  <fpizlo@apple.com>
427
428         Unreviewed, roll out r204901, r204897, r204866, r204856, r204854.
429
430         * wtf/FastMalloc.cpp:
431         (WTF::tryFastAlignedMalloc): Deleted.
432         * wtf/FastMalloc.h:
433         * wtf/ParkingLot.cpp:
434         (WTF::ParkingLot::forEach):
435         (WTF::ParkingLot::forEachImpl): Deleted.
436         * wtf/ParkingLot.h:
437         (WTF::ParkingLot::parkConditionally):
438         (WTF::ParkingLot::unparkOne):
439         (WTF::ParkingLot::forEach): Deleted.
440         * wtf/ScopedLambda.h:
441         (WTF::scopedLambdaRef): Deleted.
442
443 2016-08-22  Filip Pizlo  <fpizlo@apple.com>
444
445         Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression
446         https://bugs.webkit.org/show_bug.cgi?id=160125
447
448         Reviewed by Geoffrey Garen.
449         
450         I needed tryFastAlignedMalloc() so I added it.
451
452         * wtf/FastMalloc.cpp:
453         (WTF::fastAlignedMalloc):
454         (WTF::tryFastAlignedMalloc):
455         (WTF::fastAlignedFree):
456         * wtf/FastMalloc.h:
457
458 2016-08-22  Keith Miller  <keith_miller@apple.com>
459
460         Actually enable the WASM build.
461         https://bugs.webkit.org/show_bug.cgi?id=160933
462
463         Reviewed by Geoffrey Garen.
464
465         * wtf/FeatureDefines.h:
466
467 2016-08-17  Don Olmstead  <don.olmstead@am.sony.com>
468
469         Use find_library within Windows build
470         https://bugs.webkit.org/show_bug.cgi?id=160904
471
472         Reviewed by Brent Fulgham.
473
474         * wtf/CMakeLists.txt:
475
476 2016-08-17  Anders Carlsson  <andersca@apple.com>
477
478         Move WKSignedPublicKeyAndChallengeString into WebCore and make it proper C++
479         https://bugs.webkit.org/show_bug.cgi?id=160945
480
481         Reviewed by Dan Bernstein.
482
483         * wtf/RetainPtr.h:
484         (WTF::RetainPtr::operator&):
485         Cast this to the right type.
486
487         * wtf/spi/cocoa/SecuritySPI.h:
488         Add new SPI.
489
490 2016-08-17  Antti Koivisto  <antti@apple.com>
491
492         Remove CSS_IMAGE_SET feature define
493         https://bugs.webkit.org/show_bug.cgi?id=160944
494
495         Reviewed by Dean Jackson.
496
497         * wtf/FeatureDefines.h:
498
499 2016-08-16  Keith Miller  <keith_miller@apple.com>
500
501         Enable WebAssembly in the build.
502         https://bugs.webkit.org/show_bug.cgi?id=160916
503
504         Reviewed by Benjamin Poulain.
505
506         This patch turns on WebAssembly on all the platforms that support B3.
507         Turning on WebAssembly by default lets us check the build on every
508         platform.
509
510         * wtf/FeatureDefines.h:
511
512 2016-08-16  Anders Carlsson  <andersca@apple.com>
513
514         Fix a thinko.
515
516         * wtf/Scope.h:
517
518 2016-08-16  Anders Carlsson  <andersca@apple.com>
519
520         Add WTF::ScopeExit
521         https://bugs.webkit.org/show_bug.cgi?id=160908
522
523         Reviewed by Geoffrey Garen.
524
525         WTF::ScopeExit and WTF::makeScopeExit let you define an object that will invoke a function when the
526         object goes out of scope. This is going to be used to avoid spagetti-code and gotos in a future patch.
527
528         The class is modeled after the LWG paper "P0052 - Generic Scope Guard and RAII Wrapper for the Standard Library".
529
530         * WTF.xcodeproj/project.pbxproj:
531         * wtf/Scope.h: Added.
532         (WTF::makeScopeExit):
533
534 2016-08-15  Anders Carlsson  <andersca@apple.com>
535
536         Add an address-of operator to RetainPtr
537         https://bugs.webkit.org/show_bug.cgi?id=160879
538
539         Reviewed by Tim Horton.
540
541         This will make some security-related code from WebKitSystemInterface easier to port.
542
543         * wtf/HashIterators.h:
544         (WTF::HashTableValuesIterator::get):
545         * wtf/HashTable.h:
546         (WTF::HashTableBucketInitializer<true>::initialize):
547         Use std::addressof instead of &, in case & is overloaded.
548
549         * wtf/RetainPtr.h:
550         (WTF::RetainPtr::operator&):
551         Implement this.
552
553 2016-08-15  Sam Weinig  <sam@webkit.org>
554
555         Speed up compile times by not including wtf/Variant.h so much
556         https://bugs.webkit.org/show_bug.cgi?id=160847
557
558         Reviewed by Alex Christensen and Saam Barati.
559
560         * wtf/Forward.h:
561         Add forward declaration of std::variant.
562
563         * wtf/StdLibExtras.h:
564         Remove references to std::variant. Move them to wtf/Variant.h
565
566 2016-08-15  Keith Miller  <keith_miller@apple.com>
567
568         Implement WASM Parser and B3 IR generator
569         https://bugs.webkit.org/show_bug.cgi?id=160681
570
571         Reviewed by Benjamin Poulain.
572
573         * wtf/DataLog.h:
574         (WTF::dataLogLn): Add a new dataLog function, dataLogLn that
575         automagically includes a new line at the end of the print.
576         * wtf/LEBDecoder.h:
577         (decodeUInt32):
578         (decodeInt32): Change the LEBDecoder to take a pointer and length
579         rather than a Vector.
580
581 2016-08-15  Keith Rollin  <krollin@apple.com>
582
583         Rename LOG_ALWAYS
584         https://bugs.webkit.org/show_bug.cgi?id=160768
585
586         Rename LOG_ALWAYS and friends, given that the first parameter to it is
587         a boolean expression that determines whether or not logging should be
588         performed.
589
590         Reviewed by Chris Dumez.
591
592         * wtf/Assertions.h:
593
594 2016-08-15  Joseph Pecoraro  <pecoraro@apple.com>
595
596         Remove unused includes of wtf headers
597         https://bugs.webkit.org/show_bug.cgi?id=160839
598
599         Reviewed by Alex Christensen.
600
601         * wtf/BackwardsGraph.h:
602         * wtf/DataLog.cpp:
603         * wtf/WorkQueue.cpp:
604         * wtf/text/StringImpl.cpp:
605         * wtf/unicode/icu/CollatorICU.cpp:
606
607 2016-08-14  Daniel Bates  <dabates@apple.com>
608
609         Fix compiler errors when building iOS WebKit using the iOS 10 beta SDK
610         https://bugs.webkit.org/show_bug.cgi?id=160725
611
612         Reviewed by Sam Weinig.
613
614         For now, disable OS_LOG when building with the iOS 10 beta SDK until
615         we have the fix for <rdar://problem/27758343>.
616
617         * wtf/Platform.h:
618
619 2016-08-13  Dan Bernstein  <mitz@apple.com>
620
621         Build fix follow-up to r204433.
622
623         * wtf/StdLibExtras.h:
624         (WTF::makeVisitor): Don’t use an auto return type.
625
626 2016-08-12  Sam Weinig  <sam@webkit.org>
627
628         Make variant only available when compiling for C++14 or greater
629         https://bugs.webkit.org/show_bug.cgi?id=160813
630
631         Reviewed by Anders Carlsson.
632
633         * wtf/Compiler.h:
634         * wtf/StdLibExtras.h:
635         * wtf/Variant.h:
636
637 2016-08-11  Maureen Daum  <mdaum@apple.com>
638
639         Add NSButtonType to AppKitCompatibilityDeclarations.h.
640         https://bugs.webkit.org/show_bug.cgi?id=160767.
641
642         Reviewed by Dan Bernstein.
643
644         Add NSButtonType to AppKitCompatibilityDeclarations.h so that we can use the new
645         names but still build successfully on older OS versions.
646
647         * wtf/mac/AppKitCompatibilityDeclarations.h:
648
649 2016-08-10  Benjamin Poulain  <bpoulain@apple.com>
650
651         [JSC] TinyPtrSet::deleteListIfNecessary() no longer needs to test for reservedValue
652         https://bugs.webkit.org/show_bug.cgi?id=160721
653
654         Reviewed by Sam Weinig.
655
656         Previously, TinyPtrSet was using a ThinFlag if there was no OutOfLineList.
657         A side effect is that isThin() was false for reservedValue. When deleting
658         the list, we had to consider both cases: isThin() and reservedValue.
659
660         In r204065, I changed the flag to a FatFlag to ensure TinyPtrSet can be initialized
661         with bzero().
662         This changes the value of isThin() of reservedValue to true since reservedValue
663         does not have the FatFlag bit set.
664         This patch removes the useless condition from deleteListIfNecessary().
665
666         * wtf/TinyPtrSet.h:
667         (WTF::TinyPtrSet::deleteListIfNecessary):
668
669 2016-08-09  Sam Weinig  <sam@webkit.org>
670
671         Fix windows build.
672
673         * wtf/Variant.h:
674         (std::experimental::__visit_helper2::__visit):
675         MSVC does not support extended constexpr. Use a ternary operator instead of an if statement.
676
677 2016-08-06  Sam Weinig  <sam@webkit.org>
678
679         Replace NodeOrString with std::variant<RefPtr<Node>, String>
680         https://bugs.webkit.org/show_bug.cgi?id=160638
681
682         Reviewed by Anders Carlsson.
683
684         * wtf/StdLibExtras.h:
685         (WTF::Visitor::Visitor):
686         (WTF::makeVisitor):
687         Add WTF::makeVisitor() which takes a list of lambdas to use
688         an an overload set for a visitor object.
689
690         Also, re-export std::experimental::variant (and helpers) in the std
691         namespace using type aliasing.
692
693         * wtf/Variant.h:
694         Make std::experimental::variant work in WebCore.
695
696 2016-08-06  Sam Weinig  <sam@webkit.org>
697
698         WTF needs a variant implementation
699         https://bugs.webkit.org/show_bug.cgi?id=160618
700
701         Reviewed by Darin Adler.
702
703         Add an implementation of std::experimental::variant matching the C++17 draft http://wg21.link/n4606 
704         taken from https://bitbucket.org/anthonyw/variant/src (5bce47fa788648f79e5ea1d77b0eef2e8f0b2999) and
705         modified to support compiling without exceptions (where it used to throw, we lovingly CRASH()).
706
707         * WTF.xcodeproj/project.pbxproj:
708         Add new file.
709
710         * wtf/Compiler.h:
711         Add COMPILER_SUPPORTS define for C++ exceptions.
712
713         * wtf/Variant.h: Added.
714
715 2016-08-05  Keith Miller  <keith_miller@apple.com>
716
717         Add LEBDecoder and tests
718         https://bugs.webkit.org/show_bug.cgi?id=160625
719
720         Reviewed by Benjamin Poulain.
721
722         Adds some LEB decoder functions to WTF. These are used in the
723         WASM spec to encode numbers in a semi-compressed format.
724
725         * WTF.xcodeproj/project.pbxproj:
726         * wtf/LEBDecoder.h: Added.
727         (decodeUInt32):
728         (decodeInt32):
729
730 2016-08-05  Keith Miller  <keith_miller@apple.com>
731
732         Delete out of date WASM code.
733         https://bugs.webkit.org/show_bug.cgi?id=160603
734
735         Reviewed by Saam Barati.
736
737         Add Feature define for WebAssembly on mac.
738
739         * wtf/FeatureDefines.h:
740
741 2016-08-03  Csaba Osztrogonác  <ossy@webkit.org>
742
743         Lacking support on a arm-traditional disassembler.
744         https://bugs.webkit.org/show_bug.cgi?id=123717
745
746         Reviewed by Mark Lam.
747
748         * wtf/Platform.h:
749
750 2016-08-02  Myles C. Maxfield  <mmaxfield@apple.com>
751
752         Update breaking rules to match ICU 57
753         https://bugs.webkit.org/show_bug.cgi?id=160488
754         <rdar://problem/25856238>
755
756         Reviewed by Darin Adler.
757
758         This patch fixes a typo in the uax14AssignmentsAfter rules which
759         was causing flag emoji to have line breaking opportunities in their
760         middles. It also fixes significant language issues for languages
761         such as Hebrew, and adds correct breaking opportunities around
762         hyphens.
763
764         * wtf/text/TextBreakIterator.cpp:
765         (WTF::cursorMovementIterator):
766         (WTF::uax14AssignmentsAfter):
767         (WTF::uax14Forward):
768         (WTF::uax14Reverse):
769
770 2016-08-02  Benjamin Poulain  <benjamin@webkit.org>
771
772         [JSC] Simplify the initialization of AbstractValue in the AbstractInterpreter
773         https://bugs.webkit.org/show_bug.cgi?id=160370
774
775         Reviewed by Saam Barati.
776
777         * wtf/TinyPtrSet.h:
778         (WTF::TinyPtrSet::isThin):
779         (WTF::TinyPtrSet::set):
780
781 2016-08-02  Benjamin Poulain  <bpoulain@apple.com>
782
783         Clean up some useless AtomicString atoms
784         https://bugs.webkit.org/show_bug.cgi?id=160471
785
786         Reviewed by Geoffrey Garen.
787
788         * wtf/text/AtomicString.h:
789         * wtf/text/StringStatics.cpp:
790         (WTF::AtomicString::init): Deleted.
791
792 2016-08-01  Benjamin Poulain  <bpoulain@apple.com>
793
794         [JSC][ARM64] Fix branchTest32/64 taking an immediate as mask
795         https://bugs.webkit.org/show_bug.cgi?id=160439
796
797         Reviewed by Filip Pizlo.
798
799         * wtf/MathExtras.h:
800         (getLSBSet):
801         This was not working at all for MacroAssembler.
802         Since TrustedImm32/64 are signed integers, the arithmetic shift would
803         never get rid of the top bit and we get an infinite loop.
804
805 2016-07-29  Mark Lam  <mark.lam@apple.com>
806
807         Make StringView capable of being passed or returned in only 2 registers.
808         https://bugs.webkit.org/show_bug.cgi?id=160344
809
810         Reviewed by Geoffrey Garen.
811
812         We just need to #if out copy and move constructors and assignment operators.
813
814         After this change, the following test code:
815
816             JS_EXPORT_PRIVATE StringView returnStringView(StringView sv)
817             {
818                 return sv;
819             }
820
821         ... compiles to the following for x86_64:
822
823             __ZN3JSC16returnStringViewEN3WTF10StringViewE:
824             000000000093fb20        pushq   %rbp
825             000000000093fb21        movq    %rsp, %rbp
826             000000000093fb24        movq    %rdi, %rax // Copy from arg word 0 to ret word 0.
827             000000000093fb27        movq    %rsi, %rdx // Copy from arg word 1 to ret word 1.
828             000000000093fb2a        popq    %rbp
829             000000000093fb2b        retq
830
831         ... and this for arm64:
832
833             __ZN3JSC16returnStringViewEN3WTF10StringViewE:
834             0000000000818504        ret // arg word 0 and 1 are in the same regs as ret word 0 and 1.
835
836         * wtf/text/StringView.h:
837         (WTF::StringView::StringView):
838         (WTF::StringView::~StringView):
839         (WTF::StringView::operator=):
840
841 2016-07-29  Csaba Osztrogonác  <ossy@webkit.org>
842
843         Remove PassRef.h after r177259
844         https://bugs.webkit.org/show_bug.cgi?id=160348
845
846         Reviewed by Andreas Kling.
847
848         * wtf/PassRef.h: Removed.
849
850 2016-07-28  Mark Lam  <mark.lam@apple.com>
851
852         StringView should have an explicit m_is8Bit field.
853         https://bugs.webkit.org/show_bug.cgi?id=160282
854         <rdar://problem/27327943>
855
856         Reviewed by Benjamin Poulain.
857
858         The current implementation reserves 1 bit in the 32-bit m_length field as an
859         is16Bit flag.  As a result, a StringView is incapable of handling strings that
860         have a length of 32-bit in size.  This results in a mismatch with the
861         expectations of String, StringImpl, and JavaScriptCore's JSString which all
862         support a 32-bit unsigned length.
863
864         This patch fixes this issue by introducing an explicit m_is8Bit field, thereby
865         allowing m_length to be a full 32-bit again.
866
867         We also introduced a clear() convenience method to set the fields of StringView
868         to empty values.  Previously, we were duplicating the code for clearing those
869         fields.  We now call clear() in all those places instead.
870
871         Note: in clear(), we set m_is8Bit to true because we want an empty StringView
872         to be 8-bit rather than 16-bit.  This is consistent with what the empty() method
873         returns.
874
875         * wtf/text/StringView.h:
876         (WTF::StringView::setUnderlyingString):
877         (WTF::StringView::StringView):
878         (WTF::StringView::operator=):
879         (WTF::StringView::initialize):
880         (WTF::StringView::clear):
881         (WTF::StringView::empty):
882         (WTF::StringView::length):
883         (WTF::StringView::operator bool):
884         (WTF::StringView::is8Bit):
885         (WTF::StringView::substring):
886         (WTF::StringView::getCharactersWithUpconvert):
887         (WTF::StringView::toString):
888         (WTF::StringView::toAtomicString):
889         (WTF::StringView::toFloat):
890         (WTF::StringView::toInt):
891         (WTF::StringView::toIntStrict):
892         (WTF::StringView::toStringWithoutCopying):
893         (WTF::StringView::find):
894
895 2016-07-24  Filip Pizlo  <fpizlo@apple.com>
896
897         B3 should support multiple entrypoints
898         https://bugs.webkit.org/show_bug.cgi?id=159391
899
900         Reviewed by Saam Barati.
901
902         * wtf/GraphNodeWorklist.h: Expose some handy functionality.
903         (WTF::GraphNodeWorklist::pop):
904         (WTF::GraphNodeWorklist::saw):
905         (WTF::GraphNodeWorklist::seen):
906         * wtf/VectorTraits.h: Fix a bug! Otherwise filling a vector of byte-sized enum classes doesn't work.
907
908 2016-07-21  Myles C. Maxfield  <mmaxfield@apple.com>
909
910         [macOS] Caret placement occurs in the middle of new emoji group candidates
911         https://bugs.webkit.org/show_bug.cgi?id=160008
912         <rdar://problem/27430111>
913
914         Reviewed by Simon Fraser.
915
916         r203330 added support for new emoji group candidates. This patch updates the rules
917         governing caret placement around these new emoji groups.
918
919         * wtf/text/TextBreakIterator.cpp:
920         (WTF::cursorMovementIterator):
921
922 2016-07-20  Rajeev Misra  <rajeevmisraforapple@gmail.com>
923
924         Remove unnecessary if check from ParkingLot.cpp
925         https://bugs.webkit.org/show_bug.cgi?id=159961
926
927         Reviewed by Alex Christensen.
928
929         A good practice is to have as less conditional statement
930         or special cases as possible in code. This change
931         simply removes a unnecessary "if" statement for
932         condition which was already evaluated by switch/case
933         and thus there was no need to evaluate again.
934
935         * wtf/ParkingLot.cpp:
936
937 2016-07-18  Anders Carlsson  <andersca@apple.com>
938
939         WebKit nightly fails to build on macOS Sierra
940         https://bugs.webkit.org/show_bug.cgi?id=159902
941         rdar://problem/27365672
942
943         Reviewed by Tim Horton.
944
945         * icu/unicode/ucurr.h: Added.
946         Add ucurr.h from ICU.
947
948 2016-07-18  Michael Saboff  <msaboff@apple.com>
949
950         ASSERTION FAILED: : (year >= 1970 && yearday >= 0) || (year < 1970 && yearday < 0) -- WTF/wtf/DateMath.cpp
951         https://bugs.webkit.org/show_bug.cgi?id=159883
952
953         Reviewed by Filip Pizlo.
954
955         The function daysFrom1970ToYear() takes an integer year and returns a double result.
956         The calculation uses 1970 as a baseline year and subtracts 1970 from the argument year.
957         It does that subtraction using integer arithmetic, which given negative years close to
958         INT_MIN can underflow as a result of subtracting 1970.  Since we want a double result,
959         the fix is to cast year as a double before the subtraction, which eliminates the underflow.
960
961         * wtf/DateMath.cpp:
962         (WTF::daysFrom1970ToYear):
963
964 2016-07-17  Filip Pizlo  <fpizlo@apple.com>
965
966         RegisterSet should use a Bitmap instead of a BitVector so that it never allocates memory and is trivial to copy
967         https://bugs.webkit.org/show_bug.cgi?id=159863
968
969         Reviewed by Saam Barati.
970         
971         Give Bitmap all of the power of BitVector (except for automatic resizing). This means a
972         variant of set() that takes a bool, and a bunch of helper methods (merge, filter, exclude,
973         forEachSetBit, ==, !=, and hash).
974
975         * wtf/Bitmap.h:
976         (WTF::WordType>::set):
977         (WTF::WordType>::testAndSet):
978         (WTF::WordType>::isFull):
979         (WTF::WordType>::merge):
980         (WTF::WordType>::filter):
981         (WTF::WordType>::exclude):
982         (WTF::WordType>::forEachSetBit):
983         (WTF::=):
984         (WTF::WordType>::hash):
985
986 2016-07-02  Filip Pizlo  <fpizlo@apple.com>
987
988         WTF::Lock should be fair eventually
989         https://bugs.webkit.org/show_bug.cgi?id=159384
990
991         Reviewed by Geoffrey Garen.
992         
993         In https://webkit.org/blog/6161/locking-in-webkit/ we showed how relaxing the fairness of
994         locks makes them fast. That post presented lock fairness as a trade-off between two
995         extremes:
996         
997         - Barging. A barging lock, like WTF::Lock, releases the lock in unlock() even if there was a
998           thread on the queue. If there was a thread on the queue, the lock is released and that
999           thread is made runnable. That thread may then grab the lock, or some other thread may grab
1000           the lock first (it may barge). Usually, the barging thread is the thread that released the
1001           lock in the first place. This maximizes throughput but hurts fairness. There is no good
1002           theoretical bound on how unfair the lock may become, but empirical data suggests that it's
1003           fair enough for the cases we previously measured.
1004         
1005         - FIFO. A FIFO lock, like HandoffLock in ToyLocks.h, does not release the lock in unlock()
1006           if there is a thread waiting. If there is a thread waiting, unlock() will make that thread
1007           runnable and inform it that it now holds the lock. This ensures perfect round-robin
1008           fairness and allows us to reason theoretically about how long it may take for a thread to
1009           grab the lock. For example, if we know that only N threads are running and each one may
1010           contend on a critical section, and each one may hold the lock for at most S seconds, then
1011           the time it takes to grab the lock is N * S. Unfortunately, FIFO locks perform very badly
1012           in most cases. This is because for the common case of short critical sections, they force
1013           a context switch after each critical section if the lock is contended.
1014         
1015         This change makes WTF::Lock almost as fair as FIFO while still being as fast as barging.
1016         Thanks to this new algorithm, you can now have both of these things at the same time.
1017         
1018         This change makes WTF::Lock eventually fair. We can almost (more on the caveats below)
1019         guarantee that the time it takes to grab a lock is N * max(1ms, S). In other words, critical
1020         sections that are longer than 1ms are always fair. For shorter critical sections, the amount
1021         of time that any thread waits is 1ms times the number of threads. There are some caveats
1022         that arise from our use of randomness, but even then, in the limit as the critical section
1023         length goes to infinity, the lock becomes fair. The corner cases are unlikely to happen; our
1024         experiments show that the lock becomes exactly as fair as a FIFO lock for any critical
1025         section that is 1ms or longer.
1026         
1027         The fairness mechanism is broken into two parts. WTF::Lock can now choose to unlock a lock
1028         fairly or unfairly thanks to the new ParkingLot token mechanism. WTF::Lock knows when to use
1029         fair unlocking based on a timeout mechanism in ParkingLot called timeToBeFair.
1030         
1031         ParkingLot::unparkOne() and ParkingLot::parkConditionally() can now communicate with each
1032         other via a token. unparkOne() can pass a token, which parkConditionally() will return. This
1033         change also makes parkConditionally() a lot more precise about when it was unparked due to a
1034         call to unparkOne(). If unparkOne() is told that a thread was unparked then this thread is
1035         guaranteed to report that it was unparked rather than timing out, and that thread is
1036         guaranteed to get the token that unparkOne() passed. The token is an intptr_t. We use it as
1037         a boolean variable in WTF::Lock, but you could use it to pass arbitrary data structures. By
1038         default, the token is zero. WTF::Lock's unlock() will pass 1 as the token if it is doing
1039         fair unlocking. In that case, unlock() will not release the lock, and lock() will know that
1040         it holds the lock as soon as parkConditionally() returns. Note that this algorithm relies
1041         on unparkOne() invoking WTF::Lock's callback while the queue lock is held, so that WTF::Lock
1042         can make a decision about unlock strategy and inject a token while it has complete knowledge
1043         over the state of the queue. As such, it's not immediately obvious how to implement this
1044         algorithm on top of futexes. You really need ParkingLot!
1045         
1046         WTF::Lock does not use fair unlocking every time. We expose a new API, Lock::unlockFairly(),
1047         which forces the fair unlocking behavior. Additionally, ParkingLot now maintains a
1048         per-bucket stochastic fairness timeout. When the timeout fires, the unparkOne() callback
1049         sees UnparkResult::timeToBeFair = true. This timeout is set to be anywhere from 0ms to 1ms
1050         at random. When a dequeue happens and there are threads that actually get dequeued, we check
1051         if the time since the last unfair unlock (the last time timeToBeFair was set to true) is
1052         more than the timeout amount. If so, then we set timeToBeFair to true and reset the timeout.
1053         This means that in the absence of ParkingLot collisions, unfair unlocking is guaranteed to
1054         happen at least once per millisecond. It will happen at 2 KHz on average. If there are
1055         collisions, then each collision adds one millisecond to the worst case (and 0.5 ms to the
1056         average case). The reason why we don't just use a fixed 1ms timeout is that we want to avoid
1057         resonance. Imagine a program in which some thread acquires a lock at 1 KHz in-phase with the
1058         timeToBeFair timeout. Then this thread would be the benefactor of fairness to the detriment
1059         of everyone else. Randomness ensures that we aren't too fair to any one thread.
1060         
1061         Empirically, this is neutral on our major benchmarks like JetStream but it's an enormous
1062         improvement in LockFairnessTest. It's common for an unfair lock (either our BargingLock, the
1063         old WTF::Lock, any of the other futex-based locks that barge, or new os_unfair_lock) to
1064         allow only one thread to hold the lock during a whole second in which each thread is holding
1065         the lock for 1ms at a time. This is because in a barging lock, releasing a lock after
1066         holding it for 1ms and then reacquiring it immediately virtually ensures that none of the
1067         other threads can wake up in time to grab it before it's relocked. But the new WTF::Lock
1068         handles this case like a champ: each thread gets equal turns.
1069         
1070         Here's some data. If we launch 10 threads and have each of them run for 1 second while
1071         repeatedly holding a critical section for 1ms, then here's how many times each thread gets
1072         to hold the lock using the old WTF::Lock algorithm:
1073         
1074         799, 6, 1, 1, 1, 1, 1, 1, 1, 1
1075         
1076         One thread hogged the lock for almost the whole time! With the new WTF::Lock, the lock
1077         becomes totally fair:
1078         
1079         80, 79, 79, 79, 79, 79, 79, 80, 80, 79
1080         
1081         I don't know of anyone creating such an automatically-fair adaptive lock before, so I think
1082         that this is a pretty awesome advancement to the state of the art!
1083         
1084         This change is good for three reasons:
1085         
1086         - We do have long critical sections in WebKit and we don't want to have to worry about
1087           starvation. This reduces the likelihood that we will see starvation due to our lock
1088           strategy.
1089         
1090         - I was talking to ggaren about bmalloc's locking needs, and he wanted unlockFairly() or
1091           lockFairly() or some moral equivalent for the scavenger thread.
1092         
1093         - If we use a WTF::Lock to manage heap access in a multithreaded GC, we'll need the ability
1094           to unlock and relock without barging.
1095
1096         * benchmarks/LockFairnessTest.cpp:
1097         (main):
1098         * benchmarks/ToyLocks.h:
1099         * wtf/Condition.h:
1100         (WTF::ConditionBase::waitUntil):
1101         (WTF::ConditionBase::notifyOne):
1102         * wtf/Lock.cpp:
1103         (WTF::LockBase::lockSlow):
1104         (WTF::LockBase::unlockSlow):
1105         (WTF::LockBase::unlockFairlySlow):
1106         (WTF::LockBase::unlockSlowImpl):
1107         * wtf/Lock.h:
1108         (WTF::LockBase::try_lock):
1109         (WTF::LockBase::unlock):
1110         (WTF::LockBase::unlockFairly):
1111         (WTF::LockBase::isHeld):
1112         (WTF::LockBase::isFullyReset):
1113         * wtf/ParkingLot.cpp:
1114         (WTF::ParkingLot::parkConditionallyImpl):
1115         (WTF::ParkingLot::unparkOne):
1116         (WTF::ParkingLot::unparkOneImpl):
1117         (WTF::ParkingLot::unparkAll):
1118         * wtf/ParkingLot.h:
1119         (WTF::ParkingLot::parkConditionally):
1120         (WTF::ParkingLot::compareAndPark):
1121         (WTF::ParkingLot::unparkOne):
1122
1123 2016-07-17  Myles C. Maxfield  <mmaxfield@apple.com>
1124
1125         Support new emoji group candidates
1126         https://bugs.webkit.org/show_bug.cgi?id=159755
1127         <rdar://problem/27325521>
1128
1129         Reviewed by Dean Jackson.
1130
1131         This patch doesn't update the rules for our cursor movement iterator, because
1132         I don't know the language used for implementing these rules. These rules will
1133         be updated in the near future. When they do,
1134         editing/deleting/delete-emoji-expected.txt will need to be updated.
1135
1136         * wtf/text/TextBreakIterator.cpp:
1137         (WTF::cursorMovementIterator):
1138
1139 2016-07-16  Chris Dumez  <cdumez@apple.com>
1140
1141         Add move constructor / assignment operator to ListHashSet
1142         https://bugs.webkit.org/show_bug.cgi?id=159837
1143
1144         Reviewed by Darin Adler.
1145
1146         Add move constructor / assignment operator to ListHashSet.
1147
1148         * wtf/ListHashSet.h:
1149         (WTF::ListHashSetConstIterator::operator++):
1150         (WTF::U>::ListHashSet):
1151         (WTF::=):
1152         (WTF::U>::clear):
1153         (WTF::U>::appendNode):
1154         (WTF::U>::prependNode):
1155         (WTF::U>::deleteAllNodes):
1156         (WTF::ListHashSetNode::ListHashSetNode): Deleted.
1157
1158 2016-07-15  Chris Dumez  <cdumez@apple.com>
1159
1160         Use emptyString() / nullAtom when possible
1161         https://bugs.webkit.org/show_bug.cgi?id=159850
1162
1163         Reviewed by Ryosuke Niwa.
1164
1165         Use emptyString() / nullAtom when possible, for performance.
1166
1167         * wtf/text/AtomicString.cpp:
1168         (WTF::AtomicString::convertASCIICase):
1169
1170 2016-07-15  Chris Dumez  <cdumez@apple.com>
1171
1172         Unreviewed, rolling out r203304.
1173
1174         This is wrong because of Node* entries in the internal HashMap
1175
1176         Reverted changeset:
1177
1178         "Add move constructor / assignment operator to ListHashSet"
1179         https://bugs.webkit.org/show_bug.cgi?id=159837
1180         http://trac.webkit.org/changeset/203304
1181
1182 2016-07-15  Chris Dumez  <cdumez@apple.com>
1183
1184         Add move constructor / assignment operator to ListHashSet
1185         https://bugs.webkit.org/show_bug.cgi?id=159837
1186
1187         Reviewed by Alex Christensen.
1188
1189         Add move constructor / assignment operator to ListHashSet.
1190
1191         * wtf/ListHashSet.h:
1192
1193 2016-07-15  Geoffrey Garen  <ggaren@apple.com>
1194
1195         Added a makeRef<T> helper
1196         https://bugs.webkit.org/show_bug.cgi?id=159835
1197
1198         Reviewed by Andreas Kling.
1199
1200         Anders told me to!
1201
1202         * wtf/Ref.h:
1203         (WTF::makeRef): Helper function to do type inference for you.
1204
1205 2016-07-15  Ryan Haddad  <ryanhaddad@apple.com>
1206
1207         Unreviewed, rolling out r203266.
1208
1209         This change caused editing/deleting/delete-emoji.html to time
1210         out on El Capitan, crash under GuardMalloc
1211
1212         Reverted changeset:
1213
1214         "Support new emoji group candidates"
1215         https://bugs.webkit.org/show_bug.cgi?id=159755
1216         http://trac.webkit.org/changeset/203266
1217
1218 2016-07-15  Csaba Osztrogonác  <ossy@webkit.org>
1219
1220         Revert r202560 to fix the ARMv7 build with ARM instruction set
1221         https://bugs.webkit.org/show_bug.cgi?id=159707
1222
1223         Reviewed by Carlos Garcia Campos.
1224
1225         * wtf/Platform.h: Revert r202560.
1226
1227 2016-07-14  Myles C. Maxfield  <mmaxfield@apple.com>
1228
1229         Support new emoji group candidates
1230         https://bugs.webkit.org/show_bug.cgi?id=159755
1231         <rdar://problem/27325521>
1232
1233         Reviewed by Dean Jackson.
1234
1235         This patch doesn't update the rules for our cursor movement iterator, because
1236         I don't know the language used for implementing these rules. These rules will
1237         be updated in the near future. When they do,
1238         editing/deleting/delete-emoji-expected.txt will need to be updated.
1239
1240         * wtf/text/TextBreakIterator.cpp:
1241         (WTF::cursorMovementIterator):
1242
1243 2016-07-14  Alex Christensen  <achristensen@webkit.org>
1244
1245         Allow RefPtrs of const RefCounted types
1246         https://bugs.webkit.org/show_bug.cgi?id=158269
1247
1248         Reviewed by Anders Carlsson.
1249
1250         * wtf/RefCounted.h:
1251         (WTF::RefCountedBase::ref):
1252         (WTF::RefCountedBase::~RefCountedBase):
1253         (WTF::RefCountedBase::derefBase):
1254         (WTF::RefCounted::deref):
1255         Creating references to a const object does not really modify the object,
1256         so everything in RefCounted is now mutable, and ref and deref are const.
1257
1258 2016-07-14  Chris Dumez  <cdumez@apple.com>
1259
1260         Avoid an extra heap allocation when dispatching Functions to WorkQueue
1261         https://bugs.webkit.org/show_bug.cgi?id=158367
1262
1263         Reviewed by Anders Carlsson.
1264
1265         Avoid an extra heap allocation when dispatching Functions to WorkQueue
1266         by adding leakCallable() / adoptCallable() functions to Function.
1267
1268         * wtf/Function.h:
1269         * wtf/cocoa/WorkQueueCocoa.cpp:
1270         (WTF::WorkQueue::dispatch):
1271         (WTF::WorkQueue::dispatchAfter):
1272
1273 2016-07-13  Myles C. Maxfield  <mmaxfield@apple.com>
1274
1275         Addressing post-review comments after r203119
1276         https://bugs.webkit.org/show_bug.cgi?id=159749
1277
1278         Unreviewed.
1279
1280         * wtf/text/StringView.h:
1281         (WTF::StringView::CodePoints::Iterator::Iterator):
1282         (WTF::StringView::CodePoints::Iterator::operator*):
1283         (WTF::StringView::CodePoints::Iterator::operator==):
1284
1285 2016-07-13  Enrica Casucci  <enrica@apple.com>
1286
1287         Update supported platforms in xcconfig files to match the sdk names.
1288         https://bugs.webkit.org/show_bug.cgi?id=159728
1289
1290         Reviewed by Tim Horton.
1291
1292         * Configurations/Base.xcconfig:
1293
1294 2016-07-13  Carlos Garcia Campos  <cgarcia@igalia.com>
1295
1296         [GTK] WebKitGtk+ uses too many file descriptors
1297         https://bugs.webkit.org/show_bug.cgi?id=152316
1298
1299         Reviewed by Michael Catanzaro.
1300
1301         Add helper functions to duplicate a file descriptor setting close on exec flag, and also to set close on exec
1302         flag to an existing file descriptor.
1303
1304         * wtf/UniStdExtras.h:
1305         * wtf/UniStdExtras.cpp
1306         (WTF::setCloseOnExec):
1307         (WTF::dupCloseOnExec):
1308
1309 2016-07-12  Benjamin Poulain  <bpoulain@apple.com>
1310
1311         [JSC] Array.prototype.join() fails some conformance tests
1312         https://bugs.webkit.org/show_bug.cgi?id=159657
1313
1314         Reviewed by Saam Barati.
1315
1316         * wtf/text/AtomicString.cpp:
1317         (WTF::AtomicString::number):
1318         * wtf/text/AtomicString.h:
1319
1320 2016-07-12  Commit Queue  <commit-queue@webkit.org>
1321
1322         Unreviewed, rolling out r203131.
1323         https://bugs.webkit.org/show_bug.cgi?id=159698
1324
1325         This change caused an existing LayoutTest to time out on debug
1326         testers (Requested by ryanhaddad on #webkit).
1327
1328         Reverted changeset:
1329
1330         "[JSC] Array.prototype.join() fails some conformance tests"
1331         https://bugs.webkit.org/show_bug.cgi?id=159657
1332         http://trac.webkit.org/changeset/203131
1333
1334 2016-07-12  Filip Pizlo  <fpizlo@apple.com>
1335
1336         platformUserPreferredLanguages on Mac should not try to put the region into the language
1337         https://bugs.webkit.org/show_bug.cgi?id=159693
1338
1339         Rubber stamped by Alexey Proskuryakov.
1340         
1341         Currently, navigator.language is the thing that we use as the BCP-47 tag in our Intl code
1342         when certain APIs are called without a locale argument.  That mostly makes sense, and is
1343         deeply wired into our engine.
1344
1345         In r200105, we made Intl aware of the region as a separate thing from the language by having
1346         platformUserPreferredLanguages() return something like a BCP-47 tag that was
1347         <language>-<region>.  For example, if I told System Preferences that I want to speak English
1348         but live in Poland then we'd get "en-pl".  This had the effect of making Intl APIs format
1349         dates using Polish formatting, for example.
1350
1351         But this is an odd change, since that same function also feeds into navigator.language.
1352         "en-pl" isn't what we want there, since my System Preferences settings aren't supposed to
1353         mean that I want to speak Polish-style English.  There's no such thing.
1354
1355         It may be worthwhile to wire the region settings more elegantly into Intl, but if we do that,
1356         it should be via a mechanism that is separate from navigator.language. So, this change simply
1357         reverts r200105.
1358
1359         * wtf/PlatformUserPreferredLanguagesMac.mm:
1360         (WTF::httpStyleLanguageCode):
1361         (WTF::platformUserPreferredLanguages):
1362         (WTF::isValidICUCountryCode): Deleted.
1363
1364 2016-07-12  Per Arne Vollan  <pvollan@apple.com>
1365
1366         [Win] Fix for build error when trying to version stamp dll.
1367         https://bugs.webkit.org/show_bug.cgi?id=159692
1368
1369         Reviewed by Brent Fulgham.
1370
1371         Use correct path to version stamp script.
1372
1373         * wtf/CMakeLists.txt:
1374
1375 2016-07-12  Benjamin Poulain  <bpoulain@apple.com>
1376
1377         [JSC] Array.prototype.join() fails some conformance tests
1378         https://bugs.webkit.org/show_bug.cgi?id=159657
1379
1380         Reviewed by Saam Barati.
1381
1382         * wtf/text/AtomicString.cpp:
1383         (WTF::AtomicString::number):
1384         * wtf/text/AtomicString.h:
1385
1386 2016-07-12  Myles C. Maxfield  <mmaxfield@apple.com>
1387
1388         Relax ordering requirements on StringView::CodePoints iterator
1389         https://bugs.webkit.org/show_bug.cgi?id=159609
1390
1391         Reviewed by Darin Adler.
1392
1393         Previously, there was a requirement where if you use a CodePoints
1394         iterator, you couldn't dereference twice in a row or increment
1395         twice in a row. This restriction is unnecessary.
1396
1397         * wtf/text/StringView.h:
1398         (WTF::StringView::CodePoints::Iterator::Iterator):
1399         (WTF::StringView::CodePoints::Iterator::advanceCurrentCodePoint):
1400         (WTF::StringView::CodePoints::Iterator::operator*):
1401         (WTF::StringView::CodePoints::Iterator::operator==):
1402
1403 2016-07-12  Csaba Osztrogonác  <ossy@webkit.org>
1404
1405         JSCOnly bulidfix after r203078
1406         https://bugs.webkit.org/show_bug.cgi?id=159669
1407
1408         Reviewed by Yusuke Suzuki.
1409
1410         * wtf/PlatformJSCOnly.cmake:
1411         * wtf/text/jsconly/TextBreakIteratorInternalICUJSCOnly.cpp: Added.
1412         (WTF::currentSearchLocaleID):
1413         (WTF::currentTextBreakLocaleID):
1414
1415 2016-07-12  Per Arne Vollan  <pvollan@apple.com>
1416
1417         [Win] DLLs are missing version information.
1418         https://bugs.webkit.org/show_bug.cgi?id=159349
1419
1420         Reviewed by Brent Fulgham.
1421
1422         Generate autoversion.h and run perl version stamp utility.
1423
1424         * wtf/CMakeLists.txt:
1425
1426 2016-07-11  Myles C. Maxfield  <mmaxfield@apple.com>
1427
1428         Implement grapheme cluster iterator on StringView
1429         https://bugs.webkit.org/show_bug.cgi?id=159598
1430
1431         Reviewed by Anders Carlsson.
1432
1433         This is in preparation for honoring the second argument to FontFaceSet.load().
1434
1435         * wtf/text/StringView.cpp:
1436         (WTF::StringView::GraphemeClusters::Iterator::Impl::Impl):
1437         (WTF::StringView::GraphemeClusters::Iterator::Impl::operator++):
1438         (WTF::StringView::GraphemeClusters::Iterator::Impl::operator*):
1439         (WTF::StringView::GraphemeClusters::Iterator::Impl::operator==):
1440         (WTF::StringView::GraphemeClusters::Iterator::Impl::computeIndexEnd):
1441         (WTF::StringView::GraphemeClusters::Iterator::Iterator):
1442         (WTF::StringView::GraphemeClusters::Iterator::~Iterator):
1443         (WTF::StringView::GraphemeClusters::Iterator::operator*):
1444         (WTF::StringView::GraphemeClusters::Iterator::operator==):
1445         (WTF::StringView::GraphemeClusters::Iterator::operator!=):
1446         * wtf/text/StringView.h:
1447         (WTF::StringView::GraphemeClusters::GraphemeClusters):
1448         * text/TextBreakIterator.cpp:
1449         (WebCore::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator):
1450         * text/TextBreakIterator.h:
1451
1452 2016-07-10  Myles C. Maxfield  <mmaxfield@apple.com>
1453
1454         Move breaking iterator code to WTF
1455         https://bugs.webkit.org/show_bug.cgi?id=159594
1456
1457         Reviewed by Alex Christensen.
1458
1459         This is in preparation for giving StringView a GraphemeClusters iterator.
1460         Such an interator needs to be implemented on top of our breaking iterator
1461         code.
1462
1463         * WTF.xcodeproj/project.pbxproj:
1464         * icu/unicode/ubrk.h: Added.
1465         * icu/unicode/utext.h: Renamed from Source/WebCore/icu/unicode/utext.h.
1466         * wtf/CMakeLists.txt:
1467         * wtf/PlatformEfl.cmake:
1468         * wtf/PlatformGTK.cmake:
1469         * wtf/PlatformMac.cmake:
1470         * wtf/PlatformWin.cmake:
1471         * wtf/TinyLRUCache.h:
1472         * wtf/text/LineBreakIteratorPoolICU.h: Renamed from Source/WebCore/platform/text/LineBreakIteratorPoolICU.h.
1473         (WTF::LineBreakIteratorPool::LineBreakIteratorPool):
1474         (WTF::LineBreakIteratorPool::sharedPool):
1475         (WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
1476         (WTF::LineBreakIteratorPool::take):
1477         (WTF::LineBreakIteratorPool::put):
1478         * wtf/text/TextBreakIterator.cpp: Renamed from Source/WebCore/platform/text/TextBreakIterator.cpp.
1479         (WTF::initializeIterator):
1480         (WTF::initializeIteratorWithRules):
1481         (WTF::setTextForIterator):
1482         (WTF::setContextAwareTextForIterator):
1483         (WTF::wordBreakIterator):
1484         (WTF::sentenceBreakIterator):
1485         (WTF::cursorMovementIterator):
1486         (WTF::acquireLineBreakIterator):
1487         (WTF::releaseLineBreakIterator):
1488         (WTF::mapLineIteratorModeToRules):
1489         (WTF::isCJKLocale):
1490         (WTF::openLineBreakIterator):
1491         (WTF::closeLineBreakIterator):
1492         (WTF::compareAndSwapNonSharedCharacterBreakIterator):
1493         (WTF::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator):
1494         (WTF::NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator):
1495         (WTF::textBreakFirst):
1496         (WTF::textBreakLast):
1497         (WTF::textBreakNext):
1498         (WTF::textBreakPrevious):
1499         (WTF::textBreakPreceding):
1500         (WTF::textBreakFollowing):
1501         (WTF::textBreakCurrent):
1502         (WTF::isTextBreak):
1503         (WTF::isWordTextBreak):
1504         (WTF::numGraphemeClusters):
1505         (WTF::numCharactersInGraphemeClusters):
1506         * wtf/text/TextBreakIterator.h: Renamed from Source/WebCore/platform/text/TextBreakIterator.h.
1507         (WTF::LazyLineBreakIterator::LazyLineBreakIterator):
1508         (WTF::LazyLineBreakIterator::~LazyLineBreakIterator):
1509         (WTF::LazyLineBreakIterator::string):
1510         (WTF::LazyLineBreakIterator::isLooseCJKMode):
1511         (WTF::LazyLineBreakIterator::lastCharacter):
1512         (WTF::LazyLineBreakIterator::secondToLastCharacter):
1513         (WTF::LazyLineBreakIterator::setPriorContext):
1514         (WTF::LazyLineBreakIterator::updatePriorContext):
1515         (WTF::LazyLineBreakIterator::resetPriorContext):
1516         (WTF::LazyLineBreakIterator::priorContextLength):
1517         (WTF::LazyLineBreakIterator::get):
1518         (WTF::LazyLineBreakIterator::resetStringAndReleaseIterator):
1519         (WTF::NonSharedCharacterBreakIterator::operator TextBreakIterator*):
1520         * wtf/text/TextBreakIteratorInternalICU.h: Renamed from Source/WebCore/platform/text/TextBreakIteratorInternalICU.h.
1521         * wtf/text/efl/TextBreakIteratorInternalICUEfl.cpp: Renamed from Source/WebCore/platform/text/efl/TextBreakIteratorInternalICUEfl.cpp.
1522         (WebCore::currentSearchLocaleID):
1523         (WebCore::currentTextBreakLocaleID):
1524         * wtf/text/gtk/TextBreakIteratorInternalICUGtk.cpp: Renamed from Source/WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp.
1525         (WebCore::currentSearchLocaleID):
1526         (WebCore::currentTextBreakLocaleID):
1527         * wtf/text/icu/UTextProvider.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProvider.cpp.
1528         (WTF::fixPointer):
1529         (WTF::uTextCloneImpl):
1530         * wtf/text/icu/UTextProvider.h: Renamed from Source/WebCore/platform/text/icu/UTextProvider.h.
1531         (WTF::uTextProviderContext):
1532         (WTF::initializeContextAwareUTextProvider):
1533         (WTF::uTextAccessPinIndex):
1534         (WTF::uTextAccessInChunkOrOutOfRange):
1535         * wtf/text/icu/UTextProviderLatin1.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp.
1536         (WTF::uTextLatin1Clone):
1537         (WTF::uTextLatin1NativeLength):
1538         (WTF::uTextLatin1Access):
1539         (WTF::uTextLatin1Extract):
1540         (WTF::uTextLatin1MapOffsetToNative):
1541         (WTF::uTextLatin1MapNativeIndexToUTF16):
1542         (WTF::uTextLatin1Close):
1543         (WTF::openLatin1UTextProvider):
1544         (WTF::textLatin1ContextAwareGetCurrentContext):
1545         (WTF::textLatin1ContextAwareMoveInPrimaryContext):
1546         (WTF::textLatin1ContextAwareSwitchToPrimaryContext):
1547         (WTF::textLatin1ContextAwareMoveInPriorContext):
1548         (WTF::textLatin1ContextAwareSwitchToPriorContext):
1549         (WTF::uTextLatin1ContextAwareClone):
1550         (WTF::uTextLatin1ContextAwareNativeLength):
1551         (WTF::uTextLatin1ContextAwareAccess):
1552         (WTF::uTextLatin1ContextAwareExtract):
1553         (WTF::uTextLatin1ContextAwareClose):
1554         (WTF::openLatin1ContextAwareUTextProvider):
1555         * wtf/text/icu/UTextProviderLatin1.h: Renamed from Source/WebCore/platform/text/icu/UTextProviderLatin1.h.
1556         * wtf/text/icu/UTextProviderUTF16.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp.
1557         (WTF::textUTF16ContextAwareGetCurrentContext):
1558         (WTF::textUTF16ContextAwareMoveInPrimaryContext):
1559         (WTF::textUTF16ContextAwareSwitchToPrimaryContext):
1560         (WTF::textUTF16ContextAwareMoveInPriorContext):
1561         (WTF::textUTF16ContextAwareSwitchToPriorContext):
1562         (WTF::uTextUTF16ContextAwareClone):
1563         (WTF::uTextUTF16ContextAwareNativeLength):
1564         (WTF::uTextUTF16ContextAwareAccess):
1565         (WTF::uTextUTF16ContextAwareExtract):
1566         (WTF::uTextUTF16ContextAwareClose):
1567         (WTF::openUTF16ContextAwareUTextProvider):
1568         * wtf/text/icu/UTextProviderUTF16.h: Renamed from Source/WebCore/platform/text/icu/UTextProviderUTF16.h.
1569         * wtf/text/mac/TextBreakIteratorInternalICUMac.mm: Renamed from Source/WebCore/platform/text/mac/TextBreakIteratorInternalICUMac.mm.
1570         (WTF::textBreakLocalePreference):
1571         (WTF::topLanguagePreference):
1572         (WTF::getLocale):
1573         (WTF::getSearchLocale):
1574         (WTF::currentSearchLocaleID):
1575         (WTF::getTextBreakLocale):
1576         (WTF::currentTextBreakLocaleID):
1577         * wtf/text/win/TextBreakIteratorInternalICUWin.cpp: Renamed from Source/WebCore/platform/text/win/TextBreakIteratorInternalICUWin.cpp.
1578         (WebCore::currentSearchLocaleID):
1579         (WebCore::currentTextBreakLocaleID):
1580
1581 2016-07-08  Commit Queue  <commit-queue@webkit.org>
1582
1583         Unreviewed, rolling out r202799.
1584         https://bugs.webkit.org/show_bug.cgi?id=159568
1585
1586         Caused build failure (Requested by perarne on #webkit).
1587
1588         Reverted changeset:
1589
1590         "[Win] DLLs are missing version information."
1591         https://bugs.webkit.org/show_bug.cgi?id=159349
1592         http://trac.webkit.org/changeset/202799
1593
1594 2016-07-08  Jiewen Tan  <jiewen_tan@apple.com>
1595
1596         Define DYLD_MACOSX_VERSION_10_12
1597         https://bugs.webkit.org/show_bug.cgi?id=159525
1598         <rdar://problem/26250296>
1599
1600         Reviewed by Brent Fulgham.
1601
1602         * wtf/spi/darwin/dyldSPI.h:
1603
1604 2016-07-01  Jer Noble  <jer.noble@apple.com>
1605
1606         REGRESSION (r202641): Netflix playback stalls after a few seconds
1607         https://bugs.webkit.org/show_bug.cgi?id=159365
1608
1609         Reviewed by Eric Carlson.
1610
1611         Add a isBetween() convenience method.
1612
1613         * wtf/MediaTime.cpp:
1614         (WTF::MediaTime::isBetween):
1615         * wtf/MediaTime.h:
1616
1617 2016-07-03  Per Arne Vollan  <pvollan@apple.com>
1618
1619         [Win] DLLs are missing version information.
1620         https://bugs.webkit.org/show_bug.cgi?id=159349
1621
1622         Reviewed by Brent Fulgham.
1623
1624         Generate autoversion.h in the prebuild step.
1625         Run the perl version stamp utility.
1626
1627         * wtf/CMakeLists.txt:
1628
1629 2016-07-03  Saam Barati  <sbarati@apple.com>
1630
1631         BytecodeGenerator::getVariablesUnderTDZ is too conservative
1632         https://bugs.webkit.org/show_bug.cgi?id=159387
1633
1634         Reviewed by Filip Pizlo.
1635
1636         I've templatized SmallPtrSet on its SmallArraySize instead
1637         of it always being 8.  
1638
1639         * wtf/SmallPtrSet.h:
1640         (WTF::SmallPtrSet::SmallPtrSet):
1641         (WTF::SmallPtrSet::add):
1642         (WTF::SmallPtrSet::iterator::operator!=):
1643         (WTF::SmallPtrSet::bucket):
1644
1645 2016-07-03  Filip Pizlo  <fpizlo@apple.com>
1646
1647         Ugh. Once again, unreviewed, roll out unintentional commit in r202790.
1648
1649         * benchmarks/LockFairnessTest.cpp:
1650         (main):
1651
1652 2016-07-02  Dan Bernstein  <mitz@apple.com>
1653
1654         Build fix.
1655
1656         * wtf/Assertions.cpp:
1657
1658 2016-07-02  Filip Pizlo  <fpizlo@apple.com>
1659
1660         Unreviewed, roll back unintentional commit in r202778.
1661
1662         * benchmarks/LockFairnessTest.cpp:
1663         (main):
1664
1665 2016-07-01  Jer Noble  <jer.noble@apple.com>
1666
1667         Deadlock inside -[WebCoreNSURLSession dealloc]
1668         https://bugs.webkit.org/show_bug.cgi?id=159331
1669         <rdar://problem/27122716>
1670
1671         Reviewed by Alex Christensen.
1672
1673         A Function<> object can wrap any callable type, including a C++ lambda.
1674
1675         dispatchFunctionsFromMainThread() holds a lock while iterating over the functions in
1676         functionQueue(), and during ths iteration, the previous callable object is destroyed by
1677         assigning the result of functionQueue().takeFirst(). Because lambdas (and other callables,
1678         like functors) can own objects, destroying this callable can have side effects, and if one
1679         of those side effects is to call callOnMainThread(), this can deadlock.
1680
1681         Move this side-effect-having call outside the locked block by clearing the function object
1682         immediately after calling it.
1683
1684         * wtf/MainThread.cpp:
1685         (WTF::dispatchFunctionsFromMainThread):
1686
1687 2016-06-29  Jer Noble  <jer.noble@apple.com>
1688
1689         Adopt MediaRemote.
1690         https://bugs.webkit.org/show_bug.cgi?id=159250
1691
1692         Reviewed by Eric Carlson.
1693
1694         Add USE_MEDIAREMOTE.
1695
1696         * wtf/Platform.h:
1697
1698 2016-06-28  Commit Queue  <commit-queue@webkit.org>
1699
1700         Unreviewed, rolling out r202580.
1701         https://bugs.webkit.org/show_bug.cgi?id=159245
1702
1703         Caused all WKTR tests to fail on GuardMalloc and Production
1704         only for unknown reasons, investigating offline. (Requested by
1705         brrian on #webkit).
1706
1707         Reverted changeset:
1708
1709         "RunLoop::Timer should use constructor templates instead of
1710         class templates"
1711         https://bugs.webkit.org/show_bug.cgi?id=159153
1712         http://trac.webkit.org/changeset/202580
1713
1714 2016-06-28  Brian Burg  <bburg@apple.com>
1715
1716         RunLoop::Timer should use constructor templates instead of class templates
1717         https://bugs.webkit.org/show_bug.cgi?id=159153
1718
1719         Reviewed by Alex Christensen.
1720
1721         Refactor RunLoop::Timer to align with WebCore::Timer. Use a constructor
1722         template instead of a class template. Store a bound std::function rather than
1723         a templated member and function. Add a constructor that takes a std::function.
1724
1725         * wtf/RunLoop.h:
1726         (WTF::RunLoop::Timer::Timer):
1727         (WTF::RunLoop::Timer::fired):
1728
1729 2016-06-28  Tomas Popela  <tpopela@redhat.com>
1730
1731         THUMB2 support not correctly detected on Fedora with GCC 6.1.
1732         https://bugs.webkit.org/show_bug.cgi?id=159083
1733
1734         Reviewed by Carlos Garcia Campos.
1735
1736         On Fedora 24 with GCC 6.1. the __thumb2__ and __thumb__ are not
1737         defined so the detection of THUMB2 support will fail. Look also
1738         whether the __ARM_ARCH_ISA_THUMB is defined to fix the THUMB2
1739         detection.
1740
1741         * wtf/Platform.h:
1742
1743 2016-06-27  Joseph Pecoraro  <pecoraro@apple.com>
1744
1745         Remove now unused WTF::findNextLineStart
1746         https://bugs.webkit.org/show_bug.cgi?id=159157
1747
1748         Reviewed by Mark Lam.
1749
1750         Unused after r202498.
1751
1752         * wtf/text/StringImpl.cpp:
1753         (WTF::StringImpl::findNextLineStart): Deleted.
1754         * wtf/text/StringImpl.h:
1755         (WTF::findNextLineStart): Deleted.
1756         * wtf/text/WTFString.h:
1757         (WTF::String::findNextLineStart): Deleted.
1758
1759 2016-06-21  Anders Carlsson  <andersca@apple.com>
1760
1761         Rename NoncopyableFunction to Function
1762         https://bugs.webkit.org/show_bug.cgi?id=158354
1763
1764         Reviewed by Chris Dumez.
1765
1766         * WTF.xcodeproj/project.pbxproj:
1767         * wtf/CrossThreadTask.h:
1768         (WTF::CrossThreadTask::CrossThreadTask):
1769         * wtf/Function.h: Renamed from Source/WTF/wtf/NoncopyableFunction.h.
1770         * wtf/FunctionDispatcher.h:
1771         * wtf/MainThread.cpp:
1772         (WTF::functionQueue):
1773         (WTF::dispatchFunctionsFromMainThread):
1774         (WTF::callOnMainThread):
1775         * wtf/MainThread.h:
1776         * wtf/RunLoop.cpp:
1777         (WTF::RunLoop::performWork):
1778         (WTF::RunLoop::dispatch):
1779         * wtf/RunLoop.h:
1780         * wtf/WorkQueue.h:
1781         * wtf/cocoa/WorkQueueCocoa.cpp:
1782         (WTF::WorkQueue::dispatch):
1783         (WTF::WorkQueue::dispatchAfter):
1784         * wtf/efl/DispatchQueueWorkItemEfl.h:
1785         (WorkItem::WorkItem):
1786         (TimerWorkItem::create):
1787         (TimerWorkItem::TimerWorkItem):
1788         * wtf/efl/WorkQueueEfl.cpp:
1789         (WTF::WorkQueue::dispatch):
1790         (WTF::WorkQueue::dispatchAfter):
1791         * wtf/generic/RunLoopGeneric.cpp:
1792         (WTF::RunLoop::TimerBase::ScheduledTask::create):
1793         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
1794         (WTF::RunLoop::dispatchAfter):
1795         * wtf/generic/WorkQueueGeneric.cpp:
1796         (WorkQueue::dispatch):
1797         (WorkQueue::dispatchAfter):
1798         * wtf/glib/RunLoopGLib.cpp:
1799         (WTF::DispatchAfterContext::DispatchAfterContext):
1800         (WTF::RunLoop::dispatchAfter):
1801         * wtf/win/WorkItemWin.cpp:
1802         (WTF::WorkItemWin::WorkItemWin):
1803         (WTF::WorkItemWin::create):
1804         (WTF::HandleWorkItem::HandleWorkItem):
1805         (WTF::HandleWorkItem::createByAdoptingHandle):
1806         * wtf/win/WorkItemWin.h:
1807         (WTF::WorkItemWin::function):
1808         * wtf/win/WorkQueueWin.cpp:
1809         (WTF::WorkQueue::dispatch):
1810         (WTF::WorkQueue::dispatchAfter):
1811
1812 2016-06-23  David Kilzer  <ddkilzer@apple.com>
1813
1814         REGRESSION (r202380): iOS 9.x internal builds are broken
1815
1816         Follow-up fix for: Enable window.open() for existing versions of Secret Society
1817         <https://webkit.org/b/159049>
1818         <rdar://problem/26528349>
1819
1820         * wtf/spi/darwin/dyldSPI.h: Define DYLD_IOS_VERSION_10_0 when
1821         building on internal SDKs older than iOS 10.
1822
1823 2016-06-23  John Wilander  <wilander@apple.com>
1824
1825         Enable window.open() for existing versions of Secret Society
1826         https://bugs.webkit.org/show_bug.cgi?id=159049
1827         <rdar://problem/26528349>
1828         
1829         Reviewed by Andy Estes.
1830
1831         The Secret Society Hidden Mystery app has a broken version check treating iOS 10
1832         as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
1833         handler. We should allow the existing versions of the app to do this to not break
1834         them.
1835
1836         * wtf/spi/darwin/dyldSPI.h:
1837             Added DYLD_IOS_VERSION_10_0.
1838
1839 2016-06-21  Said Abou-Hallawa  <sabouhallawa@apple,com>
1840
1841         Add system tracing points for requestAnimationFrame() workflow
1842         https://bugs.webkit.org/show_bug.cgi?id=158723
1843
1844         Reviewed by Simon Fraser.
1845
1846         Define new trace score codes for requestAnimationFrame().
1847
1848         * wtf/SystemTracing.h:
1849         (WTF::TracePoint):
1850         (WTF::TraceScope::TraceScope):
1851         (WTF::TraceScope::~TraceScope):
1852
1853 2016-06-20  Commit Queue  <commit-queue@webkit.org>
1854
1855         Unreviewed, rolling out r202136.
1856         https://bugs.webkit.org/show_bug.cgi?id=158932
1857
1858         JSBench wasn't regressed by r202002 and r202111 on iOS after
1859         all (Requested by rniwa_ on #webkit).
1860
1861         Reverted changeset:
1862
1863         "Unreviewed, rolling out r202002 and r202111."
1864         https://bugs.webkit.org/show_bug.cgi?id=158638
1865         http://trac.webkit.org/changeset/202136
1866
1867 2016-06-17  Chris Dumez  <cdumez@apple.com>
1868
1869         Optimize parseCacheHeader() by using StringView
1870         https://bugs.webkit.org/show_bug.cgi?id=158891
1871
1872         Reviewed by Darin Adler.
1873
1874         Add a StringView::find() overload which takes a CharacterMatchFunction
1875         to match the one on String.
1876
1877         * wtf/text/StringView.h:
1878         (WTF::StringView::find):
1879
1880 2016-06-17  Mark Lam  <mark.lam@apple.com>
1881
1882         OOM Assertion failure in JSON.stringify.
1883         https://bugs.webkit.org/show_bug.cgi?id=158794
1884         <rdar://problem/26826254>
1885
1886         Reviewed by Saam Barati.
1887
1888         The bug was actually in StringBuilder::appendQuotedJSONString() where it failed
1889         to detect an imminent unsigned int overflow.  The fix is to use Checked<unsigned>
1890         for the needed math, and RELEASE_ASSERT afterwards that we did not overflow.
1891
1892         I also added more assertions to detect sooner if any there are any problems with
1893         StringBuilder's m_buffer or m_length being incorrectly sized.  These assertions
1894         have been run on the JSC and layout tests without any issue.
1895
1896         * wtf/text/StringBuilder.cpp:
1897         (WTF::StringBuilder::resize):
1898         (WTF::StringBuilder::allocateBuffer):
1899         (WTF::StringBuilder::allocateBufferUpConvert):
1900         (WTF::StringBuilder::reallocateBuffer<LChar>):
1901         (WTF::StringBuilder::reallocateBuffer<UChar>):
1902         (WTF::StringBuilder::reserveCapacity):
1903         (WTF::StringBuilder::appendUninitializedSlow):
1904         (WTF::StringBuilder::append):
1905         (WTF::StringBuilder::appendQuotedJSONString):
1906         * wtf/text/StringBuilder.h:
1907         (WTF::StringBuilder::swap):
1908
1909 2016-06-14  Filip Pizlo  <fpizlo@apple.com>
1910
1911         Baseline JIT should be concurrent
1912         https://bugs.webkit.org/show_bug.cgi?id=158755
1913
1914         Reviewed by Geoffrey Garen.
1915         
1916         The concurrent baseline JIT needs to be able to clone bytecode to get a consistent snapshot.
1917         So, this adds such a method.
1918
1919         * wtf/RefCountedArray.h:
1920         (WTF::RefCountedArray::RefCountedArray):
1921         (WTF::RefCountedArray::clone):
1922
1923 2016-06-16  Chris Dumez  <cdumez@apple.com>
1924
1925         No need to ref connection in lambda inside NetworkResourceLoader::tryStoreAsCacheEntry()
1926         https://bugs.webkit.org/show_bug.cgi?id=158862
1927
1928         Reviewed by Darin Adler.
1929
1930         Add NoncopyableFunction constructor that takes a nullptr_t in, in order
1931         to match the std::function API and make porting from one to the other
1932         easier.
1933
1934         * wtf/NoncopyableFunction.h:
1935
1936 2016-06-16  Chris Dumez  <cdumez@apple.com>
1937
1938         Unreviewed, rolling out r202002 and r202111.
1939
1940         Ryosuke says this was a JSBench regression on iOS
1941
1942         Reverted changesets:
1943
1944         "Make HashMap and HashSet work with Refs"
1945         https://bugs.webkit.org/show_bug.cgi?id=158638
1946         http://trac.webkit.org/changeset/202002
1947
1948         "Improve HashMap and HashSet support for Ref"
1949         https://bugs.webkit.org/show_bug.cgi?id=158789
1950         http://trac.webkit.org/changeset/202111
1951
1952 2016-06-15  Chris Dumez  <cdumez@apple.com>
1953
1954         [Cocoa] Clean up / optimize ResourceResponse::platformLazyInit(InitLevel)
1955         https://bugs.webkit.org/show_bug.cgi?id=158809
1956
1957         Reviewed by Darin Adler.
1958
1959         Add toAtomicString() method to StringView to avoid having to call toString()
1960         and then atomizing the String at call sites.
1961
1962         * wtf/text/StringView.h:
1963         (WTF::StringView::toAtomicString):
1964
1965 2016-06-15  Sam Weinig  <sam@webkit.org>
1966
1967         Improve HashMap and HashSet support for Ref
1968         https://bugs.webkit.org/show_bug.cgi?id=158789
1969
1970         Reviewed by Chris Dumez.
1971
1972         Tests: Add more cases to WTF_HashMap.Ref_Key, WTF_HashMap.Ref_Value and WTF_HashSet.Ref
1973
1974         * wtf/HashMap.h:
1975         * wtf/HashSet.h:
1976         Add a MappedTakeType typedef and rework the take functions to use it and HashTraits::take(...).
1977
1978         * wtf/HashTraits.h:
1979         (WTF::GenericHashTraits::assignToEmpty):
1980         Move to GenericHashTraits rather than GenericHashTraitsBase, since it is not different
1981         between integral and non-integral HashTraits.
1982
1983         (WTF::GenericHashTraits::take):
1984         Add a trait function for take that defaults as a forward. This allows us to override take
1985         just like we do with get/peek.
1986
1987         (WTF::HashTraits<Ref<P>>::emptyValue):
1988         Remove unnecessary explicit construction.
1989
1990         (WTF::HashTraits<Ref<P>>::peek):
1991         Fix assertion that could happen if you did a HashMap.get() on an empty Ref value.
1992
1993         (WTF::HashTraits<Ref<P>>::take):
1994         Make the TakeType of a Ref<P> be Optional<Ref<P>>, to avoid having empty
1995         Refs returned from HashMap and HashSet. Implement an explicit take() function to
1996         construct one.
1997
1998         (WTF::HashTraits<Ref<P>>::customDeleteBucket): Deleted.
1999         Remove unnecessary customDeleteBucket implementation. Ref does not assign nullptr to
2000         it's m_ptr in destruction, so there is no dead store to avoid here.
2001
2002         * wtf/Ref.h:
2003         (WTF::Ref::ptrAllowingHashTableEmptyValue):
2004         Add HashTrait helper to allow getting the value of m_ptr even when it is null. This
2005         allows us to avoid a branch in HashTraits<Ref<P>>::peek().
2006
2007 2016-06-15  Konstantin Tokarev  <annulen@yandex.ru>
2008
2009         Only Mac port needs ObjC API for JSC
2010         https://bugs.webkit.org/show_bug.cgi?id=158780
2011
2012         Reviewed by Philippe Normand.
2013
2014         * wtf/FeatureDefines.h:
2015
2016 2016-06-15  Yusuke Suzuki  <utatane.tea@gmail.com>
2017
2018         Unreviewed, follow up patch for r202092
2019         https://bugs.webkit.org/show_bug.cgi?id=158661
2020
2021         During checking Windows port on EWS, accidentally introduce the regression.
2022
2023         * wtf/Platform.h:
2024
2025 2016-06-15  Yusuke Suzuki  <utatane.tea@gmail.com>
2026
2027         [JSC] Move calling convention flags to WTF
2028         https://bugs.webkit.org/show_bug.cgi?id=158661
2029
2030         Reviewed by Keith Miller.
2031
2032         * wtf/Platform.h:
2033
2034 2016-06-14  Myles C. Maxfield  <mmaxfield@apple.com>
2035
2036         Honor bidi unicode codepoints
2037         https://bugs.webkit.org/show_bug.cgi?id=149170
2038         <rdar://problem/26527378>
2039
2040         Reviewed by Simon Fraser.
2041
2042         * wtf/unicode/CharacterNames.h:
2043
2044 2016-06-14  Commit Queue  <commit-queue@webkit.org>
2045
2046         Unreviewed, rolling out r202057.
2047         https://bugs.webkit.org/show_bug.cgi?id=158749
2048
2049         This change broke the Windows build. (Requested by ryanhaddad
2050         on #webkit).
2051
2052         Reverted changeset:
2053
2054         "Honor bidi unicode codepoints"
2055         https://bugs.webkit.org/show_bug.cgi?id=149170
2056         http://trac.webkit.org/changeset/202057
2057
2058 2016-06-14  Myles C. Maxfield  <mmaxfield@apple.com>
2059
2060         Honor bidi unicode codepoints
2061         https://bugs.webkit.org/show_bug.cgi?id=149170
2062         <rdar://problem/26527378>
2063
2064         Reviewed by Simon Fraser.
2065
2066         * wtf/unicode/CharacterNames.h:
2067
2068 2016-06-13  Alex Christensen  <achristensen@webkit.org>
2069
2070         Add WebSocketProvider stub
2071         https://bugs.webkit.org/show_bug.cgi?id=158702
2072
2073         Reviewed by Brady Eidson.
2074
2075         * wtf/UniqueRef.h:
2076         (WTF::UniqueRef::operator->):
2077         (WTF::UniqueRef::operator T&):
2078         (WTF::UniqueRef::operator const T&):
2079         Added operator T& to avoid unneeded .get() calls.
2080
2081 2016-06-13  Sam Weinig  <sam@webkit.org>
2082
2083         Make HashMap and HashSet work with Refs
2084         https://bugs.webkit.org/show_bug.cgi?id=158638
2085
2086         Reviewed by Darin Adler.
2087
2088         * wtf/GetPtr.h:
2089         Move HashTableDeletedValueType and HashTableEmptyValueType here, as they are now shared
2090         by more than one smart pointer. This file should probably be renamed to something else
2091         at some point to indicate that it contains helpers for pointer and ref related functionality.
2092
2093         * wtf/HashFunctions.h:
2094         Add a DefaultHash for Refs. Customize the PtrHash to indicate that it is not safe to compare
2095         to empty or deleted Refs.
2096
2097         * wtf/HashMap.h:
2098         (WTF::HashMapTranslator::equal):
2099         (WTF::HashMapTranslator::translate):
2100         (WTF::HashMapEnsureTranslator::equal):
2101         (WTF::HashMapEnsureTranslator::translate):
2102         * wtf/HashSet.h:
2103         (WTF::IdentityExtractor::extract):
2104         (WTF::HashSetTranslator::hash):
2105         (WTF::HashSetTranslator::equal):
2106         (WTF::HashSetTranslator::translate):
2107         * wtf/HashTable.h:
2108         (WTF::IdentityHashTranslator::hash):
2109         (WTF::IdentityHashTranslator::equal):
2110         (WTF::IdentityHashTranslator::translate):
2111         Use the new assignToEmpty trait function to allow uninitialized Ref's to be safely assigned to.
2112
2113         * wtf/HashTraits.h:
2114         (WTF::HashTraits<Ref<P>>::emptyValue):
2115         (WTF::HashTraits<Ref<P>>::isEmptyValue):
2116         (WTF::HashTraits<Ref<P>>::assignToEmpty):
2117         (WTF::HashTraits<Ref<P>>::peek):
2118         (WTF::HashTraits<Ref<P>>::customDeleteBucket):
2119         Add custom HashTraits for Ref. Also, introduce a new trait function, assignToEmpty, for use
2120         in translation assignments. This is necessary since the default assignment operator for Ref
2121         will not allow assignment to the empty Ref, which we need to do here.
2122
2123         * wtf/Ref.h:
2124         (WTF::Ref::operator=):
2125         (WTF::Ref::Ref):
2126         (WTF::Ref::isHashTableDeletedValue):
2127         (WTF::Ref::hashTableDeletedValue):
2128         (WTF::Ref::isHashTableEmptyValue):
2129         (WTF::Ref::hashTableEmptyValue):
2130         Add explicit constructors/predicates for making deleted/empty Refs.
2131
2132         (WTF::Ref::assignToHashTableEmptyValue):
2133         Add a special function that allows assignment to an empty Ref, which the
2134         assignment operator does not.
2135         
2136         (WTF::IsSmartPtr):
2137         Add an IsSmartPtr override to indicate that Ref is a smart pointer.
2138
2139         * wtf/RefPtr.h:
2140         Move HashTableDeletedValueType to GetPtr.h.
2141
2142 2016-06-13  Fujii Hironori  <Hironori.Fujii@sony.com>
2143
2144         Stack overflow at RefPtr::release on Windows port since r201782
2145         https://bugs.webkit.org/show_bug.cgi?id=158687
2146
2147         Reviewed by Chris Dumez.
2148
2149         RefPtr::release calls RefPtr::RefPtr, and RefPtr::RefPtr calls
2150         RefPtr::release.
2151
2152         RefPtr::RefPtr does not need to call RefPtr::release.
2153
2154         * wtf/RefPtr.h:
2155         (WTF::RefPtr::RefPtr): Do not call RefPtr::release.
2156
2157 2016-06-11  Myles C. Maxfield  <mmaxfield@apple.com>
2158
2159         Addressing post-review comments after r201978.
2160         https://bugs.webkit.org/show_bug.cgi?id=158649
2161         <rdar://problem/13258122>
2162
2163         Unreviewed.
2164
2165         * wtf/text/StringCommon.h:
2166         (WTF::equal):
2167         (WTF::naiveEqualWithoutPerformingUnicodeNormalization): Deleted.
2168
2169 2016-06-11  Myles C. Maxfield  <mmaxfield@apple.com>
2170
2171         [Cocoa] Map commonly used Chinese Windows font names to names present on Cocoa operating systems
2172         https://bugs.webkit.org/show_bug.cgi?id=158649
2173         <rdar://problem/13258122>
2174
2175         Reviewed by Darin Adler.
2176
2177         * wtf/text/StringCommon.h:
2178         (WTF::naiveEqualWithoutPerformingUnicodeNormalization): Added.
2179
2180 2016-06-11  Chris Dumez  <cdumez@apple.com>
2181
2182         WorkerNavigator is missing some attributes
2183         https://bugs.webkit.org/show_bug.cgi?id=158593
2184         <rdar://problem/26731334>
2185
2186         Reviewed by Darin Adler.
2187
2188         * wtf/PlatformUserPreferredLanguages.h:
2189         * wtf/PlatformUserPreferredLanguagesWin.cpp:
2190         (WTF::platformLanguage):
2191         (WTF::platformUserPreferredLanguages):
2192
2193         Make platformUserPreferredLanguages() thread safe on Windows. The
2194         Mac and Unix implementations are already thread-safe.
2195
2196         HAS_FASTCALL_CALLING_CONVENTION is changed to COMPILER_SUPPORTS(FASTCALL_CALLING_CONVENTION).
2197
2198 2016-06-10  Alex Christensen  <achristensen@webkit.org>
2199
2200         Introduce WTF::UniqueRef
2201         https://bugs.webkit.org/show_bug.cgi?id=158596
2202
2203         Reviewed by Brady Eidson.
2204
2205         WTF::UniqueRef is like a std::unique_ptr that is guaranteed to be non-null.
2206         std::make_unique returns a non-null value that is put into a std::unique_ptr, a type
2207         that could contain null values.  To be able to pass such values around and store them
2208         without wondering if they are null, we now have WTF::UniqueRef which cannot be null.
2209
2210         * WTF.xcodeproj/project.pbxproj:
2211         * wtf/CMakeLists.txt:
2212         * wtf/UniqueRef.h: Added.
2213         (WTF::makeUniqueRef):
2214         (WTF::UniqueRef::UniqueRef):
2215         (WTF::UniqueRef::get):
2216         (WTF::UniqueRef::operator&):
2217         (WTF::UniqueRef::operator->):
2218
2219 2016-06-09  Brady Eidson  <beidson@apple.com>
2220
2221         Unaddressed review feedback from r201872
2222
2223         * wtf/CrossThreadTask.h:
2224         (WTF::callFunctionForCrossThreadTask): Fix typo.
2225
2226 2016-06-09  Brady Eidson  <beidson@apple.com>
2227
2228         Greatly simplify CrossThreadTask.h.
2229         https://bugs.webkit.org/show_bug.cgi?id=158542
2230
2231         Reviewed by Darin Adler.
2232
2233         * wtf/CrossThreadTask.h:
2234         (WTF::crossThreadCopy):
2235         (WTF::callFunctionForCrossThreadTaskImpl):
2236         (WTF::callFunctionForCrossThreadTask):
2237         (WTF::createCrossThreadTask):
2238         (WTF::callMemberFunctionForCrossThreadTaskImpl):
2239         (WTF::callMemberFunctionForCrossThreadTask):
2240
2241 2016-06-08  Brady Eidson  <beidson@apple.com>
2242
2243         Make CrossThreadCopier more efficient (fewer copies!).
2244         https://bugs.webkit.org/show_bug.cgi?id=158456
2245
2246         Reviewed by Alex Christensen.
2247
2248         Previously, we'd run all arguments through CrossThreadCopier, then immediately make
2249         an unnecessary copy of the result during lambda capture.
2250
2251         Instead, we should just put the CrossThreadCopier generated objects directly in lambdas,
2252         which are then captured by NoncopyableFunctions.
2253
2254         This reduces the number of constructor calls per argument from 2 copies to 1 move.
2255
2256         * wtf/CrossThreadTask.h:
2257         (WTF::CrossThreadTask::CrossThreadTask):
2258         (WTF::createCrossThreadTask):
2259
2260 2016-06-07  Filip Pizlo  <fpizlo@apple.com>
2261
2262         Implement Air::allocateStack() in ES6 to see how much of a bad idea that is
2263         https://bugs.webkit.org/show_bug.cgi?id=158318
2264
2265         Reviewed by Saam Barati.
2266
2267         * wtf/Insertion.h:
2268         (WTF::executeInsertions): I found a bug while rewriting this code in JS.
2269         * wtf/PrintStream.h:
2270         (WTF::PrintStream::print):
2271         (WTF::PrintStream::println): This is useful to have.
2272
2273 2016-06-07  Keith Rollin  <krollin@apple.com>
2274
2275         Remove all uses of PassRefPtr in WTF
2276         https://bugs.webkit.org/show_bug.cgi?id=157596
2277         <rdar://problem/26234391>
2278
2279         Reviewed by Chris Dumez.
2280
2281         Remove/update most interfaces that take or return PassRefPtrs.
2282         Remaining references include those in non-Cocoa implementations and
2283         those required for continued compatibility with modules that still use
2284         PassRefPtrs (specifically: Forward.h, RefPtr interoperability,
2285         SizeLimits.h, WorkQueue (Windows) DispatchQueueEfl,
2286         DispatchWorkItemEfl, and PassRefPtr itself).
2287
2288         Update calls to interfaces that no longer take or return PassRefPtrs.
2289
2290         Update adoptRef(T*) to return a RefPtr instead of a PassRefPtr and
2291         move it to RefPtr.h from PassRefPtr.h.
2292
2293         * wtf/MetaAllocator.cpp:
2294         (WTF::MetaAllocator::allocate):
2295         * wtf/MetaAllocator.h:
2296         * wtf/ParallelJobsGeneric.h:
2297         (WTF::ParallelEnvironment::ThreadPrivate::create):
2298         * wtf/text/AtomicStringImpl.cpp:
2299         (WTF::HashAndUTF8CharactersTranslator::translate):
2300         (WTF::SubstringTranslator::translate):
2301         * wtf/text/CString.cpp:
2302         (WTF::CStringBuffer::createUninitialized):
2303         * wtf/text/CString.h:
2304         * wtf/text/StringBuilder.cpp:
2305         (WTF::StringBuilder::reifyString):
2306         (WTF::StringBuilder::resize):
2307         (WTF::StringBuilder::reallocateBuffer<LChar>):
2308         (WTF::StringBuilder::reallocateBuffer<UChar>):
2309         * wtf/text/StringImpl.cpp:
2310         (WTF::StringImpl::reallocateInternal):
2311         (WTF::StringImpl::reallocate):
2312         (WTF::StringImpl::create8BitIfPossible):
2313         (WTF::StringImpl::createSymbol):
2314         (WTF::StringImpl::createNullSymbol):
2315         (WTF::StringImpl::convertToLowercaseWithoutLocale):
2316         (WTF::StringImpl::convertToUppercaseWithoutLocale):
2317         (WTF::StringImpl::convertToLowercaseWithLocale):
2318         (WTF::StringImpl::convertToUppercaseWithLocale):
2319         (WTF::StringImpl::convertASCIICase):
2320         * wtf/text/StringImpl.h:
2321         (WTF::StringImpl::StringImpl):
2322         (WTF::StringImpl::createSubstringSharingImpl):
2323         (WTF::StringImpl::tryCreateUninitialized):
2324         (WTF::StringImpl::extractFoldedStringInSymbol):
2325         * wtf/text/SymbolRegistry.cpp:
2326         (WTF::SymbolRegistry::symbolForKey):
2327         * wtf/text/WTFString.cpp:
2328         (WTF::String::substringSharingImpl):
2329         * wtf/text/WTFString.h:
2330         (WTF::String::String): Deleted.
2331         * wtf/text/cf/StringImplCF.cpp:
2332
2333 2016-06-07  Yusuke Suzuki  <utatane.tea@gmail.com>
2334
2335         [JSC] Do not allocate unnecessary UTF-8 string for encodeXXX functions
2336         https://bugs.webkit.org/show_bug.cgi?id=158416
2337
2338         Reviewed by Darin Adler and Geoffrey Garen.
2339
2340         * wtf/Bitmap.h:
2341         (WTF::Bitmap::size):
2342         (WTF::WordType>::Bitmap):
2343         (WTF::WordType>::get):
2344         (WTF::WordType>::set):
2345         (WTF::WordType>::testAndSet):
2346         (WTF::WordType>::testAndClear):
2347         (WTF::WordType>::concurrentTestAndSet):
2348         (WTF::WordType>::concurrentTestAndClear):
2349         (WTF::WordType>::clear):
2350         (WTF::WordType>::clearAll):
2351         (WTF::WordType>::nextPossiblyUnset):
2352         (WTF::WordType>::findRunOfZeros):
2353         (WTF::WordType>::count):
2354         (WTF::WordType>::isEmpty):
2355         (WTF::WordType>::isFull):
2356
2357 2016-06-06  Saam Barati  <sbarati@apple.com>
2358
2359         equal(StringView, StringView) for strings should have a fast path for pointer equality
2360         https://bugs.webkit.org/show_bug.cgi?id=158452
2361
2362         Reviewed by Andreas Kling.
2363
2364         JSBench does a lot of StringView::operator== on StringViews that have
2365         the same underlying characters pointer. This becomes hot inside JSBench
2366         because JSBench heavily stresses JSC's UnlinkedCodeCache with a high
2367         hit rate. This means that when we get a hit in the cache, we used to
2368         do the long form of string compare. However, we were often comparing
2369         two StringViews that had the same underlying buffer and length.
2370         This patch speeds this case up to run in constant time instead of
2371         linear time.
2372
2373         * wtf/text/StringCommon.h:
2374         (WTF::equalCommon):
2375         * wtf/text/StringImpl.h:
2376         (WTF::StringImpl::StringImpl):
2377         (WTF::StringImpl::data):
2378         * wtf/text/StringView.h:
2379         (WTF::StringView::data):
2380
2381 2016-06-04  Anders Carlsson  <andersca@apple.com>
2382
2383         Get rid of WorkItemWin
2384         https://bugs.webkit.org/show_bug.cgi?id=158381
2385
2386         Reviewed by Sam Weinig.
2387
2388         * wtf/PlatformWin.cmake:
2389         * wtf/WorkQueue.h:
2390         * wtf/win/WorkItemWin.cpp: Removed.
2391         (WTF::WorkItemWin::WorkItemWin): Deleted.
2392         (WTF::WorkItemWin::create): Deleted.
2393         (WTF::WorkItemWin::~WorkItemWin): Deleted.
2394         * wtf/win/WorkItemWin.h: Removed.
2395         (WTF::WorkItemWin::function): Deleted.
2396         (WTF::WorkItemWin::queue): Deleted.
2397         * wtf/win/WorkQueueWin.cpp:
2398         (WTF::WorkQueue::performWorkOnRegisteredWorkThread):
2399         (WTF::WorkQueue::dispatch):
2400
2401 2016-06-03  Anders Carlsson  <andersca@apple.com>
2402
2403         Get rid of HANDLE registration code in WorkQueueWin
2404         https://bugs.webkit.org/show_bug.cgi?id=158375
2405
2406         Reviewed by Darin Adler.
2407
2408         * wtf/WorkQueue.h:
2409         * wtf/win/WorkItemWin.cpp:
2410         (WTF::HandleWorkItem::HandleWorkItem): Deleted.
2411         (WTF::HandleWorkItem::createByAdoptingHandle): Deleted.
2412         (WTF::HandleWorkItem::~HandleWorkItem): Deleted.
2413         * wtf/win/WorkItemWin.h:
2414         (WTF::HandleWorkItem::setWaitHandle): Deleted.
2415         (WTF::HandleWorkItem::waitHandle): Deleted.
2416         * wtf/win/WorkQueueWin.cpp:
2417         (WTF::WorkQueue::handleCallback): Deleted.
2418         (WTF::WorkQueue::platformInvalidate): Deleted.
2419         (WTF::WorkQueue::unregisterWaitAndDestroyItemSoon): Deleted.
2420         (WTF::WorkQueue::unregisterWaitAndDestroyItemCallback): Deleted.
2421
2422 2016-06-03  Commit Queue  <commit-queue@webkit.org>
2423
2424         Unreviewed, rolling out r201663.
2425         https://bugs.webkit.org/show_bug.cgi?id=158374
2426
2427         Broke the Windows build (Requested by andersca on #webkit).
2428
2429         Reverted changeset:
2430
2431         "Rename NoncopyableFunction to Function"
2432         https://bugs.webkit.org/show_bug.cgi?id=158354
2433         http://trac.webkit.org/changeset/201663
2434
2435 2016-06-03  Anders Carlsson  <andersca@apple.com>
2436
2437         Rename NoncopyableFunction to Function
2438         https://bugs.webkit.org/show_bug.cgi?id=158354
2439
2440         Reviewed by Chris Dumez.
2441
2442         * WTF.xcodeproj/project.pbxproj:
2443         * wtf/CrossThreadTask.h:
2444         (WTF::CrossThreadTask::CrossThreadTask):
2445         * wtf/Function.h: Renamed from Source/WTF/wtf/NoncopyableFunction.h.
2446         * wtf/FunctionDispatcher.h:
2447         * wtf/MainThread.cpp:
2448         (WTF::functionQueue):
2449         (WTF::dispatchFunctionsFromMainThread):
2450         (WTF::callOnMainThread):
2451         * wtf/MainThread.h:
2452         * wtf/RunLoop.cpp:
2453         (WTF::RunLoop::performWork):
2454         (WTF::RunLoop::dispatch):
2455         * wtf/RunLoop.h:
2456         * wtf/WorkQueue.h:
2457         * wtf/cocoa/WorkQueueCocoa.cpp:
2458         (WTF::WorkQueue::dispatch):
2459         (WTF::WorkQueue::dispatchAfter):
2460         * wtf/efl/DispatchQueueWorkItemEfl.h:
2461         (WorkItem::WorkItem):
2462         (TimerWorkItem::create):
2463         (TimerWorkItem::TimerWorkItem):
2464         * wtf/efl/WorkQueueEfl.cpp:
2465         (WTF::WorkQueue::dispatch):
2466         (WTF::WorkQueue::dispatchAfter):
2467         * wtf/generic/RunLoopGeneric.cpp:
2468         (WTF::RunLoop::TimerBase::ScheduledTask::create):
2469         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
2470         (WTF::RunLoop::dispatchAfter):
2471         * wtf/generic/WorkQueueGeneric.cpp:
2472         (WorkQueue::dispatch):
2473         (WorkQueue::dispatchAfter):
2474         * wtf/glib/RunLoopGLib.cpp:
2475         (WTF::DispatchAfterContext::DispatchAfterContext):
2476         (WTF::RunLoop::dispatchAfter):
2477         * wtf/win/WorkItemWin.cpp:
2478         (WTF::WorkItemWin::WorkItemWin):
2479         (WTF::WorkItemWin::create):
2480         (WTF::HandleWorkItem::HandleWorkItem):
2481         (WTF::HandleWorkItem::createByAdoptingHandle):
2482         * wtf/win/WorkItemWin.h:
2483         (WTF::WorkItemWin::function):
2484         * wtf/win/WorkQueueWin.cpp:
2485         (WTF::WorkQueue::dispatch):
2486         (WTF::WorkQueue::dispatchAfter):
2487
2488 2016-06-03  Mark Lam  <mark.lam@apple.com>
2489
2490         Clean up how StackVisitor dumps its frames.
2491         https://bugs.webkit.org/show_bug.cgi?id=158316
2492
2493         Reviewed by Keith Miller.
2494
2495         Added an Indenter class what works with dataLog.
2496
2497         * WTF.xcodeproj/project.pbxproj:
2498         * wtf/Indenter.h: Added.
2499         (WTF::Indenter::Indenter):
2500         (WTF::Indenter::dump):
2501         (WTF::Indenter::operator++):
2502         (WTF::Indenter::operator--):
2503
2504 2016-06-02  Said Abou-Hallawa  <sabouhallawa@apple,com>
2505
2506         [iOS] PDFDocumentImage should not create a cached image larger than 4M pixels
2507         https://bugs.webkit.org/show_bug.cgi?id=157857
2508
2509         Reviewed by Darin Adler.
2510
2511         * wtf/StdLibExtras.h: Add a constant value for GB (2^30).
2512
2513 2016-06-02  Oliver Hunt  <oliver@apple.com>
2514
2515         JS parser incorrectly handles invalid utf8 in error messages.
2516         https://bugs.webkit.org/show_bug.cgi?id=158128
2517
2518         Reviewed by Saam Barati.
2519
2520         Add a new toStringWithLatin1Fallback that simply uses
2521         String::fromUTF8WithLatin1Fallback, so we can avoid the
2522         standard String::fromUTF8 null return.
2523
2524         * wtf/StringPrintStream.cpp:
2525         (WTF::StringPrintStream::toStringWithLatin1Fallback):
2526         * wtf/StringPrintStream.h:
2527
2528 2016-06-02  Keith Miller  <keith_miller@apple.com>
2529
2530         Unreviewed, reland r201532. The associated regressions have been fixed
2531         by r201584.
2532
2533 2016-06-02  Filip Pizlo  <fpizlo@apple.com>
2534
2535         Use "= delete" for Locker(int) 
2536
2537         Rubber stamped by Saam Barati.
2538         
2539         See discussion: https://bugs.webkit.org/show_bug.cgi?id=158306#c8
2540
2541         * wtf/Locker.h:
2542         (WTF::Locker::Locker):
2543         (WTF::Locker::~Locker):
2544
2545 2016-06-02  Filip Pizlo  <fpizlo@apple.com>
2546
2547         Make it harder to accidentally pass an integer to a locker.
2548
2549         Rubber stamped by Keith Miller.
2550         
2551         See here for the discussion: https://bugs.webkit.org/show_bug.cgi?id=158306#c3
2552
2553         * wtf/Locker.h:
2554         (WTF::Locker::Locker):
2555         (WTF::Locker::~Locker):
2556
2557 2016-06-02  Filip Pizlo  <fpizlo@apple.com>
2558
2559         Make it easier to use NoLockingNecessary
2560         https://bugs.webkit.org/show_bug.cgi?id=158306
2561
2562         Reviewed by Keith Miller.
2563         
2564         An idiom that we borrowed from LLVM is that if a function requires a lock to be held, we
2565         have it take a const Locker& as its first argument. This may not communicate which lock is
2566         to be held, but it does help us to remember that some lock must be held. So far, it's been
2567         relatively easy to then figure out which lock. We've had bugs where we forgot to hold a
2568         lock but I don't remember the last time we had a bug where we grabbed the wrong lock.
2569         
2570         But sometimes, we know at the point where we call such a method that we actually don't
2571         need to hold any lock. This usually happens during object construction. If we're
2572         constructing some object then we usually know that we have not escaped it yet, so we don't
2573         need to waste time acquiring its lock. We could solve this by having a separate set of
2574         methods that don't do or require locking. This would be cumbersome, since usually for
2575         every variant that takes const Locker&, there is already one that doesn't, and that one
2576         will grab the lock for you. So this means having a third variant, that also doesn't take a
2577         const Locker&, but does no locking. That's pretty weird.
2578         
2579         So, we introduced NoLockingNecessary for situations like this. The idiom went like so:
2580         
2581             Locker<Whatever> locker(Locker<Whatever>::NoLockingNecessary)
2582             stuff->foo(locker);
2583         
2584         Usually though, there would be some distance between where the locker is defined and where
2585         it's used, so when you just look at stuff->foo(locker) in isolation you don't know if this
2586         is a real locker or a NoLockingNecessary cast. Also, requiring two lines for this just
2587         adds code.
2588         
2589         This change makes this easier. Now you can just do:
2590         
2591             stuff->foo(NoLockingNecessary).
2592         
2593         This is because NoLockingNecessary has been pulled out into the WTF namespace (and is
2594         usinged from the global namespace) and the Locker<> constructor that takes
2595         NoLockingNecessaryTag is now implicit.
2596         
2597         The only possible downside of this change is that people might use this idiom more
2598         frequently now that it's easier to use. I don't think that's a bad thing. I'm now
2599         convinced that this is not a bad idiom. When I was fixing an unrelated bug, I almost went
2600         the way of adding more locking to some core JSC data structures, and in the process, I
2601         needed to use NoLockingNecessary. It's clear that this is a general-purpose idiom and we
2602         should not impose artificial constraints on its use.
2603
2604         * wtf/Locker.h:
2605         (WTF::Locker::Locker):
2606         (WTF::Locker::~Locker):
2607
2608 2016-06-01  Brady Eidson  <beidson@apple.com>
2609
2610         Get rid of StringCapture.
2611         https://bugs.webkit.org/show_bug.cgi?id=158285
2612
2613         Reviewed by Chris Dumez.
2614
2615         * wtf/text/WTFString.h:
2616         (WTF::StringCapture::StringCapture): Deleted.
2617         (WTF::StringCapture::string): Deleted.
2618         (WTF::StringCapture::releaseString): Deleted.
2619         (WTF::StringCapture::operator=): Deleted.
2620
2621 2016-06-01  Benjamin Poulain  <bpoulain@apple.com>
2622
2623         [JSC] Some setters for components of Date do not timeClip() their result
2624         https://bugs.webkit.org/show_bug.cgi?id=158278
2625
2626         Unreviewed.
2627
2628         * wtf/DateMath.cpp:
2629         (WTF::equivalentYearForDST): Deleted.
2630         The assertion is bogus.
2631         As the comments above explains, the function is completely wrong for years
2632         outside [1900-2100].
2633         The tests passing large values for years are failing (year <= maxYear).
2634         The weird NaN test is a mystery. The old changelog does not explain it.
2635
2636 2016-05-31  Commit Queue  <commit-queue@webkit.org>
2637
2638         Unreviewed, rolling out r201363 and r201456.
2639         https://bugs.webkit.org/show_bug.cgi?id=158240
2640
2641         "40% regression on date-format-xparb" (Requested by
2642         keith_miller on #webkit).
2643
2644         Reverted changesets:
2645
2646         "LLInt should be able to cache prototype loads for values in
2647         GetById"
2648         https://bugs.webkit.org/show_bug.cgi?id=158032
2649         http://trac.webkit.org/changeset/201363
2650
2651         "get_by_id should support caching unset properties in the
2652         LLInt"
2653         https://bugs.webkit.org/show_bug.cgi?id=158136
2654         http://trac.webkit.org/changeset/201456
2655
2656 2016-05-31  Brady Eidson  <beidson@apple.com>
2657
2658         Make createCrossThreadTask() functions return on the stack instead of the heap.
2659         https://bugs.webkit.org/show_bug.cgi?id=158215
2660
2661         Reviewed by Darin Adler.
2662
2663         * WTF.xcodeproj/project.pbxproj:
2664
2665         * wtf/CrossThreadCopier.cpp:
2666
2667         * wtf/CrossThreadQueue.h: Added. A lightweight of MessageQueue that deals directly
2668           in objects instead of in std::unique_ptrs.
2669         (WTF::CrossThreadQueue::isKilled):
2670         (WTF::CrossThreadQueue<DataType>::append):
2671         (WTF::CrossThreadQueue<DataType>::waitForMessage):
2672         (WTF::CrossThreadQueue<DataType>::tryGetMessage):
2673
2674         * wtf/CrossThreadTask.h:
2675         (WTF::createCrossThreadTask):
2676         (WTF::CrossThreadTask::CrossThreadTask): Deleted.
2677
2678 2016-05-30  Brady Eidson  <beidson@apple.com>
2679
2680         Move CrossThreadCopier/CrossThreadTask to WTF.
2681         https://bugs.webkit.org/show_bug.cgi?id=158207
2682
2683         Reviewed by Alex Christensen.
2684
2685         * WTF.xcodeproj/project.pbxproj:
2686         * wtf/CMakeLists.txt:
2687
2688         * wtf/CrossThreadCopier.cpp: Renamed from Source/WebCore/platform/CrossThreadCopier.cpp.
2689         * wtf/CrossThreadCopier.h: Renamed from Source/WebCore/platform/CrossThreadCopier.h.
2690         (WTF::CrossThreadCopierPassThrough::copy):
2691         
2692         * wtf/CrossThreadTask.h: Renamed from Source/WebCore/platform/CrossThreadTask.h.
2693         (WTF::CrossThreadTask::CrossThreadTask):
2694         (WTF::CrossThreadTask::performTask):
2695         (WTF::createCrossThreadTask):
2696
2697 2016-05-28  Chris Dumez  <cdumez@apple.com>
2698
2699         Templatize NoncopyableFunction class similarly to std::function
2700         https://bugs.webkit.org/show_bug.cgi?id=158185
2701
2702         Reviewed by Darin Adler.
2703
2704         Templatize NoncopyableFunction class similarly to std::function, so
2705         that it can be used as a std::function replacement in more places.
2706
2707         Previously, NoncopyableFunction could only support "void()" lambdas.
2708
2709         * wtf/FunctionDispatcher.h:
2710         * wtf/MainThread.cpp:
2711         (WTF::functionQueue):
2712         (WTF::dispatchFunctionsFromMainThread):
2713         (WTF::callOnMainThread):
2714         * wtf/MainThread.h:
2715         * wtf/NoncopyableFunction.h:
2716         * wtf/RunLoop.cpp:
2717         (WTF::RunLoop::performWork):
2718         (WTF::RunLoop::dispatch):
2719         * wtf/RunLoop.h:
2720         * wtf/WorkQueue.h:
2721         * wtf/cocoa/WorkQueueCocoa.cpp:
2722         (WTF::WorkQueue::dispatch):
2723         (WTF::WorkQueue::dispatchAfter):
2724         * wtf/efl/DispatchQueueWorkItemEfl.h:
2725         (WorkItem::WorkItem):
2726         (TimerWorkItem::create):
2727         (TimerWorkItem::TimerWorkItem):
2728         * wtf/efl/WorkQueueEfl.cpp:
2729         (WTF::WorkQueue::dispatch):
2730         (WTF::WorkQueue::dispatchAfter):
2731         * wtf/generic/RunLoopGeneric.cpp:
2732         (WTF::RunLoop::TimerBase::ScheduledTask::create):
2733         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
2734         (WTF::RunLoop::dispatchAfter):
2735         * wtf/generic/WorkQueueGeneric.cpp:
2736         (WorkQueue::dispatch):
2737         (WorkQueue::dispatchAfter):
2738         * wtf/glib/RunLoopGLib.cpp:
2739         (WTF::DispatchAfterContext::DispatchAfterContext):
2740         (WTF::RunLoop::dispatchAfter):
2741         * wtf/win/WorkItemWin.cpp:
2742         (WTF::WorkItemWin::WorkItemWin):
2743         (WTF::WorkItemWin::create):
2744         (WTF::HandleWorkItem::HandleWorkItem):
2745         (WTF::HandleWorkItem::createByAdoptingHandle):
2746         * wtf/win/WorkItemWin.h:
2747         (WTF::WorkItemWin::function):
2748         * wtf/win/WorkQueueWin.cpp:
2749         (WTF::WorkQueue::dispatch):
2750         (WTF::WorkQueue::dispatchAfter):
2751
2752 2016-05-28  Dan Bernstein  <mitz@apple.com>
2753
2754         Build fix for projects that include MainThread.h without including FastMalloc.h.
2755
2756         * wtf/NoncopyableFunction.h: Include FastMalloc.h from here.
2757
2758 2016-05-27  Chris Dumez  <cdumez@apple.com>
2759
2760         callOnMainThread() should not copy captured lambda variables
2761         https://bugs.webkit.org/show_bug.cgi?id=158166
2762
2763         Reviewed by Brady Eidson.
2764
2765         callOnMainThread() should not copy captured lambda variables. This
2766         function is usually called cross-thread with a lambda and copying
2767         the lambda (and its captured variables) can lead to thread-safety
2768         issues.
2769
2770         This patch updates callOnMainThread() to take a NoncopyableFunction&&
2771         in parameter instead of a std::function. The call sites of
2772         callOnMainThread() have also been updated to use C++14's lambda
2773         capture with initializer.
2774
2775         * WTF.xcodeproj/project.pbxproj:
2776
2777         * wtf/FunctionDispatcher.h:
2778         * wtf/NoncopyableFunction.h:
2779         - Moved NoncopyableFunction from FunctionDispatcher.h to
2780           NoncopyableFunction.h.
2781         - Add a new operator=(nullptr_t) operator to NoncopyableFunction to
2782           match std::function, as one of the call sites needed it.
2783
2784         * wtf/MainThread.cpp:
2785         (WTF::functionQueue):
2786         (WTF::dispatchFunctionsFromMainThread):
2787         (WTF::callOnMainThread):
2788         * wtf/MainThread.h:
2789
2790 2016-05-27  Yusuke Suzuki  <utatane.tea@gmail.com>
2791
2792         Unreviewed, build fix for JSCOnly port.
2793         https://bugs.webkit.org/show_bug.cgi?id=158111
2794
2795         Use NoncopyableFunction instead of std::function<>.
2796
2797         * wtf/generic/RunLoopGeneric.cpp:
2798         (WTF::RunLoop::TimerBase::ScheduledTask::create):
2799         (WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
2800
2801 2016-05-27  Chris Dumez  <cdumez@apple.com>
2802
2803         WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables
2804         https://bugs.webkit.org/show_bug.cgi?id=158111
2805
2806         Reviewed by Darin Adler.
2807
2808         WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables.
2809         These are often used cross-thread and copying the captured lambda variables can be
2810         dangerous (e.g. we do not want to copy a String after calling isolatedCopy() upon
2811         capture).
2812
2813         This patch introduces a new NoncopyableFunction type that behaves similarly to
2814         std::function but guarantees that the passed-in lambda (and its captured variables)
2815         cannot be copied. This new NoncopyableFunction type is now used for
2816         WorkQueue / RunLoop's dispatch() / dispatchAfter() which are commonly used
2817         cross-thread. This should now allow us to call WorkQueue::dispatch() with a lambda
2818         that captures a String like so:
2819         [str = str.isolatedCopy()]() { }
2820
2821         Also note that even though this is not leveraged in this patch, NoncopyableFunction
2822         would allow us to capture move-only types such as std::unique_ptr as so:
2823         [p = WTFMove(p)]() { }
2824         This does not work if we convert the lambda into an std::function because
2825         std::function requires the lambda to be copyable, NoncopyableFunction does not.
2826
2827         * wtf/FunctionDispatcher.h:
2828         (WTF::CallableWrapperBase::~CallableWrapperBase):
2829         (WTF::NoncopyableFunction::NoncopyableFunction):
2830         (WTF::NoncopyableFunction::operator()):
2831         (WTF::NoncopyableFunction::operator bool):
2832         (WTF::NoncopyableFunction::operator=):
2833         * wtf/RunLoop.cpp:
2834         (WTF::RunLoop::performWork):
2835         (WTF::RunLoop::dispatch):
2836         * wtf/RunLoop.h:
2837         * wtf/WorkQueue.h:
2838         * wtf/cocoa/WorkQueueCocoa.cpp:
2839         (WTF::WorkQueue::dispatch):
2840         (WTF::WorkQueue::dispatchAfter):
2841         * wtf/efl/DispatchQueueWorkItemEfl.h:
2842         (WorkItem::WorkItem):
2843         (TimerWorkItem::create):
2844         (TimerWorkItem::TimerWorkItem):
2845         * wtf/efl/WorkQueueEfl.cpp:
2846         (WTF::WorkQueue::dispatch):
2847         (WTF::WorkQueue::dispatchAfter):
2848         * wtf/generic/RunLoopGeneric.cpp:
2849         (WTF::RunLoop::dispatchAfter):
2850         * wtf/generic/WorkQueueGeneric.cpp:
2851         (WorkQueue::dispatch):
2852         (WorkQueue::dispatchAfter):
2853         * wtf/glib/RunLoopGLib.cpp:
2854         (WTF::DispatchAfterContext::DispatchAfterContext):
2855         (WTF::RunLoop::dispatchAfter):
2856         * wtf/win/WorkItemWin.cpp:
2857         (WTF::WorkItemWin::WorkItemWin):
2858         (WTF::WorkItemWin::create):
2859         (WTF::HandleWorkItem::HandleWorkItem):
2860         (WTF::HandleWorkItem::createByAdoptingHandle):
2861         * wtf/win/WorkItemWin.h:
2862         (WTF::WorkItemWin::function):
2863         * wtf/win/WorkQueueWin.cpp:
2864         (WTF::WorkQueue::dispatch):
2865         (WTF::WorkQueue::timerCallback):
2866         (WTF::WorkQueue::dispatchAfter):
2867
2868 2016-05-26  Filip Pizlo  <fpizlo@apple.com>
2869
2870         ScopedLambda should have a lifetime story that makes sense to the compiler
2871         https://bugs.webkit.org/show_bug.cgi?id=158118
2872
2873         Reviewed by Mark Lam.
2874
2875         Prior to this change, there were two lifetime bugs in ScopedLambda:
2876         
2877         - scopedLambda(Functor&&) would bind Functor to const lambda&, so the resulting ScopedLambdaFunctor
2878           would hold a reference to the original lambda. This would have surprising behavior; for example
2879           it meant that this code was wrong:
2880           
2881           auto l = scopedLambda<things>([&] ...);
2882           
2883           The solution is to have explicit copy/move versions of scopedLambda() rather than rely on perfect
2884           forwarding.
2885         
2886         - ScopedLambdaFunctor did not override its copy or move operations, so if the compiler did not RVO
2887           scopedLambda(), it would return a ScopedLambdaFunctor whose m_arg points to a dead temporary
2888           ScopedLambdaFunctor instance. The solution is to have explicit copy/move constructors and
2889           operators, which preserve the invariant that ScopedLambda::m_arg points to this.
2890         
2891         One nice side-effect of all of these constructors and operators being explicit is that we can rely
2892         on WTFMove's excellent assertions, which helped catch the first issue.
2893         
2894         This reverts ParkingLot to use ScopedLambda again.
2895
2896         * wtf/ParkingLot.cpp:
2897         (WTF::ParkingLot::parkConditionallyImpl):
2898         (WTF::ParkingLot::unparkOne):
2899         (WTF::ParkingLot::unparkOneImpl):
2900         * wtf/ParkingLot.h:
2901         (WTF::ParkingLot::parkConditionally):
2902         (WTF::ParkingLot::unparkOne):
2903         * wtf/ScopedLambda.h:
2904         (WTF::scopedLambda):
2905
2906 2016-05-25  Anders Carlsson  <andersca@apple.com>
2907
2908         Get rid of WTF/Functional.h
2909         https://bugs.webkit.org/show_bug.cgi?id=158081
2910
2911         Reviewed by Chris Dumez.
2912
2913         This is no longer used, and removing it will free up the name for a new Functional.h implementation.
2914
2915         * WTF.xcodeproj/project.pbxproj:
2916         * wtf/Functional.h: Removed.
2917         (WTF::RefAndDeref::ref): Deleted.
2918         (WTF::RefAndDeref::deref): Deleted.
2919         (WTF::ParamStorageTraits::wrap): Deleted.
2920         (WTF::ParamStorageTraits::unwrap): Deleted.
2921         (WTF::ParamStorageTraits<PassRefPtr<T>>::wrap): Deleted.
2922         (WTF::ParamStorageTraits<PassRefPtr<T>>::unwrap): Deleted.
2923         (WTF::ParamStorageTraits<RefPtr<T>>::wrap): Deleted.
2924         (WTF::ParamStorageTraits<RefPtr<T>>::unwrap): Deleted.
2925         (WTF::ParamStorageTraits<RetainPtr<T>>::wrap): Deleted.
2926         (WTF::ParamStorageTraits<RetainPtr<T>>::unwrap): Deleted.
2927         (WTF::FunctionImplBase::~FunctionImplBase): Deleted.
2928         (WTF::FunctionBase::isNull): Deleted.
2929         (WTF::FunctionBase::FunctionBase): Deleted.
2930         (WTF::FunctionBase::impl): Deleted.
2931         (WTF::bind): Deleted.
2932         * wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
2933
2934 2016-05-24  Keith Miller  <keith_miller@apple.com>
2935
2936         LLInt should be able to cache prototype loads for values in GetById
2937         https://bugs.webkit.org/show_bug.cgi?id=158032
2938
2939         Reviewed by Filip Pizlo.
2940
2941         Add move constructors/initializers to Bags.
2942
2943         * wtf/Bag.h:
2944         (WTF::Bag::Bag):
2945         (WTF::Bag::operator=):
2946
2947 2016-05-24  Chris Dumez  <cdumez@apple.com>
2948
2949         Use auto for some of our lambda function parameters
2950         https://bugs.webkit.org/show_bug.cgi?id=158001
2951
2952         Reviewed by Darin Adler.
2953
2954         Use auto for some of our lambda function parameters now that we build with c++14.
2955
2956         * wtf/BubbleSort.h:
2957         (WTF::bubbleSort):
2958
2959 2016-05-23  Chris Dumez  <cdumez@apple.com>
2960
2961         Speed up move of vectors of POD types that have an inline buffer
2962         https://bugs.webkit.org/show_bug.cgi?id=158003
2963
2964         Reviewed by Benjamin Poulain.
2965
2966         When moving a vector of POD types that have an inline buffer, we would
2967         call std::swap() on the inline buffers. This unnecessarily slow because:
2968         1. It does not consider the vector size, and therefore may end up doing
2969            more work than necessary when the inline buffer is not full.
2970         2. In the "move" case, the destination buffer is completely empty so
2971            we don't really want a swap. We merely want the move the content of
2972            the source's inline buffer into the destination's one.
2973
2974         Instead of calling std::swap(), we now call swapInlineBuffers() which
2975         was already used for non-POD types. swapInlineBuffers() will do just
2976         what we want in the "move" case because swapBound is going to be 0.
2977         As a result, we will only move the content of the source buffer into
2978         the destination one. Also swapInlineBuffers() is aware of the source
2979         vector's size so it will only move what's strictly needed.
2980
2981         This seems to be a 2% progression on Dromaeo DOM attributes test.
2982
2983         * wtf/Vector.h:
2984         (WTF::VectorBuffer::swapInlineBuffer):
2985
2986 2016-05-22  Dan Bernstein  <mitz@apple.com>
2987
2988         Added NSEventMaskMouseMoved to AppKitCompatibilityDeclarations.h.
2989
2990         Rubber-stamped by Anders Carlsson.
2991
2992         * wtf/mac/AppKitCompatibilityDeclarations.h:
2993
2994 2016-05-22  Dan Bernstein  <mitz@apple.com>
2995
2996         Another attempt to fix the GTK build after my previous changes.
2997
2998         * wtf/StdLibExtras.h:
2999
3000 2016-05-22  Dan Bernstein  <mitz@apple.com>
3001
3002         Tried to fix the GTK build after r201257.
3003
3004         * wtf/StdLibExtras.h:
3005
3006 2016-05-22  Dan Bernstein  <mitz@apple.com>
3007
3008         Additional fixes for non-C++14 Apple projects that use WTF.
3009
3010         * wtf/StdLibExtras.h:
3011         (std::exchange):
3012
3013 2016-05-22  Dan Bernstein  <mitz@apple.com>
3014
3015         Additional fixes for non-C++14 Apple projects that use WTF.
3016
3017         * wtf/StdLibExtras.h:
3018         (std::make_unique):
3019         (std::move):
3020
3021 2016-05-22  Dan Bernstein  <mitz@apple.com>
3022
3023         Correct the previous build fix attempt.
3024
3025         * wtf/StdLibExtras.h:
3026
3027 2016-05-22  Dan Bernstein  <mitz@apple.com>
3028
3029         Build fix for non-C++14 Apple projects that use WTF.
3030
3031         Rubber-stamped by Anders.
3032
3033         * wtf/StdLibExtras.h:
3034
3035 2016-05-22  Brady Eidson  <beidson@apple.com>
3036
3037         Move to C++14.
3038         https://bugs.webkit.org/show_bug.cgi?id=157948
3039
3040         Reviewed by Michael Catanzaro.
3041
3042         * Configurations/Base.xcconfig:
3043         
3044         Delete a lot of "stl additions until we can adopt C++14" code:
3045         * wtf/StdLibExtras.h:
3046         (std::make_unique): Deleted.
3047         (std::index_sequence::size): Deleted.
3048         (std::exchange): Deleted.
3049         (std::literals::chrono_literals::operator _s): Deleted.
3050         (std::literals::chrono_literals::operator _ms): Deleted.
3051
3052 2016-05-20  Rawinder Singh  <rawinder.singh-webkit@cisra.canon.com.au>
3053
3054         Implement operator== for WeakPtr
3055         https://bugs.webkit.org/show_bug.cgi?id=157883
3056
3057         Reviewed by Chris Dumez.
3058
3059         Implement operator== and operator!= for WeakPtr and update code to use the operators.
3060
3061         * wtf/WeakPtr.h:
3062         (WTF::operator==):
3063         (WTF::operator!=):
3064
3065 2016-05-19  Chris Dumez  <cdumez@apple.com>
3066
3067         Improve compile-time assertions in is<>() / downcast<>()
3068         https://bugs.webkit.org/show_bug.cgi?id=157817
3069
3070         Reviewed by Darin Adler.
3071
3072         * wtf/Ref.h:
3073         (WTF::is):
3074         Add is<>() overloads taking a Ref<>() so that is<>() keeps working when
3075         passing a Ref<>(), despite the new static assertions on the input type.
3076         Some call sites were already leveraging this as it was working by
3077         implicitly converting the Ref<T> into a T&.
3078
3079         * wtf/TypeCasts.h:
3080         (WTF::is):
3081         (WTF::downcast):
3082         Make static assertions stricter in is<>() / downcast<>() to catch more
3083         cases where those are either unnecessary or incorrect.
3084
3085 2016-05-19  Filip Pizlo  <fpizlo@apple.com>
3086
3087         Unreviewed, fix all of the builds. I failed a second time.
3088
3089         * wtf/BackwardsGraph.h:
3090         (WTF::BackwardsGraph::rootName):
3091
3092 2016-05-19  Filip Pizlo  <fpizlo@apple.com>
3093
3094         Unreviewed, fix all of the builds. I had made an additional change that I did not mean to
3095         commit. This fixes it.
3096
3097         * wtf/BackwardsGraph.h:
3098         (WTF::BackwardsGraph::rootName):
3099         (WTF::BackwardsGraph::Set::dump):
3100         (WTF::BackwardsGraph::dump):
3101
3102 2016-05-18  Filip Pizlo  <fpizlo@apple.com>
3103
3104         DFG::LICMPhase shouldn't hoist type checks unless it knows that the check will succeed at the loop pre-header
3105         https://bugs.webkit.org/show_bug.cgi?id=144527
3106
3107         Reviewed by Saam Barati.
3108         
3109         This adds an adaptor for graphs called BackwardsGraph. The WTF graph framework is based on
3110         passing around a Graph template argument that follows the protocol shared by DFG::CFG,
3111         B3::CFG, and Air::CFG. These graphs always have a single root node but may have many leaf
3112         nodes. This new BackwardsGraph adaptor reverses the graph by creating a synthetic return
3113         node that it uses as the root in the inverted graph. This currently may resort to some
3114         heuristics in programs that have an infinite loop, but other than that, it'll work well in
3115         the general case.
3116         
3117         This allows us to say Dominators<BackwardsGraph<some graph type>> as a way of computing
3118         backwards dominators, which then allows us to easily answer control flow equivalence
3119         queries.
3120
3121         * CMakeLists.txt:
3122         * WTF.xcodeproj/project.pbxproj:
3123         * wtf/BackwardsGraph.h: Added.
3124         (WTF::BackwardsGraph::Node::Node):
3125         (WTF::BackwardsGraph::Node::root):
3126         (WTF::BackwardsGraph::Node::operator==):
3127         (WTF::BackwardsGraph::Node::operator!=):
3128         (WTF::BackwardsGraph::Node::operator bool):
3129         (WTF::BackwardsGraph::Node::isRoot):
3130         (WTF::BackwardsGraph::Node::node):
3131         (WTF::BackwardsGraph::Set::Set):
3132         (WTF::BackwardsGraph::Set::add):
3133         (WTF::BackwardsGraph::Set::remove):
3134         (WTF::BackwardsGraph::Set::contains):
3135         (WTF::BackwardsGraph::Set::dump):
3136         (WTF::BackwardsGraph::Map::Map):
3137         (WTF::BackwardsGraph::Map::clear):
3138         (WTF::BackwardsGraph::Map::size):
3139         (WTF::BackwardsGraph::Map::operator[]):
3140         (WTF::BackwardsGraph::BackwardsGraph):
3141         (WTF::BackwardsGraph::root):
3142         (WTF::BackwardsGraph::newMap):
3143         (WTF::BackwardsGraph::successors):
3144         (WTF::BackwardsGraph::predecessors):
3145         (WTF::BackwardsGraph::index):
3146         (WTF::BackwardsGraph::node):
3147         (WTF::BackwardsGraph::numNodes):
3148         (WTF::BackwardsGraph::dump):
3149         * wtf/Dominators.h:
3150         (WTF::Dominators::Dominators):
3151         (WTF::Dominators::dump):
3152         (WTF::Dominators::LengauerTarjan::computeDepthFirstPreNumbering):
3153         * wtf/GraphNodeWorklist.h:
3154         (WTF::GraphNodeWith::GraphNodeWith):
3155         (WTF::GraphNodeWith::operator bool):
3156         * wtf/StdLibExtras.h:
3157         (WTF::callStatelessLambda):
3158         (WTF::checkAndSet):
3159
3160 2016-05-18  Saam barati  <sbarati@apple.com>
3161
3162         StringBuilder::appendQuotedJSONString doesn't properly protect against the math it's doing. Make the math fit the assertion.
3163         https://bugs.webkit.org/show_bug.cgi?id=157868
3164
3165         Reviewed by Benjamin Poulain.
3166
3167         appendQuotedJSONString was rounding up to the next power of two when resizing
3168         its buffer. Lets call the allocation size X. If X > 2^31, then
3169         roundUpToPowerOfTwo(X) == 0. This patch fixes this by making the
3170         assertion reflect what the code is doing. We now allocate to a size
3171         of X = std::max(maximumCapacityRequired , roundUpToPowerOfTwo(maximumCapacityRequired))
3172
3173         * wtf/text/StringBuilder.cpp:
3174         (WTF::StringBuilder::appendQuotedJSONString):
3175
3176 2016-05-17  Joseph Pecoraro  <pecoraro@apple.com>
3177
3178         REGRESSION(r192855): Math.random() always produces the same first 7 decimal points the first two invocations
3179         https://bugs.webkit.org/show_bug.cgi?id=157805
3180         <rdar://problem/26327851>
3181
3182         Reviewed by Geoffrey Garen.
3183
3184         * wtf/WeakRandom.h:
3185         (WTF::WeakRandom::setSeed):
3186         Advance once to randomize the 32bit seed across the 128bit state
3187         and avoid re-using 64bits of state in the second advance.
3188
3189 2016-05-17  Dean Jackson  <dino@apple.com>
3190
3191         Remove ES6_GENERATORS flag
3192         https://bugs.webkit.org/show_bug.cgi?id=157815
3193         <rdar://problem/26332894>
3194
3195         Reviewed by Geoffrey Garen.
3196
3197         This flag isn't needed. Generators are enabled everywhere and
3198         part of a stable specification.
3199
3200         * wtf/FeatureDefines.h:
3201
3202 2016-05-17  Filip Pizlo  <fpizlo@apple.com>
3203
3204         WTF should know about Language
3205         https://bugs.webkit.org/show_bug.cgi?id=157756
3206
3207         Reviewed by Geoffrey Garen.
3208
3209         This contains two changes:
3210
3211         - Move everything that WebCore's logic for getting the platform user preferred language
3212           depended on into WTF. This means CFBundleSPI.h and BlockObjCExceptions.h|cpp.
3213
3214         - Move WebCore::platformUserPreferredLanguages() to WTF::platformUserPreferredLanguages().
3215           This is needed by https://bugs.webkit.org/show_bug.cgi?id=157755, which will make JSC
3216           use this to detect the platform user preferred language when running standalone.
3217
3218         Moving the dependencies accounts for a huge chunk of this change, since we have to rewire
3219         all of the references to those headers in all of WebKit.
3220
3221         Moving platformUserPreferredLanguages() is mostly easy except for the weird callback.
3222         That function would call languageDidChange(), which needs to stay in WebCore. So, this
3223         gives WebCore the ability to register a languageDidChange callback. Other than this new
3224         logic, the code being added to WTF is just being lifted out of WebCore.
3225
3226         * WTF.xcodeproj/project.pbxproj:
3227         * wtf/BlockObjCExceptions.h: Added.
3228         * wtf/BlockObjCExceptions.mm: Added.
3229         (ReportBlockedObjCException):
3230         * wtf/PlatformEfl.cmake:
3231         * wtf/PlatformGTK.cmake:
3232         * wtf/PlatformJSCOnly.cmake:
3233         * wtf/PlatformMac.cmake:
3234         * wtf/PlatformUserPreferredLanguages.h: Added.
3235         * wtf/PlatformUserPreferredLanguagesMac.mm: Added.
3236         (WTF::setPlatformUserPreferredLanguagesChangedCallback):
3237         (WTF::preferredLanguages):
3238         (+[WTFLanguageChangeObserver languagePreferencesDidChange:]):
3239         (WTF::httpStyleLanguageCode):
3240         (WTF::isValidICUCountryCode):
3241         (WTF::platformUserPreferredLanguages):
3242         * wtf/PlatformUserPreferredLanguagesUnix.cpp: Added.
3243         (WTF::setPlatformUserPreferredLanguagesChangedCallback):
3244         (WTF::platformLanguage):
3245         (WTF::platformUserPreferredLanguages):
3246         * wtf/PlatformUserPreferredLanguagesWin.cpp: Added.
3247         (WTF::setPlatformUserPreferredLanguagesChangedCallback):
3248         (WTF::localeInfo):
3249         (WTF::platformLanguage):
3250         (WTF::platformUserPreferredLanguages):
3251         * wtf/PlatformWin.cmake:
3252         * wtf/spi/cf: Added.
3253         * wtf/spi/cf/CFBundleSPI.h: Added.
3254
3255 2016-05-17  Youenn Fablet  <youenn.fablet@crf.canon.fr>
3256
3257         DOMPromise should only restrict the resolution type
3258         https://bugs.webkit.org/show_bug.cgi?id=157307
3259
3260         Reviewed by Darin Adler.
3261
3262         * wtf/Ref.h: Adding static constexpr to ease detection of Ref for templates.
3263         * wtf/RefPtr.h: Ditto.
3264
3265 2016-05-16  Michael Saboff  <msaboff@apple.com>
3266
3267         ARMV7K: Crash at JavaScriptCore: WTF::ScopedLambdaFunctor<bool
3268         https://bugs.webkit.org/show_bug.cgi?id=157781
3269
3270         Reviewed by Filip Pizlo.
3271
3272         Replaced use of ScopedLambda in locking code with std::function much as it was
3273         before change set 199760 to work around what appears to be a clang compiler issue.
3274
3275         * wtf/ParkingLot.cpp:
3276         (WTF::ParkingLot::parkConditionallyImpl):
3277         (WTF::ParkingLot::unparkOne):
3278         (WTF::ParkingLot::unparkAll):
3279         (WTF::ParkingLot::forEach):
3280         (WTF::ParkingLot::unparkOneImpl): Deleted.
3281         (WTF::ParkingLot::forEachImpl): Deleted.
3282         * wtf/ParkingLot.h:
3283         (WTF::ParkingLot::parkConditionally):
3284         (WTF::ParkingLot::unparkOne): Deleted.
3285         (WTF::ParkingLot::forEach): Deleted.
3286
3287 2016-05-15  Chris Dumez  <cdumez@apple.com>
3288
3289         Use more references in JS wrappers related code
3290         https://bugs.webkit.org/show_bug.cgi?id=157721
3291
3292         Reviewed by Darin Adler.
3293
3294         Add new static_reference_cast() overload that takes a Ref<U>&& in
3295         in order to downcast Ref<> types without causing ref-counting
3296         churn.
3297
3298         * wtf/Ref.h:
3299         (WTF::static_reference_cast):
3300
3301 2016-05-13  Chris Dumez  <cdumez@apple.com>
3302
3303         Unreviewed, rolling out r200837.
3304
3305         Seems to have regressed Speedometer and JetStream on iOS
3306
3307         Reverted changeset:
3308
3309         "DOMPromise should only restrict the resolution type"
3310         https://bugs.webkit.org/show_bug.cgi?id=157307
3311         http://trac.webkit.org/changeset/200837
3312
3313 2016-05-13  Beth Dakin  <bdakin@apple.com>
3314
3315         Add dyldSPI.h
3316         https://bugs.webkit.org/show_bug.cgi?id=157401
3317         -and corresponding-
3318         rdar://problem/26253396
3319
3320         Reviewed by Darin Adler.
3321
3322         New header for dyld spi.
3323         * WTF.xcodeproj/project.pbxproj:
3324         * wtf/spi/darwin/dyldSPI.h: Added.
3325
3326 2016-05-13  Youenn Fablet  <youenn.fablet@crf.canon.fr>
3327
3328         DOMPromise should only restrict the resolution type
3329         https://bugs.webkit.org/show_bug.cgi?id=157307
3330
3331         Reviewed by Darin Adler.
3332
3333         * wtf/Ref.h: Adding static constexpr to ease detection of Ref for templates.
3334         * wtf/RefPtr.h: Ditto.
3335
3336 2016-05-12  Daniel Bates  <dabates@apple.com>
3337
3338         Use SecTask SPI to retrieve code signing identifier for user directory suffix
3339         https://bugs.webkit.org/show_bug.cgi?id=157570
3340
3341         Reviewed by Darin Adler.
3342         <rdar://problem/25706517>
3343
3344         Forward declare SPI SecTaskCopySigningIdentifier().
3345
3346         * wtf/spi/cocoa/SecuritySPI.h:
3347
3348 2016-05-12  Csaba Osztrogonác  <ossy@webkit.org>
3349
3350         Remove ENABLE(ES6_ARROWFUNCTION_SYNTAX) guards
3351         https://bugs.webkit.org/show_bug.cgi?id=157564
3352
3353         Reviewed by Darin Adler.
3354
3355         * wtf/FeatureDefines.h:
3356
3357 2016-05-10  Filip Pizlo  <fpizlo@apple.com>
3358
3359         Internal JSC profiler should have a timestamped log of events for each code block
3360         https://bugs.webkit.org/show_bug.cgi?id=157538
3361
3362         Reviewed by Benjamin Poulain.
3363
3364         * wtf/PrintStream.h:
3365         (WTF::PrintStream::print):
3366
3367 2016-05-10  Chris Dumez  <cdumez@apple.com>
3368
3369         Get rid of a lot of calls to RefPtr::release()
3370         https://bugs.webkit.org/show_bug.cgi?id=157505
3371
3372         Reviewed by Alex Christensen.
3373
3374         Get rid of a lot of calls to RefPtr::release() and use WTFMove() instead.
3375
3376         * wtf/text/AtomicStringImpl.cpp:
3377         (WTF::HashAndUTF8CharactersTranslator::translate):
3378         * wtf/text/CString.cpp:
3379         (WTF::CString::copyBufferIfNeeded):
3380         * wtf/text/StringBuilder.cpp:
3381         (WTF::StringBuilder::allocateBuffer):
3382         (WTF::StringBuilder::allocateBufferUpConvert):
3383         (WTF::StringBuilder::shrinkToFit):
3384         * wtf/text/WTFString.cpp:
3385         (WTF::String::append):
3386         (WTF::String::insert):
3387         (WTF::String::removeInternal):
3388         * wtf/text/WTFString.h:
3389         (WTF::String::String):
3390         (WTF::String::operator=):
3391         (WTF::String::releaseImpl):
3392         (WTF::String::isNull): Deleted.
3393
3394 2016-05-08  Chris Dumez  <cdumez@apple.com>
3395
3396         [COCOA] Disable HAVE_DTRACE at build time
3397         https://bugs.webkit.org/show_bug.cgi?id=157433
3398         <rdar://problem/26148841>
3399
3400         Reviewed by Mark Lam.
3401
3402         Disable HAVE_DTRACE on COCOA since it is mostly unused and has a performance
3403         impact, at least on iOS.
3404
3405         * wtf/Platform.h:
3406
3407 2016-05-08  Chris Dumez  <cdumez@apple.com>
3408
3409         [Bindings] Simplify [RequiresExistingAtomicString] IDL extended attribute handling
3410         https://bugs.webkit.org/show_bug.cgi?id=157465
3411
3412         Reviewed by Darin Adler.
3413
3414         Add an AtomicString(RefPtr<AtomicStringImpl>&&) constructor that is now
3415         used by the bindings when [RequiresExistingAtomicString] is used. This
3416         is more efficient than using AtomicString(AtomicStringImpl*) as the
3417         caller has a RefPtr<AtomicStringImpl> and is consistent with the
3418         pre-existing String(RefPtr<AtomicStringImpl>&&) constructor.
3419
3420         * wtf/text/AtomicString.h:
3421         (WTF::AtomicString::AtomicString):
3422
3423 2016-05-08  Darin Adler  <darin@apple.com>
3424
3425         * wtf/text/WTFString.h: Remove pragma once. Not working for some reason.
3426
3427 2016-05-08  Darin Adler  <darin@apple.com>
3428
3429         Follow-up to that last patch (missed review comments).
3430
3431         * wtf/text/WTFString.h: Use nullptr instead of 0 as needed. Also use pragma once.
3432
3433 2016-05-08  Darin Adler  <darin@apple.com>
3434
3435         Change EventSource constructor to take an IDL dictionary instead of a WebCore::Dictionary
3436         https://bugs.webkit.org/show_bug.cgi?id=157459
3437
3438         Reviewed by Chris Dumez.
3439
3440         * wtf/text/WTFString.h: Export a symbol now used in WebCore.
3441
3442 2016-05-02  Sam Weinig  <sam@webkit.org>
3443
3444         On platforms that support it, use a SecTrustRef as the basis of CertificateInfo instead of a chain of SecCertificateRefs.
3445         https://bugs.webkit.org/show_bug.cgi?id=157220
3446
3447         Reviewed by Darin Adler.
3448
3449         * wtf/Platform.h:
3450         Add support for HAVE(SEC_TRUST_SERIALIZATION).
3451
3452         * wtf/spi/cocoa/SecuritySPI.h:
3453         Add SPI access to SecTrustSerialize and SecTrustDeserialize.
3454
3455 2016-05-04  Filip Pizlo  <fpizlo@apple.com>
3456
3457         Add HLE locks and synchronic TTAS locks to the ToyLocks benchmark suite
3458         https://bugs.webkit.org/show_bug.cgi?id=157367
3459
3460         Rubber stamped by Benjamin Poulain.
3461         
3462         Turns out they are both a lot slower than WTF::Lock. The HLE lock is written according to Intel's
3463         documentation. The synchronic lock follows the algorithm of the "ttas_lock" in the synchronic
3464         test.hpp.
3465
3466         * benchmarks/ToyLocks.h:
3467
3468 2016-05-04  Filip Pizlo  <fpizlo@apple.com>
3469
3470         Add a few more WTF locking benchmarks
3471         https://bugs.webkit.org/show_bug.cgi?id=157365
3472
3473         Rubber stamped by Benjamin Poulain.
3474         
3475         Factors out our toy locks into ToyLocks.h and adds a new test (LockFairnessTest) that measures
3476         the fairness of locks.
3477         
3478         The result: WTF::Lock is pretty fair enough.
3479
3480         * benchmarks/LockFairnessTest.cpp: Added.
3481         (main):
3482         * benchmarks/LockSpeedTest.cpp:
3483         (main):
3484         * benchmarks/ToyLocks.h: Added.
3485
3486 2016-05-04  Filip Pizlo  <fpizlo@apple.com>
3487
3488         Speed up JSGlobalObject initialization by making some properties lazy
3489         https://bugs.webkit.org/show_bug.cgi?id=157045
3490
3491         Reviewed by Keith Miller.
3492         
3493         This WTF change is at the heart of a large JSC change. In JSC I found myself wanting to
3494         do this a lot:
3495         
3496             static void callback(Foo& foo) { ... }
3497         
3498             foo.setCallback(callback);
3499         
3500         But that's not very nice to write if many different setCallback() calls are inside of the
3501         same very large function: you'll have to have a lot of static function definitions in
3502         one part of the file, and then a bunch of setCallback() calls in another part. It's hard
3503         to reason about what's going on with such code.
3504         
3505         So what if you wrote this instead:
3506         
3507             foo.setCallback([] (Foo& foo) { ... });
3508         
3509         Much nicer! There is a standard way to do this: lambdas that are stateless are
3510         convertible to function pointers. This change also offers another approach that is a bit
3511         more general.
3512         
3513         These additions to WTF help you do it:
3514         
3515         isStatelessLambda<Func>(): tells you if Func is a stateless lambda. This uses is_empty to
3516         test if the lambda is stateless. This turns out to be a stronger property than
3517         convertibility to function pointers. For example, a function pointer is convertible to a
3518         function pointer, but it is definitely stateful: you cannot successfully call it if you
3519         only has its type. On the other hand, a stateless lambda is really stateless in the sense
3520         that you only need its type to call it.
3521         
3522         callStatelessLambda<ResultType, Func>(Arguments&&...): calls the given stateless lambda.
3523         
3524         JSC uses these to build up some sophisticated lazy-initialization APIs. The use of
3525         statelessness allows JSC to combine a lambda with other logic into a single function
3526         pointer.
3527
3528         * wtf/StdLibExtras.h:
3529         (WTF::isStatelessLambda):
3530         (WTF::callStatelessLambda):
3531
3532 2016-05-04  Per Arne Vollan  <peavo@outlook.com>
3533
3534         [Win] Use NeverDestroyed template.
3535         https://bugs.webkit.org/show_bug.cgi?id=157345
3536
3537         Reviewed by Darin Adler.
3538
3539         * wtf/ThreadingWin.cpp:
3540         (WTF::threadMapMutex):
3541         (WTF::threadMap):
3542
3543 2016-05-04  Chris Dumez  <cdumez@apple.com>
3544
3545         Unreviewed, rolling out r200383 and r200406.
3546
3547         Seems to have caused crashes on iOS / ARMv7s
3548
3549         Reverted changesets:
3550
3551         "Speed up JSGlobalObject initialization by making some
3552         properties lazy"
3553         https://bugs.webkit.org/show_bug.cgi?id=157045
3554         http://trac.webkit.org/changeset/200383
3555
3556         "REGRESSION(r200383): Setting lazily initialized properties
3557         across frame boundaries crashes"
3558         https://bugs.webkit.org/show_bug.cgi?id=157333
3559         http://trac.webkit.org/changeset/200406
3560
3561 2016-05-03  Filip Pizlo  <fpizlo@apple.com>
3562
3563         Speed up JSGlobalObject initialization by making some properties lazy
3564         https://bugs.webkit.org/show_bug.cgi?id=157045
3565
3566         Reviewed by Keith Miller.
3567         
3568         This WTF change is at the heart of a large JSC change. In JSC I found myself wanting to
3569         do this a lot:
3570         
3571             static void callback(Foo& foo) { ... }
3572         
3573             foo.setCallback(callback);
3574         
3575         But that's not very nice to write if many different setCallback() calls are inside of the
3576         same very large function: you'll have to have a lot of static function definitions in
3577         one part of the file, and then a bunch of setCallback() calls in another part. It's hard
3578         to reason about what's going on with such code.
3579         
3580         So what if you wrote this instead:
3581         
3582             foo.setCallback([] (Foo& foo) { ... });
3583         
3584         Much nicer! There is a standard way to do this: lambdas that are stateless are
3585         convertible to function pointers. This change also offers another approach that is a bit
3586         more general.
3587         
3588         These additions to WTF help you do it:
3589         
3590         isStatelessLambda<Func>(): tells you if Func is a stateless lambda. This uses is_empty to
3591         test if the lambda is stateless. This turns out to be a stronger property than
3592         convertibility to function pointers. For example, a function pointer is convertible to a
3593         function pointer, but it is definitely stateful: you cannot successfully call it if you
3594         only has its type. On the other hand, a stateless lambda is really stateless in the sense