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