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