[Windows] Work around missing C++11 features of MSVC by providing an implementation for
[WebKit-https.git] / Source / WTF / ChangeLog
1 2013-09-26  Brent Fulgham  <bfulgham@apple.com>
2
3         [Windows] Work around missing C++11 features of MSVC by providing an implementation for
4         std::is_trivially_destructible based on the existing std::has_trivial_destructor.
5
6         Rubber-stamped by Anders Carlsson.
7
8         * wtf/StdLibExtras.h: Add implementation for is_trivially_destructable for MSVC 2010 and prior.
9
10 2013-09-26  Anders Carlsson  <andersca@apple.com>
11
12         Remove needsDestruction from vector and hash traits
13         https://bugs.webkit.org/show_bug.cgi?id=121983
14
15         Reviewed by Sam Weinig.
16
17         For Vector, use std::is_trivially_destructible to determine whether to call the destructor.
18         For HashTable, always call the destructor; if it is trivial then no code will be generated for it and the loops will be folded away. 
19
20         Removing this does break the ability to store objects with non-trivial destructors in vectors and hash maps
21         and have their destructors not be called when removed, but we've never used this feature in WebKit so the extra
22         code complexity is not worth it.
23
24         * wtf/HashTable.h:
25         (WTF::::deallocateTable):
26         * wtf/HashTraits.h:
27         * wtf/Vector.h:
28         (WTF::VectorTypeOperations::destruct):
29         * wtf/VectorTraits.h:
30
31 2013-09-26  Anders Carlsson  <andersca@apple.com>
32
33         Build fixes.
34
35         Fix a paste-o.
36
37         * wtf/StdLibExtras.h:
38         (std::make_unique):
39
40 2013-09-26  Anders Carlsson  <andersca@apple.com>
41
42         Remove the hash table mover
43         https://bugs.webkit.org/show_bug.cgi?id=121980
44
45         Reviewed by Andreas Kling.
46
47         Use std::move instead.
48
49         * wtf/HashTable.h:
50
51 2013-09-26  Anders Carlsson  <andersca@apple.com>
52
53         Change a couple of HashMap value types from OwnPtr to std::unique_ptr
54         https://bugs.webkit.org/show_bug.cgi?id=121973
55
56         Reviewed by Andreas Kling.
57
58         * wtf/RefPtrHashMap.h:
59         Add a missing std::forward.
60
61         * wtf/StdLibExtras.h:
62         (std::make_unique):
63         Add more overloads.
64
65 2013-09-26  Julien Brianceau  <jbriance@cisco.com>
66
67         [Qt] Remove PassTraits.h from WTF.pro.
68         https://bugs.webkit.org/show_bug.cgi?id=121946
69
70         Reviewed by Andreas Kling.
71
72         * WTF.pro: Remove PassTraits.h as this file disappeared in r156298.
73
74 2013-09-25  Patrick Gansterer  <paroga@webkit.org>
75
76         Fix compilation with new MSVC compiler for Windows CE
77         https://bugs.webkit.org/show_bug.cgi?id=121914
78
79         Reviewed by Darin Adler.
80
81         Remove code to support older Windows CE versions, since those old
82         versions do not support C+11, which is required in the meantime.
83
84         * wtf/Atomics.h:
85         * wtf/Platform.h:
86
87 2013-09-25  Anders Carlsson  <andersca@apple.com>
88
89         Move KeyValuePairTraits inside HashMap
90         https://bugs.webkit.org/show_bug.cgi?id=121931
91
92         Reviewed by Sam Weinig.
93
94         Also rename the ValueType typedef to KeyValuePairType since it's always a key value pair.
95
96         * wtf/HashMap.h:
97         (WTF::HashMap::KeyValuePairTraits::isEmptyValue):
98         (WTF::HashMap::find):
99         (WTF::HashMap::contains):
100
101 2013-09-25  Anders Carlsson  <andersca@apple.com>
102
103         Un-indent HashMap.h.
104
105         Rubber-stamped by Andreas Kling.
106
107         * wtf/HashMap.h:
108
109 2013-09-25  Anders Carlsson  <andersca@apple.com>
110
111         Un-indent HashTraits.h.
112
113         Rubber-stamped by Andreas Kling.
114
115         * wtf/HashTraits.h:
116
117 2013-09-25  Patrick Gansterer  <paroga@webkit.org>
118
119         Fix template deduction for CollatorDefault
120
121         * wtf/unicode/CollatorDefault.cpp:
122         (WTF::Collator::userDefault): Use nullptr instead of 0.
123
124 2013-09-24  Anders Carlsson  <andersca@apple.com>
125
126         Remove encoder create functions
127         https://bugs.webkit.org/show_bug.cgi?id=121853
128
129         Reviewed by Sam Weinig.
130
131         Add a variadic version of createOwned.
132
133         * wtf/OwnPtr.h:
134         (WTF::createOwned):
135
136 2013-09-24  Mark Rowe  <mrowe@apple.com>
137
138         <rdar://problem/14971518> WebKit should build against the Xcode default toolchain when targeting OS X 10.8
139
140         Reviewed by Dan Bernstein.
141
142         * Configurations/Base.xcconfig:
143
144 2013-09-23  Anders Carlsson  <andersca@apple.com>
145
146         Remove WTF_USE_SCROLLBAR_PAINTER #define
147         https://bugs.webkit.org/show_bug.cgi?id=121819
148
149         Reviewed by Sam Weinig.
150
151         All our supported systems use the scrollbar painter now, so get rid of the #ifdef.
152
153         * wtf/Platform.h:
154
155 2013-09-23  Commit Queue  <commit-queue@webkit.org>
156
157         Unreviewed, rolling out r156307.
158         http://trac.webkit.org/changeset/156307
159         https://bugs.webkit.org/show_bug.cgi?id=121817
160
161         Broke the build, and crashes the compiler (Requested by ap on
162         #webkit).
163
164         * wtf/ListDump.h:
165         (WTF::lessThan):
166         (WTF::sortedListDump):
167
168 2013-09-23  Anders Carlsson  <andersca@apple.com>
169
170         Test the waters and begin using lambdas
171         https://bugs.webkit.org/show_bug.cgi?id=121809
172
173         Reviewed by Andreas Kling.
174
175         * wtf/ListDump.h:
176         (WTF::sortedListDump):
177         Use std::less instead of a custom lessThan function.
178
179 2013-09-23  Anders Carlsson  <andersca@apple.com>
180
181         ListHashSet::removeLast should only remove one element.
182         
183         * wtf/ListHashSet.h:
184         (WTF::ListHashSet::removeLast):
185
186 2013-09-23  Anders Carlsson  <andersca@apple.com>
187
188         Add hash traits for std::unique_ptr
189         https://bugs.webkit.org/show_bug.cgi?id=121807
190
191         Reviewed by Antti Koivisto.
192
193         Also, convert the thread map over to using std::unique_ptr instead of OwnPtr.
194
195         * wtf/HashMap.h:
196         Remove unnecessary typedefs and add missing calls to std::forward.
197
198         * wtf/HashTraits.h:
199         Add hash trait for std::unique_ptr.
200         
201         * wtf/RefPtrHashMap.h:
202         Use std::add_lvalue_reference.
203
204         * wtf/ThreadingPthreads.cpp:
205         (WTF::establishIdentifierForPthreadHandle):
206         Change ThreadMap to be a hash map from ThreadIdentifier to std::unique_ptr<PthreadState>.
207
208 2013-09-23  Patrick Gansterer  <paroga@webkit.org>
209
210         use NOMINMAX instead of #define min min
211         https://bugs.webkit.org/show_bug.cgi?id=73563
212
213         Reviewed by Brent Fulgham.
214
215         Use NOMINMAX instead of #define min/max as a cleaner
216         way of ensuring that Windows system header files don't
217         define min/max as macro in the first place.
218
219         * config.h:
220
221 2013-09-23  Anders Carlsson  <andersca@apple.com>
222
223         Remove PassTraits.h
224         https://bugs.webkit.org/show_bug.cgi?id=121805
225
226         Reviewed by Andreas Kling.
227
228         We no longer need PassTraits.h, get rid of it.
229
230         * GNUmakefile.list.am:
231         * WTF.vcxproj/WTF.vcxproj:
232         * WTF.vcxproj/WTF.vcxproj.filters:
233         * WTF.xcodeproj/project.pbxproj:
234         * wtf/CMakeLists.txt:
235         * wtf/PassTraits.h: Removed.
236
237 2013-09-23  Anders Carlsson  <andersca@apple.com>
238
239         ListHashSet should work with move-only types
240         https://bugs.webkit.org/show_bug.cgi?id=121802
241
242         Reviewed by Andreas Kling.
243
244         Add rvalue reference overloads and calls to std::forward and std::move where appropriate.
245
246         * wtf/ListHashSet.h:
247         (WTF::::removeFirst):
248         Implement this in terms of takeFirst.
249
250         (WTF::::takeFirst):
251         Look up the iterator before we move out the value so we won't break the hash invariant.
252         
253         (WTF::::removeLast):
254         Implement this in terms of takeLast.
255
256         (WTF::::takeLast):
257         Look up the iterator before we move out the value so we won't break the hash invariant.
258
259 2013-09-23  Anders Carlsson  <andersca@apple.com>
260
261         Clean up ListHashSet
262         https://bugs.webkit.org/show_bug.cgi?id=121797
263
264         Reviewed by Antti Koivisto.
265
266         * wtf/ListHashSet.h:
267
268 2013-09-23  Anders Carlsson  <andersca@apple.com>
269
270         ListHashSet should use std::reverse_iterator for reverse iterators
271         https://bugs.webkit.org/show_bug.cgi?id=121795
272
273         Reviewed by Antti Koivisto.
274
275         Get rid of the custom reverse iterators and just use std::reverse_iterator instead.
276
277         * wtf/ListHashSet.h:
278
279 2013-09-23  Anders Carlsson  <andersca@apple.com>
280
281         De-indent ListHashSet in preparation of more changes.
282
283         Rubber-stamped by Sam Weinig.
284
285         * wtf/ListHashSet.h:
286
287 2013-09-23  Patrick Gansterer  <paroga@webkit.org>
288
289         Cleanup CMake files in WTF
290         https://bugs.webkit.org/show_bug.cgi?id=121761
291
292         Reviewed by Gyuyoung Kim.
293
294         Sort files and unify the style.
295
296         * wtf/CMakeLists.txt:
297         * wtf/PlatformEfl.cmake:
298         * wtf/PlatformGTK.cmake:
299
300 2013-09-22  Andreas Kling  <akling@apple.com>
301
302         Give purity hints to compiler to avoid penalizing repeated calls to some functions.
303         <https://webkit.org/b/121744>
304
305         Reviewed by Darin Adler.
306
307         Added a PURE_FUNCTION macro. This is supported on GCC and Clang for now.
308         Marking a function pure means that the compiler's CSE pass is free to coalesce
309         multiple calls to this function because it has no globally observable side
310         effects beyond the first call.
311
312 2013-09-20  Anders Carlsson  <andersca@apple.com>
313
314         Add an implementation of std::index_sequence from C++14
315         https://bugs.webkit.org/show_bug.cgi?id=121718
316
317         Reviewed by Ryosuke Niwa.
318
319         This will make it easier to do things like pack expansion of tuple elements.
320
321         * wtf/StdLibExtras.h:
322
323 2013-09-20  Allan Sandfeld Jensen  <allan.jensen@digia.com>
324
325         Atomics.h does not build on MinGW
326         https://bugs.webkit.org/show_bug.cgi?id=121663
327
328         Reviewed by Darin Adler.
329
330         MinGW does not have _ReadWriteBarrier() intrinsic, but does have GCC
331         inline assembler, so use the GCC definitions instead of MSVC ones.
332
333         * wtf/Atomics.h:
334         (WTF::compilerFence):
335
336 2013-09-20  Patrick Gansterer  <paroga@webkit.org>
337
338         [CMake] Use COMPILE_DEFINITIONS target property for setting BUILDING_* defines
339         https://bugs.webkit.org/show_bug.cgi?id=121672
340
341         Reviewed by Gyuyoung Kim.
342
343         Since the scope of add_definitions() is always a whole file, we need to use
344         target properties instead to set definitions only for specific targets.
345
346         * wtf/CMakeLists.txt:
347
348 2013-09-20  Patrick Gansterer  <paroga@webkit.org>
349
350         Remove duplicated secondsPerDay variables
351         https://bugs.webkit.org/show_bug.cgi?id=121601
352
353         Reviewed by Andreas Kling.
354
355         Move secondsPerDay from the source into the header file
356         to make it accessible by other code too.
357
358         * wtf/DateMath.cpp:
359         * wtf/DateMath.h:
360
361 2013-09-19  Joseph Pecoraro  <pecoraro@apple.com>
362
363         ASSERTs in isMainThread after USE(WEB_THREAD) MainThread changes
364         https://bugs.webkit.org/show_bug.cgi?id=121650
365
366         Reviewed by Benjamin Poulain.
367
368         * wtf/mac/MainThreadMac.mm:
369         (WTF::initializeMainThreadPlatform):
370
371 2013-09-19  Daniel Bates  <dabates@apple.com>
372
373         [iOS] Define mainThreadEstablishedAsPthreadMain to be true in WTF::initializeMainThreadPlatform()
374
375         Reviewed by Joseph Pecoraro.
376
377         This change was inadvertently left out of <http://trac.webkit.org/changeset/155926>.
378
379         * wtf/mac/MainThreadMac.mm:
380         (WTF::initializeMainThreadPlatform):
381
382 2013-09-19  Sam Weinig  <sam@webkit.org>
383
384         Remove OwnArrayPtr
385         https://bugs.webkit.org/show_bug.cgi?id=121612
386
387         Reviewed by Anders Carlsson.
388
389         * GNUmakefile.list.am:
390         * WTF.pro:
391         * WTF.vcxproj/WTF.vcxproj:
392         * WTF.vcxproj/WTF.vcxproj.filters:
393         * WTF.xcodeproj/project.pbxproj:
394         * wtf/Assertions.cpp:
395         * wtf/CMakeLists.txt:
396         * wtf/DateMath.h:
397         * wtf/FastBitVector.h:
398         * wtf/Forward.h:
399         * wtf/OwnArrayPtr.h: Removed.
400         * wtf/VectorTraits.h:
401
402 2013-09-19  Daniel Bates  <dabates@apple.com>
403
404         Substitute return type void for bool in function declaration for WTF::initializeWebThread()
405
406         Reviewed by Joseph Pecoraro.
407
408         Make the declaration of WTF::initializeWebThread() match the function prototype
409         of its definition.
410
411         * wtf/MainThread.h:
412
413 2013-09-19  Andreas Kling  <akling@apple.com>
414
415         Assume allocator success in Vector unless using try* functions.
416         <https://webkit.org/b/121629>
417
418         Reviewed by Anders Carlsson.
419
420         Turn some Vector::begin() null checking into assertions instead.
421
422         We have try* style functions for when an allocation request is so
423         large that it might actually fail. fastMalloc() will never return
424         null (it will just CRASH() instead.)
425
426 2013-09-18  Brent Fulgham  <bfulgham@apple.com>
427
428         [Windows] Unreviewed build correction.
429
430         * WTF.vcxproj/WTFGeneratedCommon.props: Export PLATFORMARCHITECTURE macro for use in
431         Makefiles and shell scripts.
432         * WTF.vcxproj/build-generated-files.sh: Output header search path to identify when the build
433         is confused about build architecture.
434
435 2013-09-18  Anders Carlsson  <andersca@apple.com>
436
437         RefPtrHashMap should work with move only types
438         https://bugs.webkit.org/show_bug.cgi?id=121564
439
440         Reviewed by Andreas Kling.
441
442         Add the same rvalue references and std::forward calls that already exist in HashMap.
443
444         * wtf/RefPtrHashMap.h:
445
446 2013-09-18  Filip Pizlo  <fpizlo@apple.com>
447
448         DFG should support Int52 for local variables
449         https://bugs.webkit.org/show_bug.cgi?id=121064
450
451         Reviewed by Oliver Hunt.
452
453         * wtf/PrintStream.h:
454         (WTF::ValueIgnoringContext::ValueIgnoringContext):
455         (WTF::ValueIgnoringContext::dump):
456         (WTF::ignoringContext):
457
458 2013-09-18  Andreas Kling  <akling@apple.com>
459
460         Put constant CachedPower table in read-only memory.
461         <https://webkit.org/b/121546>
462
463         Reviewed by Anders Carlsson.
464
465         * wtf/dtoa/cached-powers.cc:
466
467 2013-09-18  Commit Queue  <commit-queue@webkit.org>
468
469         Unreviewed, rolling out r156019 and r156020.
470         http://trac.webkit.org/changeset/156019
471         http://trac.webkit.org/changeset/156020
472         https://bugs.webkit.org/show_bug.cgi?id=121540
473
474         Broke tests (Requested by ap on #webkit).
475
476         * wtf/PrintStream.h:
477
478 2013-09-16  Filip Pizlo  <fpizlo@apple.com>
479
480         DFG should support Int52 for local variables
481         https://bugs.webkit.org/show_bug.cgi?id=121064
482
483         Reviewed by Oliver Hunt.
484
485         * wtf/PrintStream.h:
486         (WTF::ValueIgnoringContext::ValueIgnoringContext):
487         (WTF::ValueIgnoringContext::dump):
488         (WTF::ignoringContext):
489
490 2013-09-17  Anders Carlsson  <andersca@apple.com>
491
492         Stop explicitly using PassOwnPtr in WebCore/html
493         https://bugs.webkit.org/show_bug.cgi?id=121511
494
495         Reviewed by Andreas Kling.
496
497         Make operator= work work for different types of OwnPtrs.
498
499         * wtf/OwnPtr.h:
500
501 2013-09-17  Sam Weinig  <sam@webkit.org>
502
503         Add make_unique and start using it
504         https://bugs.webkit.org/show_bug.cgi?id=121523
505
506         Reviewed by Anders Carlsson.
507
508         * wtf/StdLibExtras.h:
509         (std::make_unique):
510         Add temporary implementation of std::make_unique that we can use until our standard
511         libraries have support for it.
512
513 2013-09-17  Darin Adler  <darin@apple.com>
514
515         Make SVGTransform::valueAsString use StringBuilder
516         https://bugs.webkit.org/show_bug.cgi?id=121498
517
518         Reviewed by Andreas Kling.
519
520         * wtf/text/StringBuilder.cpp: Added appendNumber functions corresponding to all remaining
521         String::number functions. If we find we don't need all of these we can delete them later,
522         but I don't want to give clients a reason to prefer less-efficient API to StringBuilder.
523         * wtf/text/StringBuilder.h: Ditto.
524
525 2013-09-16  Anders Carlsson  <andersca@apple.com>
526
527         HashMap should work with move-only keys
528         https://bugs.webkit.org/show_bug.cgi?id=121310
529
530         Reviewed by Darin Adler.
531
532         Add extra overloads for add and set where the key is an rvalue reference, but not a
533         template parameter rvalue reference. This way we'll coerce the key parameter to have the expected
534         type instead of the passed in type, causing map.add(StringImpl::create("Hello"), 123) work when the
535         type of map is HashMap<String, unsigned>.
536
537         Also, sprinkle && and std::forward where appropriate.
538
539         * wtf/HashMap.h:
540         * wtf/HashTable.h:
541
542 2013-09-17  Sergio Martins  <sergio.martins@kdab.com>
543
544         Fix Windows CE build on ARM.
545         https://bugs.webkit.org/show_bug.cgi?id=121490
546
547         Reviewed by Darin Adler.
548
549         * wtf/dtoa/utils.h:
550
551 2013-09-17  Mihnea Ovidenie  <mihnea@adobe.com>
552
553         REGRESSION(r155910): WebKit nightly builds don't load any page
554         https://bugs.webkit.org/show_bug.cgi?id=121482
555
556         Reviewed by Andreas Kling.
557
558         Replaced C++ style comments with C style comments.
559
560         * wtf/Platform.h:
561
562 2013-09-16  Joseph Pecoraro  <pecoraro@apple.com>
563
564         USE(WEB_THREAD): More explicit WebThread initialization
565         https://bugs.webkit.org/show_bug.cgi?id=121454
566
567         Reviewed by Benjamin Poulain.
568
569         Be more explicit when initializing WebThread only data.
570
571         * wtf/MainThread.h:
572         * wtf/MainThread.cpp:
573         (WTF::initializeWebThreadOnce):
574         (WTF::initializeWebThread):
575         Ensure one time initialization.
576
577         * wtf/mac/MainThreadMac.mm:
578         (WTF::initializeMainThreadPlatform):
579         (WTF::initializeWebThreadPlatform):
580         Move WebThread value initialization to its own function.
581
582         (WTF::isMainThread):
583         Remove no longer invalid assert if WebThread was not initialized.
584
585 2013-09-16  Benjamin Poulain  <benjamin@webkit.org>
586
587         Fix WebKit1 build after r155910
588
589         Reviewed by Anders Carlsson.
590
591         * wtf/Platform.h: Some files in WebKit include system headers before
592         WTF headers, causing the macro to be defined twice. #undef the macro
593         to support that case.
594
595 2013-09-16  Benjamin Poulain  <benjamin@webkit.org>
596
597         Disable OS X's unprefixed debug macro
598         https://bugs.webkit.org/show_bug.cgi?id=121460
599
600         Reviewed by Anders Carlsson.
601
602         * wtf/Platform.h: OS X defines a series of platform macros for debugging.
603         Some of them are really annoying because they use common names (e.g. check()).
604
605         Disable those macros so that we are not limited in how we name methods and functions.
606
607 2013-09-16  Anders Carlsson  <andersca@apple.com>
608
609         MessageQueue should use a Deque of OwnPtrs
610         https://bugs.webkit.org/show_bug.cgi?id=121450
611
612         Reviewed by Andreas Kling.
613
614         * wtf/MessageQueue.h:
615
616 2013-09-16  Anders Carlsson  <andersca@apple.com>
617
618         WTF::Deque should work with move only types
619         https://bugs.webkit.org/show_bug.cgi?id=121446
620
621         Reviewed by Andreas Kling.
622
623         * wtf/Deque.h:
624         Use std::move and std::forward where appropriate and get rid of the PassTraits include.
625
626 2013-09-16  Anders Carlsson  <andersca@apple.com>
627
628         Change a couple of COMPILE_ASSERTs to static_assert
629         https://bugs.webkit.org/show_bug.cgi?id=121441
630
631         Reviewed by Andreas Kling.
632
633         * wtf/BloomFilter.h:
634         * wtf/PackedIntVector.h:
635         (WTF::PackedIntVector::PackedIntVector):
636         * wtf/StdLibExtras.h:
637         (WTF::bitwise_cast):
638         (WTF::safeCast):
639         (WTF::roundUpToMultipleOf):
640         * wtf/StringHasher.h:
641         (WTF::StringHasher::hashMemory):
642         * wtf/Vector.h:
643         * wtf/text/AtomicString.cpp:
644         * wtf/unicode/Unicode.h:
645
646 2013-09-15  Gustavo Noronha Silva  <gns@gnome.org>
647
648         Unreviewed make distcheck fix.
649
650         * GNUmakefile.list.am:
651
652 2013-09-15  Patrick Gansterer  <paroga@webkit.org>
653
654         Fix build with Visual Studio 2012 after r153764.
655         https://bugs.webkit.org/show_bug.cgi?id=121406
656
657         Reviewed by Brent Fulgham.
658
659         * wtf/MathExtras.h:
660
661 2013-09-15  Alberto Garcia  <berto@igalia.com>
662
663         Unreviewed GTK gardening.
664
665         * GNUmakefile.list.am: remove FastAllocBase.h, this file disappeared
666         in r155251.
667
668 2013-09-15  Patrick Gansterer  <paroga@webkit.org>
669
670         [WIN] Fix build without precompiled header after r155454.
671
672         * wtf/win/GDIObject.h: Added missing windows.h include.
673
674 2013-09-15  Andreas Kling  <akling@apple.com>
675
676         Remove Ref(const T&) constructor.
677         <https://webkit.org/b/121384>
678
679         Reviewed by Anders Carlsson.
680
681         This constructor was added as a stopgap measure until we got better support
682         for move semantics in Vector.
683
684         * wtf/Ref.h:
685
686 2013-09-15  Andreas Kling  <akling@apple.com>
687
688         Unreviewed, fix ridiculous bug in WeakPtr.
689
690         I made operator!() null check the pointer to the WeakReference. :|
691
692         Caught by plugins/destroy-on-setwindow.html on bots.
693
694         * wtf/WeakPtr.h:
695         (WTF::WeakPtr::operator!):
696
697 2013-09-14  Andreas Kling  <akling@apple.com>
698
699         Get rid of ref-counting on RenderWidget.
700         <https://webkit.org/b/121357>
701
702         Reviewed by Darin Adler.
703
704         * wtf/WeakPtr.h:
705         (WTF::WeakPtr::operator!):
706
707             Add operator! to WeakPtr.
708
709 2013-09-14  Darin Adler  <darin@apple.com>
710
711         Add NeverDestroyed::get
712         https://bugs.webkit.org/show_bug.cgi?id=121358
713
714         Reviewed by Anders Carlsson.
715
716         * wtf/NeverDestroyed.h: Removed code to make this non-copyable, since we also
717         use a macro to accomplish that.
718         (WTF::NeverDestroyed::get): Added. Useful in conjuction with auto to avoid
719         having to repeat the type when we want to put one of these into a reference.
720
721 2013-09-13  Anders Carlsson  <andersca@apple.com>
722
723         Pick the correct overload when a const reference is passed to appendSlowCase.
724         https://bugs.webkit.org/show_bug.cgi?id=121326
725
726         Reviewed by Darin Adler.
727
728         * wtf/Vector.h:
729         (WTF::Vector::appendSlowCase):
730         Make sure that the pointer to the element isn't const so we'll pick the right expandCapacity overload.
731
732 2013-09-13  Anders Carlsson  <andersca@apple.com>
733
734         Avoid a couple of zero-sized fastMalloc calls
735         https://bugs.webkit.org/show_bug.cgi?id=121333
736
737         Reviewed by Geoffrey Garen.
738
739         * wtf/text/StringBuffer.h:
740         (WTF::StringBuffer::StringBuffer):
741         Initialize m_data to null if m_length is null, and use Checked<size_t> to check for
742         overflow when multiplying m_length with the character size.
743
744 2013-09-13  Brent Fulgham  <bfulgham@apple.com>
745
746         [Windows] Activate FastMalloc hardening
747         https://bugs.webkit.org/show_bug.cgi?id=121307
748
749         Reviewed by Oliver Hunt.
750
751         * wtf/FastMalloc.cpp: 
752         (WTF::SLL_Next): Add workaround for MSVC compiler bug.
753
754 2013-09-13  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
755
756         OwnArrayPtr: Never allow implicit pointer conversion
757         https://bugs.webkit.org/show_bug.cgi?id=121291
758
759         Reviewed by Anders Carlsson.
760
761         We should never allow implicit pointer conversion in OwnArrayPtr 
762         and remove its template copy constructor & template assignment operator, as:
763         - these methods are never used
764         - these methods are inappropriate to have in OwnArrayPtr as arrays do not
765           interact well with polymorphism.
766
767         * wtf/OwnArrayPtr.h:
768
769 2013-09-13  Allan Sandfeld Jensen  <allan.jensen@digia.com>
770
771         Remove support for QXmlStream as the XML parser.
772         https://bugs.webkit.org/show_bug.cgi?id=121229
773
774         Reviewed by Andreas Kling.
775
776         Removed USE flags.
777
778         * wtf/Platform.h:
779
780 2013-09-12  Mark Hahnenberg  <mhahnenberg@apple.com>
781
782         Bitmap's WordType should be a template parameter
783         https://bugs.webkit.org/show_bug.cgi?id=121238
784
785         Reviewed by Darin Adler.
786
787         The code is written as if it already is. We just need to lift it out of the class.
788         This simplifies code that wants to load, for example, a single byte rather than an 
789         entire 32-bit word. 
790
791         * wtf/Bitmap.h:
792         (WTF::Bitmap::Bitmap):
793         (WTF::Bitmap::get):
794         (WTF::Bitmap::set):
795         (WTF::Bitmap::testAndSet):
796         (WTF::Bitmap::testAndClear):
797         (WTF::Bitmap::concurrentTestAndSet):
798         (WTF::Bitmap::concurrentTestAndClear):
799         (WTF::Bitmap::clear):
800         (WTF::Bitmap::clearAll):
801         (WTF::Bitmap::nextPossiblyUnset):
802         (WTF::Bitmap::findRunOfZeros):
803         (WTF::Bitmap::count):
804         (WTF::Bitmap::isEmpty):
805         (WTF::Bitmap::isFull):
806
807 2013-09-12  Anders Carlsson  <andersca@apple.com>
808
809         Add rudimentary support for move-only types as values in HashMap
810         https://bugs.webkit.org/show_bug.cgi?id=121226
811
812         Reviewed by Andreas Kling.
813
814         * wtf/HashMap.h:
815         Change a bunch of functions to so they can take both rvalue and lvalue references and use std::forward.
816
817         * wtf/HashTraits.h:
818         (WTF::KeyValuePair::KeyValuePair):
819         Change constructors to accept both lvalues and rvalues.
820
821 2013-09-12  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
822
823         Remove home-brewed nullptr
824         https://bugs.webkit.org/show_bug.cgi?id=119624
825
826         Reviewed by Anders Carlsson.
827
828         The standard C++11 nullptr and std::nullptr_t type should be used now.
829
830         * GNUmakefile.list.am:
831         * WTF.pro:
832         * WTF.vcxproj/WTF.vcxproj:
833         * WTF.vcxproj/WTF.vcxproj.filters:
834         * WTF.xcodeproj/project.pbxproj:
835         * wtf/CMakeLists.txt:
836         * wtf/NullPtr.cpp: Removed.
837         * wtf/NullPtr.h: Removed.
838         * wtf/OwnArrayPtr.h:
839         * wtf/OwnPtr.h:
840         * wtf/PassOwnPtr.h:
841         * wtf/PassRefPtr.h:
842         * wtf/RetainPtr.h:
843         * wtf/win/GDIObject.h:
844
845 2013-09-11  Anders Carlsson  <andersca@apple.com>
846
847         Use the new C++11 function declaration syntax throughout our hash collection classes
848         https://bugs.webkit.org/show_bug.cgi?id=121195
849
850         Reviewed by Andreas Kling.
851
852         * wtf/HashMap.h:
853         * wtf/HashSet.h:
854         * wtf/HashTable.h:
855
856 2013-09-11  Anders Carlsson  <andersca@apple.com>
857
858         Add HashSet::take
859         https://bugs.webkit.org/show_bug.cgi?id=121192
860
861         Reviewed by Darin Adler.
862
863         This is mostly done to see if we can use the new C++11 function declaration syntax,
864         and for parity with HashMap::take. 
865
866         * wtf/HashMap.h:
867         * wtf/HashSet.h:
868
869 2013-09-11  Anders Carlsson  <andersca@apple.com>
870
871         HashSet should work with move only types
872         https://bugs.webkit.org/show_bug.cgi?id=121188
873
874         Reviewed by Geoffrey Garen.
875
876         * wtf/HashSet.h:
877         (WTF::HashSet::add):
878         Add a new rvalue reference overload and use std::move when calling HashTable::add.
879
880         * wtf/HashTable.h:
881         (WTF::IdentityHashTranslator::translate):
882         Change this to take an rvalue reference for the value so we can invoke the move assignment operator.
883
884         (WTF::HashTable::add):
885         Call the add member function template, using std::move to move the value.
886
887         (WTF::HashTable::add):
888         Add std::forward so we'll potentially move extra.
889
890 2013-09-11  Anders Carlsson  <andersca@apple.com>
891
892         Avoid copying a hash table bucket when inserting causes a rehash
893         https://bugs.webkit.org/show_bug.cgi?id=121185
894
895         Reviewed by Darin Adler.
896
897         Allow rehashing to track a hash bucket and return the new pointer to it, thus avoiding
898         having to do a copy of a hash table bucket as well as an extra hash lookup.
899
900         * wtf/HashTable.h:
901
902 2013-09-11  Brent Fulgham  <bfulgham@apple.com>
903
904         [Windows] Unreviewed build fix.
905
906         * wtf/win/GDIObject.h:
907         (WTF::GDIObject::GDIObject): I forgot to check in as part of
908         r155557 by using webkit-patch land in a sub-directory!
909
910 2013-09-11  Oliver Hunt  <oliver@apple.com>
911
912         Partial Information Leakage in Hash Table implementations (PrivateName)
913         https://bugs.webkit.org/show_bug.cgi?id=120663
914
915         Reviewed by Michael Saboff.
916
917         Unique strings now just generate a completely random value as their
918         hash, rather than using their this pointer.
919
920         * wtf/text/StringImpl.h:
921         (WTF::StringImpl::StringImpl):
922
923 2013-09-11  Brent Fulgham  <bfulgham@apple.com>
924
925         Unreviewed build correction.
926
927         * WTF.vcxproj/copy-files.cmd: Touch file to force WTFGenerated
928         build to copy updated GDIObject.h header file on build machines.
929
930 2013-09-11  Anders Carlsson  <andersca@apple.com>
931
932         Vector::append doesn't work if element type has overloaded operator&
933         https://bugs.webkit.org/show_bug.cgi?id=121175
934
935         Reviewed by Brent Fulgham.
936
937         Use std::addressof to get the address of the given object.
938
939         * wtf/Vector.h:
940         (WTF::::appendSlowCase):
941         (WTF::::uncheckedAppend):
942
943 2013-09-11  Anders Carlsson  <andersca@apple.com>
944
945         Vector::append doesn't work if element type has overloaded operator&
946         https://bugs.webkit.org/show_bug.cgi?id=121175
947
948         Reviewed by Brent Fulgham.
949
950         Use std::addressof to get the address of the given object.
951
952         * wtf/Vector.h:
953         (WTF::::appendSlowCase):
954         (WTF::::uncheckedAppend):
955
956 2013-09-11  Anders Carlsson  <andersca@apple.com>
957
958         VectorBuffer::swap doesn't need to use std::swap_ranges
959         https://bugs.webkit.org/show_bug.cgi?id=121164
960
961         Reviewed by Darin Adler.
962
963         There's a std::swap overload for swapping arrays, just use it instead.
964
965         * wtf/Vector.h:
966         (WTF::VectorBuffer::swap):
967
968 2013-09-11  Anders Carlsson  <andersca@apple.com>
969
970         Implement Vector::append for move-only types
971         https://bugs.webkit.org/show_bug.cgi?id=120805
972
973         Reviewed by Andreas Kling.
974
975         * wtf/Vector.h:
976         (WTF::::expandCapacity):
977         Remove const from the pointer passed to expandCapacity, it can be non-const if we're moving.
978
979         (WTF::::append):
980         Change append to take U&& and use std::forward when constructing the element and when passing
981         the element along to appendSlowCase if that's necessary.
982         
983         (WTF::::appendSlowCase):
984         Use std::forward.
985
986         (WTF::::uncheckedAppend):
987         Rename val to value.
988
989 2013-09-11  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
990
991         WTF::OwnPtr should behave similarly with the rest of WTF smart pointers
992         https://bugs.webkit.org/show_bug.cgi?id=120773
993
994         Reviewed by Anders Carlsson.
995
996         Before the change OwnPtr could take either the pointer type or the pointed-to type, which was bad
997         for the following reasons:
998         - It distinguished OwnPtr behaviour from other WTF smart pointer classes behaviour (so it was confusing for the Client).
999         - It was potential error-prone as it actually modified the type given by the Client in opaque way.
1000
1001         * wtf/OwnPtr.h:
1002         * wtf/PassOwnPtr.h:
1003
1004 2013-09-11  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
1005
1006         OwnPtr: Use copy/move-and-swap for assignment operators
1007         https://bugs.webkit.org/show_bug.cgi?id=121154
1008
1009         Reviewed by Anders Carlsson.
1010
1011         Rationals:
1012         - decrease of repeated code
1013         - consistency with RefPtr
1014
1015         * wtf/OwnPtr.h:
1016         (WTF::=):
1017
1018 2013-09-11  Patrick Gansterer  <paroga@webkit.org>
1019
1020         [CMake] Split out generic Windows files into its own file
1021         https://bugs.webkit.org/show_bug.cgi?id=119514
1022
1023         Reviewed by Gyuyoung Kim.
1024
1025         This allows us to add smaller CMakeLists.txt files when
1026         adding additional Windows ports.
1027
1028         * wtf/PlatformWin.cmake: Renamed from Source/WTF/wtf/PlatformWinCE.cmake.
1029
1030 2013-09-10  Daniel Bates  <dabates@apple.com>
1031
1032         [iOS] Upstream text autosizing
1033         https://bugs.webkit.org/show_bug.cgi?id=121111
1034
1035         Reviewed by Andy Estes and Sam Weinig.
1036
1037         Define iOS text autosizing to be enabled on iOS unless otherwise defined.
1038
1039         * wtf/FeatureDefines.h:
1040
1041 2013-09-10  Anders Carlsson  <andersca@apple.com>
1042
1043         Remove wtf/Alignment.h
1044         https://bugs.webkit.org/show_bug.cgi?id=121077
1045
1046         Reviewed by Andreas Kling.
1047
1048         * GNUmakefile.list.am:
1049         * WTF.pro:
1050         * WTF.vcxproj/WTF.vcxproj:
1051         * WTF.vcxproj/WTF.vcxproj.filters:
1052         * WTF.xcodeproj/project.pbxproj:
1053         * wtf/Alignment.h: Removed.
1054         * wtf/CMakeLists.txt:
1055         * wtf/text/ASCIIFastPath.h:
1056
1057 2013-09-10  Anders Carlsson  <andersca@apple.com>
1058
1059         More WTF/Alignment.h removal
1060         https://bugs.webkit.org/show_bug.cgi?id=121125
1061
1062         Reviewed by Andreas Kling.
1063
1064         * wtf/Alignment.h:
1065         * wtf/Vector.h:
1066         (WTF::VectorBuffer::swap):
1067         (WTF::VectorBuffer::inlineBuffer):
1068         * wtf/text/ASCIIFastPath.h:
1069         (WTF::isAlignedTo):
1070         (WTF::isAlignedToMachineWord):
1071
1072 2013-09-10  Brent Fulgham  <bfulgham@apple.com>
1073
1074         Unreviewed build fix after r155476.
1075
1076         * GNUmakefile.list.am: Remove reference to deleted OwnPtrWin.cpp file.
1077         * WTF.pro: Ditto.
1078         * wtf/CMakeLists.txt: Ditto.
1079
1080 2013-09-10  Brent Fulgham  <bfulgham@apple.com>
1081
1082         [Windows] Create SharedGDIObject Class Template
1083         https://bugs.webkit.org/show_bug.cgi?id=121037
1084
1085         Reviewed by Anders Carlsson.
1086
1087         Now that the SharedGDIObject class exists we can get rid of
1088         the Windows-specific code in OwnPtr.
1089
1090         * WTF.vcxproj/WTF.vcxproj: Remove OwnPtrWin.cpp.
1091         * WTF.vcxproj/WTF.vcxproj.filters: Ditto.
1092         * wtf/OwnPtrCommon.h: 
1093         (WTF::deleteOwnedPtr): Remove Windows declarations that
1094         are no longer needed.
1095         * wtf/win/GDIObject.h:
1096         (WTF::GDIObject::get): Change to 'const' to match
1097         signature (and use cases) elsewhere in the code base for
1098         our smart pointer classes.
1099         * wtf/win/OwnPtrWin.cpp: Removed.
1100
1101 2013-09-10  Anders Carlsson  <andersca@apple.com>
1102
1103         Remove more uses of WTF::AlignedBuffer
1104         https://bugs.webkit.org/show_bug.cgi?id=121119
1105
1106         Reviewed by Andreas Kling.
1107
1108         * wtf/HashTable.h:
1109         * wtf/SizeLimits.cpp:
1110
1111 2013-09-10  Anders Carlsson  <andersca@apple.com>
1112
1113         Clean up wtf/Noncopyable.h
1114         https://bugs.webkit.org/show_bug.cgi?id=121115
1115
1116         Reviewed by Darin Adler.
1117
1118         Use std::aligned_storage instead of WTF::AlignedBuffer.
1119
1120         * wtf/NeverDestroyed.h:
1121         (WTF::NeverDestroyed::NeverDestroyed):
1122
1123 2013-09-09  Brent Fulgham  <bfulgham@apple.com>
1124
1125         [Windows] Change from using OwnPtr<GDI Stuff> to new GDIObject template.
1126         https://bugs.webkit.org/show_bug.cgi?id=120778
1127
1128         Reviewed by Anders Carlsson.
1129
1130         * WTF.vcxproj/WTF.vcxproj: Add new GDIObject header file.
1131         * WTF.vcxproj/WTF.vcxproj.filters: Ditto.
1132         * WTF.vcxproj/copy-files.cmd: Copy new header file.
1133         * wtf/OwnPtrCommon.h: Remove some GDI specializations.
1134         * wtf/win/GDIObject.h: Added.
1135         (WTF::GDIObject::GDIObject):
1136         (WTF::GDIObject::~GDIObject):
1137         (WTF::GDIObject::get):
1138         (WTF::GDIObject::operator!):
1139         (WTF::GDIObject::operator UnspecifiedBoolType):
1140         (WTF::GDIObject::operator=):
1141         (WTF::GDIObject::swap):
1142         (WTF::::clear):
1143         (WTF::::leak):
1144         (WTF::::GDIObject):
1145         (WTF::=):
1146         (WTF::adoptGDIObject):
1147         (WTF::swap):
1148         (WTF::T):
1149         (WTF::HDC):
1150         * wtf/win/OwnPtrWin.cpp:
1151         (WTF::deleteOwnedPtr): Remove some GDI specializations.
1152
1153 2013-09-09  Anders Carlsson  <andersca@apple.com>
1154
1155         Introduce WTF::createOwned
1156         https://bugs.webkit.org/show_bug.cgi?id=121059
1157
1158         Reviewed by Andreas Kling.
1159
1160         WTF::createOwned is a function template that does adoptPtr + new in a single function call,
1161         with all the arguments being perfectly forwarded thanks to C++11.
1162         
1163         Being forward-looking, createOwned returns an OwnPtr rather than a PassOwnPtr since the plan is 
1164         to get rid of PassOwnPtr and just use std::move instead.
1165
1166         * wtf/FilePrintStream.cpp:
1167         * wtf/FilePrintStream.h:
1168         * wtf/HashTable.h:
1169         * wtf/ListHashSet.h:
1170         * wtf/OwnPtr.h:
1171         (WTF::OwnPtr::OwnPtr):
1172         (WTF::createOwned):
1173         (WTF::createThread):
1174         (WTF::establishIdentifierForPthreadHandle):
1175         (WTF::createThreadInternal):
1176         (WTF::Collator::userDefault):
1177         (WTF::Collator::userDefault):
1178
1179 2013-09-09  Anders Carlsson  <andersca@apple.com>
1180
1181         Remove wtf/TypeTraits.h
1182         https://bugs.webkit.org/show_bug.cgi?id=121047
1183
1184         Reviewed by Darin Adler.
1185
1186         * GNUmakefile.list.am:
1187         * WTF.pro:
1188         * WTF.vcxproj/WTF.vcxproj:
1189         * WTF.vcxproj/WTF.vcxproj.filters:
1190         * WTF.xcodeproj/project.pbxproj:
1191         * wtf/CMakeLists.txt:
1192         * wtf/TypeTraits.cpp: Removed.
1193         * wtf/TypeTraits.h: Removed.
1194         * wtf/VectorTraits.h:
1195
1196 2013-09-09  Luciano Wolf  <luciano.wolf@openbossa.org>
1197
1198         Nix upstreaming - Adding stubs and Nix specific platform files
1199         https://bugs.webkit.org/show_bug.cgi?id=118358
1200
1201         Reviewed by Benjamin Poulain.
1202
1203         Basically adding all files that have "Nix" in their names and
1204         are related to WebCore module.
1205
1206         * wtf/nix/FeatureDefinesNix.h: Added.
1207         * wtf/nix/PlatformNix.h: Added.
1208
1209 2013-09-08  Anders Carlsson  <andersca@apple.com>
1210
1211         Begin moving off of TypeTraits.h
1212         https://bugs.webkit.org/show_bug.cgi?id=121006
1213
1214         Reviewed by Darin Adler.
1215
1216         The C++11 has its own type traits implementation that is more complete and handles corner cases better
1217         since it ties into the compiler. Begin switching uses of WTF type traits to STL type traits.
1218
1219         * wtf/CheckedArithmetic.h:
1220         * wtf/HashTraits.h:
1221         * wtf/NeverDestroyed.h:
1222         * wtf/OwnPtr.h:
1223         * wtf/PassOwnPtr.h:
1224         (WTF::adoptPtr):
1225         * wtf/RetainPtr.h:
1226
1227 2013-09-09  Julien Brianceau  <jbriance@cisco.com>
1228
1229         [Qt] Remove FastAllocBase.h from WTF.pro.
1230         https://bugs.webkit.org/show_bug.cgi?id=121024
1231
1232         Reviewed by Jocelyn Turcotte.
1233
1234         * WTF.pro: Remove FastAllocBase.h as this file disappeared in r155251.
1235
1236 2013-09-08  Darin Adler  <darin@apple.com>
1237
1238         Deprecate AdoptCF and AdoptNS (on all platforms except iOS for now)
1239         https://bugs.webkit.org/show_bug.cgi?id=121017
1240
1241         Reviewed by Andreas Kling.
1242
1243         * wtf/RetainPtr.h: Use the preprocessor to rename AdoptCF and AdoptNS
1244         to DeprecatedAdoptCF and DeprecatedAdoptNS on all platforms except
1245         for iOS. Also removed an unneeded explicit conversion in the retainPtr
1246         function. Also re-sorted the using lines at the end of the file.
1247
1248 2013-09-08  Anders Carlsson  <andersca@apple.com>
1249
1250         Move WTF::notFound to Vector.h and delete NotFound.h
1251         https://bugs.webkit.org/show_bug.cgi?id=120990
1252
1253         Reviewed by Sam Weinig.
1254
1255         * GNUmakefile.list.am:
1256         * WTF.pro:
1257         * WTF.vcxproj/WTF.vcxproj:
1258         * WTF.vcxproj/WTF.vcxproj.filters:
1259         * WTF.xcodeproj/project.pbxproj:
1260         * wtf/CMakeLists.txt:
1261         * wtf/NotFound.h: Removed.
1262         * wtf/Vector.h:
1263
1264 2013-09-07  David Kilzer  <ddkilzer@apple.com>
1265
1266         gtest fails to build due to integer type mismatch in WTF::insertIntoBoundedVector()
1267         <http://webkit.org/b/120983>
1268
1269         Reviewed by Dan Bernstein.
1270
1271         Fixes the following build failure:
1272
1273             WebKitBuild/Debug/usr/local/include/wtf/StdLibExtras.h:266:23: error: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'unsigned int' [-Werror,-Wshorten-64-to-32]
1274             for (unsigned i = size; i-- > index + 1;)
1275                           ~   ^~~~
1276
1277         * wtf/StdLibExtras.h:
1278         (WTF::insertIntoBoundedVector): Use size_t instead of unsigned
1279         as for loop index variable.
1280
1281 2013-09-07  Anders Carlsson  <andersca@apple.com>
1282
1283         Remove NonCopyableSort.h from WTF
1284         https://bugs.webkit.org/show_bug.cgi?id=120984
1285
1286         Reviewed by Andreas Kling.
1287
1288         std::sort as defined by C++11 moves elements when possible, so there's no need for nonCopyableSort anymore.
1289
1290         * GNUmakefile.list.am:
1291         * WTF.pro:
1292         * WTF.vcxproj/WTF.vcxproj:
1293         * WTF.vcxproj/WTF.vcxproj.filters:
1294         * WTF.xcodeproj/project.pbxproj:
1295         * wtf/NonCopyingSort.h: Removed.
1296
1297 2013-09-07  Anders Carlsson  <andersca@apple.com>
1298
1299         Get rid of PassOwnArrayPtr
1300         https://bugs.webkit.org/show_bug.cgi?id=120964
1301
1302         Reviewed by Andreas Kling.
1303
1304         Make OwnArrayPtr a proper move-only type and get rid of PassOwnArrayPtr.
1305         
1306         Ultimately I'd like to get rid of OwnArrayPtr as well and just have it be a specialization
1307         of OwnPtr<T[]>, but this is a step in the right direction.
1308
1309         * GNUmakefile.list.am:
1310         * WTF.pro:
1311         * WTF.vcxproj/WTF.vcxproj:
1312         * WTF.vcxproj/WTF.vcxproj.filters:
1313         * WTF.xcodeproj/project.pbxproj:
1314         * wtf/Assertions.cpp:
1315         * wtf/CMakeLists.txt:
1316         * wtf/DateMath.h:
1317         * wtf/FastBitVector.h:
1318         * wtf/Forward.h:
1319         * wtf/OwnArrayPtr.h:
1320         * wtf/PassOwnArrayPtr.h: Removed.
1321
1322 2013-09-07  Anders Carlsson  <andersca@apple.com>
1323
1324         VectorMover should use std::move
1325         https://bugs.webkit.org/show_bug.cgi?id=120959
1326
1327         Reviewed by Geoffrey Garen.
1328
1329         This lets the compiler use move constructors when moving data, which can be a performance improvement.
1330         If the vector element type isn't movable it will be copied instead.
1331
1332         * wtf/Vector.h:
1333         (WTF::VectorTypeOperations::move):
1334         (WTF::VectorTypeOperations::moveOverlapping):
1335
1336 2013-09-07  Anders Carlsson  <andersca@apple.com>
1337
1338         Get rid of FastAllocBase.h
1339         https://bugs.webkit.org/show_bug.cgi?id=120952
1340
1341         Reviewed by Antti Koivisto.
1342
1343         FastAllocBase.h now only contains the WTF_MAKE_FAST_ALLOCATED macro. 
1344         Move that macro to FastMalloc.h instead and remove FastAllocBase.h.
1345
1346         * WTF.vcxproj/WTF.vcxproj:
1347         * WTF.vcxproj/WTF.vcxproj.filters:
1348         * WTF.xcodeproj/project.pbxproj:
1349         * wtf/DeferrableRefCounted.h:
1350         * wtf/FastAllocBase.h: Removed.
1351         * wtf/FastMalloc.h:
1352         * wtf/HashSet.h:
1353         * wtf/MediaTime.h:
1354         * wtf/PrintStream.h:
1355         * wtf/RefCounted.h:
1356         * wtf/RefPtr.h:
1357         * wtf/ThreadingPrimitives.h:
1358         * wtf/Vector.h:
1359         * wtf/gobject/GMutexLocker.h:
1360         * wtf/unicode/Collator.h:
1361
1362 2013-09-06  Anders Carlsson  <andersca@apple.com>
1363
1364         Add a new smart pointer type for fastMalloc'ed memory
1365         https://bugs.webkit.org/show_bug.cgi?id=120911
1366
1367         Reviewed by Andreas Kling.
1368
1369         Due to an oversight on my part, Vector::releaseBuffer() currently returns an OwnPtr
1370         which means that its data will be freed with operator delete instead of fastFree.
1371         
1372         Fix this by introducing a new MllocPtr smart pointer class and change Vector::releaseBuffer() to return it instead.
1373
1374         * WTF.pro:
1375         * WTF.vcxproj/WTF.vcxproj:
1376         * WTF.vcxproj/WTF.vcxproj.filters:
1377         * WTF.xcodeproj/project.pbxproj:
1378         * wtf/CMakeLists.txt:
1379         * wtf/FastAllocBase.h:
1380         * wtf/MallocPtr.h: Added.
1381         * wtf/Vector.h:
1382         * wtf/text/StringBuffer.h:
1383         * wtf/text/StringImpl.h:
1384
1385 2013-09-06  Andreas Kling  <akling@apple.com>
1386
1387         Remove old workaround for Nokia's Harmattan GCC on Qt/ARM.
1388         <https://webkit.org/b/37253>
1389
1390         Reviewed by Anders Carlsson.
1391
1392         Apparently this was a workaround for GCC getting stuck in an infinite loop
1393         when building for ARM in a Nokia SDK over 2 years ago.
1394
1395         I think it's safe to remove this now, but if I'm wrong, and you're reading
1396         this ChangeLog wondering why I did this to you, feel free to put it back in.
1397
1398         * wtf/PassRefPtr.h:
1399         (WTF::refIfNotNull):
1400         (WTF::derefIfNotNull):
1401
1402 2013-09-06  Andreas Kling  <akling@apple.com>
1403
1404         Remove unused RefPtr(PlacementNewAdopt) constructor.
1405         <https://webkit.org/b/120914>
1406
1407         Reviewed by Anders Carlsson.
1408
1409         * wtf/RefPtr.h:
1410
1411 2013-09-06  David Kilzer  <ddkilzer@apple.com>
1412
1413         BUILD FIX (r155171): INSTALL_PATH_PREFIX should no longer be used beneath BUILT_PRODUCTS_DIR in HEADER_SEARCH_PATHS for iOS
1414
1415         * Configurations/Base.xcconfig:
1416         (HEADER_SEARCH_PATHS): Change
1417         $(BUILT_PRODUCTS_DIR)/$(INSTALL_PATH_PREFIX)/usr/local/include to
1418         $(BUILT_PRODUCTS_DIR)/usr/local/include.
1419
1420 2013-09-06  Anders Carlsson  <andersca@apple.com>
1421
1422         Remove fastNew/fastDelete
1423         https://bugs.webkit.org/show_bug.cgi?id=120904
1424
1425         Reviewed by Andreas Kling.
1426
1427         Remove the various variants of fastNew and fastDelete.
1428
1429         * wtf/FastAllocBase.h:
1430
1431 2013-09-06  Alberto Garcia  <berto@igalia.com>
1432
1433         [GTK] GlibUtilities: getCurrentExecutablePath() does not compile on GNU/Hurd
1434         https://bugs.webkit.org/show_bug.cgi?id=120793
1435
1436         Reviewed by Gustavo Noronha Silva.
1437
1438         Original patch by Svante Signell <svante.signell@telia.com>.
1439
1440         PATH_MAX is not defined in GNU/Hurd, this patch adds a dummy
1441         implementation to make it compile.
1442
1443         * wtf/gobject/GlibUtilities.cpp:
1444         (getCurrentExecutablePath):
1445
1446 2013-09-05  Dan Bernstein  <mitz@apple.com>
1447
1448         INSTALL_PATH_PREFIX is used even when not installing
1449         https://bugs.webkit.org/show_bug.cgi?id=120810
1450
1451         Reviewed by Andy Estes.
1452
1453         * Configurations/CopyWTFHeaders.xcconfig: Removed INSTALL_PATH_PREFIX from
1454         the definition of PRIVATE_HEADERS_FOLDER_PATH. Also removed the leading
1455         slash, because the Xcode definition of this build setting is relative.
1456         * WTF.xcodeproj/project.pbxproj: Prepend INSTALL_PATH_PREFIX here when installing.
1457
1458 2013-09-05  Anders Carlsson  <andersca@apple.com>
1459
1460         Fix build with older versions of clang from Xcode.
1461
1462         * wtf/Compiler.h:
1463
1464 2013-09-05  Anders Carlsson  <andersca@apple.com>
1465
1466         Make Vector::uncheckedAppend work with move-only types
1467         https://bugs.webkit.org/show_bug.cgi?id=120799
1468
1469         Reviewed by Andreas Kling.
1470
1471         * wtf/Vector.h:
1472         (WTF::::uncheckedAppend):
1473         Use std::forward to invoke the move constructor when possible.
1474
1475 2013-09-05  Anders Carlsson  <andersca@apple.com>
1476
1477         Add COMPILER_SUPPORTS(CXX_AUTO_TYPE) and #error if it's 0
1478         https://bugs.webkit.org/show_bug.cgi?id=120794
1479
1480         Reviewed by Andreas Kling.
1481
1482         People have already begun using C++11 auto in WebCore, so let's make it a prerequisite.
1483
1484         * wtf/Compiler.h:
1485
1486 2013-09-05  Anders Carlsson  <andersca@apple.com>
1487
1488         Clean up wtf/Compiler.h
1489         https://bugs.webkit.org/show_bug.cgi?id=120790
1490
1491         Reviewed by Andreas Kling.
1492
1493         - Get rid of the CLANG_PRAGMA define, it's not used anywhere.
1494         - Remove a workaround for a bug in the version of clang that came with Xcode 4.2.
1495         - Replace WTF_COMPILER_SUPPORTS_CXX_FINAL_CONTROL with a compiler quirk for versions of clang
1496           that have a buggy final implementation and fix a bug in the macro where final would be disabled
1497           for versions of clang where __clang_minor__ is less than 2, regardless of the major version.
1498         - Fail if someone tries to compile the WebKit stack with a compiler that doesn't support rvalue
1499           references or static_assert.
1500
1501         * wtf/Compiler.h:
1502
1503 2013-09-05  Anders Carlsson  <andersca@apple.com>
1504
1505         Change StringBuffer back to not use an OwnPtr in an attempt to fix ports.
1506         
1507         * wtf/text/StringBuffer.h:
1508
1509 2013-09-04  Anders Carlsson  <andersca@apple.com>
1510
1511         Vector::releaseBuffer should return an OwnPtr
1512         https://bugs.webkit.org/show_bug.cgi?id=120718
1513
1514         Reviewed by Andreas Kling.
1515
1516         Change Vector::releaseBuffer() to return an OwnPtr. I intentionally chose
1517         to use an OwnPtr over a PassOwnPtr since we're trying to move away from PassOwnPtr objects.
1518         
1519         Fix fallout from this change by adopting OwnPtr/PassOwnPtr in StringBuffer and the two StringImpl
1520         constructors that adopt the passed in pointer.
1521
1522         * wtf/Vector.h:
1523         * wtf/text/StringBuffer.h:
1524         * wtf/text/StringImpl.h:
1525
1526 2013-09-05  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
1527
1528         Remove String(RefPtr<StringImpl>) constructor
1529         https://bugs.webkit.org/show_bug.cgi?id=120767
1530
1531         Reviewed by Anders Carlsson.
1532
1533         The String(RefPtr<StringImpl>) constructor should be removed for the following reasons:
1534         - It almost does not have clients, so it is unneeded.
1535         - RefPtr should never be passed by value
1536
1537         * wtf/text/StringBuilder.cpp:
1538         (WTF::StringBuilder::shrinkToFit):
1539         * wtf/text/WTFString.h:
1540
1541 2013-09-05  Jaehun Lim  <ljaehun.lim@samsung.com>
1542
1543         Unreviewed. Fix build after r155083
1544
1545         Source/WTF/wtf/Vector.h:1210:48: error: ‘>>’ should be ‘> >’ within a nested template argument list
1546
1547         * wtf/Vector.h: Add missing space.
1548
1549 2013-09-04  Mark Rowe  <mrowe@apple.com>
1550
1551         Fix AutodrainedPool.h to compile without errors under ARC.
1552
1553         Rubber-stamped by Anders Carlsson.
1554
1555         * wtf/AutodrainedPool.h: Some versions of Clang complain about any use of NSAutoreleasePool under ARC.
1556         Change the type of the member variable to id to work around this. Since the implementation file is compiled
1557         under manual reference counting, everything will work fine.
1558
1559 2013-09-04  Anders Carlsson  <andersca@apple.com>
1560
1561         De-indent Vector.h.
1562
1563         Rubber-stamped by Andreas Kling.
1564         
1565         I'm cleaning up Vector and making it work with move-only objects, and the namespace WTF
1566         indentation is driving me crazy.
1567
1568         * wtf/Vector.h:
1569
1570 2013-09-03  Filip Pizlo  <fpizlo@apple.com>
1571
1572         CodeBlock memory cost reporting should be rationalized
1573         https://bugs.webkit.org/show_bug.cgi?id=120615
1574
1575         Reviewed by Darin Adler.
1576
1577         * wtf/RefCountedArray.h:
1578         (WTF::RefCountedArray::refCount):
1579
1580 2013-09-03  Enrica Casucci  <enrica@apple.com>
1581
1582         Follow up to http://trac.webkit.org/changeset/155014
1583
1584         Reviewed by Alexey Proskuryakov.
1585
1586         In the r155014 I renamed hasLineBreakingPropertyComplexContext
1587         to requiresComplexContextForWordBreaking but forgot to
1588         make the same change in UnicodeWchar.h.
1589
1590         * wtf/unicode/wchar/UnicodeWchar.cpp:
1591         (WTF::Unicode::requiresComplexContextForWordBreaking):
1592         * wtf/unicode/wchar/UnicodeWchar.h:
1593
1594 2013-09-03  Enrica Casucci  <enrica@apple.com>
1595
1596         Can't select Katakana word by double-clicking.
1597         <rdar://problem/14654926>
1598
1599         Reviewed by Alexey Proskuryakov and Ryosuke Niwa.
1600
1601         For some languages, like Japanese we need
1602         to use more context for word breaking.
1603         I've renamed the function to better reflect its use
1604         and remove the unused hasLineBreakingPropertyComplexContextOrIdeographic.
1605
1606         * wtf/unicode/icu/UnicodeIcu.h:
1607         (WTF::Unicode::requiresComplexContextForWordBreaking):
1608
1609 2013-09-03  Andreas Kling  <akling@apple.com>
1610
1611         Support Vector<Ref<T>>.
1612         <https://webkit.org/b/120637>
1613
1614         Reviewed by Antti Koivisto.
1615
1616         Add a Ref(const T&) constructor to enable Vector<Ref<T>>. This looks a bit awkward
1617         but is necessary for Vector::append(const T&) to find a constructor.
1618
1619         An alternative would be to add something like std::vector::emplace_back, but I can't
1620         think of a good name for that, and it'd be nice if append() would "just work."
1621
1622         Also add operator->(). I initially excluded this because I felt it made for
1623         unsafe-looking code. Things quickly got out of hand with .get() everywhere though.
1624
1625         IMO -> looks OK as long as it's only used on the first link in a dereference chain,
1626         as that variable and its type will be "in context."
1627
1628         * wtf/Ref.h:
1629         (WTF::Ref::Ref):
1630         (WTF::Ref::~Ref):
1631         (WTF::Ref::operator->):
1632         (WTF::Ref::get):
1633         * wtf/VectorTraits.h:
1634
1635             Add simple traits for Ref<T> so it can be moved around freely by Vector.
1636
1637 2013-09-03  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
1638
1639         Check WTF::VectorFiller template argument type size in compile time
1640         https://bugs.webkit.org/show_bug.cgi?id=120631
1641
1642         Reviewed by Darin Adler.
1643
1644         The template argument's type size in WTF::VectorFiller 'memset' specialization
1645         should be checked during compilation rather than in runtime.
1646
1647         * wtf/Vector.h:
1648
1649 2013-09-02  Darin Adler  <darin@apple.com>
1650
1651         Cut down on double hashing and code needlessly using hash table iterators
1652         https://bugs.webkit.org/show_bug.cgi?id=120611
1653
1654         Reviewed by Andreas Kling.
1655
1656         Double hashing is common in code that needs to combine a remove with some
1657         action to only be done if the code is removed. The only way to avoid it is
1658         to write code using find and a hash table iterator. To help with this, add
1659         a boolean return value to remove functions to indicate if anything was removed.
1660
1661         Double hashing also happens in code that does a get followed by a remove.
1662         The take function is helpful in this case. To help with this, add a takeFirst
1663         funciton to ListHashSet.
1664
1665         * wtf/HashCountedSet.h:
1666         (WTF::HashCountedSet::removeAll): Added a boolean return value, analogous to the one
1667         that the HashCountedSet::remove function already has.
1668
1669         * wtf/HashMap.h:
1670         (WTF::HashMap::remove): Added a boolean return value, true if something was removed.
1671         * wtf/HashSet.h:
1672         (WTF::HashSet::remove): Ditto.
1673         * wtf/RefPtrHashMap.h:
1674         (WTF::RefPtrHashMap::remove): Ditto.
1675
1676         * wtf/ListHashSet.h:
1677         (WTF::ListHashSet::takeFirst): Added.
1678         (WTF::ListHashSet::takeLast): Added.
1679         (WTF::ListHashSet::remove): Added a boolean return value, true if something was removed.
1680
1681         * wtf/WTFThreadData.h:
1682         (JSC::IdentifierTable::remove): Use the new remove return value to get rid of most of
1683         the code in this function.
1684
1685 2013-09-02  David Kilzer  <ddkilzer@apple.com>
1686
1687         Remove duplicate entries found by Xcode in WTF project
1688
1689         Platform.h was duplicated in r111778 after being added in
1690         r111504.
1691
1692         A dangling reference to Ref.h was added in r154962.
1693
1694         * WTF.xcodeproj/project.pbxproj: Remove duplicate entries for
1695         Platform.h and Ref.h.
1696
1697 2013-09-02  Andreas Kling  <akling@apple.com>
1698
1699         Actually add Ref.h
1700
1701 2013-09-02  Darin Adler  <darin@apple.com>
1702
1703         [Mac] No need for HardAutorelease, which is same as CFBridgingRelease
1704         https://bugs.webkit.org/show_bug.cgi?id=120569
1705
1706         Reviewed by Andy Estes.
1707
1708         * wtf/ObjcRuntimeExtras.h: Added a FIXME about miscapitalization of ObjC.
1709         Deleted HardAutorelease.
1710         (wtfObjcMsgSend): Dropped the use of abbreviations in local class and argument names.
1711         (wtfCallIMP): Ditto.
1712
1713 2013-09-01  Andreas Kling  <akling@apple.com>
1714
1715         Ref: A smart pointer for the reference age.
1716         <https://webkit.org/b/120570>
1717
1718         Reviewed by Antti Koivisto.
1719
1720         Add a very simple simple Ref<T> smart pointer class that is never null.
1721         It's initialized by passing a T& to the constructor and cannot be assigned to.
1722
1723         operator-> is not overloaded, to prevent unsafe-looking code.
1724         The value is extracted by "T& get()", since C++ does not let you override operator.()
1725
1726         * wtf/Ref.h:
1727
1728 2013-08-30  Oliver Hunt  <oliver@apple.com>
1729
1730         Make JSValue bool conversion less dangerous
1731         https://bugs.webkit.org/show_bug.cgi?id=120505
1732
1733         Reviewed by Darin Adler.
1734
1735         Make LIKELY and UNLIKELY macros coerce to bool before
1736         passing to expect.
1737
1738         * wtf/Compiler.h:
1739
1740 2013-08-30  Antti Koivisto  <antti@apple.com>
1741
1742         Remove code behind ENABLE(DIALOG_ELEMENT)
1743         https://bugs.webkit.org/show_bug.cgi?id=120467
1744
1745         Reviewed by Darin Adler.
1746
1747         * wtf/FeatureDefines.h:
1748
1749 2013-08-29  Sam Weinig  <sam@webkit.org>
1750
1751         Add ENABLE guards for Promises
1752         https://bugs.webkit.org/show_bug.cgi?id=120488
1753
1754         Reviewed by Andreas Kling.
1755
1756         * wtf/FeatureDefines.h:
1757
1758 2013-08-28  Zan Dobersek  <zdobersek@igalia.com>
1759
1760         [GTK] Add support for building JSC with FTL JIT enabled
1761         https://bugs.webkit.org/show_bug.cgi?id=120270
1762
1763         Reviewed by Filip Pizlo.
1764
1765         * wtf/Platform.h: Define ENABLE_FTL_JIT to the value of 1 for the GTK port if building for the x86-64
1766         architecture with LLVM present and the define not being previously defined. This is applicable when
1767         configuring the Automake build with '--enable-ftl-jit=auto'.
1768
1769 2013-08-27  Arunprasad Rajkumar  <arurajku@cisco.com>
1770
1771         Replace currentTime() with monotonicallyIncreasingTime() in WebCore
1772         https://bugs.webkit.org/show_bug.cgi?id=119958
1773
1774         Reviewed by Alexey Proskuryakov.
1775
1776         WTF::currentTime() is prone to NTP and manual adjustments, so use
1777         WTF::monotonicallyIncreasingTime() to measure elapsed time.
1778
1779         It is a continuation of r154201.
1780
1781         * wtf/CurrentTime.h: Edited comment.
1782
1783 2013-08-27  Andre Moreira Magalhaes   <andre.magalhaes@collabora.co.uk>
1784
1785         [gstreamer] Make sure gstreamer source element is thread-safe
1786         https://bugs.webkit.org/show_bug.cgi?id=115352
1787
1788         Reviewed by Philippe Normand.
1789
1790         Add convenience class that simplifies locking and unlocking a GMutex.
1791
1792         * GNUmakefile.list.am:
1793         * wtf/gobject/GMutexLocker.h: Added.
1794         (WebCore::GMutexLocker::GMutexLocker):
1795         (WebCore::GMutexLocker::~GMutexLocker):
1796         (WebCore::GMutexLocker::lock):
1797         (WebCore::GMutexLocker::unlock):
1798         (WebCore::GMutexLocker::mutex):
1799
1800 2013-08-26  Andy Estes  <aestes@apple.com>
1801
1802         Don't leak objects in HardAutorelease when OBJC_NO_GC is undefined but
1803         Objective-C GC is disabled at runtime.
1804         
1805         Reviewed by Darin Adler.
1806
1807         * wtf/ObjcRuntimeExtras.h:
1808         (HardAutorelease):
1809
1810 2013-08-23  Andy Estes  <aestes@apple.com>
1811
1812         Fix issues found by the Clang Static Analyzer
1813         https://bugs.webkit.org/show_bug.cgi?id=120230
1814
1815         Reviewed by Darin Adler.
1816
1817         * wtf/ObjcRuntimeExtras.h:
1818         (HardAutorelease): Added a canonical implementation of HardAutorelease.
1819
1820 2013-08-26  Zan Dobersek  <zdobersek@igalia.com>
1821
1822         Undefine __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS before redefining them
1823         https://bugs.webkit.org/show_bug.cgi?id=120313
1824
1825         Reviewed by Darin Adler.
1826
1827         * wtf/LLVMHeaders.h: Undefine the two macros before they are defined again.
1828         This way we avoid the compilation-time warnings about the macros being invalidly redefined.
1829
1830 2013-08-26  Oliver Hunt  <oliver@apple.com>
1831
1832         Building is so overrated.
1833
1834         * wtf/Compression.cpp:
1835         (WTF::GenericCompressedData::decompress):
1836
1837 2013-08-26  Oliver Hunt  <oliver@apple.com>
1838
1839         Disable compression under MSVC for now as we're getting
1840         weird release-only failures.
1841
1842         * wtf/Compression.cpp:
1843
1844 2013-08-24  Benjamin Poulain  <benjamin@webkit.org>
1845
1846         Save three bytes per CStringBuffer object
1847         https://bugs.webkit.org/show_bug.cgi?id=120040
1848
1849         Reviewed by Darin Adler.
1850
1851         Merge https://chromium.googlesource.com/chromium/blink/+/894ae8eafdb64912aefd8f9c809f4ccda84f3b89
1852
1853         sizeof(CStringBuffer) was rounded up to 8 on account of struct size and
1854         alignment rules. This is clearly not what was intended.
1855
1856         * wtf/text/CString.cpp:
1857         (WTF::CStringBuffer::createUninitialized):
1858         * wtf/text/CString.h:
1859         (WTF::CStringBuffer::data):
1860         (WTF::CStringBuffer::mutableData):
1861
1862 2013-08-24  Darin Adler  <darin@apple.com>
1863
1864         RetainPtr lacks move constructor for case when argument is a RetainPtr of a different type
1865         https://bugs.webkit.org/show_bug.cgi?id=120255
1866
1867         Reviewed by Andreas Kling.
1868
1869         * wtf/RetainPtr.h: Added missing move constructor, modeled on the other move constructor,
1870         and the one from RetPtr.
1871
1872 2013-08-24  Oliver Hunt  <oliver@apple.com>
1873
1874         Make the world build.
1875
1876         * wtf/Compression.h:
1877
1878 2013-08-24  Oliver Hunt  <oliver@apple.com>
1879
1880         REGRESSION(r154498): Crashes on EFL, GTK, Qt on release configurations
1881         https://bugs.webkit.org/show_bug.cgi?id=120246
1882
1883         Reviewed by Antti Koivisto.
1884
1885         Undestroy all the platforms that don't use the global new overload
1886
1887         * wtf/Compression.h:
1888
1889 2013-08-21  Mark Rowe  <mrowe@apple.com>
1890
1891         <https://webkit.org/b/120141> Make RetainPtr work with ARC.
1892
1893         Have RetainPtr store the object its managing as a CFTypeRef and manage its lifetime with
1894         CFRetain / CFRelease. This is necessary to have explicit control over the lifetime of
1895         Objective-C objects when automatic reference counting is in use. Two helper methods are
1896         introduced to convert between the pointer type that the RetainPtr manages and the CFTypeRef
1897         that the pointer is stored as. For CF types and Objective-C types with ARC disabled,
1898         these methods are simply casts. For Objective-C types under ARC they need to use the
1899         special bridging casts to keep the compiler happy.
1900
1901         Reviewed by Anders Carlsson.
1902
1903         * wtf/RetainPtr.h:
1904         (WTF::RetainPtr::RetainPtr): Use the helper methods to convert to and from the storage
1905         types when necessary.
1906         (WTF::RetainPtr::~RetainPtr): Ditto.
1907         (WTF::RetainPtr::get): Ditto.
1908         (WTF::RetainPtr::operator->): Ditto.
1909         (WTF::RetainPtr::operator PtrType): Ditto.
1910         (WTF::::RetainPtr): Ditto.
1911         (WTF::::clear): Ditto.
1912         (WTF::::leakRef): Ditto.
1913         (WTF::=): Ditto.
1914
1915         (WTF::RetainPtr::fromStorageTypeHelper): Use crazy template magic to determine whether to use
1916         a bridging cast or not depending on the desired return type.
1917         (WTF::RetainPtr::fromStorageType):
1918         (WTF::RetainPtr::toStorageType): Overloading is sufficient here.
1919
1920 2013-08-21  Mark Rowe  <mrowe@apple.com>
1921
1922         Revert r153637.
1923
1924         It didn't work with ARC like it said it would. We'll need to take a slightly different approach.
1925
1926         Rubber-stamped by Anders Carlsson.
1927
1928         * wtf/RetainPtr.h:
1929         (WTF::RetainPtr::RetainPtr):
1930         (WTF::RetainPtr::~RetainPtr):
1931         (WTF::RetainPtr::operator UnspecifiedBoolType):
1932         (WTF::::RetainPtr):
1933         (WTF::::clear):
1934         (WTF::=):
1935         (WTF::adoptCF):
1936         (WTF::adoptNS):
1937
1938 2013-08-23  Brent Fulgham  <bfulgham@apple.com>
1939
1940         [Windows] Unreviewed build correction after r154513.
1941
1942         * WTF.vcxproj/build-generated-files.sh: Variable was missing '$' character.
1943
1944 2013-08-23  Darin Adler  <darin@apple.com>
1945
1946         Cut down repeated code in RefPtr and RetainPtr by using copy/move-and-swap for assignment operators
1947         https://bugs.webkit.org/show_bug.cgi?id=120223
1948
1949         Reviewed by Anders Carlsson.
1950
1951         * wtf/RefPtr.h: Switch to copy-and-swap in the assignment operators. The move ones already were done
1952         that way.
1953         * wtf/RetainPtr.h: Ditto, except for the move ones too.
1954
1955 2013-08-23  Oliver Hunt  <oliver@apple.com>
1956
1957         Add more validation logic to CompressibleVector
1958         https://bugs.webkit.org/show_bug.cgi?id=120227
1959
1960         Reviewed by Brent Fulgham.
1961
1962         Add a pile of assertions to try on catch whatever is going wrong
1963         in the windows environment or other platforms.
1964
1965         * wtf/Compression.cpp:
1966         (WTF::GenericCompressedData::create):
1967         (WTF::GenericCompressedData::decompress):
1968         * wtf/Compression.h:
1969         (WTF::CompressedVector::decompress):
1970
1971 2013-08-23  Alex Christensen  <achristensen@apple.com>
1972
1973         Re-separating Win32 and Win64 builds.
1974         https://bugs.webkit.org/show_bug.cgi?id=120178
1975
1976         Reviewed by Brent Fulgham.
1977
1978         * WTF.vcxproj/WTFGenerated.make:
1979         Pass PlatformArchitecture as a command line parameter to bash scripts.
1980         * WTF.vcxproj/build-generated-files.sh:
1981         Use PlatformArchitecture from command line to determine which object directory to use (obj32 or obj64).
1982
1983 2013-08-22  Filip Pizlo  <fpizlo@apple.com>
1984
1985         build-jsc --ftl-jit should work
1986         https://bugs.webkit.org/show_bug.cgi?id=120194
1987
1988         Reviewed by Oliver Hunt.
1989
1990         * wtf/LLVMHeaders.h: I don't know what went wrong here. If HAVE(LLVM), then we need those headers!
1991
1992 2013-08-23  Brent Fulgham  <bfulgham@apple.com>
1993
1994         [Windows] Unreviewed build correction after r154498.
1995
1996         * WTF.vcxproj/WTF.vcxproj.filters: Adjust files so they show up
1997         in the proper folders.
1998         * WTF.vcxproj/WTFCommon.props: Add search path for zlib header and
1999         include link directive.
2000
2001 2013-08-23  Oliver Hunt  <oliver@apple.com>
2002
2003         Attempt to appease windows bot.
2004
2005         * wtf/Compression.h:
2006
2007 2013-08-23  Oliver Hunt  <oliver@apple.com>
2008
2009         Re-sort xcode project file
2010
2011         * WTF.xcodeproj/project.pbxproj:
2012
2013 2013-08-23  Oliver Hunt  <oliver@apple.com>
2014
2015         Support in memory compression of rarely used data
2016         https://bugs.webkit.org/show_bug.cgi?id=120143
2017
2018         Reviewed by Gavin Barraclough.
2019
2020         Adds a set of utility functions to wrap the use of zlib over a generic
2021         type or a Vector<> as well as adding CompressibleVector that wraps
2022         either a Vector<> or compressed data.
2023
2024         * GNUmakefile.list.am:
2025         * WTF.pro:
2026         * WTF.vcxproj/WTF.vcxproj:
2027         * WTF.xcodeproj/project.pbxproj:
2028         * wtf/CMakeLists.txt:
2029         * wtf/CheckedArithmetic.h:
2030         * wtf/Compression.cpp: Added.
2031         (WTF::zAlloc):
2032         (WTF::zFree):
2033         (WTF::GenericCompressedData::create):
2034         (WTF::GenericCompressedData::decompress):
2035         * wtf/Compression.h: Added.
2036         (WTF::GenericCompressedData::compressedSize):
2037         (WTF::GenericCompressedData::originalSize):
2038         (WTF::GenericCompressedData::GenericCompressedData):
2039         (WTF::CompressedVector::create):
2040         (WTF::CompressedVector::decompress):
2041         (WTF::CompressedVector::size):
2042         (WTF::CompressibleVector::CompressibleVector):
2043         (WTF::CompressibleVector::shrinkToFit):
2044         (WTF::CompressibleVector::size):
2045         (WTF::CompressibleVector::operator[]):
2046         (WTF::CompressibleVector::at):
2047         (WTF::CompressibleVector::begin):
2048         (WTF::CompressibleVector::end):
2049         (WTF::CompressibleVector::data):
2050         (WTF::CompressibleVector::decompressIfNecessary):
2051
2052 2013-08-21  Commit Queue  <commit-queue@webkit.org>
2053
2054         Unreviewed, rolling out r154416.
2055         http://trac.webkit.org/changeset/154416
2056         https://bugs.webkit.org/show_bug.cgi?id=120147
2057
2058         Broke Windows builds (Requested by rniwa on #webkit).
2059
2060         * WTF.vcxproj/WTFGenerated.make:
2061         * WTF.vcxproj/build-generated-files.sh:
2062
2063 2013-08-21  Alex Christensen  <achristensen@apple.com>
2064
2065         <https://webkit.org/b/120137> Separating Win32 and Win64 builds.
2066
2067         Reviewed by Brent Fulgham.
2068
2069         * WTF.vcxproj/WTFGenerated.make:
2070         Pass PlatformArchitecture as a command line parameter to bash scripts.
2071         * WTF.vcxproj/build-generated-files.sh:
2072         Use PlatformArchitecture from command line to determine which object directory to use (obj32 or obj64).
2073
2074 2013-08-21  Allan Sandfeld Jensen  <allan.jensen@digia.com>
2075
2076         Disable maybe-uninitialized warning in GCC 4.8
2077         https://bugs.webkit.org/show_bug.cgi?id=119835
2078
2079         Reviewed by Anders Carlsson.
2080
2081         Disable the maybe-uninitialized warning.
2082
2083         * wtf/Compiler.h:
2084
2085 2013-08-20  Alex Christensen  <achristensen@apple.com>
2086
2087         Use PlatformArchitecture to distinguish between 32-bit and 64-bit builds on Windows.
2088         https://bugs.webkit.org/show_bug.cgi?id=119512
2089
2090         Reviewed by Brent Fulgham.
2091
2092         * WTF.vcxproj/WTFGeneratedCommon.props:
2093         Replaced obj32, bin32, and lib32 with macros for 64-bit build.
2094
2095 2013-08-20  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>
2096
2097         <https://webkit.org/b/120056> [GTK][ARM] enable DFG_JIT
2098
2099         Reviewed by Martin Robinson.
2100
2101         Enable DFG_JIT in GTK+ platform for ARM/Thumb architecture
2102
2103         * wtf/Platform.h:
2104
2105 2013-08-19  Ryosuke Niwa  <rniwa@webkit.org>
2106
2107         <https://webkit.org/b/120049> Delete code for Snow Leopard
2108
2109         Reviewed by Benjamin Poulain.
2110
2111         * wtf/FastMalloc.cpp:
2112         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
2113         * wtf/FeatureDefines.h:
2114         * wtf/Platform.h:
2115
2116 2013-08-19  Joseph Pecoraro  <pecoraro@apple.com>
2117
2118         <https://webkit.org/b/120036> [iOS] Upstream Source/WTF Xcode project for iOS
2119
2120         Reviewed by David Kilzer.
2121
2122         Include iOS only WebCoreThread.* files in an ios group, and clean up
2123         the included files a bit.
2124
2125         * WTF.xcodeproj/project.pbxproj:
2126         * wtf/ios/WebCoreThread.cpp:
2127         * wtf/ios/WebCoreThread.h:
2128
2129 2013-08-19  Joseph Pecoraro  <pecoraro@apple.com>
2130
2131         <https://webkit.org/b/119905> [iOS] Upstream Source/WTF
2132
2133         Reviewed by Benjamin Poulain.
2134
2135         Upstream iOS WebKit Source/WTF.
2136
2137         * Configurations/Base.xcconfig:
2138         JavaScriptCore.framework is a public framework.
2139
2140         * wtf/Assertions.h:
2141         Define an export macro for iOS projects just including <wtf/Assertions.h>.
2142
2143         * wtf/Platform.h:
2144         * wtf/FeatureDefines.h:
2145         iOS ENABLE and USE defines.
2146
2147         * wtf/MainThread.h:
2148         * wtf/mac/MainThreadMac.mm:
2149         (WTF::initializeApplicationUIThreadIdentifier):
2150         (WTF::initializeWebThreadIdentifier):
2151         (WTF::canAccessThreadLocalDataForThread):
2152         * wtf/WeakPtr.h:
2153         (WTF::WeakReference::get):
2154         (WTF::WeakReference::clear):
2155         Shared WebThread and MainThread access to thread local data.
2156
2157         * wtf/WTFThreadData.cpp:
2158         (WTF::WTFThreadData::WTFThreadData):
2159         Shared WebThread and MainThread identifier tables.
2160
2161         * wtf/ThreadSpecific.h:
2162         (WTF::::replace):
2163         Used later on so that WebThread can share the MainThread's thread global data.
2164
2165         * wtf/text/StringStatics.cpp:
2166         (WTF::AtomicString::init):
2167         When USE(WEB_THREAD) assert AtomicString::init is initialized on the realMainThread.
2168
2169         * wtf/unicode/CharacterNames.h:
2170         * wtf/unicode/icu/UnicodeIcu.h:
2171         (WTF::Unicode::hasLineBreakingPropertyComplexContextOrIdeographic):
2172         Minor iOS constants and functions used later by WebCore.
2173
2174 2013-08-16  Arunprasad Rajkumar  <arurajku@cisco.com>
2175
2176         <https://webkit.org/b/119785> Replace currentTime() with monotonicallyIncreasingTime() in WebCore
2177
2178         Reviewed by Alexey Proskuryakov.
2179
2180         WTF::currentTime() is prone to DST changes and NTP adjustments, so use
2181         WTF::monotonicallyIncreasingTime() to measure elapsed time.
2182
2183         * wtf/CurrentTime.h:
2184         (WTF::monotonicallyIncreasingTimeMS): Added mille second version of monotonic time API.
2185
2186 2013-08-15  Filip Pizlo  <fpizlo@apple.com>
2187
2188         refCount() of a StringImpl could be zero if it's static; in that case we shouldn't report extra memory cost
2189         https://bugs.webkit.org/show_bug.cgi?id=119870
2190
2191         Reviewed by Mark Hahnenberg.
2192
2193         * wtf/text/StringImpl.h:
2194         (WTF::StringImpl::costDuringGC):
2195         (WTF::StringImpl::isStatic):
2196         (WTF::StringImpl::bufferOwnership):
2197
2198 2013-08-14  Filip Pizlo  <fpizlo@apple.com>
2199
2200         Typed arrays should be rewritten
2201         https://bugs.webkit.org/show_bug.cgi?id=119064
2202
2203         Reviewed by Oliver Hunt.
2204         
2205         - Added the notion of a reference counted object that can be marked Deferred,
2206           which is like a special-purpose upref.
2207         
2208         - Added a common byte flipper.
2209
2210         Automake work courtesy of Zan Dobersek <zdobersek@igalia.com>.
2211
2212         * GNUmakefile.list.am:
2213         * WTF.xcodeproj/project.pbxproj:
2214         * wtf/DeferrableRefCounted.h: Added.
2215         (WTF::DeferrableRefCountedBase::ref):
2216         (WTF::DeferrableRefCountedBase::hasOneRef):
2217         (WTF::DeferrableRefCountedBase::refCount):
2218         (WTF::DeferrableRefCountedBase::isDeferred):
2219         (WTF::DeferrableRefCountedBase::DeferrableRefCountedBase):
2220         (WTF::DeferrableRefCountedBase::~DeferrableRefCountedBase):
2221         (WTF::DeferrableRefCountedBase::derefBase):
2222         (WTF::DeferrableRefCountedBase::setIsDeferredBase):
2223         (WTF::DeferrableRefCounted::deref):
2224         (WTF::DeferrableRefCounted::setIsDeferred):
2225         (WTF::DeferrableRefCounted::DeferrableRefCounted):
2226         (WTF::DeferrableRefCounted::~DeferrableRefCounted):
2227         * wtf/FlipBytes.h: Added.
2228         (WTF::needToFlipBytesIfLittleEndian):
2229         (WTF::flipBytes):
2230         (WTF::flipBytesIfLittleEndian):
2231
2232 2013-08-14  Julien Brianceau  <jbrianceau@nds.com>
2233
2234         DFG_JIT implementation for sh4 architecture.
2235         https://bugs.webkit.org/show_bug.cgi?id=119737
2236
2237         Reviewed by Oliver Hunt.
2238
2239         * wtf/Platform.h:
2240
2241 2013-08-13  Arunprasad Rajkumar  <arurajku@cisco.com>
2242
2243         [WTF] [JSC] Replace currentTime() with monotonicallyIncreasingTime() in all possible places
2244         https://bugs.webkit.org/show_bug.cgi?id=119762
2245
2246         Reviewed by Geoffrey Garen.
2247
2248         * wtf/MainThread.cpp:
2249         (WTF::dispatchFunctionsFromMainThread):
2250
2251 2013-08-12  Ragner Magalhaes  <ranger.n@samsung.com>
2252
2253         Broken build with build-webkit --no-webgl
2254         https://bugs.webkit.org/show_bug.cgi?id=119272
2255
2256         Reviewed by Alexandru Chiculita.
2257
2258         CSS_SHADERS requires WEBGL enabled.
2259         Add error message to dependency failure.
2260
2261         * wtf/FeatureDefines.h:
2262
2263 2013-08-12  Joseph Pecoraro  <pecoraro@apple.com>
2264
2265         [iOS] isMainThread implementation with USE(WEB_THREAD)
2266         https://bugs.webkit.org/show_bug.cgi?id=119644
2267
2268         Reviewed by Benjamin Poulain.
2269
2270         On iOS isMainThread() means that the current thread is either the
2271         MainThread or WebThread and the current thread has the WebThreadLock.
2272
2273         * wtf/ios/WebCoreThread.cpp: Added.
2274         * wtf/ios/WebCoreThread.h: Added.
2275         * wtf/mac/MainThreadMac.mm:
2276         (WTF::isMainThread):
2277
2278 2013-08-11  Carlos Garcia Campos  <cgarcia@igalia.com>
2279
2280         Unreviewed. Fix make distcheck.
2281
2282         * GNUmakefile.list.am: Add missing header file.
2283
2284 2013-08-09  Christophe Dumez  <ch.dumez@sisa.samsung.com>
2285
2286         Make atob() throw an InvalidCharacterError on excess padding characters
2287         https://bugs.webkit.org/show_bug.cgi?id=118898
2288
2289         Reviewed by Darin Adler.
2290
2291         Add a Base64FailOnInvalidCharacterOrExcessPadding value to the Base64DecodePolicy
2292         enumeration so that the caller can request strict padding validation in addition
2293         to strict character validation. This is needed so that we can use
2294         WTF::base64Decode() for window.atob().
2295
2296         * wtf/text/Base64.cpp:
2297         (WTF::base64DecodeInternal):
2298         * wtf/text/Base64.h:
2299
2300 2013-08-07  Alex Christensen  <achristensen@apple.com>
2301
2302         Fixed wrong definition for AppleWin port's WebGL after r153768.
2303
2304         Rubberstamped by Benjamin Poulain.
2305
2306         * wtf/Platform.h: Replaced WTF_USE_SURFACE with WTF_USE_GRAPHICS_SURFACE.
2307
2308 2013-08-04  Sam Weinig  <sam@webkit.org>
2309
2310         Remove support for HTML5 MicroData
2311         https://bugs.webkit.org/show_bug.cgi?id=119480
2312
2313         Reviewed by Anders Carlsson.
2314
2315         * wtf/FeatureDefines.h:
2316
2317 2013-08-06  Alex Christensen  <achristensen@apple.com>
2318
2319         Enabled WebGL on WinCairo port.
2320         https://bugs.webkit.org/show_bug.cgi?id=119502
2321
2322         Reviewed by Benjamin Poulain.
2323
2324         * wtf/FeatureDefines.h: Enabled WebGL.
2325         * wtf/Platform.h: Added definitions required for WebGL on Windows.
2326
2327 2013-08-05  Mark Rowe  <mrowe@apple.com>
2328
2329         <rdar://problem/5927399> FastMalloc should support MallocStackLogging
2330
2331         Call the malloc stack logging function from within the various entry points to FastMalloc
2332         when stack logging is enabled.
2333
2334         Reviewed by Oliver Hunt and Geoff Garen.
2335
2336         * wtf/FastMalloc.cpp:
2337         Call in to MallocHook::InvokeNewHook / MallocHook::InvokeDeleteHook at the appropriate entry
2338         points to FastMalloc. The naming comes from TCMalloc's existing, unused concept of malloc hooks.
2339         (WTF::MallocHook::record): Call the stack logging function with appropriate argument types.
2340         (WTF::MallocHook::recordAllocation): Out-of-line slow path for when stack logging is enabled
2341         that calls record with the values in the right arguments.
2342         (WTF::MallocHook::recordDeallocation): Ditto.
2343         (WTF::MallocHook::init): Stack logging is enabled if the system allocator has enabled stack logging.
2344         (WTF::MallocHook::InvokeNewHook): Call recordAllocation in the unlikely event that stack logging is
2345         enabled.
2346         (WTF::MallocHook::InvokeDeleteHook): Ditto for recordDeallocation.
2347         (WTF::TCMalloc_ThreadCache::InitModule): Initialize the malloc hook.
2348
2349 2013-08-06  Brent Fulgham  <bfulgham@apple.com>
2350
2351         [Windows] Unreviewed build correction after r153754 and r153757.
2352
2353         * wtf/MathExtras.h:
2354         (remainder): Provide implementation of C99 remainder for VS2010 (and earlier).
2355
2356 2013-07-23  David Farler  <dfarler@apple.com> 
2357         Provide optional OTHER_CFLAGS, OTHER_CPPFLAGS, OTHER_LDFLAGS additions for building with ASAN
2358         https://bugs.webkit.org/show_bug.cgi?id=117762
2359
2360         Reviewed by Mark Rowe.
2361
2362         * Configurations/DebugRelease.xcconfig:
2363         Add ASAN_OTHER_CFLAGS, CPLUSPLUSFLAGS.
2364
2365 2013-08-05  Mark Rowe  <mrowe@apple.com>
2366
2367         Build fix for Qt Windows.
2368
2369         * wtf/Assertions.cpp: Include StringExtras.h rather than StdLibExtras.h, since the former is where
2370         strncasecmp is declared.
2371
2372 2013-07-26  Mark Rowe  <mrowe@apple.com>
2373
2374         Logging should be configurable using human-readable channel names rather than crazy bitmasks
2375         <http://webkit.org/b/119031>
2376
2377         Implement shared logic for initializing logging channels based on human-readable channel names in WTF,
2378         and rework the WebCore, WebKit and WebKit2 logging initialization on top of it.
2379
2380         Logging channels may now be enabled by providing a comma-separated list of channel names, with the special
2381         "all" name enabling all channels. Channel names prefixed with a leading "-" will result in the named channel
2382         being disabled. For instance, specifying "all,-history,-loading" will result in all logging channels except
2383         for history and loading being enabled.
2384
2385         For OS X developers, this also changes the name of the user defaults used to enable logging. This is done to allow
2386         the old user defaults to remain set for those people that need to switch between version of WebKit before and
2387         after this change. Where the old user default keys were WebCoreLogLevel, WebKitLogLevel and WebKit2LogLevel,
2388         the new user default keys are WebCoreLogging, WebKitLogging and WebKit2Logging.
2389
2390         For GTK developers, this changes the separator used in the WEBKIT_DEBUG environment variable to a comma for
2391         consistency with the other platforms and to enable more code sharing.
2392
2393         While doing this work I've also taken the opportunity to eliminate the need to touch multiple files when
2394         adding a new logging channel. Now only the header in the relevant project needs to be updated.
2395
2396         Reviewed by Sam Weinig.
2397
2398         * wtf/Assertions.cpp:
2399         (WTFLogChannelByName): Iterate over the provided array of log channels, returning the first whose name
2400         matches case-insensitively.
2401         (setStateOfAllChannels): Helper function to set the state of all channels to a single value.
2402         (WTFInitializeLogChannelStatesFromString): Parse a string containing a case-insensitive, comma-separated list
2403         of channel names to enable or disable, with the latter being prefixed by a "-".
2404         * wtf/Assertions.h: Update the layout of WTFLogChannel to include only the state of the channel and its name.
2405         Declare WTFLogChannelByName and WTFInitializeLogChannelStatesFromString.
2406         * wtf/RefCountedLeakCounter.cpp: Update to the new format of WTFLogChannel.
2407
2408 2013-08-05  Benjamin Poulain  <bpoulain@apple.com>
2409
2410         Disable <meter> by default on iOS, it is enabled through the xconfig files
2411         https://bugs.webkit.org/show_bug.cgi?id=119503
2412
2413         Reviewed by Alexey Proskuryakov.
2414
2415         * wtf/FeatureDefines.h:
2416
2417 2013-08-05  Oliver Hunt  <oliver@apple.com>
2418
2419         Move TypedArray implementation into JSC
2420         https://bugs.webkit.org/show_bug.cgi?id=119489
2421
2422         Reviewed by Filip Pizlo.
2423
2424         Remove TypedArray implementation from WTF
2425
2426         * GNUmakefile.list.am:
2427         * WTF.xcodeproj/project.pbxproj:
2428         * wtf/Forward.h:
2429
2430 2013-08-02  Benjamin Poulain  <benjamin@webkit.org>
2431
2432         Remove a bunch of redundant checks for empty string in StringImpl
2433         https://bugs.webkit.org/show_bug.cgi?id=118768
2434
2435         Reviewed by Ryosuke Niwa.
2436
2437         The first thing done by createUninitialized() is check if the length passed
2438         is zero. Internally, there are many cases for which we know the check will never succeed.
2439
2440         Clang is usually really smart for those kind of things, but there are a few cases where
2441         the condition to avoid returning empty() is not simply a check for the length.
2442         This patch adds an internal initializer to deal with that.
2443
2444         * wtf/text/StringImpl.cpp:
2445         (WTF::StringImpl::createUninitializedInternal):
2446         (WTF::StringImpl::createUninitializedInternalNonEmpty):
2447         (WTF::StringImpl::createInternal): Create internal has a special case for null pointer
2448         for the characters. The test also check length, the second check for length cannot fail.
2449         (WTF::StringImpl::create8BitIfPossible): ditto.
2450         (WTF::StringImpl::lower): 3 of the calls cannot be reached for empty length. On an empty length,
2451         the test for (noUpper && !(ored & ~0x7F)) would have caused the function to return "this".
2452
2453         For the last createUninitialized(), there is no guarantee the realLength is not zero.
2454
2455         (WTF::StringImpl::replace): The first thing we do in replace(UChar,UChar) is check if there is anything
2456         to replace. The check for length will never succeed as there must be a character to replace at that point.
2457         * wtf/text/StringImpl.h:
2458
2459 2013-08-02  Mark Lam  <mark.lam@apple.com>
2460
2461         Gardening: Touched a line in Platform.h to get all bots to do a clean build.
2462
2463         Not reviewed.
2464
2465         * wtf/Platform.h:
2466
2467 2013-08-02  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
2468
2469         Check WTF::Vector size with '0' inline capacity
2470         https://bugs.webkit.org/show_bug.cgi?id=119397
2471
2472         Reviewed by Andreas Kling.
2473
2474         Putting in place the compile assertion that had been removed with r153514.
2475
2476         * wtf/SizeLimits.cpp:
2477
2478 2013-07-26  Mark Rowe  <mrowe@apple.com>
2479
2480         <http://webkit.org/b/119169> RetainPtr should support ARC for Objective-C objects.
2481
2482         While RetainPtr is not necessary under ARC, having it available makes it easier to transition
2483         existing code from manual retain / release to ARC.
2484
2485         Under ARC, the object member of RetainPtr is treated as a strong reference by the compiler.
2486         This means that merely assigning to the member variable is sufficient to retain the object,
2487         and clearing the member variable is sufficient to release it. We still need to explicitly
2488         CFRetain / CFRelease CoreFoundation types so the explicit calls to these functions are
2489         moved in to helper functions and overloading is used to have the Objective-C object versions
2490         of them be no-ops under ARC.
2491
2492         Reviewed by Anders Carlsson.
2493
2494         * wtf/RetainPtr.h:
2495         (WTF::retain): Continue to always CFRetain / CFRelease CoreFoundation objects. Only CFRetain / CFRelease
2496         Objective-C objects when using manual retain / release.
2497         (WTF::release): Ditto.
2498         (WTF::adoptNSReference): Adopting references will be handled automatically by the compiler
2499         when possible under ARC by eliminating redundant retain / release pairs.
2500         (WTF::RetainPtr::ImplicitConversionToBoolIsNotAllowed): A new method that exists only to be used by the
2501         conversion to the unspecified bool type.
2502         (WTF::RetainPtr::operator UnspecifiedBoolType): Switch to using a pointer to a member function as the
2503         unspecified bool type to avoid warnings from the compiler when casting Objective-C object types under ARC.
2504
2505         (WTF::RetainPtr::RetainPtr): Switch to our retain / release helper functions.
2506         (WTF::RetainPtr::~RetainPtr): Ditto.
2507         (WTF::::RetainPtr): Ditto.
2508         (WTF::::clear): Ditto.
2509         (WTF::=): Ditto.
2510         (WTF::adoptCF): Annotate the argument with CF_RELEASES_ARGUMENT on both the declaration and the definition.
2511         (WTF::adoptNS): Ditto for NS_RELEASES_ARGUMENT.
2512
2513 2013-08-01  Mark Rowe  <mrowe@apple.com>
2514
2515         <rdar://problem/14235491> FastMalloc zone enumerator responding to MALLOC_PTR_REGION_RANGE_TYPE with individual allocations
2516
2517         Teach PageMapMemoryUsageRecorder::recordPendingRegions to only record data of the type that it's asked for.
2518         This also fixes the vmmap output to associate some regions with the FastMalloc malloc zone that were previously
2519         associated with it only via the VM tag, meaning they were incorrectly being omitted from the malloc statistics
2520         section of the report.
2521
2522         Reviewed by Dan Bernstein.
2523
2524         * wtf/FastMalloc.cpp:
2525         (WTF::PageMapMemoryUsageRecorder::recordPendingRegions): Report the individual allocations only when requested. Add
2526         the ability to report the regions containing pointers separately from the allocations.
2527
2528 2013-08-01  Mark Rowe  <mrowe@apple.com>
2529
2530         <rdar://problem/14528244> False-positive leaks from FastMalloc.
2531
2532         A logic error in the page map enumeration code within FastMalloc could result in a subset of the memory regions
2533         owned by FastMalloc being skipped by the malloc zone enumeration code used by leaks and other performance tools.
2534         If the only reference to an allocated object lived within one of the skipped memory regions, leaks would believe
2535         it had been leaked since it would not find any references to the object.
2536
2537         The logic error manifested when a FastMalloc span owned a region of memory that crossed a 16MB address space boundary,
2538         and when there was one or more other spans immediately after it in the address space. Crossing the 16MB address space
2539         boundary means that the start and end points of the span are in different leaf nodes of the page map trie, and the
2540         code within the page map's visitValues method didn't correctly account this case when skipping to the end of the span
2541         after visiting it. It would resume iterating from the start of the next leaf node rather than continuing to skip values
2542         until the end of the span was passed. The value representing the end of the span would then be processed as if it were
2543         the start of a new span, and more values would be skipped even though they may contain actual spans.
2544
2545         The solution is to rework the algorithm used in visitValues so that it will skip the correct number of values even when
2546         some of the values are in different leaf nodes. This is a more involved change than it may seem since it's also necessary
2547         to deal with the case where a memory region spans two separate root nodes, which can happen if the region happens to cross
2548         a 64GB boundary in the address space.
2549
2550         Reviewed by Geoff Garen.
2551
2552         * wtf/TCPageMap.h:
2553         (TCMalloc_PageMap3::visitValues): Use a single loop to iterate, with the loop index being the key in to the page map in the
2554         same form as used by get and set. This allows us to correctly deal with the index being skipped to a different intermediate or
2555         root node as a result of visiting a span that crosses a 16MB boundary in memory.
2556         (TCMalloc_PageMap2::visitValues): Ditto, but without having to deal with intermediate nodes.
2557
2558 2013-08-01  Ruth Fong  <ruth_fong@apple.com>
2559
2560         [Forms: color] <input type='color'> popover color well implementation
2561         <rdar://problem/14411008> and https://bugs.webkit.org/show_bug.cgi?id=119356
2562
2563         Reviewed by Benjamin Poulain.
2564
2565         * wtf/FeatureDefines.h: Added and enabled INPUT_TYPE_COLOR_POPOVER.
2566
2567 2013-08-01  Simon Fraser  <simon.fraser@apple.com>
2568
2569         REGRESSION(r145592): AutodrainedPool.h. RunLoopTimer.h, SchedulePair.h are being copied into the wrong location
2570         https://bugs.webkit.org/show_bug.cgi?id=112833
2571
2572         Reviewed by Sam Weinig.
2573         
2574         AutodrainedPool.h and SchedulePair.h should just be project headers, not
2575         private headers, so they get copied into <build dir>/usr/local/include/wtf
2576         not <build dir>/usr/local/include
2577
2578         * WTF.xcodeproj/project.pbxproj:
2579
2580 2013-07-31  Ruth Fong  <ruth_fong@apple.com>
2581
2582         <input type=color> Mac UI behaviour
2583         <rdar://problem/10269922> and https://bugs.webkit.org/show_bug.cgi?id=61276
2584
2585         Reviewed by Brady Eidson.
2586
2587         * wtf/FeatureDefines.h: Enabled INPUT_TYPE_COLOR on Mac port.
2588
2589 2013-07-31  Andreas Kling  <akling@apple.com>
2590
2591         Shrink Vectors with inline capacity.
2592         <http://webkit.org/b/119295>
2593         <rdar://problem/14598360>
2594
2595         Reviewed by Anders Carlsson.
2596
2597         Pack Vector::m_size next to VectorBufferBase::m_capacity so there's no space wasted
2598         on padding when sizeof(T) >= 8. Since m_size is not conceptually part of the buffer,
2599         I just using'ed it into Vector.
2600
2601         * wtf/SizeLimits.cpp:
2602         * wtf/Vector.h:
2603         (WTF::VectorBufferBase::VectorBufferBase):
2604         (WTF::VectorBuffer::VectorBuffer):
2605         (WTF::Vector::Vector):
2606         (WTF::::Vector):
2607
2608 2013-07-30  Patrick Gansterer  <paroga@webkit.org>
2609
2610         Move WindowsExtras.h from WebCore to WTF
2611         https://bugs.webkit.org/show_bug.cgi?id=118125
2612
2613         Reviewed by Anders Carlsson.
2614
2615         Move it to WTF to be able to use the functions in WTF too.
2616
2617         * wtf/WindowsExtras.h: Renamed from Source/WebCore/platform/win/WindowsExtras.h.
2618         (WTF::getRegistryValue):
2619         (WTF::getWindowPointer):
2620         (WTF::setWindowPointer):
2621         * wtf/win/MainThreadWin.cpp:
2622         (WTF::initializeMainThreadPlatform):
2623
2624 2013-07-29  Carlos Garcia Campos  <cgarcia@igalia.com>
2625
2626         Unreviewed. Fix make distcheck.
2627
2628         * GNUmakefile.list.am: Add missing files to compilation.
2629
2630 2013-07-29  Mark Rowe  <mrowe@apple.com>
2631
2632         <rdar://problem/14528244> Tons of FastMalloc leaks reported by leaks of objects that have already been deallocated
2633
2634         Reviewed by Sam Weinig.
2635
2636         * wtf/FastMalloc.cpp:
2637         (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Mark objects in the transfer cache as being free.
2638
2639 2013-07-29  Zan Dobersek  <zdobersek@igalia.com>
2640
2641         Reintroduce convenience CheckedInt*, CheckedUint* types
2642         https://bugs.webkit.org/show_bug.cgi?id=119213
2643
2644         Reviewed by Oliver Hunt.
2645
2646         Reintroduce CheckedInt* and CheckedUint* types that were previously provided for convenience
2647         through the CheckedInt header that was removed in r153095. The types are now based on the
2648         Checked class, using the RecordOverflow class as the overflow handler.
2649
2650         * wtf/CheckedArithmetic.h:
2651
2652 2013-07-27  Ryosuke Niwa  <rniwa@webkit.org>
2653
2654         REGRESSION(r153380): Can't open messages on Gmail
2655         https://bugs.webkit.org/show_bug.cgi?id=119165
2656
2657         Reviewed by Andreas Kling.
2658
2659         This bug was caused by r153380. The bug doesn't reproduce as long as WebKit is built by clang 4.2 and later
2660         or final is disabled (it could be clang 4.1 and later but we don't have information about that).
2661
2662         Fix the bug by disabling final on earlier versions of clang. Unfortunately we can only check versions of
2663         Apple clang since __clang_major__ and __clang_minor__ are vendor dependent.
2664
2665         * wtf/Compiler.h:
2666
2667 2013-07-26  Oliver Hunt <oliver@apple.com>
2668
2669         ASSERT failure in wtf/CheckedBoolean.h line 43 on Windows
2670         https://bugs.webkit.org/show_bug.cgi?id=119170
2671
2672         Reviewed by Michael Saboff.
2673
2674         Added a copy constructor to CheckedBoolean.
2675
2676         * wtf/CheckedBoolean.h:
2677         (CheckedBoolean::CheckedBoolean):
2678
2679 2013-07-25  Brent Fulgham  <bfulgham@apple.com>
2680
2681         [Windows] Unreviewed build fix.
2682
2683         * WTF.vcxproj/WTF.vcxproj: Add missing SixCharacterHash.h,.cpp files.
2684         * WTF.vcxproj/WTF.vcxproj.filters: Ditto.
2685         * wtf/NumberOfCores.h: Add export macro to numberOfProcessorCores.
2686         * wtf/PrintStream.h: Add export macro to dumpCharacter.
2687         * wtf/SixCharacterHash.h: Add export macro to sixCharacterHashStringToInteger
2688         and integerToSixCharacterHashString.
2689         * wtf/text/CString.h: Add export macro to hash and equal methods.
2690         (WTF::CStringHash::hash): Add export macro.
2691
2692 2013-07-25  peavo@outlook.com  <peavo@outlook.com>
2693
2694         [Windows] Provide ASM implemenation of 8-bit compare-and-swap
2695         https://bugs.webkit.org/show_bug.cgi?id=119084
2696
2697         Reviewed by Brent Fulgham.
2698
2699         * wtf/Atomics.h:
2700         (WTF::weakCompareAndSwap): Add a 32-bit X86 Assembly path for
2701         Windows build.
2702
2703 2013-07-25  Brent Fulgham  <bfulgham@apple.com>
2704
2705         [Windows] Unreviewed build fix.
2706
2707         * WTF.vcxproj/WTF.vcxproj: Add missing CompilationThread.h,.cpp
2708         * WTF.vcxproj/WTF.vcxproj.filters: Ditto.
2709
2710 2013-07-25  Michael Brüning  <michael.bruning@digia.com>
2711
2712         Fix Windows build after r153134.
2713         https://bugs.webkit.org/show_bug.cgi?id=119090
2714
2715         Reviewed by Oliver Hunt.
2716
2717         Add USE(PTHREADS) guards around pthread specific code
2718         for now. This will cause isCompilationThread to always
2719         return false on non pthread platforms such as Windows.
2720
2721         We might be able to use the Windows one-time initialization
2722         for this, but this is only available from Windows Vista on.
2723
2724         * wtf/CompilationThread.cpp:
2725         (WTF::initializeCompilationThreads):
2726
2727 2013-07-25  Allan Sandfeld Jensen  <allan.jensen@digia.com>
2728
2729         Fix windows build after FTL upstream
2730
2731         Unreviewed build fix.
2732
2733         * wtf/Atomics.h:
2734         (WTF::weakCompareAndSwap):
2735
2736 2013-07-25  Ryuan Choi  <ryuan.choi@samsung.com>
2737
2738         Unreviewed, build fix on the EFL port.
2739
2740         * wtf/CMakeLists.txt: Added SixCharacterHash.cpp
2741
2742 2013-07-25  Gabor Rapcsanyi  <rgabor@webkit.org>
2743
2744         Unreviewed, build fix on the Qt port.
2745
2746         * WTF.pro: Add additional build files for the FTL.
2747
2748 2013-07-25  Zan Dobersek  <zdobersek@igalia.com>
2749
2750         Unreviewed, further GTK build fixing.
2751
2752         * GNUmakefile.am: Make libWTF.la depend on any changes made to the build targets list.
2753         * GNUmakefile.list.am: Add SixCharacterHash source files to the build.
2754
2755 2013-07-25  Csaba Osztrogonác  <ossy@webkit.org>
2756
2757         [GTK] Similar fix to r153304.
2758
2759         * GNUmakefile.list.am:
2760
2761 2013-07-25  Grzegorz Czajkowski  <g.czajkowski@samsung.com>
2762
2763         Build break in debug after r153134: StringImpl.h:640: undefined reference to `WTF::isCompilationThread()
2764         https://bugs.webkit.org/show_bug.cgi?id=119077
2765
2766         Reviewed by Christophe Dumez.
2767
2768         * wtf/CMakeLists.txt:
2769         Added CompilationThread.{h/cpp}.
2770
2771 2013-07-24  Filip Pizlo  <fpizlo@apple.com>
2772
2773         fourthTier: DFG IR dumps should be easier to read
2774         https://bugs.webkit.org/show_bug.cgi?id=119050
2775
2776         Reviewed by Mark Hahnenberg.
2777         
2778         Added support for dumping values within a context. By default, if you say
2779         print(inContext(value, context)) it calls value.dumpInContext(out, context)
2780         instead of value.dump(out).
2781         
2782         Hoisted the support for six-character hashes out of JSC::CodeBlockHash into
2783         WTF, in the form of SixCharacterHash.h.
2784         
2785         Added a helper for creating dump contexts where the inContext() dump will
2786         just use a short string hash to "name" the object being dumped, and then
2787         will print out the full dumps in an endnote to your dump.
2788         
2789         Added support for using CString as a hashtable key.
2790
2791         * WTF.xcodeproj/project.pbxproj:
2792         * wtf/PrintStream.h:
2793         (WTF):
2794         (ValueInContext):
2795         (WTF::ValueInContext::ValueInContext):
2796         (WTF::ValueInContext::dump):
2797         (WTF::inContext):
2798         * wtf/SixCharacterHash.cpp: Added.
2799         (WTF):
2800         (WTF::sixCharacterHashStringToInteger):
2801         (WTF::integerToSixCharacterHashString):
2802         * wtf/SixCharacterHash.h: Added.
2803         (WTF):
2804         * wtf/StringHashDumpContext.h: Added.
2805         (WTF):
2806         (StringHashDumpContext):
2807         (WTF::StringHashDumpContext::StringHashDumpContext):
2808         (WTF::StringHashDumpContext::getID):
2809         (WTF::StringHashDumpContext::dumpBrief):
2810         (WTF::StringHashDumpContext::brief):
2811         (WTF::StringHashDumpContext::isEmpty):
2812         (WTF::StringHashDumpContext::dump):
2813         * wtf/text/CString.cpp:
2814         (WTF::CString::hash):
2815         (WTF):
2816         (WTF::operator<):
2817         (WTF::CStringHash::equal):
2818         * wtf/text/CString.h:
2819         (WTF::CString::CString):
2820         (CString):
2821         (WTF::CString::isHashTableDeletedValue):
2822         (WTF):
2823         (WTF::CStringHash::hash):
2824         (CStringHash):
2825
2826 2013-07-21  Filip Pizlo  <fpizlo@apple.com>
2827
2828         fourthTier: DFG Nodes should be able to abstractly tell you what they read and what they write
2829         https://bugs.webkit.org/show_bug.cgi?id=118910
2830
2831         Reviewed by Sam Weinig.
2832         
2833         Fix compile goof in sortedListDump().
2834
2835         * wtf/ListDump.h:
2836         (WTF::sortedListDump):
2837
2838 2013-07-16  Filip Pizlo  <fpizlo@apple.com>
2839
2840         fourthTier: NaturalLoops should be able to quickly answer questions like "what loops own this basic block"
2841         https://bugs.webkit.org/show_bug.cgi?id=118750
2842
2843         Reviewed by Mark Hahnenberg.
2844         
2845         Add a utility function for inserting an element into a vector that has bounded size,
2846         and where the insertion causes things to drop off the end.
2847
2848         * wtf/StdLibExtras.h:
2849         (WTF):
2850         (WTF::insertIntoBoundedVector):
2851
2852 2013-07-12  Filip Pizlo  <fpizlo@apple.com>
2853
2854         fourthTier: DFG should have an SSA form for use by FTL
2855         https://bugs.webkit.org/show_bug.cgi?id=118338
2856
2857         Reviewed by Mark Hahnenberg.
2858         
2859         - Extend variadicity of PrintStream and dataLog.
2860         
2861         - Give HashSet the ability to add a span of things.
2862         
2863         - Give HashSet the ability to == another HashSet.
2864         
2865         - Note FIXME's in HashTable concerning copying performance, that affects
2866           the way that the DFG now uses HashSets and HashMaps.
2867         
2868         - Factor out the bulk-insertion logic of JSC::DFG::InsertionSet into
2869           WTF::Insertion, so that it can be used in more places.
2870         
2871         - Create a dumper for lists and maps.
2872
2873         * WTF.xcodeproj/project.pbxproj:
2874         * wtf/DataLog.h:
2875         (WTF):
2876         (WTF::dataLog):
2877         * wtf/HashSet.h:
2878         (HashSet):
2879         (WTF):
2880         (WTF::::add):
2881         (WTF::=):
2882         * wtf/HashTable.h:
2883         (WTF::::HashTable):
2884         (WTF::=):
2885         * wtf/Insertion.h: Added.
2886         (WTF):
2887         (Insertion):
2888         (WTF::Insertion::Insertion):
2889         (WTF::Insertion::index):
2890         (WTF::Insertion::element):
2891         (WTF::Insertion::operator<):
2892         (WTF::executeInsertions):
2893         * wtf/ListDump.h: Added.
2894         (WTF):
2895         (ListDump):
2896         (WTF::ListDump::ListDump):
2897         (WTF::ListDump::dump):
2898         (MapDump):
2899         (WTF::MapDump::MapDump):
2900         (WTF::MapDump::dump):
2901         (WTF::listDump):
2902         (WTF::sortedListDump):
2903         (WTF::lessThan):
2904         (WTF::mapDump):
2905         (WTF::sortedMapDump):
2906         * wtf/PrintStream.h:
2907         (PrintStream):
2908         (WTF::PrintStream::print):
2909
2910 2013-07-02  Filip Pizlo  <fpizlo@apple.com>
2911
2912         Unreviewed, fix 32-bit build.
2913
2914         * wtf/Platform.h:
2915
2916 2013-07-02  Filip Pizlo  <fpizlo@apple.com>
2917
2918         fourthTier: FTL should use the equivalent of llvm opt -O2 by default
2919         https://bugs.webkit.org/show_bug.cgi?id=118311
2920
2921         Reviewed by Mark Hahnenberg.
2922         
2923         * wtf/LLVMHeaders.h:
2924
2925 2013-06-27  Filip Pizlo  <fpizlo@apple.com>
2926
2927         fourthTier: JSC's disassembly infrastructure should be able to disassemble the code that LLVM generates
2928         https://bugs.webkit.org/show_bug.cgi?id=118148
2929
2930         Reviewed by Anders Carlsson.
2931         
2932         We now use LLVM for two things: disassembler and FTL. Separate out the question
2933         of whether we have LLVM (HAVE(LLVM)) from whether we want to use the LLVM
2934         disassembler (USE(LLVM_DISASSEMBLER)) and whether we enable the FTL
2935         (ENABLE(FTL_JIT)).
2936         
2937         Also move the cruft for including LLVM headers into WTF since now we use it in
2938         a bunch of places, not all related to FTL. There's no obvious place to put that
2939         file in JSC so I put it in WTF.
2940
2941         * WTF.xcodeproj/project.pbxproj:
2942         * wtf/LLVMHeaders.h: Copied from Source/JavaScriptCore/ftl/FTLLLVMHeaders.h.
2943         * wtf/Platform.h:
2944
2945 2013-06-25  Filip Pizlo  <fpizlo@apple.com>
2946
2947         fourthTier: DFG should support switch_string
2948         https://bugs.webkit.org/show_bug.cgi?id=117967
2949
2950         Reviewed by Sam Weinig.
2951         
2952         Make it possible to compare a RefPtr<StringImpl> and a StringImpl* without
2953         having to ref the StringImpl.
2954
2955         * wtf/text/StringHash.h:
2956         (WTF::StringHash::equal):
2957
2958 2013-06-24  Filip Pizlo  <fpizlo@apple.com>
2959
2960         fourthTier: Count external memory usage towards heap footprint
2961         https://bugs.webkit.org/show_bug.cgi?id=117948
2962
2963         Reviewed by Geoffrey Garen.
2964
2965         Expose some functionality needed for properly measuring StringImpl footprint.
2966
2967         * wtf/Atomics.h:
2968         (WTF::weakCompareAndSwapSize):
2969         (WTF):
2970         * wtf/MathExtras.h:
2971         (divideRoundedUp):
2972         * wtf/text/StringImpl.h:
2973         (WTF::StringImpl::cost):
2974         (StringImpl):
2975         (WTF::StringImpl::costDuringGC):
2976         (WTF::StringImpl::refCount):
2977
2978 2013-06-23  Filip Pizlo  <fpizlo@apple.com>
2979
2980         fourthTier: DFG should optimize identifier string equality
2981         https://bugs.webkit.org/show_bug.cgi?id=117920
2982
2983         Reviewed by Sam Weinig.
2984
2985         Note that this ChangeLog was supposed to be committed in r151890.
2986         
2987         Expose the IsIdentifier bit to the JIT.
2988         
2989         * wtf/text/StringImpl.h:
2990         (WTF::StringImpl::flagIsIdentifier):
2991
2992 2013-06-18  Filip Pizlo  <fpizlo@apple.com>
2993
2994         fourthTier: DFG should have switch_char
2995         https://bugs.webkit.org/show_bug.cgi?id=117710
2996
2997         Reviewed by Michael Saboff.
2998         
2999         I wanted to be able to say stringImpl->at(index), and now I can!
3000
3001         Also made it possible to convert a UChar to a utf8 CString without
3002         allocating a StringImpl.
3003
3004         * wtf/text/StringImpl.cpp:
3005         (WTF::StringImpl::utf8Impl):
3006         (WTF):
3007         (WTF::StringImpl::utf8ForCharacters):
3008         (WTF::StringImpl::utf8ForRange):
3009         * wtf/text/StringImpl.h:
3010         (StringImpl):
3011         (WTF::StringImpl::at):
3012         (WTF::StringImpl::operator[]):
3013
3014 2013-06-15  Filip Pizlo  <fpizlo@apple.com>
3015
3016         fourthTier: Add CFG simplification for Switch
3017         https://bugs.webkit.org/show_bug.cgi?id=117677
3018
3019         Reviewed by Mark Hahnenberg.
3020
3021         * wtf/TriState.h:
3022         * wtf/text/StringImpl.h:
3023
3024 2013-06-15  Filip Pizlo  <fpizlo@apple.com>
3025
3026         Printing a StringImpl* should really guard against NULL
3027         https://bugs.webkit.org/show_bug.cgi?id=117675
3028
3029         Reviewed by Mark Hahnenberg.
3030
3031         * wtf/PrintStream.cpp:
3032         (WTF::printInternal):
3033
3034 2013-06-11  Filip Pizlo  <fpizlo@apple.com>
3035
3036         fourthTier: DFG should support op_in and it should use patching to make it fast
3037         https://bugs.webkit.org/show_bug.cgi?id=117385
3038
3039         Reviewed by Geoffrey Garen.
3040         
3041         Now if you pass a null StringImpl* then something will still get printed instead
3042         of crashing. I figure that this is broadly useful for debug code, and I make use
3043         of it in the JSC portion of this patch.
3044
3045         * wtf/PrintStream.cpp:
3046         (WTF::printInternal):
3047
3048 2013-06-09  Filip Pizlo  <fpizlo@apple.com>
3049
3050         Unreviewed, fix build. On some compilers the automatic coercion from WTF::String to NSString*
3051         causes operator[] to appear ambiguous. One way around this is to make WTF::String behave like
3052         most of our other classes: at(unsigned) is always a valid synonym for operator[](unsigned).
3053
3054         * wtf/text/WTFString.h:
3055         (WTF::String::at):
3056         (WTF::String::operator[]):
3057
3058 2013-06-08  Filip Pizlo  <fpizlo@apple.com>
3059
3060         fourthTier: Recursive deadlock in DFG::ByteCodeParser
3061         https://bugs.webkit.org/show_bug.cgi?id=117376
3062
3063         Reviewed by Mark Hahnenberg.
3064         
3065         I've often wanted to leave a lock early. Now I have that power!
3066
3067         * wtf/Locker.h:
3068         (WTF::Locker::Locker):
3069         (WTF::Locker::~Locker):
3070         (Locker):
3071         (WTF::Locker::unlockEarly):
3072         (WTF::Locker::lock):
3073
3074 2013-05-27  Filip Pizlo  <fpizlo@apple.com>
3075
3076         It should be possible to record heap operations (both FastMalloc and JSC GC)
3077         https://bugs.webkit.org/show_bug.cgi?id=116848
3078
3079         Reviewed by Mark Hahnenberg.
3080
3081         * WTF.xcodeproj/project.pbxproj:
3082         * wtf/DataLog.cpp:
3083         (WTF):
3084         (WTF::initializeLogFileOnce):
3085         * wtf/FastMalloc.cpp:
3086         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
3087         * wtf/Platform.h:
3088
3089 2013-05-21  Filip Pizlo  <fpizlo@apple.com>
3090
3091         fourthTier: DFG should be able to run on a separate thread
3092         https://bugs.webkit.org/show_bug.cgi?id=112839
3093
3094         Reviewed by Geoffrey Garen.
3095         
3096         * wtf/ByteSpinLock.h:
3097         Make it non-copyable. We previously had bugs where we used ByteSpinLock as a locker.
3098         Clearly that's bad.
3099
3100         * wtf/MetaAllocatorHandle.h:
3101         Make it thread-safe ref-counted, since we may now be passing them between the
3102         concurrent JIT thread and the main thread.
3103
3104         * wtf/Vector.h:
3105         (WTF::Vector::takeLast):
3106         I've wanted this method for ages, and now I finally added.
3107
3108 2013-04-30  Filip Pizlo  <fpizlo@apple.com>
3109
3110         fourthTier: DFG tries to ref/deref StringImpls in a ton of places
3111         https://bugs.webkit.org/show_bug.cgi?id=115300
3112
3113         Reviewed by Geoffrey Garen.
3114         
3115         Make it possible to do more things directly to StringImpl*'s, including being
3116         able to directly do utf8 conversion on a substring without creating the
3117         substring first.
3118         
3119         Add assertions to StringImpl that it isn't being ref/deref'd from the
3120         compilation thread.
3121
3122         * wtf/PrintStream.cpp:
3123         (WTF::printInternal):
3124         (WTF):
3125         * wtf/PrintStream.h:
3126         (WTF):
3127         (WTF::printInternal):
3128         * wtf/StringPrintStream.h:
3129         (WTF):
3130         (WTF::toCString):
3131         * wtf/text/StringImpl.cpp:
3132         (WTF::StringImpl::utf8ForRange):
3133         (WTF::StringImpl::utf8):
3134         (WTF):
3135         * wtf/text/StringImpl.h:
3136         (StringImpl):
3137         (WTF::StringImpl::hasAtLeastOneRef):
3138         (WTF::StringImpl::ref):
3139         (WTF::StringImpl::deref):
3140
3141 2013-04-29  Filip Pizlo  <fpizlo@apple.com>
3142
3143         fourthTier: String::utf8() should also be available as StringImpl::utf8() so that you don't have to ref() a StringImpl just to get its utf8()
3144         https://bugs.webkit.org/show_bug.cgi?id=115393
3145
3146         Reviewed by Geoffrey Garen.
3147
3148         * WTF.xcodeproj/project.pbxproj:
3149         * wtf/text/ConversionMode.h: Added.
3150         (WTF):
3151         * wtf/text/StringImpl.cpp:
3152         (WTF):
3153         (WTF::putUTF8Triple):
3154         (WTF::StringImpl::utf8):
3155         * wtf/text/StringImpl.h:
3156         (StringImpl):
3157         * wtf/text/WTFString.cpp:
3158         (WTF):
3159         (WTF::String::utf8):
3160         * wtf/text/WTFString.h:
3161         (String):
3162
3163 2013-07-16  Oliver Hunt <oliver@apple.com>
3164
3165         Merge dfgFourthTier r149301
3166
3167     2013-04-28  Filip Pizlo  <fpizlo@apple.com>
3168
3169         fourthTier: ASSERT that commonly used not-thread-safe methods in the runtime are not being called during compilation
3170         https://bugs.webkit.org/show_bug.cgi?id=115297
3171
3172         Reviewed by Geoffrey Garen.
3173         
3174         Taught WTF the notion of compilation threads. This allows all parts of our stack
3175         to assert that we're not being called from a JSC compilation thread. This is in
3176         WTF because it will probably end up being used in StringImpl and WTFString.
3177
3178         * WTF.xcodeproj/project.pbxproj:
3179         * wtf/CompilationThread.cpp: Added.
3180         (WTF):
3181         (WTF::initializeCompilationThreadsOnce):
3182         (WTF::initializeCompilationThreads):
3183         (WTF::isCompilationThread):
3184         (WTF::exchangeIsCompilationThread):
3185         * wtf/CompilationThread.h: Added.
3186         (WTF):
3187         (CompilationScope):
3188         (WTF::CompilationScope::CompilationScope):
3189         (WTF::CompilationScope::~CompilationScope):
3190         (WTF::CompilationScope::leaveEarly):
3191
3192 2013-07-16  Oliver Hunt <oliver@apple.com>
3193
3194         Merge dfgFourthTier r148836
3195
3196     2013-04-21  Filip Pizlo  <fpizlo@apple.com>
3197
3198         fourthTier: It should be possible to query WatchpointSets, and add Watchpoints, even if the compiler is running in another thread
3199         https://bugs.webkit.org/show_bug.cgi?id=114909
3200
3201         Reviewed by Oliver Hunt.
3202         
3203         Harden our notions of memory fences, now that we're doing racy algorithms.
3204
3205         * wtf/Atomics.h:
3206         (WTF):
3207         (WTF::compilerFence):
3208         (WTF::armV7_dmb):
3209         (WTF::armV7_dmb_st):
3210         (WTF::loadLoadFence):
3211         (WTF::loadStoreFence):
3212         (WTF::storeLoadFence):
3213         (WTF::storeStoreFence):
3214         (WTF::memoryBarrierAfterLock):
3215         (WTF::memoryBarrierBeforeUnlock):
3216         (WTF::x86_mfence):
3217
3218 2013-07-16  Oliver Hunt <oliver@apple.com>
3219
3220         Merge dfgFourthTier r148804
3221
3222     2013-04-20  Filip Pizlo  <fpizlo@apple.com>
3223
3224         fourthTier: value profiles and array profiles should be thread-safe enough to be accessible in a concurrent compilation thread
3225         https://bugs.webkit.org/show_bug.cgi?id=114906
3226
3227         Reviewed by Oliver Hunt.
3228         
3229         Add ability to abstract whether or not the CodeBlock requires locking at all,
3230         since some platforms may not support the byte spin-locking and/or may not want
3231         to, if they turn off concurrent JIT.
3232
3233         * WTF.xcodeproj/project.pbxproj:
3234         * wtf/ByteSpinLock.h:
3235         * wtf/NoLock.h: Added.
3236         (WTF):
3237         (NoLock):
3238         (WTF::NoLock::lock):
3239         (WTF::NoLock::unlock):
3240         (WTF::NoLock::isHeld):
3241         * wtf/Platform.h:
3242
3243 2013-04-17  Filip Pizlo  <fpizlo@apple.com>
3244
3245         fourthTier: all inline caches should thread-safe enough to allow a concurrent compilation thread to read them safely
3246         https://bugs.webkit.org/show_bug.cgi?id=114762
3247
3248         Reviewed by Mark Hahnenberg.
3249         
3250         Implemented a new spinlock that is optimized for compactness, by using just a byte.
3251         This will be useful as we start using fine-grained locking on a bunch of places.
3252         
3253         At some point I'll make these byte-sized spinlocks into adaptive mutexes, but for
3254         now I think it's fine to do the evil thing and use spinning particularly since we
3255         only use them for short critical sections.
3256
3257         * WTF.xcodeproj/project.pbxproj:
3258         * wtf/Atomics.h:
3259         (WTF):
3260         (WTF::weakCompareAndSwap):
3261         * wtf/ByteSpinLock.h: Added.
3262         (WTF):
3263         (ByteSpinLock):
3264         (WTF::ByteSpinLock::ByteSpinLock):
3265         (WTF::ByteSpinLock::lock):
3266         (WTF::ByteSpinLock::unlock):
3267         (WTF::ByteSpinLock::isHeld):
3268         * wtf/ThreadingPrimitives.h:
3269         (WTF::pauseBriefly):
3270         (WTF):
3271
3272 2013-04-12  Filip Pizlo  <fpizlo@apple.com>
3273
3274         fourthTier: FTL should have OSR exit
3275         https://bugs.webkit.org/show_bug.cgi?id=113623
3276
3277         Reviewed by Oliver Hunt.
3278         
3279         Finally make toCString() somewhat variadic.
3280
3281         * wtf/StringPrintStream.h:
3282         (WTF):
3283         (WTF::toCString):
3284
3285 2013-03-31  Filip Pizlo  <fpizlo@apple.com>
3286
3287         https://bugs.webkit.org/show_bug.cgi?id=113656
3288         Fix Sam's nits.
3289
3290         Unreviewed.
3291         
3292         Forgot to land these as part of http://trac.webkit.org/changeset/147299.
3293
3294         * wtf/MathExtras.h:
3295         (isGreaterThanNonZeroPowerOfTwo):
3296
3297 2013-03-29  Filip Pizlo  <fpizlo@apple.com>
3298
3299         fourthTier: FTL JIT should be able run some simple function
3300         https://bugs.webkit.org/show_bug.cgi?id=113481
3301
3302         Reviewed by Geoffrey Garen.
3303
3304         * wtf/Platform.h:
3305
3306 2013-07-22  Benjamin Poulain  <benjamin@webkit.org>
3307
3308         String::lower() - Skip to slow path on the first failure
3309         https://bugs.webkit.org/show_bug.cgi?id=118885
3310
3311         Reviewed by Andreas Kling.
3312
3313         In the 8 bits case, we don't need to know the state of the full string before changing characters
3314         to their lowercase variant.
3315         Just fail immediately and start transforming characters from the point of failure.
3316
3317         This avoid reading the string twice when the uppercase character is not at the end of the string.
3318
3319         * wtf/text/StringImpl.cpp:
3320         (WTF::StringImpl::lower):
3321
3322 2013-07-22  Brent Fulgham  <bfulgham@apple.com>
3323
3324         [Windows] Unreviewed build fix.
3325
3326         * WTF.vcxproj/WTFGenerated.make: Stop triggering a "Build All" when things have not changed.
3327
3328 2013-07-19  Alex Christensen  <achristensen@apple.com>
3329
3330         Added x64 configuration to Visual Studio build.
3331         https://bugs.webkit.org/show_bug.cgi?id=118888
3332
3333         Reviewed by Brent Fulgham.
3334
3335         * WTF.vcxproj/WTF.vcxproj:
3336         * WTF.vcxproj/WTF.vcxproj.filters:
3337         * WTF.vcxproj/WTFGenerated.vcxproj:
3338
3339 2013-07-18  Benjamin Poulain  <benjamin@webkit.org>
3340
3341         Fix the build after r152881
3342
3343         * wtf/text/StringImpl.cpp:
3344         (WTF::StringImpl::lower):
3345
3346 2013-07-18  Benjamin Poulain  <benjamin@webkit.org>
3347
3348         Little cleaning of StringImpl::lower() and StringImpl::upper() for ARM
3349         https://bugs.webkit.org/show_bug.cgi?id=118831
3350
3351         Reviewed by Gavin Barraclough.
3352
3353         Clean lower() and upper() before trying some optimizations:
3354         -Prefix the code with the empty() case. Otherwise, each descending loop starts with
3355          a check for length == 0.
3356         -Change ored to a 32 bits registers. ARM only has 32 bits registers and access to full word.
3357          To keep the value a UChar, the compiler is adding a bunch of useless value & 0xffff in the loops.
3358         -Change the pointer based loops for index based loops. The compiler does a mighty job at optimizing
3359          those for each architecture. No need to make the code more complex.
3360         -Don't perform the check for int32 unless we need to. The only code limited to int is Unicode::toLower.
3361
3362         * wtf/text/StringImpl.cpp:
3363         (WTF::StringImpl::lower):
3364         (WTF::StringImpl::upper):
3365
3366 2013-07-18  Andreas Kling  <akling@apple.com>
3367
3368         CodeBlock::m_argumentValueProfiles wastes a lot of memory.
3369         <http://webkit.org/b/118852>
3370         <rdar://problem/14481659>
3371
3372         Reviewed by Anders Carlsson.
3373
3374         Add Vector::resizeToFit(size), like resize() but without growth padding.
3375
3376         * wtf/Vector.h:
3377         (WTF::::resizeToFit):
3378
3379 2013-07-17  Benjamin Poulain  <benjamin@webkit.org>
3380
3381         Add a thread safety assertion when creating an AtomicString from a StringImpl
3382         https://bugs.webkit.org/show_bug.cgi?id=118637
3383
3384         Reviewed by Sam Weinig.
3385
3386         The goal is to prevent this kind of use:
3387         -Someone create a String from a StringImpl.
3388         -At some point, the string becomes atomic.
3389         -Later, when the string only has one ref, its ownership is 'passed' to an other thread
3390          without checking String::isSafeToSendToAnotherThread().
3391         -In the thread B, an AtomicString is created from the String.
3392         ->The AtomicString's StringImpl returned is not in the current thread string table.
3393
3394         * wtf/text/AtomicString.cpp:
3395         (WTF::AtomicString::isInAtomicStringTable):
3396         * wtf/text/AtomicString.h:
3397         (WTF::AtomicString::add):
3398
3399 2013-07-17  Benjamin Poulain  <benjamin@webkit.org>
3400
3401         Simplify AtomicString::lower()
3402         https://bugs.webkit.org/show_bug.cgi?id=118719
3403         <rdar://problem/14452883>
3404
3405         Reviewed by Gavin Barraclough.
3406
3407         * wtf/text/AtomicString.cpp:
3408         (WTF::AtomicString::lower): Previously, the code was using a copy constructor for two path
3409         and one regular construction in another path.
3410         Just put the StringImpl where it needs to be instead.
3411
3412 2013-07-15  Benjamin Poulain  <benjamin@webkit.org>
3413
3414         Add a threading assertion to AtomicString::remove
3415         https://bugs.webkit.org/show_bug.cgi?id=118695
3416
3417         Reviewed by Sam Weinig.
3418
3419         * wtf/text/AtomicString.cpp:
3420         (WTF::AtomicString::remove): The destructor of StringImpl remove
3421         the string from the string table if it is atomic. This needs to be done
3422         on the same thread as the one on which the string was added (otherwise the original
3423         table would keep a dangling pointer to a dead string).
3424
3425 2013-07-15  Benjamin Poulain  <benjamin@webkit.org>
3426
3427         Minor cleaning of AtomicString::addSlowCase
3428         https://bugs.webkit.org/show_bug.cgi?id=118615
3429
3430         Reviewed by Geoffrey Garen.
3431
3432         Give the variable a proper name.
3433         Add assertions to clarify the in and out states.
3434
3435         * wtf/text/AtomicString.cpp:
3436         (WTF::AtomicString::addSlowCase):
3437
3438 2013-07-12  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
3439
3440         Improve StringImpl::constructInternal() method
3441         https://bugs.webkit.org/show_bug.cgi?id=118503
3442
3443         Reviewed by Benjamin Poulain.
3444
3445         StringImpl::constructInternal used 'if ()' statement to decide which constructor
3446         to invoke hence compiler had to compile both branches even though optimizer would
3447         have then removed one of those, and as the function is inline it could affect
3448         slightly the compilation time.
3449
3450         The problem is solved via template specialization.
3451
3452         * wtf/text/StringImpl.h:
3453         (WTF::LChar):
3454         (WTF::UChar):
3455
3456 2013-07-11  Patrick Gansterer  <paroga@webkit.org>
3457
3458         Remove unused Windows CE files
3459         https://bugs.webkit.org/show_bug.cgi?id=118557
3460
3461         Reviewed by Andreas Kling.
3462
3463         * wtf/wince/FastMallocWinCE.h: Removed.
3464         * wtf/wince/MemoryManager.cpp: Removed.
3465         * wtf/wince/MemoryManager.h: Removed.
3466
3467 2013-07-10  Michael Brüning  <michael.bruning@digia.com>
3468
3469         Workaround for x86 optimizer bug in MSVC 2012.
3470         https://bugs.webkit.org/show_bug.cgi?id=118478
3471
3472         Reviewed by Benjamin Poulain.
3473
3474         This is a workaround for a bug in the x86 MSVC 2012 optimizer.
3475
3476         The problem is that the range comparison gets optimized out when
3477         the templated inline function toASCIIUpper. Copying the methods 
3478         content fixes the problem. 
3479
3480         This is unfortunately not the nicest fix, but the alternative would
3481         be to turn off optimization for StringImpl::upper on the x86 MSVC 2012
3482         build, which might impact overall performance negatively.
3483
3484         * wtf/text/StringImpl.cpp:
3485         (WTF::StringImpl::upper):
3486
3487 2013-07-08  Carlos Garcia Campos  <cgarcia@igalia.com>
3488
3489         Unreviewed. Fix make distcheck.
3490
3491         * GNUmakefile.list.am: Add missing header files.
3492
3493 2013-07-08  Antti Koivisto  <antti@apple.com>
3494
3495         Add Deque::removeLast
3496         https://bugs.webkit.org/show_bug.cgi?id=118466
3497
3498         Reviewed by Andreas Kling.
3499         
3500         Deque can remove both the first and the last element efficiently.
3501         
3502         Test: TestWebKitAPI/Tests/WTF/Deque.cpp
3503
3504         * wtf/Deque.h:
3505         (WTF::::takeLast):
3506         (WTF::::removeLast):
3507
3508 2013-07-08  Zoltan Arvai  <zarvai@inf.u-szeged.hu>
3509
3510         [Qt][Windows] Buildfix after r152426.
3511
3512         Reviewed by Csaba Osztrogonác.
3513
3514         * wtf/Platform.h: Do not include WTFHeaderDetection.h on Qt build.
3515
3516 2013-07-06  Benjamin Poulain  <benjamin@webkit.org>
3517
3518         Fix the performance regressions introduced by r152418
3519         https://bugs.webkit.org/show_bug.cgi?id=118438
3520
3521         Reviewed by Sam Weinig.
3522
3523         * wtf/text/StringImpl.h:
3524         (WTF::equal):
3525         Looping between two arbitrary pointers prevents important loop
3526         optimizations.
3527
3528 2013-07-05  Brent Fulgham  <bfulgham@apple.com>
3529
3530         [Windows] Unreviewed build correction.
3531
3532         * WTF.vcxproj/WTFGenerated.make: Avoid syntax error in generated
3533         file in cases where Legible Output support is not present.
3534
3535 2013-07-05  Brent Fulgham  <bfulgham@apple.com>
3536
3537         [Windows] Unreviewed build correction.
3538
3539         * WTF.vcxproj/WTFGenerated.make: Use space (rather than double
3540         quotes) when handling the no-Legible-Output case.
3541
3542 2013-07-05  Brent Fulgham  <bfulgham@apple.com>
3543
3544         [Windows] Identify OS-level at build-time.
3545         https://bugs.webkit.org/show_bug.cgi?id=118428
3546
3547         Reviewed by Anders Carlsson.
3548
3549         * WTF.vcxproj/WTFGenerated.make: Check for Legible Output featurs
3550         and set build environment as appropriate.
3551         * wtf/Platform.h: Activate Legible Output features if present.
3552
3553 2013-07-05  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
3554
3555         A lot of code duplication within StringImpl 'equal' functions
3556         https://bugs.webkit.org/show_bug.cgi?id=118415
3557
3558         Reviewed by Anders Carlsson.
3559
3560         There has been a lot of code duplication within StringImpl 'equal' functions:
3561         the whole logic was copied to every overloaded 'equal' function.
3562         Fixed now using templates and std::equal.
3563
3564         * wtf/text/StringImpl.cpp:
3565         (WTF::equalInternal):
3566         (WTF::equal):
3567         * wtf/text/StringImpl.h:
3568         (WTF::arraysEqual):
3569         (WTF::equal):
3570
3571 2013-07-05  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
3572
3573         Remove code duplication from StringImpl create()/reallocate() methods
3574         https://bugs.webkit.org/show_bug.cgi?id=118355
3575
3576         Reviewed by Andreas Kling.
3577
3578         StringImpl create()/reallocate() methods accepting LChar and UChar used to have
3579         duplicated code. The code duplication is removed now via used templates.
3580
3581         * wtf/text/StringImpl.cpp:
3582         (WTF::StringImpl::constructInternal):
3583         (WTF::LChar):
3584         (WTF::StringImpl::createUninitializedInternal):
3585         (WTF::StringImpl::createUninitialized):
3586         (WTF::StringImpl::reallocateInternal):
3587         (WTF::StringImpl::reallocate):
3588         (WTF::StringImpl::createInternal):
3589         (WTF::StringImpl::create):
3590         * wtf/text/StringImpl.h:
3591
3592 2013-07-03  Brent Fulgham  <bfulgham@apple.com>
3593
3594         [Windows] Unreviewed build correction.
3595
3596         * WTF.vcxproj/copy-files.cmd: Limit path (for this file) to DOS-only to avoid
3597         the Cygwin variant of rmdir from being used.
3598
3599 2013-07-03  Commit Queue  <commit-queue@webkit.org>
3600
3601         Unreviewed, rolling out r152356.
3602         http://trac.webkit.org/changeset/152356
3603         https://bugs.webkit.org/show_bug.cgi?id=118361
3604
3605         Broke JSCore tests (Requested by andersca on #webkit).
3606
3607         * wtf/text/StringImpl.cpp:
3608         (WTF::StringImpl::createUninitialized):
3609         (WTF::StringImpl::reallocate):
3610         (WTF::StringImpl::create):
3611         * wtf/text/StringImpl.h:
3612
3613 2013-07-03  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
3614
3615         Remove code duplication from StringImpl create()/reallocate() methods
3616         https://bugs.webkit.org/show_bug.cgi?id=118355
3617
3618         Reviewed by Anders Carlsson.
3619
3620         StringImpl create()/reallocate() methods accepting LChar and UChar used to have
3621         duplicated code. The code duplication is removed now via used templates.
3622
3623         * wtf/text/StringImpl.cpp:
3624         (WTF::StringImpl::constructInternal):
3625         (WTF::LChar):
3626         (WTF::StringImpl::createUninitializedInternal):
3627         (WTF::StringImpl::createUninitialized):
3628         (WTF::StringImpl::reallocateInternal):
3629         (WTF::StringImpl::reallocate):
3630         (WTF::StringImpl::createInternal):
3631         (WTF::StringImpl::create):
3632         * wtf/text/StringImpl.h:
3633
3634 2013-07-03  Csaba Osztrogonác  <ossy@webkit.org>
3635
3636         Fix cast-align warnings in FastMalloc.cpp
3637         https://bugs.webkit.org/show_bug.cgi?id=117991
3638
3639         Reviewed by Mark Hahnenberg.
3640
3641         * wtf/FastMalloc.cpp:
3642
3643 2013-07-02  Geoffrey Garen  <ggaren@apple.com>
3644
3645         plainText() is O(N^2)
3646         https://bugs.webkit.org/show_bug.cgi?id=118282
3647         <rdar://problem/14284360>
3648
3649         Reviewed by Alexey Proskuryakov.
3650
3651         * wtf/text/StringBuilder.cpp:
3652         (WTF::expandCapacity): Factored out this helper function to simplify
3653         some code that was duplicated in four places.
3654
3655         (WTF::StringBuilder::appendUninitializedSlow):
3656         (WTF::StringBuilder::append): Use expandCapacity(). One of the cases
3657         was not doing anything special, and so was O(N^2).
3658
3659         Also, always call expandCapacity() it in a standard way, calling
3660         capacity() first, so it's easy to tell at a glance that you got it right.
3661
3662 2013-07-02  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
3663
3664         Avoid code duplication inside String::append()
3665         https://bugs.webkit.org/show_bug.cgi?id=118290
3666
3667         Reviewed by Anders Carlsson.
3668
3669         The implementation of 'append(UChar)' had been repeated inside 'append(LChar)',
3670         this duplication is obviated now.
3671
3672         * wtf/text/WTFString.cpp:
3673         (WTF::String::appendInternal):
3674         (WTF::String::append):
3675         * wtf/text/WTFString.h: