Fix the atomicIncrement implementation for MIPS GCC
[WebKit-https.git] / Source / WTF / ChangeLog
1 2013-02-26  Balazs Kilvady  <kilvadyb@homejinni.com>
2
3         Fix the atomicIncrement implementation for MIPS GCC
4         https://bugs.webkit.org/show_bug.cgi?id=106739
5
6         Reviewed by Oliver Hunt.
7
8         Implementation of missing __sync_[add|sub]_and_fetch_8 functions.
9
10         Some architectures, like MIPS32, don't have GCC implementation for
11         builtin __sync_* functions with 64 bits variable size. GCC answer
12         for the problem: If a target doesn't support atomic operations on
13         certain variable sizes, you are out of luck with atomicity in that
14         case (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56296). GCC >= 4.8
15         will support __atomic_* builtin functions for this purpose for all
16         the GCC targets, but for current compilers we have to include our
17         own implementation.
18
19         * GNUmakefile.list.am:
20         * WTF.pro:
21         * wtf/Atomics.cpp: Added.
22         (WTF):
23         (WTF::getSwapLock):
24         (WTF::atomicStep):
25         * wtf/CMakeLists.txt:
26
27 2013-02-26  Oliver Hunt  <oliver@apple.com>
28
29         Appease the QT bots.
30
31         * wtf/FastMalloc.cpp:
32
33 2013-02-26  Jocelyn Turcotte  <jocelyn.turcotte@digia.com>
34
35         Implement JIT on Windows 64 bits
36         https://bugs.webkit.org/show_bug.cgi?id=107965
37
38         Reviewed by Simon Hausmann.
39
40         * wtf/Platform.h:
41
42 2013-02-26  Oliver Hunt  <oliver@apple.com>
43
44         Appease static analyzer warning about null string passed to strlen
45         https://bugs.webkit.org/show_bug.cgi?id=110658
46
47         Reviewed by Benjamin Poulain.
48
49         Add a null check before calling strlen
50
51         * wtf/Threading.cpp:
52         (WTF::createThread):
53
54 2013-02-25  Ryosuke Niwa  <rniwa@webkit.org>
55
56         Build fix attempt after r143996.
57
58         * wtf/FastMalloc.cpp:
59         (WTF):
60
61 2013-02-25  Roger Fong  <roger_fong@apple.com>
62
63         Unreviewed. Fix script to use WEBKIT_SOURCE for VS2010 property sheets instead of WEBKIT_LIBRARIES.
64
65         * WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py:
66
67 2013-02-25  Oliver Hunt  <oliver@apple.com>
68
69         Add cookies to FastMalloc spans
70         https://bugs.webkit.org/show_bug.cgi?id=110827
71
72         Reviewed by Michael Saboff.
73
74         Add a cookie to spans, and move some of the hardening around so
75         that it's more useful.
76
77         * wtf/FastMalloc.cpp:
78         (WTF::internalEntropyValue):
79         (WTF::spanInitializerCookie):
80         (WTF::Span::initCookie):
81         (WTF::Span::clearCookie):
82         (WTF::Span::isValid):
83         (Span):
84         (WTF::NewSpan):
85         (WTF::DeleteSpan):
86         (WTF::TCMalloc_ThreadCache_FreeList::Validate):
87         (WTF::TCMalloc_Central_FreeList::Populate):
88         (WTF::TCMalloc_ThreadCache::Deallocate):
89         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
90
91 2013-02-25  Jer Noble  <jer.noble@apple.com>
92
93         Normalize ENABLE_ENCRYPTED_MEDIA definitions across all FeatureDefines files.
94         https://bugs.webkit.org/show_bug.cgi?id=110806
95
96         Reviewed by Alexey Proskuryakov.
97
98         Ensure both ENCRYPTED_MEDIA and ENCRYPTED_MEDIA_V2 are enabled on macosx_1090.
99
100         * wtf/FeatureDefines.h:
101
102 2013-02-23  Ilya Tikhonovsky  <loislo@chromium.org>
103
104         Web Inspector: Native Memory Instrumentation: replace String with const char* in MemoryObjectInfo
105         https://bugs.webkit.org/show_bug.cgi?id=110599
106
107         Reviewed by Yury Semikhatsky.
108
109         Due to potentially dynamic nature of names and classNames we need to make a copy of the strings
110         that were given us via MemoryInstrumentation calls.
111         So I extended client api with registerString method that pushes the strings
112         down to the serializer.
113
114         * wtf/MemoryInstrumentation.h:
115         (MemoryInstrumentationClient):
116         * wtf/MemoryObjectInfo.h:
117         (WTF::MemoryObjectInfo::MemoryObjectInfo):
118         (WTF::MemoryObjectInfo::setClassName):
119         (WTF::MemoryObjectInfo::classNameId):
120         (WTF::MemoryObjectInfo::setName):
121         (WTF::MemoryObjectInfo::nameId):
122         (MemoryObjectInfo):
123
124 2013-02-21  Brady Eidson  <beidson@apple.com>
125
126         Move fastlog2() to WTF/MathExtras.h so it can be used from multiple projects.
127
128         Rubberstamped by Geoff Garen.
129
130         * wtf/MathExtras.h:
131         (WTF::fastLog2):
132
133 2013-02-21  Andy Estes  <aestes@apple.com>
134
135         TriState.h should be a Project header
136         https://bugs.webkit.org/show_bug.cgi?id=110543
137
138         Rubber-stamped by Dan Bernstein.
139
140         WTF uses a script to copy headers to the build destination, so it isn't
141         necessary to mark headers as Private/Public (and doing so can be problematic).
142
143         * WTF.xcodeproj/project.pbxproj: Mark TriState.h as a Project header.
144
145 2013-02-21  Roger Fong  <roger_fong@apple.com>
146
147         Unreviewed. Add executable property to cmd file.
148         Required for executable files to maintain their executable permissions over svn.
149
150         * WTF.vcxproj/copy-files.cmd: Added property svn:executable.
151
152 2013-02-19  Mark Hahnenberg  <mhahnenberg@apple.com>
153
154         Objective-C API: Need a way to use the Objective-C JavaScript API with WebKit
155         https://bugs.webkit.org/show_bug.cgi?id=106059
156
157         Reviewed by Geoffrey Garen.
158
159         * wtf/FeatureDefines.h: Added enable flag for JSC Objective-C API so it can be used in
160         export files.
161
162 2013-02-21  Martin Robinson  <mrobinson@igalia.com>
163
164         A couple more 'make dist' fixes for WebKitGTK+.
165
166         * GNUmakefile.list.am: Add a missing file to the source list.
167
168 2013-02-20  Roger Fong  <roger_fong@apple.com>
169
170         Get VS2010 Solution B&I ready.
171         <rdar://problem/1322988>
172
173         Rubberstamped by Timothy Horton.        
174         
175         Add Production configuration. 
176         Add a WTF submit solution with a DebugSuffix configuration. 
177         Modify WTF.make as necessary.
178         
179         * WTF.vcxproj: Added property svn:eol-style. Modified property svn:ignore.
180         * WTF.vcxproj/WTF.make: Added.
181         * WTF.vcxproj/WTF.submit.sln: Added.
182         * WTF.vcxproj/WTF.vcxproj:
183         * WTF.vcxproj/WTFCommon.props:
184         * WTF.vcxproj/WTFGenerated.vcxproj:
185         * WTF.vcxproj/WTFGeneratedProduction.props: Added.
186         * WTF.vcxproj/WTFGeneratedRelease.props:
187         * WTF.vcxproj/WTFProduction.props: Added.
188         * WTF.vcxproj/WTFRelease.props:
189         * WTF.vcxproj/copy-files.cmd:
190
191 2013-02-20  Oliver Hunt  <oliver@apple.com>
192
193         Moar hardening
194         https://bugs.webkit.org/show_bug.cgi?id=110275
195
196         Reviewed by Mark Hahnenberg.
197
198         We now poison objects when they get freed, and verify that
199         any object that is being freed is not poisoned.  If the
200         object looks like it's poisoned we validate the freelist,
201         and ensure the object is not already present.  If it is
202         we crash.
203
204         On allocation, we ensure that the object being allocated
205         is poisoned, then clear the poisoning fields.
206
207         * wtf/FastMalloc.cpp:
208         (WTF::internalEntropyValue):
209         (WTF):
210         (WTF::freedObjectStartPoison):
211         (WTF::freedObjectEndPoison):
212         (TCMalloc_ThreadCache_FreeList):
213         (WTF::TCMalloc_ThreadCache_FreeList::Validate):
214         (WTF::TCMalloc_Central_FreeList::Populate):
215         (WTF::TCMalloc_ThreadCache::Allocate):
216         (WTF::TCMalloc_ThreadCache::Deallocate):
217         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
218
219 2013-02-19  Sheriff Bot  <webkit.review.bot@gmail.com>
220
221         Unreviewed, rolling out r143400.
222         http://trac.webkit.org/changeset/143400
223         https://bugs.webkit.org/show_bug.cgi?id=110290
224
225         breaks everything (instacrash launching Safari) (Requested by
226         thorton on #webkit).
227
228         * wtf/FastMalloc.cpp:
229         (WTF::internalEntropyValue):
230         (WTF):
231         (WTF::TCMalloc_Central_FreeList::Populate):
232         (WTF::TCMalloc_ThreadCache::Allocate):
233         (WTF::TCMalloc_ThreadCache::Deallocate):
234
235 2013-02-19  Oliver Hunt  <oliver@apple.com>
236
237         Moar hardening
238         https://bugs.webkit.org/show_bug.cgi?id=110275
239
240         Reviewed by Anders Carlsson.
241
242         We now poison objects when they get freed, and verify that
243         any object that is being freed is not poisoned.  If the
244         object looks like it's poisoned we validate the freelist,
245         and ensure the object is not already present.  If it is
246         we crash.
247
248         On allocation, we ensure that the object being allocated
249         is poisoned, then clear the poisoning fields.
250
251         * wtf/FastMalloc.cpp:
252         (WTF::internalEntropyValue):
253         (WTF):
254         (WTF::freedObjectStartPoison):
255         (WTF::freedObjectEndPoison):
256         (TCMalloc_ThreadCache_FreeList):
257         (WTF::TCMalloc_ThreadCache_FreeList::Validate):
258         (WTF::TCMalloc_Central_FreeList::Populate):
259         (WTF::TCMalloc_ThreadCache::Allocate):
260         (WTF::TCMalloc_ThreadCache::Deallocate):
261
262 2013-02-18  Darin Adler  <darin@apple.com>
263
264         Style tweaks to StringHasher.h
265         https://bugs.webkit.org/show_bug.cgi?id=110042
266
267         Reviewed by Alexey Proskuryakov.
268
269         I have a bug fix coming soon, but figured I'd separate out style tweaks and land them
270         first to make that patch easier to undrestand.
271
272         * wtf/StringHasher.h: Tweak and rearrange comments a bit.
273         (WTF::StringHasher::addCharacter): Use character instead of ch.
274         (WTF::StringHasher::addCharacters): Use remainder instead of rem. Also capitalize the U
275         that we use to make an unsigned 1 constant.
276         (WTF::StringHasher::computeHashAndMaskTop8Bits): Ditto.
277         (WTF::StringHasher::hashMemory): Change version that takes size as a template argument
278         to call the version that takes the size at runtime, since both generate the same code
279         anyway. Added a FIXME questioning why this function uses the "mask top 8 bits" version
280         of the hash. Fix incorrect compile assertion that required sizes that are multiples
281         of four. This function works on sizes that are multiples of two. Also fixed a spelling
282         error where we called it a "multible".
283         (WTF::StringHasher::defaultConverter): Use character instead of ch.
284         (WTF::StringHasher::addCharactersToHash): Eliminated unnecessary local variable.
285
286 2013-02-18  Alexey Proskuryakov  <ap@apple.com>
287
288         Make HexNumber functions return 8-bit strings
289         https://bugs.webkit.org/show_bug.cgi?id=110152
290
291         Reviewed by Michael Saboff.
292
293         * wtf/HexNumber.h:
294         (Internal):
295         (WTF::Internal::hexDigitsForMode):
296         (WTF::appendByteAsHex):
297         (WTF::placeByteAsHexCompressIfPossible):
298         (WTF::placeByteAsHex):
299         (WTF::appendUnsignedAsHex):
300         (WTF::appendUnsignedAsHexFixedSize):
301         Use LChar everywhere.
302
303 2013-02-18  Benjamin Poulain  <bpoulain@apple.com>
304
305         Remove Vector::dataSlot(), it has no implementation
306         https://bugs.webkit.org/show_bug.cgi?id=109999
307
308         Reviewed by Andreas Kling.
309
310         VectorBufferBase does not implement any function bufferSlot().
311         The file only compiles because that part of the template is never
312         instantiated.
313
314         * wtf/Vector.h:
315
316 2013-02-18  Laszlo Gombos  <l.gombos@samsung.com>
317
318         Move ENABLE macros for WebCore out from Platform.h
319         https://bugs.webkit.org/show_bug.cgi?id=105735
320
321         Unreviewed, build fix when NETSCAPE_PLUGIN_API is disabled.
322
323         Enable ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH even if
324         NETSCAPE_PLUGIN_API is disabled (Qt, Efl, GTK, WX ports).
325
326         * wtf/FeatureDefines.h:
327
328 2013-02-18  Balazs Kilvady  <kilvadyb@homejinni.com>
329
330         MIPS DFG implementation.
331         https://bugs.webkit.org/show_bug.cgi?id=101328
332
333         Reviewed by Oliver Hunt.
334
335         DFG implementation for MIPS.
336
337         * wtf/Platform.h:
338
339 2013-02-18  Zan Dobersek  <zdobersek@igalia.com>
340
341         Stop placing std::isfinite and std::signbit inside the global scope
342         https://bugs.webkit.org/show_bug.cgi?id=109817
343
344         Reviewed by Darin Adler.
345
346         Prefix calls to the isfinite and signbit methods with std:: as the two
347         methods are no longer being imported into the global scope.
348
349         On Solaris and OpenBSD platforms or when using Visual C++ the two methods
350         are now defined (as incompatibility workarounds) inside the std namespace.
351
352         * wtf/DateMath.cpp:
353         (WTF::timeClip):
354         * wtf/DecimalNumber.h:
355         (WTF::DecimalNumber::DecimalNumber):
356         * wtf/MathExtras.h:
357         (std):
358         (std::isfinite):
359         (std::signbit):
360         (lrint):
361         (wtf_pow):
362         (decomposeDouble):
363         * wtf/MediaTime.cpp:
364         (WTF::MediaTime::createWithFloat):
365         (WTF::MediaTime::createWithDouble):
366         * wtf/dtoa.cpp:
367         (WTF::dtoa):
368
369 2013-02-18  Laszlo Gombos  <l.gombos@samsung.com>
370
371         Move ENABLE macros for WebCore out from Platform.h
372         https://bugs.webkit.org/show_bug.cgi?id=105735
373
374         Reviewed by Darin Adler and Benjamin Poulain.
375
376         Introduce FeatureDefines.h by combining the existing rules from
377         Platform.h and adding new rules for all the ENABLE flags that are
378         listed in the FeatureFlags wiki.
379
380         The new rules are not used at the moment by any ports
381         as the port specific build systems already define these flags
382         so the !defined() guard will prevent redefinition of the macros.
383
384         * GNUmakefile.list.am: Add FeatureDefines.h.
385         * WTF.gypi: Ditto.
386         * WTF.pro: Ditto.
387         * WTF.vcproj/WTF.vcproj: Ditto.
388         * WTF.xcodeproj/project.pbxproj: Ditto.
389         * wtf/CMakeLists.txt: Ditto.
390         * wtf/FeatureDefines.h: Added.
391         * wtf/Platform.h: Move macro definitions to FeatureDefines.h.
392
393 2013-02-16  Darin Adler  <darin@apple.com>
394
395         Remove redundant use of inline keyword in StringHasher.h
396         https://bugs.webkit.org/show_bug.cgi?id=110036
397
398         Reviewed by Geoffrey Garen.
399
400         I have some other improvements for StringHasher.h, but wanted to get the simplest ones
401         out of the way first.
402
403         * wtf/StringHasher.h: Remove inline keyword on functions inside the class definition,
404         since functions defined inside the class are automatically inline.
405
406 2013-02-15  Martin Robinson  <mrobinson@igalia.com>
407
408         [GTK] Spread the gyp build files throughout the tree
409         https://bugs.webkit.org/show_bug.cgi?id=109960
410
411         Reviewed by Dirk Pranke.
412
413         * WTF.gyp/WTFGTK.gyp: Renamed from Source/WebKit/gtk/gyp/WTF.gyp.
414
415 2013-02-15  Anders Carlsson  <andersca@apple.com>
416
417         Add HashMap::isValidKey and HashSet::isValidValue
418         https://bugs.webkit.org/show_bug.cgi?id=109977
419
420         Reviewed by Sam Weinig and Darin Adler.
421
422         Add helper functions for determining whether keys are valid, i.e. if
423         they are _not_ empty or deleted according to the hash traits.
424
425         * wtf/HashMap.h:
426         * wtf/HashSet.h:
427
428 2013-02-15  Laszlo Gombos  <l.gombos@samsung.com>
429
430         Remove support for RVCT version less than 4.0
431         https://bugs.webkit.org/show_bug.cgi?id=109390
432
433         The 4.0 version of the RVCT compiler was 
434         released in 2008. 
435         
436         Remove support for version older then 4.0 of RVCT, 
437         and keep the support for newer RVCT versions.
438
439         Reviewed by Zoltan Herczeg.
440
441         * WTF.gypi: Remove StringExtras.cpp.
442         * WTF.vcproj/WTF.vcproj: Remove StringExtras.cpp.
443         * WTF.vcxproj/WTF.vcxproj: Remove StringExtras.cpp.
444         * WTF.vcxproj/WTF.vcxproj.filters: Remove StringExtras.cpp.
445         * WTF.xcodeproj/project.pbxproj: Remove StringExtras.cpp.
446         * wtf/CMakeLists.txt: Remove StringExtras.cpp.
447         * wtf/Compiler.h: Remove tests for RVCT_VERSION_AT_LEAST(3, 0, 0, 0).
448         * wtf/Float32Array.h: Remove a quirk introduced for RVCT version <=2.2 .
449         * wtf/Float64Array.h: Ditto.
450         * wtf/Int16Array.h: Ditto.
451         * wtf/Int32Array.h: Ditto.
452         * wtf/Int8Array.h: Ditto.
453         * wtf/MathExtras.h: Remove a quirk needed for RVCT version  <= 3.0.
454         * wtf/Platform.h: Remove test for RVCT 4.0. Remove OS(RVCT).
455         * wtf/StringExtras.cpp: Removed.
456         * wtf/StringExtras.h: Remove a quirk introduced for RVCT version < 4.0.
457         * wtf/Uint16Array.h: Remove a quirk introduced for RVCT version <= 2.2.
458         * wtf/Uint32Array.h: Ditto.
459         * wtf/Uint8Array.h: Ditto.
460         * wtf/Uint8ClampedArray.h: Ditto.
461
462 2013-02-15  Christophe Dumez  <ch.dumez@sisa.samsung.com>
463
464         Add CString operators for comparison with const char*
465         https://bugs.webkit.org/show_bug.cgi?id=109947
466
467         Reviewed by Darin Adler.
468
469         Add operators to WTF::CString for equality/inequality comparison
470         with const char* strings. This avoids constructing a CString
471         from a const char* in such cases, which is can be expensive as
472         it would copy it and call strlen().
473
474         * wtf/text/CString.cpp:
475         (WTF::operator==): Use memcmp instead of strncmp to compare the
476         CString buffers as we know they are the same size and we don't
477         want to scan for terminating null byte.
478         (WTF):
479         * wtf/text/CString.h:
480         (WTF):
481         (WTF::operator!=):
482
483 2013-02-15  Geoffrey Garen  <ggaren@apple.com>
484
485         Merged the global function cache into the source code cache
486         https://bugs.webkit.org/show_bug.cgi?id=108660
487
488         Reviewed by Sam Weinig.
489
490         Responding to review comments by Darin Adler.
491
492         * wtf/HashTraits.h: Added a using directive to simplify client code.
493
494 2013-02-14  Dan Bernstein  <mitz@apple.com>
495
496         No easy way to use a RetainPtr as a key in a HashMap using object (rather than pointer) equality
497         https://bugs.webkit.org/show_bug.cgi?id=109864
498
499         Reviewed by Sam Weinig and Benjamin Poulain.
500
501         Added RetainPtrObjectHashTraits and RetainPtrObjectHash, which use CFEqual
502         and CFHash.
503
504         * wtf/RetainPtr.h:
505         (RetainPtrObjectHashTraits):
506         (WTF::RetainPtrObjectHashTraits::emptyValue):
507         (WTF::RetainPtrObjectHashTraits::constructDeletedValue):
508         (WTF::RetainPtrObjectHashTraits::isDeletedValue):
509         (WTF):
510         (WTF::RetainPtrObjectHash::hash):
511         (WTF::RetainPtrObjectHash::equal):
512         (RetainPtrObjectHash):
513
514 2013-02-14  Tony Chang  <tony@chromium.org>
515
516         Unreviewed, set svn:eol-style native for .sln, .vcproj, and .vsprops files.
517         https://bugs.webkit.org/show_bug.cgi?id=96934
518
519         * WTF.vcproj/WTF.sln: Modified property svn:eol-style.
520
521 2013-02-14  Tony Chang  <tony@chromium.org>
522
523         Unreviewed, set svn:eol-style CRLF for .sln files.
524
525         * WTF.vcproj/WTF.sln: Added property svn:eol-style.
526
527 2013-02-14  David Kilzer  <ddkilzer@apple.com>
528
529         [Mac] Clean up WARNING_CFLAGS
530         <http://webkit.org/b/109747>
531         <rdar://problem/13208373>
532
533         Reviewed by Mark Rowe.
534
535         * Configurations/Base.xcconfig: Use
536         GCC_WARN_64_TO_32_BIT_CONVERSION to enable and disable
537         -Wshorten-64-to-32 rather than WARNING_CFLAGS.
538
539         * WTF.vcproj/WTF.sln: Added property svn:eol-style.
540
541 2013-02-14  Eric Seidel  <eric@webkit.org>
542
543         String(Vector) behaves differently from String(vector.data(), vector.size()) for vectors with inline capacity in the size=0 case
544         https://bugs.webkit.org/show_bug.cgi?id=109784
545
546         Reviewed by Darin Adler.
547
548         This makes String(Vector) never return null strings.
549         Which matches behavior of String(UChar*, size_t)
550         for vectors with inlineCapacity, but differs from
551         String(UChar*, size_t) in the no-inlineCapacity case.
552
553         This incidentally will fix a behavioral regression
554         in the html threaded parser which came from converting
555         many String(UChar*, size_t) callsites to using String(Vector).
556
557         * wtf/text/WTFString.h:
558         (String):
559         (WTF::String::String):
560
561 2013-02-14  Eric Seidel  <eric@webkit.org>
562
563         REGRESSION(r142712): attribute values show up as "(null)" instead of null with the threaded parser
564         https://bugs.webkit.org/show_bug.cgi?id=109784
565
566         Reviewed by Benjamin Poulain.
567
568         When I changed many callsites to use the (existing) String(Vector) constructor
569         I inadvertantly made those callsites convert empty vectors to null strings
570         instead of empty strings (like String(UChar,size_t) does).
571
572         This is due to an oddity/bug in our Vector implementation where data()
573         will be 0 if the Vector is empty, but only if it doesn't have inline capacity.
574         https://bugs.webkit.org/show_bug.cgi?id=109792
575
576         This changes String(Vector) to exactly match the behavior of String(vector.data(), vector.size()).
577
578         This regression was easily detectable with the threaded parser, because we use String
579         instead of AtomicString in our CompactToken (used to send the Token data
580         between threads). The main-thread parser path uses AtomicHTMLToken which
581         uses AtomicString(Vector) and does not have this bug.
582
583         * wtf/text/WTFString.h:
584         (String):
585         (WTF::String::String):
586
587 2013-02-13  Zan Dobersek  <zdobersek@igalia.com>
588
589         The 'global isinf/isnan' compiler quirk required when using clang with libstdc++
590         https://bugs.webkit.org/show_bug.cgi?id=109325
591
592         Reviewed by Anders Carlsson.
593
594         Prefix calls to the isinf and isnan methods with std::, declaring we want to use the
595         two methods as they're provided by the C++ standard library being used.
596
597         * wtf/Compiler.h: Remove the global isinf/isnan compiler quirk definitions. They're not required anymore.
598         * wtf/DateMath.cpp: Move the workaround for isinf on Solaris into the std namespace. Ditto for isinf and isnan
599         when using MSVC. Stop bringing the isinf and isnan methods into the global scope when using other configurations.
600         (WTF::parseDateFromNullTerminatedCharacters):
601         * wtf/IntegralTypedArrayBase.h:
602         (WTF::IntegralTypedArrayBase::set):
603         * wtf/MathExtras.h:
604         (std):
605         (std::isinf):
606         (wtf_fmod):
607         (wtf_pow):
608         (doubleToInteger):
609         * wtf/MediaTime.cpp:
610         (WTF::MediaTime::createWithFloat):
611         (WTF::MediaTime::createWithDouble):
612         * wtf/Uint8ClampedArray.h:
613         (WTF::Uint8ClampedArray::set):
614
615 2013-02-13  Eric Seidel  <eric@webkit.org>
616
617         Don't copy Vector<UChar> when passing to new String methods from bug 109617
618         https://bugs.webkit.org/show_bug.cgi?id=109708
619
620         Reviewed by Tony Gentilcore.
621
622         Thanks for the catch Darin.
623
624         * wtf/text/AtomicString.h:
625         (WTF::AtomicString::AtomicString):
626         * wtf/text/StringImpl.h:
627         (WTF::StringImpl::create8BitIfPossible):
628
629 2013-02-13  Martin Robinson  <mrobinson@igalia.com>
630
631         [GTK] Remove remaining dead code from the GLib unicode backend
632         https://bugs.webkit.org/show_bug.cgi?id=109707
633
634         Reviewed by Philippe Normand.
635
636         * wtf/unicode/Unicode.h:
637
638 2013-02-13  Andrew Wilson  <atwilson@chromium.org>
639
640         Unreviewed Chromium gyp-file cleanup after glib backend removal.
641         https://bugs.webkit.org/show_bug.cgi?id=109672
642
643         Removed references to GLib unicode backend:
644
645         * WTF.gyp/WTF.gyp:
646         * WTF.gypi:
647
648 2013-02-12  Martin Robinson  <mrobinson@igalia.com>
649
650         [GTK] Remove the GLib unicode backend
651         https://bugs.webkit.org/show_bug.cgi?id=109627
652
653         Reviewed by Benjamin Poulain.
654
655         Remove references to the GLib unicode backend from WTF.
656
657         * GNUmakefile.list.am: Remove GLib unicode files from the source list.
658         * wtf/unicode/glib/UnicodeGLib.cpp: Removed.
659         * wtf/unicode/glib/UnicodeGLib.h: Removed.
660
661 2013-02-12  Takeshi Yoshino  <tyoshino@google.com>
662
663         Remove unnecessary and confusing includes from StreamBuffer.h.
664         https://bugs.webkit.org/show_bug.cgi?id=109652
665
666         Reviewed by Benjamin Poulain.
667
668         StreamBuffer.h is using OwnPtr for storing Vectors into a Deque.
669         FixedArray.h and PassOwnPtr.h are included but not used.
670
671         VectorTraits defines how to move OwnPtr in Vector. It's done by memcpy.
672         So, there's no need for PassOwnPtr (Deque<PassOwnPtr<Vector<char> > >
673         is even slower).
674
675         * wtf/StreamBuffer.h:
676
677 2013-02-12  Eric Seidel  <eric@webkit.org>
678
679         Teach more WTF string classes about vectors with inline capacity
680         https://bugs.webkit.org/show_bug.cgi?id=109617
681
682         Reviewed by Benjamin Poulain.
683
684         The HTML and WebVTT parsers use constructions like:
685         AtomicString name(m_name.data(), m_name.size())
686         all over the place because they use inline capacity
687         on the parse vectors for performance.
688
689         This change just add the necessary template variants
690         to the related String constructors/methods in WTF so that
691         this parser code can just pass the vector directly instead.
692
693         I'll do the actual parser cleanups in follow-up patches to keep things simple.
694
695         * wtf/text/AtomicString.h:
696         (AtomicString):
697         (WTF::AtomicString::AtomicString):
698         * wtf/text/StringImpl.h:
699         (StringImpl):
700         (WTF::StringImpl::create8BitIfPossible):
701         * wtf/text/WTFString.h:
702         (String):
703         (WTF::String::make8BitFrom16BitSource):
704         (WTF):
705         (WTF::append):
706
707 2013-02-11  Oliver Hunt  <oliver@apple.com>
708
709         Build fix.
710
711         * wtf/FastMalloc.cpp:
712         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
713
714 2013-02-11  Ryosuke Niwa  <rniwa@webkit.org>
715
716         Disable delete button controller on non-Mac ports and delete EditorClient::shouldShowDeleteInterface
717         https://bugs.webkit.org/show_bug.cgi?id=109534
718
719         Reviewed by Anders Carlsson.
720
721         * wtf/Platform.h:
722
723 2013-02-11  David Kilzer  <ddkilzer@apple.com>
724
725         [iOS] Upstream changes to Platform.h
726         <http://webkit.org/b/109459>
727
728         Reviewed by Benjamin Poulain.
729
730         * wtf/Platform.h:
731         - Changes for armv7s.
732         - Add ENABLE() definitions for DASHBOARD_SUPPORT and WEBGL.
733         - Re-sort ENABLE() and USE() macros.
734         - Remove ENABLE() macros for JIT, LLINT and YARR_JIT to enable
735           on iOS Simulator.  They are already defined below.
736         - Turn off HAVE(HOSTED_CORE_ANIMATION) for iOS.
737         - Turn on USE(COREMEDIA) for iOS 6.0 and later.
738
739 2013-02-08  Oliver Hunt  <oliver@apple.com>
740
741         Harden FastMalloc (again)
742         https://bugs.webkit.org/show_bug.cgi?id=109334
743
744         Reviewed by Mark Hahnenberg.
745
746         Re-implement hardening of linked lists in TCMalloc.
747
748         In order to keep heap introspection working, we need to thread the
749         heap entropy manually as the introspection process can't use the
750         address of a global in determining the mask.  Given we now have to
751         thread a value through anyway, I've stopped relying on ASLR for entropy
752         and am simply using arc4random() on darwin, and time + ASLR everywhere
753         else.
754
755         I've also made an explicit struct type for the FastMalloc singly linked
756         lists, as it seemed like the only way to reliably distinguish between
757         void*'s that were lists vs. void* that were not.  This also made it
758         somewhat easier to reason about things across processes.
759
760         Verified that all the introspection tools work as expected.
761
762         * wtf/FastMalloc.cpp:
763         (WTF::internalEntropyValue):
764         (WTF):
765         (HardenedSLL):
766         (WTF::HardenedSLL::create):
767         (WTF::HardenedSLL::null):
768         (WTF::HardenedSLL::setValue):
769         (WTF::HardenedSLL::value):
770         (WTF::HardenedSLL::operator!):
771         (WTF::HardenedSLL::operator UnspecifiedBoolType):
772         (TCEntry):
773         (WTF::SLL_Next):
774         (WTF::SLL_SetNext):
775         (WTF::SLL_Push):
776         (WTF::SLL_Pop):
777         (WTF::SLL_PopRange):
778         (WTF::SLL_PushRange):
779         (WTF::SLL_Size):
780         (PageHeapAllocator):
781         (WTF::PageHeapAllocator::Init):
782         (WTF::PageHeapAllocator::New):
783         (WTF::PageHeapAllocator::Delete):
784         (WTF::PageHeapAllocator::recordAdministrativeRegions):
785         (WTF::Span::next):
786         (WTF::Span::remoteNext):
787         (WTF::Span::prev):
788         (WTF::Span::setNext):
789         (WTF::Span::setPrev):
790         (Span):
791         (WTF::DLL_Init):
792         (WTF::DLL_Remove):
793         (WTF::DLL_IsEmpty):
794         (WTF::DLL_Length):
795         (WTF::DLL_Prepend):
796         (TCMalloc_Central_FreeList):
797         (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects):
798         (WTF::TCMalloc_Central_FreeList::entropy):
799         (TCMalloc_PageHeap):
800         (WTF::TCMalloc_PageHeap::init):
801         (WTF::TCMalloc_PageHeap::scavenge):
802         (WTF::TCMalloc_PageHeap::New):
803         (WTF::TCMalloc_PageHeap::AllocLarge):
804         (WTF::TCMalloc_PageHeap::Carve):
805         (WTF::TCMalloc_PageHeap::Delete):
806         (WTF::TCMalloc_PageHeap::ReturnedBytes):
807         (WTF::TCMalloc_PageHeap::Check):
808         (WTF::TCMalloc_PageHeap::CheckList):
809         (WTF::TCMalloc_PageHeap::ReleaseFreeList):
810         (TCMalloc_ThreadCache_FreeList):
811         (WTF::TCMalloc_ThreadCache_FreeList::Init):
812         (WTF::TCMalloc_ThreadCache_FreeList::empty):
813         (WTF::TCMalloc_ThreadCache_FreeList::Push):
814         (WTF::TCMalloc_ThreadCache_FreeList::PushRange):
815         (WTF::TCMalloc_ThreadCache_FreeList::PopRange):
816         (WTF::TCMalloc_ThreadCache_FreeList::Pop):
817         (WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects):
818         (TCMalloc_ThreadCache):
819         (WTF::TCMalloc_Central_FreeList::Init):
820         (WTF::TCMalloc_Central_FreeList::ReleaseListToSpans):
821         (WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
822         (WTF::TCMalloc_Central_FreeList::InsertRange):
823         (WTF::TCMalloc_Central_FreeList::RemoveRange):
824         (WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe):
825         (WTF::TCMalloc_Central_FreeList::FetchFromSpans):
826         (WTF::TCMalloc_Central_FreeList::Populate):
827         (WTF::TCMalloc_ThreadCache::Init):
828         (WTF::TCMalloc_ThreadCache::Deallocate):
829         (WTF::TCMalloc_ThreadCache::FetchFromCentralCache):
830         (WTF::TCMalloc_ThreadCache::ReleaseToCentralCache):
831         (WTF::TCMalloc_ThreadCache::InitModule):
832         (WTF::TCMalloc_ThreadCache::NewHeap):
833         (WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
834         * wtf/MallocZoneSupport.h:
835         (RemoteMemoryReader):
836
837 2013-02-11  Enrica Casucci  <enrica@apple.com>
838
839         Add ENABLE_DELETION_UI to control the use of the deletion UI.
840         https://bugs.webkit.org/show_bug.cgi?id=109463.
841         
842         ENABLE_DELETION_UI is set to 1 by default for
843         all ports. It is explicitly enabled for MAC and disabled for iOS.
844
845         Reviewed by Ryosuke Niwa.
846
847         * wtf/Platform.h:
848
849 2013-02-11  Christophe Dumez  <ch.dumez@sisa.samsung.com>
850
851         [EFL] Stop using smart pointers for Ecore_Timer
852         https://bugs.webkit.org/show_bug.cgi?id=109409
853
854         Reviewed by Kenneth Rohde Christiansen.
855
856         Remove support in OwnPtr for EFL's Ecore_Timer. It is a bad idea to use
857         OwnPtr for Ecore_Timer because the timer handle may become invalid.
858
859         * wtf/OwnPtrCommon.h:
860         (WTF):
861         * wtf/efl/OwnPtrEfl.cpp:
862
863 2013-02-11  Abhishek Arya  <inferno@chromium.org>
864
865         Add ASSERT_WITH_SECURITY_IMPLICATION to detect out of bounds access
866         https://bugs.webkit.org/show_bug.cgi?id=108981
867
868         Reviewed by Eric Seidel.
869
870         * wtf/BitVector.h:
871         (WTF::BitVector::quickGet):
872         (WTF::BitVector::quickSet):
873         (WTF::BitVector::quickClear):
874         * wtf/DecimalNumber.h:
875         (WTF::DecimalNumber::DecimalNumber):
876         * wtf/SegmentedVector.h:
877         (WTF::SegmentedVector::ensureSegment):
878         * wtf/StringPrintStream.cpp:
879         (WTF::StringPrintStream::vprintf):
880         * wtf/Vector.h:
881         (WTF::::insert):
882         (WTF::::remove):
883         * wtf/dtoa/utils.h:
884         (WTF::double_conversion::StringBuilder::SetPosition):
885         (WTF::double_conversion::StringBuilder::AddSubstring):
886
887 2013-02-10  Laszlo Gombos  <l.gombos@samsung.com>
888
889         Consolidate the way WTF_USE_PTHREADS is enabled
890         https://bugs.webkit.org/show_bug.cgi?id=108191
891
892         Reviewed by Benjamin Poulain.
893
894         Define WTF_USE_PTHREADS to 1 on all OS(UNIX) environments.
895
896         * WTF.gyp/WTF.gyp: Remove duplicated definition of WTF_USE_PTHREADS.
897         * wtf/Platform.h:
898
899 2013-02-10  Laszlo Gombos  <l.gombos@samsung.com>
900
901         Refactor the way HAVE_XXX macros are set
902         https://bugs.webkit.org/show_bug.cgi?id=108132
903
904         Reviewed by Benjamin Poulain.
905
906         OS(WINDOWS) and OS(UNIX) are so broadly defined that for each
907         builds exactly one of them is enabled. Use this assumption to
908         cleanup Platform.h.
909
910         * wtf/Platform.h:
911
912 2013-02-10  Jae Hyun Park  <jae.park08@gmail.com>
913
914         Rename ENABLE(GLIB_SUPPORT) to USE(GLIB)
915         https://bugs.webkit.org/show_bug.cgi?id=104266
916
917         Reviewed by Philippe Normand.
918
919         Using USE(GLIB) instead of ENABLE(GLIB_SUPPORT) is more consistent with
920         the existing macro naming conventions.
921
922         From Platform.h
923         USE() - use a particular third-party library or optional OS service
924         ENABLE() - turn on a specific feature of WebKit
925
926         * WTF.pri:
927         * wtf/Platform.h:
928         * wtf/gobject/GOwnPtr.cpp:
929         * wtf/gobject/GOwnPtr.h:
930         * wtf/gobject/GRefPtr.cpp:
931         * wtf/gobject/GRefPtr.h:
932
933 2013-02-08  Michael Saboff  <msaboff@apple.com>
934
935         ARM_NEON Inline Assembly for copyLCharsFromUCharSource() inefficient for aligned destinations
936         https://bugs.webkit.org/show_bug.cgi?id=109335
937
938         Reviewed by Filip Pizlo.
939
940         Change a "do while" to a "while" so that we don't copy single characters to align the 
941         destination when it is already aligned.
942
943         * wtf/text/ASCIIFastPath.h:
944         (WTF::copyLCharsFromUCharSource):
945
946 2013-02-08  Jer Noble  <jer.noble@apple.com>
947
948         Bring WebKit up to speed with latest Encrypted Media spec.
949         https://bugs.webkit.org/show_bug.cgi?id=97037
950
951         Reviewed by Eric Carlson.
952
953         Define the ENABLE_ENCRYPTED_MEDIA_V2 setting.
954
955         * wtf/Platform.h:
956
957 2013-02-08  Adam Barth  <abarth@webkit.org>
958
959         Use WeakPtrs to communicate between the HTMLDocumentParser and the BackgroundHTMLParser
960         https://bugs.webkit.org/show_bug.cgi?id=107190
961
962         Reviewed by Eric Seidel.
963
964         Add the ability to create an unbound weak reference. This facility lets
965         you start sending messages to a WeakPtr on another thread before the
966         object backing the WeakPtr has actually been created.
967
968         * wtf/WeakPtr.h:
969         (WTF::WeakReference::createUnbound):
970         (WTF::WeakReference::bindTo):
971         (WeakReference):
972         (WTF::WeakReference::WeakReference):
973         (WTF::WeakPtr::WeakPtr):
974         (WeakPtr):
975         (WTF::WeakPtrFactory::WeakPtrFactory):
976         (WeakPtrFactory):
977         (WTF::WeakPtrFactory::revokeAll):
978
979 2013-02-08  Martin Robinson  <mrobinson@igalia.com>
980
981         [GTK] Add an experimental gyp build
982         https://bugs.webkit.org/show_bug.cgi?id=109003
983
984         Reviewed by Gustavo Noronha Silva.
985
986         * WTF.gyp/WTF.gyp: Filter out MetaAllocator.(cpp/h) from the Chromium
987         build. It's only necessary for GTK+.
988         * WTF.gypi: Add MetaAllocator to the build for WebKitGTK+.
989
990 2013-02-06  Ilya Tikhonovsky  <loislo@chromium.org>
991
992         Web Inspector: Native Memory Instrumentation: reportBaseAddress needs to be called after the reportNode. So it may reuse the node index for the real address.
993         https://bugs.webkit.org/show_bug.cgi?id=109051
994
995         Reviewed by Yury Semikhatsky.
996
997         * wtf/MemoryInstrumentation.cpp:
998         (WTF::MemoryInstrumentation::WrapperBase::processPointer):
999
1000 2013-02-07  David Kilzer  <ddkilzer@apple.com>
1001
1002         Fix #endif comment from r142163 and r142183
1003
1004         * wtf/MainThread.h:
1005         (WTF): s/PLATFORM/USE/
1006
1007 2013-02-07  Benjamin Poulain  <bpoulain@apple.com>
1008
1009         Fix an incorrect comment from r142163
1010
1011         Unreviewed.
1012
1013         * wtf/MainThread.h:
1014         I accidentally copied PLATFORM(IOS) instead of USE(WEB_THREAD) for the #ifdef closing.
1015
1016 2013-02-07  Benjamin Poulain  <bpoulain@apple.com>
1017
1018         Upstream iOS isWebThread() and isUIThread()
1019         https://bugs.webkit.org/show_bug.cgi?id=109130
1020
1021         Reviewed by Sam Weinig.
1022
1023         On iOS, it is sometimes necessary to differenciate the thread running WebCore,
1024         and the thread running the UI. This patch upstream those functions.
1025
1026         * wtf/MainThread.cpp:
1027         * wtf/MainThread.h:
1028         Disable the legacy initializer as it is incorrect when using the WebThread to run WebCore.
1029         (WTF::isWebThread):
1030         (WTF::isUIThread):
1031         Return true when the current thread is the Web/UI thread.
1032
1033         * wtf/mac/MainThreadMac.mm:
1034         (WTF::isUIThread):
1035         (WTF::isWebThread):
1036
1037         * wtf/text/AtomicString.cpp:
1038         (WTF::AtomicStringTable::create):
1039         Use the newly added methods.
1040
1041 2013-02-07  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
1042
1043         [Qt] Fix build without 3D_GRAPHICS
1044         https://bugs.webkit.org/show_bug.cgi?id=109194
1045
1046         Reviewed by Noam Rosenthal.
1047
1048         Now that Coordinated Graphics was moved to WebCore, we need to explicitly enable
1049         it when we have 3D_GRAPHICS. This dependency was implicitly by the fact that
1050         3D_GRAPHICS is a dependency of WebKit2 and Coordinated Graphics was only
1051         available there. This should fix build for Qt SH4 Linux.
1052
1053         * wtf/Platform.h:
1054
1055 2013-02-06  Zan Dobersek  <zdobersek@igalia.com>
1056
1057         [WTFURL] Fix erroneous header inclusions in WTFURL code
1058         https://bugs.webkit.org/show_bug.cgi?id=109040
1059
1060         Reviewed by Benjamin Poulain.
1061
1062         Include WTFURL API headers from files in Source/WTF/wtf/url/src
1063         by specifying their relative path to Source/WTF. 
1064
1065         * GNUmakefile.am: The changes make it possible to compile the WTF library
1066         without specifying both Source/WTF/wtf/url/api and Source/WTF/wtf/url/src
1067         as inclusion directories in CPPFLAGS, so remove these two entries.
1068         * wtf/url/src/RawURLBuffer.h:
1069         * wtf/url/src/URLCanon.h: Include the URLParse.h header by specifying
1070         only the base name as it's located in the same directory.
1071         * wtf/url/src/URLCanonQuery.cpp:
1072         * wtf/url/src/URLUtil.h:
1073
1074 2013-02-06  Tony Gentilcore  <tonyg@chromium.org>
1075
1076         Call XSSAuditor's didBlockScript() for the threaded HTML parser
1077         https://bugs.webkit.org/show_bug.cgi?id=108726
1078
1079         Reviewed by Adam Barth.
1080
1081         This patch adds isSafeToSendToAnotherThread() methods to CString, String, ParsedURL and URLString.
1082         These methods check to ensure there are 0 or 1 references.
1083
1084         * wtf/text/CString.cpp:
1085         (WTF::CString::isSafeToSendToAnotherThread): Added.
1086         (WTF):
1087         * wtf/text/CString.h:
1088         (CString):
1089         * wtf/text/WTFString.cpp:
1090         (WTF::String::isSafeToSendToAnotherThread): Added.
1091         (WTF):
1092         * wtf/text/WTFString.h:
1093         (String):
1094         * wtf/url/api/ParsedURL.h:
1095         (WTF::ParsedURL::isSafeToSendToAnotherThread): Added.
1096         * wtf/url/api/URLString.h:
1097         (WTF::URLString::isSafeToSendToAnotherThread): Added.
1098
1099 2013-02-06  Ilya Tikhonovsky  <loislo@chromium.org>
1100
1101         Web Inspector: Native Memory Instrumentation: assign class name to the heap graph node automatically
1102         https://bugs.webkit.org/show_bug.cgi?id=107262
1103
1104         Reviewed by Yury Semikhatsky.
1105
1106         We need a way to calculate class name for a pointer automatically.
1107         Otherwise we need to write className manually in all the instrumentation methods.
1108         And for all reported but not instrumented classes.
1109
1110         C++ can do that for us with help of typeid but unfortunatelly it requires rtti.
1111         There is another way to do that. C++ preprocessor provides a define which has a function name.
1112
1113         For g++ and clang it is __PRETTY_FUNCTION__.
1114         For MSVC it is __FUNCTION__.
1115         The content of the string is a function signature.
1116         We can use it because it has the name of the template argument.
1117         The format is sligthly different. That's why I made two different parsers.
1118         One for MSVC the other for GCC, Clang etc.
1119         The other problem is the resulting binary size.
1120         I made very simple function that does the only thing, returns the smallest possible function signature.
1121         Unfortunatelly MSVC doesn't generate template argument name for functions.
1122         It does this only for classes.
1123
1124         * wtf/MemoryInstrumentation.cpp:
1125         (WTF):
1126         (WTF::className):
1127         (WTF::MemoryClassInfo::callReportObjectInfo):
1128         (WTF::MemoryClassInfo::init):
1129         * wtf/MemoryInstrumentation.h:
1130         (WTF):
1131         (WTF::FN::fn):
1132         (WTF::fn):
1133         (WTF::MemoryClassInfo::MemoryClassInfo):
1134         (MemoryClassInfo):
1135         (WTF::::reportObjectMemoryUsage):
1136
1137 2013-02-05  Mark Lam  <mark.lam@apple.com>
1138
1139         Fix EnumClass so that it can be used with switch statements.
1140         https://bugs.webkit.org/show_bug.cgi?id=109004.
1141
1142         Reviewed by Sam Weinig.
1143
1144         * wtf/EnumClass.h:
1145         (WTF::EnumClass::operator==):
1146         (WTF::EnumClass::operator!=):
1147         (WTF::EnumClass::operator<):
1148         (WTF::EnumClass::operator<=):
1149         (WTF::EnumClass::operator>):
1150         (WTF::EnumClass::operator>=):
1151         (EnumClass):
1152         (WTF::EnumClass::operator Value):
1153
1154 2013-02-05  Oliver Hunt  <oliver@apple.com>
1155
1156         Disable TCMalloc hardening as it's breaking leaks.
1157
1158         Reviewed by Gavin Barraclough.
1159
1160         * wtf/FastMalloc.cpp:
1161
1162 2013-02-05  Mark Lam  <mark.lam@apple.com>
1163
1164         Rename ENUM_CLASS_BEGIN() macro to ENUM_CLASS(), and make DatabaseType a strong enum.
1165         https://bugs.webkit.org/show_bug.cgi?id=108988.
1166
1167         Reviewed by Alexey Proskuryakov.
1168
1169         * wtf/EnumClass.h:
1170
1171 2013-02-05  Roger Fong  <roger_fong@apple.com>
1172
1173         Unreviewed build fix.
1174
1175         * wtf/FastMalloc.cpp:
1176
1177 2013-02-05  Benjamin Poulain  <bpoulain@apple.com>
1178
1179         Tidy up StackBounds
1180         https://bugs.webkit.org/show_bug.cgi?id=108889
1181
1182         Reviewed by Ryosuke Niwa.
1183
1184         * wtf/StackBounds.h:
1185         (StackBounds):
1186         (WTF::StackBounds::isSafeToRecurse):
1187         (WTF::StackBounds::size):
1188         Adopt a more conventional style for a multiline branch.
1189
1190         (WTF::StackBounds::StackBounds):
1191         (WTF::StackBounds::current):
1192         (WTF::StackBounds::recursionLimit):
1193         Make those method private.
1194
1195         Making the constructor private ensure initialize() is alwasy called on any StackBounds.
1196
1197 2013-02-05  Zan Dobersek  <zdobersek@igalia.com>
1198
1199         [WTFURL] Comparison between signed and unsigned integer expressions in URLUtil.cpp
1200         https://bugs.webkit.org/show_bug.cgi?id=108955
1201
1202         Reviewed by Benjamin Poulain.
1203
1204         * wtf/url/src/URLUtil.cpp:
1205         (URLUtilities): Make the counter variable a signed integer to get rid of the warning.
1206
1207 2013-02-05  Benjamin Poulain  <bpoulain@apple.com>
1208
1209         Rationalize the use of iOS/Mac #defines in Assertions.cpp
1210         https://bugs.webkit.org/show_bug.cgi?id=108870
1211
1212         Reviewed by David Kilzer.
1213
1214         * wtf/Assertions.cpp: Instead of using PLATFORM(MAC) and assume it works for iOS and OS X,
1215         use CF as the guard for CFString. Similarily, USE_APPLE_SYSTEM_LOG guards code using ASL.
1216
1217 2013-02-05  Benjamin Poulain  <bpoulain@apple.com>
1218
1219         Make StringBuilder::toAtomicString() consistent with StringBuilder::toString() for strings of length zero
1220         https://bugs.webkit.org/show_bug.cgi?id=108894
1221
1222         Reviewed by Andreas Kling.
1223
1224         * wtf/text/StringBuilder.h:
1225         (WTF::StringBuilder::toAtomicString): The function was returning the nullAtom for strings of length zero.
1226         This is inconsistent with StringBuilder::toString() which always return an empty string.
1227
1228         This patch unifies the behavior.
1229
1230 2013-02-04  Mark Hahnenberg  <mhahnenberg@apple.com>
1231
1232         Structure::m_outOfLineCapacity is unnecessary
1233         https://bugs.webkit.org/show_bug.cgi?id=108206
1234
1235         Reviewed by Darin Adler.
1236
1237         Simplifying the utility functions that we use since we don't need a 
1238         bunch of fancy templates for this one specific call site.
1239
1240         * wtf/MathExtras.h:
1241         (WTF::roundUpToPowerOfTwo):
1242
1243 2013-02-05  Sheriff Bot  <webkit.review.bot@gmail.com>
1244
1245         Unreviewed, rolling out r141905.
1246         http://trac.webkit.org/changeset/141905
1247         https://bugs.webkit.org/show_bug.cgi?id=108963
1248
1249         "Broke mac build" (Requested by tonyg-cr on #webkit).
1250
1251         * wtf/text/CString.cpp:
1252         * wtf/text/CString.h:
1253         * wtf/text/WTFString.cpp:
1254         * wtf/text/WTFString.h:
1255         (String):
1256         * wtf/url/api/ParsedURL.h:
1257         (ParsedURL):
1258         * wtf/url/api/URLString.h:
1259
1260 2013-02-05  Tony Gentilcore  <tonyg@chromium.org>
1261
1262         Call XSSAuditor's didBlockScript() for the threaded HTML parser
1263         https://bugs.webkit.org/show_bug.cgi?id=108726
1264
1265         Reviewed by Adam Barth.
1266
1267         This patch adds isSafeToSendToAnotherThread() methods to CString, String, ParsedURL and URLString.
1268         These methods check to ensure there are 0 or 1 references.
1269
1270         * wtf/text/CString.cpp:
1271         (WTF::CString::isSafeToSendToAnotherThread): Added.
1272         (WTF):
1273         * wtf/text/CString.h:
1274         (CString):
1275         * wtf/text/WTFString.cpp:
1276         (WTF::String::isSafeToSendToAnotherThread): Added.
1277         (WTF):
1278         * wtf/text/WTFString.h:
1279         (String):
1280         * wtf/url/api/ParsedURL.h:
1281         (WTF::ParsedURL::isSafeToSendToAnotherThread): Added.
1282         * wtf/url/api/URLString.h:
1283         (WTF::URLString::isSafeToSendToAnotherThread): Added.
1284
1285 2013-02-04  Benjamin Poulain  <bpoulain@apple.com>
1286
1287         Build fix for AtomicString on iOS
1288
1289         Unreviewed. The commit r141812 rely on isUIThread(), there is no such things
1290         in the tree right now. Use pthread_main_np() until more thread handling is upstreamed.
1291
1292         * wtf/text/AtomicString.cpp:
1293         (WTF::AtomicStringTable::create):
1294
1295 2013-02-04  Abhishek Arya  <inferno@chromium.org>
1296
1297         Add ASSERT_WITH_SECURITY_IMPLICATION to detect out of bounds access
1298         https://bugs.webkit.org/show_bug.cgi?id=108668
1299
1300         Reviewed by Eric Seidel.
1301
1302         * wtf/AVLTree.h:
1303         (WTF::AVLTreeDefaultBSet::operator[]):
1304         * wtf/BitArray.h:
1305         (WTF::BitArray::set):
1306         (WTF::BitArray::get):
1307         * wtf/FastBitVector.h:
1308         (WTF::FastBitVector::set):
1309         (WTF::FastBitVector::clear):
1310         (WTF::FastBitVector::get):
1311         * wtf/FixedArray.h:
1312         (WTF::FixedArray::operator[]):
1313         * wtf/RefCountedArray.h:
1314         (WTF::RefCountedArray::at):
1315         * wtf/TypedArrayBase.h:
1316         (WTF::TypedArrayBase::item):
1317         * wtf/text/StringBuffer.h:
1318         (WTF::StringBuffer::operator[]):
1319         * wtf/text/StringBuilder.h:
1320         (WTF::StringBuilder::operator[]):
1321         * wtf/text/StringImpl.h:
1322         (WTF::StringImpl::operator[]):
1323
1324 2013-02-04  Benjamin Poulain  <benjamin@webkit.org>
1325
1326         Upstream iOS's AtomicString
1327         https://bugs.webkit.org/show_bug.cgi?id=108139
1328
1329         Reviewed by David Kilzer.
1330
1331         On iOS, WebCore can be executed from two different threads. To maintain consistency,
1332         a few changes had been made:
1333         -The main UI thread and the WebThread share the same AtomicStringTable.
1334         -A spin lock is needed before any access to prevent any concurrent modification of the string table.
1335          The spin lock also prevent race on the static initialization of the shared table.
1336
1337         * wtf/Platform.h:
1338         Introduce a new USE(WEB_THREAD) to scope changes related to iOS Web Thread.
1339         * wtf/text/AtomicString.cpp:
1340         (AtomicStringTableLocker):
1341         (WTF::AtomicStringTableLocker::AtomicStringTableLocker):
1342         (WTF::AtomicStringTableLocker::~AtomicStringTableLocker):
1343         (WTF::AtomicStringTable::create):
1344         wtfThreadData() is not necessarily inlined on ARM. When it is not inlined, the old code
1345         causes two call to the function. Instead, we can keep the value in register and pass it
1346         to AtomicStringTable::create().
1347         (WTF::stringTable):
1348         (WTF::addToStringTable):
1349         (WTF::AtomicString::addSlowCase):
1350         (WTF::AtomicString::find):
1351         (WTF::AtomicString::remove):
1352
1353 2013-02-04  Martin Robinson  <mrobinson@igalia.com>
1354
1355         Fix GTK+ 'make dist' in preparation for the 1.11.5 release.
1356
1357         * GNUmakefile.list.am:
1358
1359 2013-02-04  David Kilzer  <ddkilzer@apple.com>
1360
1361         Sort WTF Xcode project file
1362
1363         * WTF.xcodeproj/project.pbxproj:
1364
1365 2013-02-02  Andreas Kling  <akling@apple.com>
1366
1367         Vector should consult allocator about ideal size when choosing capacity.
1368         <http://webkit.org/b/108410>
1369         <rdar://problem/13124002>
1370
1371         Reviewed by Benjamin Poulain.
1372
1373         Added WTF::fastMallocGoodSize(), a workalike/wrapper for OS X's malloc_good_size().
1374         It returns the actual size of the block that will get allocated for a given byte size.
1375
1376         Vector's internal buffer now checks with the allocator if the resulting allocation
1377         could actually house more objects and updates its capacity to make use of the space.
1378
1379         * wtf/Deque.h:
1380         (WTF::::expandCapacity):
1381         * wtf/FastMalloc.cpp:
1382         (WTF::fastMallocGoodSize):
1383         * wtf/FastMalloc.h:
1384         * wtf/Vector.h:
1385         (WTF::VectorBufferBase::allocateBuffer):
1386         (WTF::VectorBufferBase::tryAllocateBuffer):
1387         (WTF::VectorBufferBase::reallocateBuffer):
1388
1389 2013-02-02  Mark Rowe  <mrowe@apple.com>
1390
1391         <http://webkit.org/b/108745> WTF shouldn't use a script build phase to detect the presence of headers when the compiler can do it for us
1392
1393         Reviewed by Sam Weinig.
1394
1395         * WTF.xcodeproj/project.pbxproj: Remove the script phase that used to generate a header file
1396         containing information about whether certain header files exist on the system.
1397         * wtf/FastMalloc.cpp: Use Clang's __has_include to detect whether the header exists before including it.
1398
1399 2013-02-01  Roger Fong  <roger_fong@apple.com>
1400
1401         Unreviewed. WTF VS2010 project cleanup.
1402
1403         * WTF.vcxproj/WTF.vcxproj:
1404         * WTF.vcxproj/WTF.vcxproj.filters:
1405         * WTF.vcxproj/WTFPreLink.cmd: Removed.
1406
1407 2013-02-01  Zan Dobersek  <zdobersek@igalia.com>
1408
1409         [GTK] Add WTFURL source files to the build
1410         https://bugs.webkit.org/show_bug.cgi?id=108215
1411
1412         Reviewed by Benjamin Poulain.
1413
1414         The WTFURL implementation sources are all still guarded by the USE(WTFURL) guard,
1415         meaning that the GTK port still uses the default KURL backend. To use the WTFURL
1416         backend instead, one would have to define WTF_USE_WTFURL in Platform.h.
1417
1418         * GNUmakefile.am: List the directories from which source headers will be included.
1419         Plenty of WTFURL code currently just includes the required header by name rather
1420         than specifying the header path as relative to Source/WTF. In the future all the inclusions
1421         should probaby be changed to include the header through the path relative to Source/WTF.
1422         * GNUmakefile.list.am: Add build targets for the WTFURL source files.
1423         * wtf/url/api/ParsedURL.cpp: Specify the complete path to the required headers and
1424         reorder the inclusions.
1425         * wtf/url/src/URLCanon.h: Ditto.
1426
1427 2013-01-18  Ilya Tikhonovsky  <loislo@chromium.org>
1428
1429         Web Inspector: Native Memory Instrumentation: provide edge names and class names for WTF containers and strings
1430         https://bugs.webkit.org/show_bug.cgi?id=107303
1431
1432         Reviewed by Yury Semikhatsky.
1433
1434         I'd like to use ValueType[] as className for the container data members
1435         because class names of template parameters already present in the container class names.
1436
1437         * wtf/MemoryInstrumentationArrayBufferView.h:
1438         (WTF::reportMemoryUsage):
1439         * wtf/MemoryInstrumentationHashCountedSet.h:
1440         (WTF::reportMemoryUsage):
1441         * wtf/MemoryInstrumentationHashMap.h:
1442         (WTF::reportMemoryUsage):
1443         * wtf/MemoryInstrumentationHashSet.h:
1444         (WTF::reportMemoryUsage):
1445         * wtf/MemoryInstrumentationListHashSet.h:
1446         (WTF::reportMemoryUsage):
1447         * wtf/MemoryInstrumentationSequence.h:
1448         * wtf/MemoryInstrumentationString.h:
1449         (WTF::reportMemoryUsage):
1450         * wtf/MemoryInstrumentationVector.h:
1451         (WTF::reportMemoryUsage):
1452
1453 2013-02-01  Geoffrey Garen  <ggaren@apple.com>
1454
1455         Added TriState to WTF and started using it in one place
1456         https://bugs.webkit.org/show_bug.cgi?id=108628
1457
1458         Reviewed by Beth Dakin.
1459
1460         Useful for expressing "maybe" conditions in a boolean context.
1461
1462         * WTF.xcodeproj/project.pbxproj:
1463         * wtf/TriState.h: Added.
1464         (WTF):
1465
1466 2013-02-01  Patrick Gansterer  <paroga@webkit.org>
1467
1468         Build fix for WinCE after r137709
1469         https://bugs.webkit.org/show_bug.cgi?id=105767
1470
1471         Do not pass functions as const references to
1472         templated arguments to make the compiler happy.
1473
1474         * wtf/StdLibExtras.h:
1475         (WTF::binarySearch):
1476         (WTF::tryBinarySearch):
1477         (WTF::approximateBinarySearch):
1478
1479 2013-01-31  Ilya Tikhonovsky  <loislo@chromium.org>
1480
1481         Web Inspector: Native Memory Instrumentation: replace nodeName argument with className
1482         https://bugs.webkit.org/show_bug.cgi?id=107278
1483
1484         Reviewed by Yury Semikhatsky.
1485
1486         I replaced nodeName with className because we newer report node name for private and raw buffers
1487         but need to report their class names.
1488
1489         * wtf/MemoryInstrumentation.cpp:
1490         (WTF::MemoryInstrumentation::reportLinkToBuffer):
1491         (WTF::MemoryClassInfo::addRawBuffer):
1492         (WTF::MemoryClassInfo::addPrivateBuffer):
1493         * wtf/MemoryInstrumentation.h:
1494         (WTF::MemoryInstrumentation::addRawBuffer):
1495         (MemoryClassInfo):
1496
1497 2013-01-31  Jessie Berlin  <jberlin@apple.com>
1498
1499         Rolling out r141407 because it is causing crashes under
1500         WTF::TCMalloc_Central_FreeList::FetchFromSpans() in Release builds.
1501
1502         * wtf/Deque.h:
1503         (WTF::::expandCapacity):
1504         * wtf/FastMalloc.cpp:
1505         * wtf/FastMalloc.h:
1506         (WTF):
1507         * wtf/Vector.h:
1508         (WTF::VectorBufferBase::allocateBuffer):
1509         (WTF::VectorBufferBase::tryAllocateBuffer):
1510         (WTF::VectorBufferBase::reallocateBuffer):
1511
1512 2013-01-31  Mark Lam  <mark.lam@apple.com>
1513
1514         Abstraction for hiding enum class.
1515         https://bugs.webkit.org/show_bug.cgi?id=108533
1516
1517         Reviewed by Anders Carlsson.
1518
1519         * wtf/Compiler.h:
1520         * wtf/EnumClass.h: Copied from Source/WTF/wtf/TypeSafeEnum.h.
1521         (WTF::EnumClass::EnumClass):
1522         (WTF::EnumClass::operator==):
1523         (WTF::EnumClass::operator!=):
1524         (WTF::EnumClass::operator<):
1525         (WTF::EnumClass::operator<=):
1526         (WTF::EnumClass::operator>):
1527         (WTF::EnumClass::operator>=):
1528         * wtf/TypeSafeEnum.h: Removed.
1529
1530 2013-01-31  Andreas Kling  <akling@apple.com>
1531
1532         Vector should consult allocator about ideal size when choosing capacity.
1533         <http://webkit.org/b/108410>
1534         <rdar://problem/13124002>
1535
1536         Reviewed by Benjamin Poulain.
1537
1538         Added WTF::fastMallocGoodSize(), a workalike/wrapper for OS X's malloc_good_size().
1539         It returns the actual size of the block that will get allocated for a given byte size.
1540
1541         Vector's internal buffer now checks with the allocator if the resulting allocation
1542         could actually house more objects and updates its capacity to make use of the space.
1543
1544         * wtf/Deque.h:
1545         (WTF::::expandCapacity):
1546         * wtf/FastMalloc.cpp:
1547         (WTF::fastMallocGoodSize):
1548         * wtf/FastMalloc.h:
1549         * wtf/Vector.h:
1550         (WTF::VectorBufferBase::allocateBuffer):
1551         (WTF::VectorBufferBase::tryAllocateBuffer):
1552         (WTF::VectorBufferBase::reallocateBuffer):
1553
1554 2013-01-30  Christophe Dumez  <christophe.dumez@intel.com>
1555
1556         Add a StringTypeAdapter for ASCIILiteral
1557         https://bugs.webkit.org/show_bug.cgi?id=108338
1558
1559         Reviewed by Benjamin Poulain.
1560
1561         Add StringTypeAdapter for ASCIILiteral type so that concatenation of an
1562         ASCIILiteral and a String using + operator is efficiently handled.
1563
1564         * wtf/text/StringConcatenate.h:
1565         * wtf/text/StringOperators.h:
1566         (WTF::operator+): Inline some of the operator+ functions that were not
1567         yet.
1568         (WTF):
1569
1570 2013-01-30  David Kilzer  <ddkilzer@apple.com>
1571
1572         Upstream iOS build file changes for WTF
1573         <http://webkit.org/b/108221>
1574
1575         Reviewed by Mark Rowe.
1576
1577         * Configurations/Base.xcconfig:
1578         - Import iOS.xcconfig.
1579         - Remove VALID_ARCHS.  Modern Xcodes define these correctly.
1580         - Make HEADER_SEARCH_PATHS work with iOS Simulator builds.
1581         - Add SUPPORTED_PLATFORMS so both Mac and iOS SDKs appear in
1582           schemes.
1583         - Define INSTALL_PATH when building for macosx SDK.
1584         * Configurations/CopyWTFHeaders.xcconfig:
1585         - Make PRIVATE_HEADERS_FOLDER_PATH work with iOS Simulator
1586           builds.
1587         * Configurations/DebugRelease.xcconfig:
1588         - Simplify ARCHS.  This works correctly on 32-bit-only SDKs.
1589         * Configurations/WTF.xcconfig:
1590         - Fix installation directory for iOS Simulator builds by
1591           defining INSTALL_PATH_ACTUAL.
1592         * Configurations/iOS.xcconfig: Add.
1593         * WTF.xcodeproj/project.pbxproj:
1594         - Add iOS.xcconfig to the project.
1595
1596 2013-01-29  Mark Hahnenberg  <mhahnenberg@apple.com>
1597
1598         Structure::m_outOfLineCapacity is unnecessary
1599         https://bugs.webkit.org/show_bug.cgi?id=108206
1600
1601         Reviewed by Geoffrey Garen.
1602
1603         We're adding a new function that gives us the ability to round a value up to the next power of a certain base.
1604
1605         * wtf/MathExtras.h:
1606         (WTF::roundUpToPowerOf):
1607
1608 2013-01-30  Zeno Albisser  <zeno@webkit.org>
1609
1610         [Qt] Fix Qt/Mac build after r141024 and r141037
1611         https://bugs.webkit.org/show_bug.cgi?id=108318
1612
1613         Reviewed by Kentaro Hara.
1614
1615         * wtf/Functional.h:
1616             Make sure Block.h is included and its functionality
1617             is enabled for Qt on Mac.
1618
1619 2013-01-30  Simon Hausmann  <simon.hausmann@digia.com>
1620
1621         [Qt] Remove QT4_UNICODE related code paths
1622         https://bugs.webkit.org/show_bug.cgi?id=108316
1623
1624         Reviewed by Kenneth Rohde Christiansen.
1625
1626         Get rid of QT4_UNICODE and any related code paths. The Qt port
1627         requires Qt5 and ICU these days.
1628
1629         * WTF.gypi:
1630         * WTF.pro:
1631         * wtf/unicode/Unicode.h:
1632         * wtf/unicode/qt4/UnicodeQt4.h: Removed.
1633
1634 2013-01-29  Mark Lam  <mark.lam@apple.com>
1635
1636         Introducing WTF::TypeSafeEnum and DatabaseError.
1637         https://bugs.webkit.org/show_bug.cgi?id=108279.
1638
1639         Reviewed by Geoffrey Garen.
1640
1641         * WTF.xcodeproj/project.pbxproj:
1642         * wtf/TypeSafeEnum.h: Added.
1643         (WTF):
1644         (TypeSafeEnum):
1645         (WTF::TypeSafeEnum::TypeSafeEnum):
1646         (WTF::TypeSafeEnum::value):
1647         (WTF::TypeSafeEnum::operator==):
1648         (WTF::TypeSafeEnum::operator!=):
1649         (WTF::TypeSafeEnum::operator<):
1650         (WTF::TypeSafeEnum::operator<=):
1651         (WTF::TypeSafeEnum::operator>):
1652         (WTF::TypeSafeEnum::operator>=):
1653
1654 2013-01-29  Sheriff Bot  <webkit.review.bot@gmail.com>
1655
1656         Unreviewed, rolling out r140983.
1657         http://trac.webkit.org/changeset/140983
1658         https://bugs.webkit.org/show_bug.cgi?id=108277
1659
1660         Unfortunately, this API has one last client (Requested by
1661         abarth on #webkit).
1662
1663         * wtf/Platform.h:
1664
1665 2013-01-28  Benjamin Poulain  <benjamin@webkit.org>
1666
1667         String constructed from Literals should be non-empty
1668         https://bugs.webkit.org/show_bug.cgi?id=108103
1669
1670         Reviewed by Eric Carlson.
1671
1672         For efficiency, the construction from literal only works with valid non-empty strings.
1673         One of the constructor was changed to fix an error from HTMLMediaElement.
1674
1675         This patch replaces the branch with an assertions.
1676
1677         * wtf/text/StringImpl.cpp:
1678         (WTF::StringImpl::createFromLiteral):
1679
1680 2013-01-28  David Kilzer  <ddkilzer@apple.com>
1681
1682         BUILD FIX: Platform.h:1212:22: error: '__MAC_OS_X_VERSION_MIN_REQUIRED' is not defined, evaluates to 0 [-Werror,-Wundef]
1683
1684         This fixes the following build error introduced in r140366 for
1685         Bug 107098:
1686
1687             Platform.h:1212:22: error: '__MAC_OS_X_VERSION_MIN_REQUIRED' is not defined, evaluates to 0 [-Werror,-Wundef]
1688             #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !PLATFORM(IOS)
1689                                  ^
1690             1 error generated.
1691
1692         * wtf/Platform.h: Check !PLATFORM(IOS) first so that iOS builds
1693         do not try to evaluate __MAC_OS_X_VERSION_MIN_REQUIRED.
1694
1695 2013-01-28  Adam Barth  <abarth@webkit.org>
1696
1697         Remove webkitNotifications.createHTMLNotification
1698         https://bugs.webkit.org/show_bug.cgi?id=107598
1699
1700         Reviewed by Benjamin Poulain.
1701
1702         * wtf/Platform.h:
1703
1704 2013-01-27  Laszlo Gombos  <l.gombos@samsung.com>
1705
1706         [ANDROID] Fix a typo
1707         https://bugs.webkit.org/show_bug.cgi?id=108046
1708
1709         Reviewed by Adam Barth.
1710
1711         HAVE_NMAP -> HAVE_MMAP.
1712
1713         * wtf/Platform.h:
1714
1715 2013-01-27  Zoltan Arvai  <zarvai@inf.u-szeged.hu>
1716
1717         Fixing atomicIncrement implementation for Windows by dropping support before XP SP2.
1718         https://bugs.webkit.org/show_bug.cgi?id=106740
1719
1720         Reviewed by Benjamin Poulain.
1721
1722         Adding int64_t type atomicIncrement and atomicDecrement implementations for Windows
1723         into Atomics.h required by WebKit2 after r139514. Separating WinCE implementation
1724         that does not support WebKit2 and has no support for 64 bit interlocked methods.
1725
1726         Increasing WINVER and _WIN32_WINNT to XP SP2, because the 64 bit type interlocked methods
1727         are not supported on previous versions on 32 bit target.
1728
1729         * config.h:
1730         * wtf/Atomics.h:
1731         (WTF):
1732         (WTF::atomicIncrement):
1733         (WTF::atomicDecrement):
1734
1735 2013-01-26  Andras Becsi  <andras.becsi@digia.com>
1736
1737         Unreviewed fix after r140451 to make GIT-SVN repositories happy.
1738
1739         * WTF.vcproj/WTF.sln:
1740
1741 2013-01-26  Justin Schuh  <jschuh@chromium.org>
1742
1743         [CHROMIUM] Suppress more c4267 build warnings for Win64 targets
1744         https://bugs.webkit.org/show_bug.cgi?id=107993
1745
1746         Reviewed by Abhishek Arya.
1747
1748         * WTF.gyp/WTF.gyp:
1749
1750 2013-01-25  Eric Seidel  <eric@webkit.org>
1751
1752         Support 4 and 5 argument bound static functions
1753         https://bugs.webkit.org/show_bug.cgi?id=107973
1754
1755         Reviewed by Anders Carlsson.
1756
1757         Yummy copy/paste template code!
1758         I'm about to use this in a BackgroundHTMLParser patch, but figured this should be landed separately.
1759
1760         * wtf/Functional.h:
1761         (WTF):
1762         (WTF::R):
1763
1764 2013-01-24  Martin Robinson  <mrobinson@igalia.com>
1765
1766         Abstract the logic for appending a UChar32 onto StringBuilder
1767         https://bugs.webkit.org/show_bug.cgi?id=107505
1768
1769         Reviewed by Darin Adler.
1770
1771         * wtf/text/StringBuilder.h:
1772         (WTF::StringBuilder::append): Added a method for appending a UChar32 to a StringBuilder.
1773
1774 2013-01-24  Brent Fulgham  <bfulgham@webkit.org>
1775
1776         Stipulate build order between WTFGenerated and WTF
1777         https://bugs.webkit.org/show_bug.cgi?id=107844
1778
1779         Reviewed by Tim Horton.
1780
1781         * WTF.vcxproj/WTF.vcxproj: Use VS2010 project dependency
1782         declaration so WTF depends on a completed WTFGenerated build.
1783
1784 2013-01-23  Abhishek Arya  <inferno@chromium.org>
1785
1786         Add support for ASSERT_WITH_SECURITY_IMPLICATION.
1787         https://bugs.webkit.org/show_bug.cgi?id=107699
1788
1789         Reviewed by Eric Seidel.
1790
1791         * wtf/Assertions.h: Add ASSERT_WITH_SECURITY_IMPLICATION to
1792         indicate possible security vulnerabily and enable it by default
1793         in fuzzing builds.
1794         * wtf/Vector.h: Use ASSERT_WITH_SECURITY_IMPLICATION for
1795         bounds check on [] operator.
1796
1797 2013-01-23  Tony Chang  <tony@chromium.org>
1798
1799         Unreviewed, set svn:eol-style to CRLF on Windows .sln files.
1800
1801         * WTF.vcproj/WTF.sln: Added property svn:eol-style.
1802
1803 2013-01-23  Adam Barth  <abarth@webkit.org>
1804
1805         BackgroundHTMLParser::sendTokensToMainThread should use bind
1806         https://bugs.webkit.org/show_bug.cgi?id=107637
1807
1808         Reviewed by Eric Seidel.
1809
1810         * wtf/Functional.h:
1811             - I had to re-work the approach to validating WeakPtr |this|
1812               arguments a bit. Previously you couldn't pass a WeakPtr as a
1813               non-|this| argument to a function because we would try to unwrap
1814               it into a raw pointer.
1815         * wtf/WeakPtr.h:
1816         (WTF::WeakPtrFactory::revokeAll):
1817         (WeakPtrFactory):
1818             - Let clients revoke all outstanding WeakPtrs without needing to
1819               destroy the WeakPtrFactory.
1820         * wtf/chromium/MainThreadChromium.cpp:
1821         (WTF::callFunctionObject):
1822         (WTF::callOnMainThread):
1823             - Implement callOnMainThread for Function objects. The non-Chromium
1824               implementation of MainThread.cpp already implements this feature.
1825
1826 2013-01-23  Justin Schuh  <jschuh@chromium.org>
1827
1828         [CHROMIUM] Suppress c4267 build warnings in WTF for Win64 targets
1829         https://bugs.webkit.org/show_bug.cgi?id=107721
1830
1831         Reviewed by Abhishek Arya.
1832
1833         * WTF.gyp/WTF.gyp:
1834
1835 2013-01-23  Oliver Hunt  <oliver@apple.com>
1836
1837         Add RELEASE_ASSERT (and a few friends)
1838         https://bugs.webkit.org/show_bug.cgi?id=107725
1839
1840         Reviewed by Filip Pizlo.
1841
1842         Adding a few macros to make release mode assertions easier and more readable.
1843         Also makes same assertions more useful in debug builds.
1844
1845         * wtf/Assertions.h:
1846
1847 2013-01-22  Joshua Bell  <jsbell@chromium.org>
1848
1849         Prevent race condition during Worker shutdown
1850         https://bugs.webkit.org/show_bug.cgi?id=107577
1851
1852         Reviewed by Dmitry Titov.
1853
1854         Add MessageQueue::appendAndKill() which wraps those two steps with a mutex so other
1855         threads can't sneak a message in between.
1856
1857         * wtf/MessageQueue.h: Added appendAndKill() method.
1858
1859 2013-01-22  Roger Fong  <roger_fong@apple.com>
1860
1861         WTF project files and property sheets for getting WebKit to compile in VS2010.
1862         https://bugs.webkit.org/show_bug.cgi?id=106986
1863
1864         Reviewed by Timothy Horton and Brent Fulgham.
1865
1866         * WTF.vcproj/WTF.sln:
1867         * WTF.vcxproj: Added.
1868         * WTF.vcxproj/WTF.vcxproj: Added.
1869         * WTF.vcxproj/WTF.vcxproj.filters: Added.
1870         * WTF.vcxproj/WTF.vcxproj.user: Added.
1871         * WTF.vcxproj/WTFCommon.props: Added.
1872         * WTF.vcxproj/WTFDebug.props: Added.
1873         * WTF.vcxproj/WTFGenerated.make: Added.
1874         * WTF.vcxproj/WTFGenerated.vcxproj: Added.
1875         * WTF.vcxproj/WTFGenerated.vcxproj.filters: Added.
1876         * WTF.vcxproj/WTFGenerated.vcxproj.user: Added.
1877         * WTF.vcxproj/WTFGeneratedCommon.props: Added.
1878         * WTF.vcxproj/WTFGeneratedDebug.props: Added.
1879         * WTF.vcxproj/WTFGeneratedRelease.props: Added.
1880         * WTF.vcxproj/WTFPostBuild.cmd: Added.
1881         * WTF.vcxproj/WTFPreBuild.cmd: Added.
1882         * WTF.vcxproj/WTFPreLink.cmd: Added.
1883         * WTF.vcxproj/WTFRelease.props: Added.
1884         * WTF.vcxproj/build-generated-files.sh: Added.
1885         * WTF.vcxproj/copy-files.cmd: Added.
1886         * WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py: Added.
1887         * config.h:
1888
1889 2013-01-22  David Kilzer  <ddkilzer@apple.com>
1890
1891         Fix DateMath.cpp to compile with -Wshorten-64-to-32
1892         <http://webkit.org/b/107503>
1893
1894         Reviewed by Darin Adler.
1895
1896         Fixes the following build errors with -Wshorten-64-to-32:
1897
1898             DateMath.cpp:742:47: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1899                 if (month == 2 && day > 28 && !isLeapYear(year))
1900                                                ~~~~~~~~~~ ^~~~
1901             DateMath.cpp:757:48: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1902                 double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
1903                                      ~~~~~~~~~~~~~~~       ^~~~~
1904             DateMath.cpp:757:55: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1905                 double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
1906                                      ~~~~~~~~~~~~~~~              ^~~
1907             DateMath.cpp:757:60: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1908                 double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
1909                                      ~~~~~~~~~~~~~~~                   ^~~~~
1910             DateMath.cpp:757:67: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1911                 double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
1912                                      ~~~~~~~~~~~~~~~                          ^~~~~~~
1913             DateMath.cpp:996:59: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1914                                 offset = ((o / 100) * 60 + (o % 100)) * sgn;
1915                                        ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
1916             DateMath.cpp:998:37: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1917                                 offset = o * 60 * sgn;
1918                                        ~ ~~~~~~~^~~~~
1919             DateMath.cpp:1005:40: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1920                             offset = (o * 60 + o2) * sgn;
1921                                    ~ ~~~~~~~~~~~~~~^~~~~
1922             DateMath.cpp:1041:40: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1923                 return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
1924                        ~~~~~~~~~~~~~~~       ~~~~~~^~~
1925             DateMath.cpp:1041:45: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1926                 return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
1927                        ~~~~~~~~~~~~~~~                  ^~~
1928             DateMath.cpp:1041:50: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1929                 return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
1930                        ~~~~~~~~~~~~~~~                       ^~~~
1931             DateMath.cpp:1041:56: error: implicit conversion loses integer precision: 'long' to 'int' [-Werror,-Wshorten-64-to-32]
1932                 return ymdhmsToSeconds(year, month + 1, day, hour, minute, second) * msPerSecond;
1933                        ~~~~~~~~~~~~~~~                             ^~~~~~
1934             12 errors generated.
1935
1936         * wtf/DateMath.cpp:
1937         (WTF::ymdhmsToSeconds): Change year argument from long to int.
1938         Change mon, day, hour, minute arguments from int to long.
1939         (WTF::parseInt): Add.  Identical to parseLong but bounds checks
1940         for type int.
1941         (WTF::parseLong): Switch to std::numeric_limits<long> instead of
1942         macros.
1943         (WTF::parseES5DatePortion): Change year argument from long to
1944         int.
1945         (WTF::parseES5DateFromNullTerminatedCharacters): Change year
1946         local variable from long to int.
1947         (WTF::parseDateFromNullTerminatedCharacters): Change year and
1948         offset local variables from long to int.  Switch from using
1949         parseLong() to parseInt() as needed.  Ditto for labs() to abs().
1950         Add overflow check when switching from "MM/DD/YYYY" to
1951         "YYYY/MM/DD" parsing.
1952
1953 2013-01-17  Andy Estes  <aestes@apple.com>
1954
1955         Add a USE() macro for content filtering code
1956         https://bugs.webkit.org/show_bug.cgi?id=107098
1957
1958         Reviewed by Mark Rowe.
1959
1960         * wtf/Platform.h: Define WTF_USE_CONTENT_FILTERING on Mac platforms
1961         more recent than Lion.
1962
1963 2013-01-18  Laszlo Gombos  <l.gombos@samsung.com>
1964
1965         Remove unnecessary PLATFORM() tests
1966         https://bugs.webkit.org/show_bug.cgi?id=107360
1967
1968         Reviewed by Eric Seidel.
1969
1970         PLATFORM(WIN), PLATFORM(CHROMIUM) and PLATFORM(QT) are mutually
1971         exclusive. Remove redundant PLATFORM() tests based on this
1972         invariant.
1973
1974         * wtf/Platform.h:
1975
1976 2013-01-18  Laszlo Gombos  <l.gombos@samsung.com>
1977
1978         Remove PLATFORM(TORCHMOBILE) from Assertions.h
1979         https://bugs.webkit.org/show_bug.cgi?id=107355
1980
1981         Reviewed by Eric Seidel.
1982
1983         This appears to be the only place where PLATFORM(TORCHMOBILE) is
1984         used. I don't believe this ifdef is needed anymore.
1985
1986         * wtf/Assertions.h:
1987
1988 2013-01-18  Michael Saboff  <msaboff@apple.com>
1989
1990         Refactor isPowerOf2() and add getLSBSet()
1991         https://bugs.webkit.org/show_bug.cgi?id=107306
1992
1993         Reviewed by Filip Pizlo.
1994
1995         Moved runtime/PropertyMapHashTable.h:PowerOf2() to new hasOneBitSet() and added getLSBSet().
1996
1997         * wtf/MathExtras.h:
1998         (hasOneBitSet):
1999         (getLSBSet):
2000
2001 2013-01-18  David Kilzer  <ddkilzer@apple.com>
2002
2003         Fix WTF::copyLCharsFromUCharSource() to compile with -Wshorten-64-to-32
2004         <http://webkit.org/b/107227>
2005
2006         Reviewed by Benjamin Poulain.
2007
2008         Fixes the following build error:
2009
2010             ASCIIFastPath.h:117:59: error: implicit conversion loses integer precision: 'unsigned long' to 'const unsigned int' [-Werror,-Wshorten-64-to-32]
2011                     const unsigned endLength = length - ucharsPerLoop + 1;
2012                                    ~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~^~~
2013             1 error generated.
2014
2015         * wtf/text/ASCIIFastPath.h:
2016         (WTF::copyLCharsFromUCharSource): Change local variables from
2017         unsigned to size_t.
2018
2019 2013-01-14  Dominik Röttsches  <dominik.rottsches@intel.com>
2020
2021         [EFL] Update freetype in jhbuild to 2.4.11 and activate subpixel layout
2022         https://bugs.webkit.org/show_bug.cgi?id=106774
2023
2024         In order to fix a long standing linespacing/font ascent & descent issue
2025         we found that FreeType commit b0962ac34e660 solves that problem.
2026         Let's update FreeType accordingly, but bump it to 2.4.11 due to the
2027         maintainer recommending several security updates after that said commit.
2028
2029         Also, in order to avoid extra rebaselining, let's activate subpixel
2030         layout at the same time.
2031
2032         Reviewed by Martin Robinson.
2033
2034         * wtf/Platform.h: Activate Subpixel Layout for EFL.
2035
2036 2013-01-17  Adam Barth  <abarth@webkit.org>
2037
2038         Teach Functional.h about WeakPtr
2039         https://bugs.webkit.org/show_bug.cgi?id=107105
2040
2041         Reviewed by Anders Carlsson.
2042
2043         A common pattern in cross-thread communication is to call member
2044         functions of an object on a remote thread. If the caller's reference to
2045         the object on the remote thread is a WeakPtr, the caller usually wants
2046         to validate that the object still exists when the call actually takes
2047         place.
2048
2049         It's possible to do this manually for every cross-thread call, but that
2050         is tiresome and error prone. Instead, we can teach bind to validate
2051         WeakPtr arguments when passed as the "this" parameter to a member
2052         function.
2053
2054         * wtf/Functional.h:
2055         (WTF::ParamStorageTraits::validate):
2056
2057 2013-01-17  David Kilzer  <ddkilzer@apple.com>
2058
2059         Fix vprintf_stderr_common() to compile with -Wshorten-64-to-32
2060         <http://webkit.org/b/107126>
2061
2062         Reviewed by Darin Adler.
2063
2064         Fixes the following build error:
2065
2066             Assertions.cpp:92:22: error: implicit conversion loses integer precision: 'CFIndex' (aka 'long') to 'int' [-Werror,-Wshorten-64-to-32]
2067                     int length = CFStringGetMaximumSizeForEncoding(CFStringGetLength(str), kCFStringEncodingUTF8);
2068                         ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2069             1 error generated.
2070
2071         * wtf/Assertions.cpp:
2072         (vprintf_stderr_common): Use CFIndex type instead of int for the
2073         return value of CFStringGetMaximumSizeForEncoding().
2074
2075 2013-01-17  Zan Dobersek  <zdobersek@igalia.com>
2076
2077         [Autotools] Unify WTF sources list regardless of the target OS, Unicode backend
2078         https://bugs.webkit.org/show_bug.cgi?id=105886
2079
2080         Reviewed by Gustavo Noronha Silva.
2081
2082         Rather than including files in the sources list in an OS-specific way,
2083         guard specific files with OS(UNIX|WINDOWS), USE((GLIB|ICU)_UNICODE) guards
2084         and include all of them in the list.
2085
2086         Proper comments for namespace and #if guard closings are also added or adjusted
2087         where necessary in the affected files.
2088
2089         * GNUmakefile.list.am:
2090         * wtf/OSAllocatorPosix.cpp: Add OS(UNIX) guards.
2091         * wtf/OSAllocatorWin.cpp: Add OS(WINDOWS) guards.
2092         * wtf/ThreadSpecificWin.cpp: Ditto.
2093         * wtf/ThreadingWin.cpp: Ditto.
2094         * wtf/unicode/glib/UnicodeGLib.cpp: Add USE(GLIB_UNICODE) guards.
2095         (WTF):
2096         * wtf/unicode/glib/UnicodeGLib.h: Ditto.
2097         (WTF):
2098         * wtf/unicode/icu/CollatorICU.cpp: Style changes.
2099         * wtf/unicode/icu/UnicodeIcu.h: Add USE(ICU_UNICODE) guards.
2100         (WTF):
2101         * wtf/win/OwnPtrWin.cpp: Add OS(WINDOWS) guards.
2102
2103 2013-01-16  Benjamin Poulain  <benjamin@webkit.org>
2104
2105         Use GCC's implementation of atomicIncrement/Decrement on Mac
2106         https://bugs.webkit.org/show_bug.cgi?id=106976
2107
2108         Reviewed by Filip Pizlo.
2109
2110         * wtf/Atomics.h:
2111         GCC and LLVM have builtin for atomic ADD and SUB: __sync_add_and_fetch,
2112         __sync_sub_and_fetch.
2113
2114         Using them let the compiler just generate the atomic operations inline
2115         instead of generating a function call to LibC. It also simplify the
2116         code a bit.
2117
2118 2013-01-15  Adam Barth  <abarth@webkit.org>
2119
2120         Generalize DocumentWeakReference into WTF::WeakPtr
2121         https://bugs.webkit.org/show_bug.cgi?id=106854
2122
2123         Reviewed by Darin Adler.
2124
2125         This patch adds a simple WeakPtr object to WTF. To use WeakPtr, objects
2126         must hold a WeakPtrFactory member variable, which clears the WeakPtrs
2127         when the object is destructed. The underlying storage is a
2128         ThreadSafeRefCounted "WeakReference" object, which is shared by all the
2129         WeakPtrs.
2130
2131         WeakPtr is a generalization of DocumentWeakReference, which is used to
2132         check whether the Document object is alive when tasks arive on the main
2133         thread from worker threads. We plan to use a similar pattern in the
2134         threaded HTML parser, but we want to send tasks to objects other than
2135         Document.
2136
2137         * GNUmakefile.list.am:
2138         * WTF.gypi:
2139         * WTF.pro:
2140         * WTF.vcproj/WTF.vcproj:
2141         * WTF.xcodeproj/project.pbxproj:
2142         * wtf/CMakeLists.txt:
2143         * wtf/WeakPtr.h: Added.
2144         (WeakReference):
2145             - The ThreadSafeRefCounted object shared by all the WeakPtr
2146               instances. This patch uses ThreadSafeRefCounted so that we can
2147               use WeakPtrs to cancel cross-thread messages.
2148         (WTF::WeakReference::create):
2149         (WTF::WeakReference::get):
2150         (WTF::WeakReference::clear):
2151             - When the object is destroyed, WeakPtrFactory calls this function
2152               to clear all the WeakPtrs.
2153         (WTF::WeakReference::WeakReference):
2154         (WTF::WeakPtr::WeakPtr):
2155         (WTF::WeakPtr::get):
2156             - We might want to add implicit conversions and Boolean operators
2157               in the future, but I've kept this class simple for now.
2158         (WTF::WeakPtrFactory::WeakPtrFactory):
2159         (WTF::WeakPtrFactory::~WeakPtrFactory):
2160         (WTF::WeakPtrFactory::createWeakPtr):
2161
2162 2013-01-12  Csaba Osztrogonác  <ossy@webkit.org>
2163
2164         Use __sync_add_and_fetch instead of __gnu_cxx::__exchange_and_add
2165         https://bugs.webkit.org/show_bug.cgi?id=106729
2166
2167         After r139514 we need atomicIncrement(int64_t volatile*) for all platform. Now the
2168         GCC implementation of atomicIncrement() is based on __gnu_cxx::__exchange_and_add,
2169         which doesn't support int64_t type, but __sync_add_and_fetch does.
2170
2171         Reviewed by Benjamin Poulain.
2172
2173         * wtf/Atomics.h:
2174         (WTF::atomicIncrement):
2175         (WTF::atomicDecrement):
2176
2177 2013-01-11  Filip Pizlo  <fpizlo@apple.com>
2178
2179         Add WTF_EXPORT_PRIVATE to printInternal() methods of PrintStream.h
2180
2181         Rubber stamped by Mark Hahnenberg.
2182         
2183         This will make it easier to use dataLog() from WebCore.
2184
2185         * wtf/PrintStream.h:
2186         (WTF):
2187
2188 2013-01-09  Antti Koivisto  <antti@apple.com>
2189
2190         Release FastMalloc thread caches on memory warning
2191         https://bugs.webkit.org/show_bug.cgi?id=106471
2192         
2193         Reviewed by Geoff Garen.
2194
2195         Use TCMalloc_ThreadCache::Cleanup() instead of calling Scavenge() twice. This releases all the memory
2196         and looks nicer too.
2197
2198         * wtf/FastMalloc.cpp:
2199         (WTF::releaseFastMallocFreeMemory):
2200
2201 2013-01-09  Carlos Garcia Campos  <cgarcia@igalia.com>
2202
2203         Unreviewed. Fix make distcheck.
2204
2205         * GNUmakefile.list.am: Add missing header.
2206
2207 2013-01-07  Filip Pizlo  <fpizlo@apple.com>
2208
2209         Rationalize closure call heuristics and profiling
2210         https://bugs.webkit.org/show_bug.cgi?id=106270
2211
2212         Reviewed by Oliver Hunt.
2213         
2214         Add a macro to add a method to a class that returns a dumper. Allows you to have
2215         secondary dump() methods for dumping either more or less information.
2216
2217         * wtf/PrintStream.h:
2218         (WTF):
2219
2220 2013-01-07  Ryosuke Niwa  <rniwa@webkit.org>
2221
2222         Sorted the xcodeproj file.
2223
2224         * WTF.xcodeproj/project.pbxproj:
2225
2226 2013-01-07  Filip Pizlo  <fpizlo@apple.com>
2227
2228         Unreviewed, it should be possible to build JSC on ARM.
2229
2230         * wtf/FastMalloc.cpp:
2231         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
2232
2233 2013-01-07  Balazs Kilvady  <kilvadyb@homejinni.com>
2234
2235         MIPS LLInt implementation.
2236         https://bugs.webkit.org/show_bug.cgi?id=99706
2237
2238         Reviewed by Filip Pizlo.
2239
2240         LLInt implementation for MIPS.
2241
2242         * wtf/Platform.h:
2243
2244 2013-01-05  Jonathan Liu  <net147@gmail.com>
2245
2246         Only enable MinGW-w64 pow() workaround if needed
2247         https://bugs.webkit.org/show_bug.cgi?id=106099
2248
2249         Reviewed by Filip Pizlo.
2250
2251         The pow() workaround is no longer needed in the latest version
2252         of MinGW-w64.
2253
2254         * wtf/MathExtras.h:
2255
2256 2013-01-05  Jonathan Liu  <net147@gmail.com>
2257
2258         Fix compilation of MathExtras.h with MinGW-w64
2259         https://bugs.webkit.org/show_bug.cgi?id=106105
2260
2261         Reviewed by Simon Hausmann.
2262
2263         The isfinite and isinf functions are required by wtf_pow but
2264         not defined until after wtf_pow. Move wtf_pow to after
2265         "using std::isfinite" and "using std::isinf" to fix compilation.
2266
2267         * wtf/MathExtras.h:
2268         (wtf_pow):
2269
2270 2013-01-03  Filip Pizlo  <fpizlo@apple.com>
2271
2272         CallLinkStatus should be aware of closure calls, and the DFG bytecode parser should use that as its sole internal notion of how to optimize calls
2273         https://bugs.webkit.org/show_bug.cgi?id=106027
2274
2275         Reviewed by Mark Hahnenberg.
2276         
2277         I got tired of the various idioms for printing a list of things with comma in between, so I wrote a helper.
2278
2279         * WTF.xcodeproj/project.pbxproj:
2280         * wtf/CommaPrinter.h: Added.
2281         (WTF):
2282         (CommaPrinter):
2283         (WTF::CommaPrinter::CommaPrinter):
2284         (WTF::CommaPrinter::dump):
2285
2286 2013-01-02  Simon Hausmann  <simon.hausmann@digia.com>
2287
2288         [MinGW-w64] Centralize workaround for pow() implementation
2289         https://bugs.webkit.org/show_bug.cgi?id=105925
2290
2291         Reviewed by Sam Weinig.
2292
2293         As suggested by Sam, move the MinGW-w64 workaround into MathExtras.h
2294         away from the JSC usage.
2295
2296         * wtf/MathExtras.h:
2297         (wtf_pow):
2298
2299 2013-01-02  Adam Barth  <abarth@webkit.org>
2300
2301         WTF.gypi lists Platform.h twice
2302         https://bugs.webkit.org/show_bug.cgi?id=105731
2303
2304         Reviewed by Tony Chang.
2305
2306         Once ought to be enough for everybody.
2307
2308         * WTF.gypi:
2309
2310 2012-12-31  Gavin Barraclough  <barraclough@apple.com>
2311
2312         Objective-C API for JavaScriptCore
2313         https://bugs.webkit.org/show_bug.cgi?id=105889
2314
2315         Reviewed by Filip Pizlo.
2316
2317         * wtf/WTFThreadData.cpp:
2318         (WTF::WTFThreadData::WTFThreadData):
2319         * wtf/WTFThreadData.h:
2320         (WTFThreadData):
2321             - Added m_apiData - provide convenient storage for use by the API.
2322
2323 2012-12-28  Ilya Tikhonovsky  <loislo@chromium.org>
2324
2325         Web Inspector: Native Memory Instrumentation: instrument not instrumented members.
2326         https://bugs.webkit.org/show_bug.cgi?id=105830
2327
2328         Reviewed by Vsevolod Vlasov.
2329
2330         In some cases we don't want to visit some class members.
2331         As example we decided to skip pointers to interface classes such as GraphicLayerClient.
2332         We could use addWeakPointer for them but it can't be used for nonpointer members.
2333         In the offline discussion we came to a conclusion that we need a new instrumentation
2334         method ignoreMember, which will be used for all the members which we won't like to visit/instrument.
2335
2336         DriveBy: Also I instrumented not yet instrumented members.
2337
2338         * wtf/MemoryInstrumentation.h:
2339         (MemoryClassInfo):
2340         (WTF::MemoryClassInfo::ignoreMember):
2341
2342 2012-12-26  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
2343
2344         Fix build warning in OSAllocatorPosix.cpp
2345         https://bugs.webkit.org/show_bug.cgi?id=105761
2346
2347         Reviewed by Kentaro Hara.
2348
2349         * wtf/OSAllocatorPosix.cpp:
2350         (WTF::OSAllocator::reserveUncommitted): Fix unused param warnings.
2351
2352 2012-12-24  Yury Semikhatsky  <yurys@chromium.org>
2353
2354         Memory instrumentation: provide a way to mark a node as a root
2355         https://bugs.webkit.org/show_bug.cgi?id=105737
2356
2357         Reviewed by Alexander Pavlov.
2358
2359         Objects added using MemoryInstrumentation::addRootObject will be marked as roots.
2360
2361         * wtf/MemoryInstrumentation.cpp:
2362         (WTF::MemoryInstrumentation::WrapperBase::process):
2363         (WTF):
2364         (WTF::MemoryInstrumentation::WrapperBase::processPointer):
2365         (WTF::MemoryInstrumentation::WrapperBase::processRootObjectRef):
2366         * wtf/MemoryInstrumentation.h:
2367         (WrapperBase):
2368         * wtf/MemoryObjectInfo.h: added root marker which can be used by the heap graph builder.
2369         (WTF::MemoryObjectInfo::MemoryObjectInfo):
2370         (WTF::MemoryObjectInfo::isRoot):
2371         (WTF::MemoryObjectInfo::markAsRoot):
2372         (MemoryObjectInfo):
2373
2374 2012-12-24  Ilya Tikhonovsky  <loislo@chromium.org>
2375
2376         Web Inspector: Native Memory Instrumentation: propagate member type as edge type to the serialized heap graph.
2377         https://bugs.webkit.org/show_bug.cgi?id=105725
2378
2379         Reviewed by Yury Semikhatsky.
2380
2381         MemoryOwningType was renamed to MemberType.
2382         Source argument were removed from reportEdge, reportLeaf and other edge related methods because it is not necessary.
2383         MemberType argument was propagated from MemoryInstrumentation down to HeapGraphSerializer.
2384
2385         The changes covered by tests in TestWebKitAPI.
2386
2387         * wtf/MemoryInstrumentation.cpp:
2388         (WTF::MemoryInstrumentation::reportEdge):
2389         (WTF::MemoryInstrumentation::reportLinkToBuffer):
2390         (WTF::MemoryClassInfo::addPrivateBuffer):
2391         * wtf/MemoryInstrumentation.h:
2392         (MemoryInstrumentationClient):
2393         (MemoryInstrumentation):
2394         (WTF::MemoryInstrumentation::addRawBuffer):
2395         (WTF::MemoryInstrumentation::MemberTypeTraits::addObject):
2396         (WTF::MemoryInstrumentation::addObjectImpl):
2397
2398 2012-12-21  Ilya Tikhonovsky  <loislo@chromium.org>
2399
2400         Unreviewed. Another try to fix Apple Win Release build.
2401
2402         * wtf/FastMalloc.cpp:
2403         (WTF::ClassIndex):
2404
2405 2012-12-21  Ilya Tikhonovsky  <loislo@chromium.org>
2406
2407         Unreviewed compilation fix for Apple Win Release after r138398.
2408
2409         * wtf/FastMalloc.cpp:
2410         (WTF::ClassIndex):
2411
2412 2012-12-21  Oliver Hunt  <oliver@apple.com>
2413
2414         Further harden FastMalloc
2415         https://bugs.webkit.org/show_bug.cgi?id=105656
2416
2417         Reviewed by Gavin Barraclough.
2418
2419         This increases the degree to which we harden the FastMalloc
2420         linked lists.  We now also mask the previous and next pointers
2421         in the doubly linked list implementation.  I've also made
2422         the masking itself somewhat more complex without a measurable
2423         cost.  We still use ASLR to provide some general entropy, but
2424         we blind the pointers against each nodes 'this' pointer.
2425
2426         * wtf/FastMalloc.cpp:
2427         (WTF::ClassIndex):
2428         (WTF::SLL_Next):
2429         (WTF::SLL_SetNext):
2430         (WTF::Span::next):
2431         (WTF::Span::prev):
2432         (WTF::Span::setNext):
2433         (WTF::Span::setPrev):
2434         (Span):
2435           As Span now has to do masking on the next and previous pointers,
2436           I've updated the code to use accessors instead.
2437         (WTF::DLL_Init):
2438         (WTF::DLL_Remove):
2439         (WTF::DLL_IsEmpty):
2440         (WTF::DLL_Length):
2441         (WTF::DLL_Prepend):
2442         (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects):
2443         (WTF::TCMalloc_PageHeap::scavenge):
2444         (WTF::TCMalloc_PageHeap::New):
2445         (WTF::TCMalloc_PageHeap::AllocLarge):
2446         (WTF::TCMalloc_PageHeap::ReturnedBytes):
2447         (WTF::TCMalloc_PageHeap::Check):
2448         (WTF::TCMalloc_PageHeap::CheckList):
2449         (WTF::TCMalloc_PageHeap::ReleaseFreeList):
2450         (WTF::TCMalloc_Central_FreeList::FetchFromSpans):
2451
2452 2012-12-20  Ryuan Choi  <ryuan.choi@samsung.com>
2453
2454         [EFL] Build break with latest EFL libraries.
2455         https://bugs.webkit.org/show_bug.cgi?id=104827
2456
2457         Reviewed by Laszlo Gombos.
2458
2459         The eo EFL package is introduced and evas and ecore use it since 1.8.
2460         While introducing Eo, EFL changed several structures of Evas and Ecore
2461         from own specific class to Eo.
2462
2463         So, this patch adds FindEo and changes declaration of Evas, Evas_Object,
2464         Ecore_Timer to build with latest EFL libraries.
2465
2466         * wtf/OwnPtrCommon.h: Modified declaration of Evas_Object and Ecore_Timer.
2467         * wtf/PlatformEfl.cmake: Includes eo EFL library.
2468         * wtf/efl/RefPtrEfl.h: Modified declaration of Evas_Object.
2469
2470 2012-12-20  Oliver Hunt  <oliver@apple.com>
2471
2472         Harden pointers in FastMalloc's singly linked list implementation
2473         https://bugs.webkit.org/show_bug.cgi?id=105571
2474
2475         Reviewed by Gavin Barraclough.
2476
2477         Add simple xor based hardening of the next pointer in the
2478         fast malloc singly linked list implementation.  We rely on
2479         ASLR to introduce the address randomness we want for the mask.
2480         Happily this produces a very low cost random value to use.
2481
2482         * wtf/FastMalloc.cpp:
2483         (WTF):
2484         (WTF::SLL_Next):
2485         (WTF::SLL_SetNext):
2486
2487 2012-12-19  Oliver Hunt  <oliver@apple.com>
2488
2489         StringImpl isolatedCopy unnecessarily copies text-segment character data
2490         https://bugs.webkit.org/show_bug.cgi?id=105376
2491
2492         Reviewed by Anders Carlsson.
2493
2494         This patch adds a new (private) helper to StringImpl that tests whether the StringImpl
2495         is backed by an ASCII literal.  This allows isolatedCopy() to safely use the createFromLiteral
2496         constructor rather than making an unnecessary copy.
2497
2498         * wtf/text/StringImpl.h:
2499         (StringImpl):
2500         (WTF::StringImpl::isASCIILiteral):
2501         (WTF::StringImpl::isolatedCopy):
2502
2503 2012-12-19  Oliver Hunt  <oliver@apple.com>
2504
2505         WTF String from ASCIILiteral fails to correctly handle empty strings.
2506         https://bugs.webkit.org/show_bug.cgi?id=105453
2507
2508         Reviewed by Anders Carlsson.
2509
2510         When we have an zero length literal we should return the empty StringImpl.
2511
2512         * wtf/text/StringImpl.cpp:
2513         (WTF::StringImpl::createFromLiteral):
2514
2515 2012-12-18  Yury Semikhatsky  <yurys@chromium.org>
2516
2517         Web Inspector: show cached images under MemoryCache -> Images section
2518         https://bugs.webkit.org/show_bug.cgi?id=105261
2519
2520         Reviewed by Pavel Feldman.
2521
2522         Use first provided name and class name. If one of the ancestors tries to overwrite
2523         it just ignore the call.
2524
2525         * wtf/MemoryObjectInfo.h:
2526         (WTF::MemoryObjectInfo::setClassName):
2527         (WTF::MemoryObjectInfo::setName):
2528
2529 2012-12-18  Uli Schlachter  <psychon@znc.in>
2530
2531         Implement uncommitted memory for Linux.
2532         https://bugs.webkit.org/show_bug.cgi?id=65766
2533
2534         Reviewed by Simon Hausmann.
2535
2536         The old approach used MAP_NORESERVE to allocate address space without
2537         committing it. However, that flag gets ignored if
2538         /proc/sys/vm/overcommit_memory is set to 2. The new approach uses a
2539         mapping with PROT_NONE. This works because mappings which aren't even
2540         readable don't get accounted as committed on Linux.
2541
2542         * wtf/OSAllocatorPosix.cpp:
2543         (WTF::OSAllocator::reserveUncommitted):
2544         (WTF::OSAllocator::reserveAndCommit):
2545         (WTF::OSAllocator::commit):
2546         (WTF::OSAllocator::decommit):
2547
2548 2012-12-17  Ilya Tikhonovsky  <loislo@chromium.org>
2549
2550         Web Inspector: Native Memory Instrumentation: MemoryInstrumentation doesn't detect reportMemoryUsage method defined in a base class.
2551         https://bugs.webkit.org/show_bug.cgi?id=105026
2552
2553         Reviewed by Yury Semikhatsky.
2554
2555         Old SFINAE test was replaced with new one based on this article:
2556         http://stackoverflow.com/questions/1966362/sfinae-to-check-for-inherited-member-functions
2557
2558         * wtf/MemoryInstrumentation.h:
2559         (MemoryInstrumentation):
2560         (yes):
2561         (IsInstrumented):
2562         (no):
2563         (WTF::MemoryInstrumentation::IsInstrumented::BaseMixin::reportMemoryUsage):
2564         (WTF::MemoryInstrumentation::selectInstrumentationMethod):
2565         (InstrumentationSelector):
2566         (WTF):
2567         (WTF::::reportObjectMemoryUsage):
2568
2569 2012-12-17  Ilya Tikhonovsky  <loislo@chromium.org>
2570
2571         Unreviewed, rolling out r137892.
2572         http://trac.webkit.org/changeset/137892
2573         https://bugs.webkit.org/show_bug.cgi?id=105026
2574
2575         it broke compilation on windows
2576
2577         * wtf/MemoryInstrumentation.h:
2578         (WTF::MemoryInstrumentation::selectInstrumentationMethod):
2579         (MemoryInstrumentation):
2580         (WTF::MemoryInstrumentation::reportObjectMemoryUsage):
2581         (WTF::reportMemoryUsage):
2582
2583 2012-12-14  Ilya Tikhonovsky  <loislo@chromium.org>
2584
2585         Web Inspector: Native Memory Instrumentation: MemoryInstrumentation doesn't detect reportMemoryUsage method defined in a base class.
2586         https://bugs.webkit.org/show_bug.cgi?id=105026
2587
2588         Reviewed by Yury Semikhatsky.
2589
2590         Old SFINAE test was replaced with new one based on this article:
2591         http://stackoverflow.com/questions/1966362/sfinae-to-check-for-inherited-member-functions
2592
2593         * wtf/MemoryInstrumentation.h:
2594         (MemoryInstrumentation):
2595         (yes):
2596         (IsInstrumented):
2597         (no):
2598         (WTF::MemoryInstrumentation::IsInstrumented::BaseMixin::reportMemoryUsage):
2599         (WTF::MemoryInstrumentation::selectInstrumentationMethod):
2600         (InstrumentationSelector):
2601         (WTF):
2602         (WTF::::reportObjectMemoryUsage):
2603
2604 2012-12-14  Yury Semikhatsky  <yurys@chromium.org>
2605
2606         Web Inspector: add data grid for exploring native heap graph
2607         https://bugs.webkit.org/show_bug.cgi?id=105012
2608
2609         Reviewed by Pavel Feldman.
2610
2611         Do not report edges with null target.
2612
2613         * wtf/MemoryInstrumentation.h:
2614         (WTF::MemoryInstrumentation::addObjectImpl):
2615
2616 2012-12-13  Filip Pizlo  <fpizlo@apple.com>
2617
2618         Attempt to rationalize and simplify WTF::binarySearch
2619         https://bugs.webkit.org/show_bug.cgi?id=104890
2620
2621         Reviewed by Maciej Stachowiak.
2622
2623         Binary search now has three modes:
2624
2625         The default: assert that the key was found, but return an adjacent element if it
2626         wasn't found, if asserts are turned off.
2627         
2628         tryBinarySearch: return 0 if the key wasn't found.
2629         
2630         approximateBinarySearch: if the key is not found, return an adjacent element (either
2631         the left or right; no guarantee which).
2632         
2633         This also reduces the number of variants of binarySearch. The functor variant is now
2634         gone because binarySearch now always uses a functor for the key extractor. The
2635         generic variant is now gone because binarySearch always expects an array type that
2636         can do operator[].
2637
2638         * wtf/StdLibExtras.h:
2639         (WTF::binarySearchImpl):
2640         (WTF::binarySearch):
2641         (WTF::tryBinarySearch):
2642         (WTF::approximateBinarySearch):
2643
2644 2012-12-13  Ilya Tikhonovsky  <loislo@chromium.org>
2645
2646         Web Inspector: Native Memory Instrumentation: do not validate pointers to objects in RenderArena agains tcmalloc data.
2647         https://bugs.webkit.org/show_bug.cgi?id=104903
2648
2649         Reviewed by Yury Semikhatsky.
2650
2651         This is a simplest approach to do that with zero performance overhead.
2652
2653         * wtf/MemoryInstrumentation.cpp:
2654         (WTF::MemoryClassInfo::setCustomAllocation):
2655         (WTF):
2656         * wtf/MemoryInstrumentation.h:
2657         (MemoryClassInfo):
2658         * wtf/MemoryObjectInfo.h:
2659         (WTF::MemoryObjectInfo::MemoryObjectInfo):
2660         (WTF::MemoryObjectInfo::customAllocation):
2661         (WTF::MemoryObjectInfo::setCustomAllocations):
2662         (MemoryObjectInfo):
2663
2664 2012-12-12  Ilya Tikhonovsky  <loislo@chromium.org>
2665
2666         Web Inspector: Native Memory Instrumentation: remove fake root MemoryObjectInfo.
2667         https://bugs.webkit.org/show_bug.cgi?id=104796
2668
2669         Reviewed by Yury Semikhatsky.
2670
2671         It was not a good idea to introduce a fake root MemoryObjectInfo.
2672         It makes a problem when we visit an object without its own MemoryObjectType.
2673
2674         Example: RenderBox has a global pointer to a hash map.
2675         HashMap doesn't have its own object type because it is a generic container.
2676         It will inherit object type from the fake root memory object info.
2677         The same could happen for another container in another class with other MemoryObjectType.
2678
2679         This fact forces me to create custom process method for root objects
2680         because they need to have their own MemoryObjectInfo with customisable memory object type.
2681
2682         Drive by fix: InstrumentedPointer* was replaced with Wrapper* because actually it is using
2683         for instrumented and not instrumented object classes.
2684
2685         * wtf/MemoryInstrumentation.cpp:
2686         (WTF::MemoryInstrumentation::MemoryInstrumentation):
2687         (WTF::MemoryInstrumentation::WrapperBase::WrapperBase):
2688         (WTF::MemoryInstrumentation::WrapperBase::process):
2689         (WTF::MemoryInstrumentation::WrapperBase::processRootObjectRef):
2690         (WTF):
2691         * wtf/MemoryInstrumentation.h:
2692         (WTF::MemoryInstrumentation::addRootObject):
2693         (MemoryInstrumentation):
2694         (WrapperBase):
2695         (WTF::MemoryInstrumentation::WrapperBase::~WrapperBase):
2696         (Wrapper):
2697         (OwningTraits):
2698         (WTF::MemoryInstrumentation::OwningTraits::addRootObject):
2699         (WTF::MemoryInstrumentation::addObjectImpl):
2700         (WTF::::Wrapper):
2701         (WTF::::callReportMemoryUsage):
2702
2703 2012-12-12  Sergio Martins  <sergio.martins@kdab.com>
2704
2705         Fix QNX Qt build by enabling JIT.
2706         https://bugs.webkit.org/show_bug.cgi?id=102794
2707
2708         Reviewed by Simon Hausmann.
2709
2710         JIT is working, so enable it. Otherwise LLINT gets enabled, and
2711         that doesn't compile.
2712
2713         YARR_JIT is crashing at this time though, so disable it.
2714
2715         * wtf/Platform.h:
2716
2717 2012-12-11  Ilya Tikhonovsky  <loislo@chromium.org>
2718
2719         Web Inspector: Native Memory Instrumentation: simplify Sequences processing code.
2720         https://bugs.webkit.org/show_bug.cgi?id=104777
2721
2722         Reviewed by Yury Semikhatsky.
2723
2724         Redesign reportMemoryUsage for the sequences.
2725         With the old schema we couldn't instrument HashMap<key, WebCore::LayoutUnit>
2726         because LayoutUnit has overloaded conversion operators for double, int, etc.
2727         I wrote an empty SequenceMemoryInstrumentationTraits for LayoutUnit class
2728         but it doesn't help because the root of problem was hidden in the free template function reportSequenceMemoryUsage.
2729         I could overload reportSequenceMemoryUsage too but in this case I need to fully specify all the types
2730         for the iterators like HashMap<.....>::const_iterator. Too many letters.
2731         I found a better solution. Free reportSequenceMemoryUsage can be converted into default implementation of static
2732         reportMemoryUsage traits method. In this case the types of iterators will be inferred automaticaly. The old default
2733         implementation becomes a custom implementation for the user defined types.
2734
2735         * wtf/MemoryInstrumentationHashCountedSet.h:
2736         (WTF::reportMemoryUsage):
2737         * wtf/MemoryInstrumentationHashMap.h:
2738         (WTF::reportMemoryUsage):
2739         * wtf/MemoryInstrumentationHashSet.h:
2740         (WTF::reportMemoryUsage):
2741         * wtf/MemoryInstrumentationListHashSet.h:
2742         (WTF::reportMemoryUsage):
2743         * wtf/MemoryInstrumentationSequence.h:
2744         (WTF):
2745         (WTF::SequenceMemoryInstrumentationTraits::reportMemoryUsage):
2746         (SequenceMemoryInstrumentationTraits):
2747         * wtf/MemoryInstrumentationVector.h:
2748         (WTF::reportMemoryUsage):
2749
2750 2012-12-10  Yury Semikhatsky  <yurys@chromium.org>
2751
2752         Memory instrumentation: make sure each edge is reported only once
2753         https://bugs.webkit.org/show_bug.cgi?id=104630
2754
2755         Reviewed by Pavel Feldman.
2756
2757         Make sure that outgoing edges are reported only once if we come to the same
2758         object twice: first by an address of a base class and then by a real address
2759         of the object.
2760
2761         * wtf/MemoryInstrumentation.cpp:
2762         (WTF::MemoryInstrumentation::MemoryInstrumentation):
2763         (WTF::MemoryInstrumentation::reportLinkToBuffer):
2764         (WTF::MemoryInstrumentation::InstrumentedPointerBase::InstrumentedPointerBase):
2765         (WTF::MemoryInstrumentation::InstrumentedPointerBase::process):
2766         (WTF::MemoryClassInfo::init):
2767         (WTF::MemoryClassInfo::addRawBuffer):
2768         (WTF::MemoryClassInfo::addPrivateBuffer):
2769         * wtf/MemoryInstrumentation.h:
2770         (InstrumentedPointerBase):
2771         (MemoryInstrumentation):
2772         (InstrumentedPointer):
2773         (WTF::MemoryClassInfo::MemoryClassInfo):
2774         (WTF::MemoryClassInfo::addMember):
2775         (MemoryClassInfo):
2776         (WTF::::InstrumentedPointer):
2777         (WTF::::callReportMemoryUsage):
2778         * wtf/MemoryObjectInfo.h:
2779         (WTF::MemoryObjectInfo::MemoryObjectInfo):
2780         (WTF::MemoryObjectInfo::firstVisit):
2781         (WTF::MemoryObjectInfo::className):
2782         (WTF::MemoryObjectInfo::name):
2783         (WTF::MemoryObjectInfo::setAlreadyVisited):
2784         (MemoryObjectInfo):
2785
2786 2012-12-10  Benjamin Poulain  <benjamin@webkit.org>
2787
2788         Add convenience methods to use ListHashSet for a LRU cache
2789         https://bugs.webkit.org/show_bug.cgi?id=104499
2790
2791         Reviewed by Sam Weinig.
2792
2793         ListHashSet is a great abstract data type to implement caches.
2794         Unfortunately, the class was missing methods to do that easily and
2795         efficiently. This patch fixes that.
2796
2797         The names appendOrMoveToLast() and prependOrMoveToFirst() were chosen
2798         in favor of append()/prepend() to ensure they are not used in place of
2799         add() by accident.
2800
2801         * wtf/ListHashSet.h:
2802         (ListHashSet):
2803         (WTF::::removeFirst):
2804         (WTF::::appendOrMoveToLast):
2805         (WTF::::prependOrMoveToFirst):
2806         (WTF::::unlink):
2807         (WTF::::unlinkAndDelete):
2808         (WTF::::prependNode):
2809
2810 2012-12-10  Eric Carlson  <eric.carlson@apple.com>
2811
2812         Add support for in-band text tracks to Mac port
2813         https://bugs.webkit.org/show_bug.cgi?id=103663
2814
2815         Reviewed by Sam Weinig.
2816
2817         * wtf/Platform.h: Define HAVE_AVFOUNDATION_TEXT_TRACK_SUPPORT.
2818
2819 2012-12-08  Patrick Gansterer  <paroga@webkit.org>
2820
2821         Compiling WTF outside of WebKit failed on Windows
2822         https://bugs.webkit.org/show_bug.cgi?id=100201
2823
2824         Reviewed by Darin Adler.
2825
2826         Explicitly use the Unicode variants of the Windows API to
2827         allow building the WTF library without the UNICODE define.
2828
2829         * wtf/win/MainThreadWin.cpp:
2830         (WTF::initializeMainThreadPlatform):
2831
2832 2012-12-08  Gustavo Noronha Silva  <gns@gnome.org>
2833
2834         Unreviewed trivial space fix to silence an automake warning.
2835
2836         * GNUmakefile.list.am:
2837
2838 2012-12-05  Halton Huo  <halton.huo@intel.com>
2839
2840         [CMake] Unify coding style for CMake files
2841         https://bugs.webkit.org/show_bug.cgi?id=103605
2842
2843         Reviewed by Laszlo Gombos.
2844
2845         Update cmake files(.cmake, CMakeLists.txt) with following style rules:
2846         1. Indentation
2847         1.1 Use spaces, not tabs.
2848         1.2 Four spaces as indent.
2849         2. Spacing
2850         2.1 Place one space between control statements and their parentheses.
2851             For eg, if (), else (), elseif (), endif (), foreach (),
2852             endforeach (), while (), endwhile (), break ().
2853         2.2 Do not place spaces between function and macro statements and
2854             their parentheses. For eg, macro(), endmacro(), function(),
2855             endfunction().
2856         2.3 Do not place spaces between a command or function or macro and its
2857             parentheses, or between a parenthesis and its content. For eg,
2858             message("testing") not message( "testing") or message ("testing" )
2859         2.4 No space at line ending.
2860         3. Lowercase when call commands macros and functions. For eg,
2861            add_executable() not ADD_EXECUTABLE(), set() not SET().
2862
2863         * CMakeLists.txt:
2864         * wtf/CMakeLists.txt:
2865         * wtf/PlatformBlackBerry.cmake:
2866         * wtf/PlatformEfl.cmake:
2867         * wtf/PlatformWinCE.cmake:
2868
2869 2012-12-04  Jon Lee  <jonlee@apple.com>
2870
2871         Extend StringHasher to take a stream of characters
2872         https://bugs.webkit.org/show_bug.cgi?id=104076
2873         <rdar://problem/12811887>
2874
2875         Reviewed by Darin Adler.
2876
2877         We essentially move computeHash() to a member function of StringHasher. This allows clients of the
2878         hasher to append strings to the general hash, without having to first concatenate the strings.
2879
2880         * wtf/StringHasher.h:
2881         (WTF::StringHasher::addCharacters): Same as computeHash(), except also take into account the possibility
2882         that there is a pending character to hash. If this is the case, we align the word boundary by consuming the
2883         first character in data, adjust the length, move the data pointer forward one, and update the hasher's
2884         pending character state. Also add an early return so that we are guaranteed at least one character in case
2885         we run into this situation.
2886         (WTF::StringHasher::computeHash): Refactor into addCharacters().
2887
2888 2012-12-04  Yury Semikhatsky  <yurys@chromium.org>
2889
2890         Web Inspector: simplify reportMemoryUsage signature
2891         https://bugs.webkit.org/show_bug.cgi?id=104028
2892
2893         Reviewed by Vsevolod Vlasov.
2894
2895         Removed const& modifier from instrumented pointer type. Was const T* const&,
2896         now it is const T*
2897
2898         * wtf/MemoryInstrumentation.cpp:
2899         (WTF::MemoryClassInfo::addRawBuffer):
2900         * wtf/MemoryInstrumentation.h:
2901         (MemoryInstrumentation):
2902         (WTF::MemoryInstrumentation::selectInstrumentationMethod):
2903         (WTF::MemoryInstrumentation::reportObjectMemoryUsage):
2904         (MemoryClassInfo):
2905         (WTF::reportMemoryUsage):
2906         (WTF::MemoryInstrumentation::addObjectImpl):
2907         (WTF):
2908         * wtf/MemoryInstrumentationArrayBufferView.h:
2909         (WTF::reportMemoryUsage):
2910         * wtf/MemoryInstrumentationHashCountedSet.h:
2911         (WTF::reportMemoryUsage):
2912         * wtf/MemoryInstrumentationHashMap.h:
2913         (WTF::reportMemoryUsage):
2914         * wtf/MemoryInstrumentationHashSet.h:
2915         (WTF::reportMemoryUsage):
2916         * wtf/MemoryInstrumentationListHashSet.h:
2917         (WTF::reportMemoryUsage):
2918         * wtf/MemoryInstrumentationParsedURL.h:
2919         (WTF::reportMemoryUsage):
2920         * wtf/MemoryInstrumentationString.h:
2921         (WTF::reportMemoryUsage):
2922         * wtf/MemoryInstrumentationVector.h:
2923         (WTF::reportMemoryUsage):
2924
2925 2012-12-01  Filip Pizlo  <fpizlo@apple.com>
2926
2927         JSC should be able to report profiling data associated with the IR dumps and disassembly
2928         https://bugs.webkit.org/show_bug.cgi?id=102999
2929
2930         Reviewed by Gavin Barraclough.
2931
2932         Made some minor changes to support the new profiler. FileOutputStream now has an
2933         open() method, and DataLog uses it. StringPrintStream has a reset() method, which
2934         allows you to reuse the same StringPrintStream for creating multiple strings.
2935         SegmentedVector now has a const operator[]. And, WTFString now can do fromUTF8() on
2936         a CString directly.
2937
2938         * wtf/DataLog.cpp:
2939         (WTF::initializeLogFileOnce):
2940         * wtf/FilePrintStream.cpp:
2941         (WTF::FilePrintStream::open):
2942         (WTF):
2943         * wtf/FilePrintStream.h:
2944         * wtf/SegmentedVector.h:
2945         (WTF::SegmentedVector::at):
2946         (SegmentedVector):
2947         (WTF::SegmentedVector::operator[]):
2948         * wtf/StringPrintStream.cpp:
2949         (WTF::StringPrintStream::reset):
2950         (WTF):
2951         * wtf/StringPrintStream.h:
2952         (StringPrintStream):
2953         * wtf/text/WTFString.cpp:
2954         (WTF::String::fromUTF8):
2955         (WTF):
2956         * wtf/text/WTFString.h:
2957         (String):
2958
2959 2012-12-04  Sheriff Bot  <webkit.review.bot@gmail.com>
2960
2961         Unreviewed, rolling out r136597.
2962         http://trac.webkit.org/changeset/136597
2963         https://bugs.webkit.org/show_bug.cgi?id=104065
2964
2965         broke Windows compilation (Requested by yurys on #webkit).
2966
2967         * wtf/MemoryInstrumentation.cpp:
2968         (WTF::MemoryClassInfo::addRawBuffer):
2969         * wtf/MemoryInstrumentation.h:
2970         (MemoryInstrumentation):
2971         (WTF::MemoryInstrumentation::selectInstrumentationMethod):
2972         (WTF::MemoryInstrumentation::reportObjectMemoryUsage):
2973         (MemoryClassInfo):
2974         (WTF::reportMemoryUsage):
2975         (WTF::MemoryInstrumentation::addObjectImpl):
2976         (WTF):
2977         * wtf/MemoryInstrumentationArrayBufferView.h:
2978         (WTF::reportMemoryUsage):
2979         * wtf/MemoryInstrumentationHashCountedSet.h:
2980         (WTF::reportMemoryUsage):
2981         * wtf/MemoryInstrumentationHashMap.h:
2982         (WTF::reportMemoryUsage):
2983         * wtf/MemoryInstrumentationHashSet.h:
2984         (WTF::reportMemoryUsage):
2985         * wtf/MemoryInstrumentationListHashSet.h:
2986         (WTF::reportMemoryUsage):
2987         * wtf/MemoryInstrumentationParsedURL.h:
2988         (WTF::reportMemoryUsage):
2989         * wtf/MemoryInstrumentationString.h:
2990         (WTF::reportMemoryUsage):
2991         * wtf/MemoryInstrumentationVector.h:
2992         (WTF::reportMemoryUsage):
2993
2994 2012-12-04  Yury Semikhatsky  <yurys@chromium.org>
2995
2996         Web Inspector: simplify reportMemoryUsage signature
2997         https://bugs.webkit.org/show_bug.cgi?id=104028
2998
2999         Reviewed by Vsevolod Vlasov.
3000
3001         Removed const& modifier from instrumented pointer type. Was const T* const&,
3002         now it is const T*
3003
3004         * wtf/MemoryInstrumentation.cpp:
3005         (WTF::MemoryClassInfo::addRawBuffer):
3006         * wtf/MemoryInstrumentation.h:
3007         (MemoryInstrumentation):
3008         (WTF::MemoryInstrumentation::selectInstrumentationMethod):
3009         (WTF::MemoryInstrumentation::reportObjectMemoryUsage):
3010         (MemoryClassInfo):
3011         (WTF::reportMemoryUsage):
3012         (WTF::MemoryInstrumentation::addObjectImpl):
3013         (WTF):
3014         * wtf/MemoryInstrumentationArrayBufferView.h:
3015         (WTF::reportMemoryUsage):
3016         * wtf/MemoryInstrumentationHashCountedSet.h:
3017         (WTF::reportMemoryUsage):
3018         * wtf/MemoryInstrumentationHashMap.h:
3019         (WTF::reportMemoryUsage):
3020         * wtf/MemoryInstrumentationHashSet.h:
3021         (WTF::reportMemoryUsage):
3022         * wtf/MemoryInstrumentationListHashSet.h:
3023         (WTF::reportMemoryUsage):
3024         * wtf/MemoryInstrumentationParsedURL.h:
3025         (WTF::reportMemoryUsage):
3026         * wtf/MemoryInstrumentationString.h:
3027         (WTF::reportMemoryUsage):
3028         * wtf/MemoryInstrumentationVector.h:
3029         (WTF::reportMemoryUsage):
3030
3031 2012-12-03  Yury Semikhatsky  <yurys@chromium.org>
3032
3033         Web Inspector: NMI introduce heap graph recording API
3034         https://bugs.webkit.org/show_bug.cgi?id=103232
3035
3036         Reviewed by Vsevolod Vlasov.
3037
3038         MemoryInstrumentationClient is extended with several methods for reporting
3039         heap graph vertices and edges. Edge source is always idenfied by heap object
3040         address. Target node might be either a destination object address(either real
3041         or adjusted if the edge was retrieved from a pointer to a base class) or a
3042         MemoryObjectInfo in case of internal buffers.
3043
3044         * wtf/MemoryInstrumentation.cpp:
3045         (WTF::MemoryInstrumentation::reportEdge):
3046         (WTF):
3047         (WTF::MemoryInstrumentation::reportLinkToBuffer): report edge between the object
3048         and a buffer which it owns.
3049         (WTF::MemoryInstrumentation::InstrumentedPointerBase::process):
3050         (WTF::MemoryClassInfo::addRawBuffer):
3051         (WTF::MemoryClassInfo::addPrivateBuffer):
3052         * wtf/MemoryInstrumentation.h:
3053         (MemoryInstrumentationClient):
3054         (WTF::MemoryInstrumentationClient::reportNode):
3055         (WTF::MemoryInstrumentationClient::reportEdge):
3056         (WTF::MemoryInstrumentationClient::reportLeaf):
3057         (WTF::MemoryInstrumentationClient::reportBaseAddress): if we found an object by a pointer
3058         to base class it may have different value than real object address. Report both real and
3059         adjusted addresses so that they both can be used for identifying corresponding heap graph
3060         node.
3061         (WTF::MemoryInstrumentation::addRootObject):
3062         (MemoryInstrumentation):
3063         (WTF::MemoryInstrumentation::addObject):
3064         (WTF::MemoryInstrumentation::addRawBuffer):
3065         (WTF::MemoryInstrumentation::OwningTraits::addObject):
3066         (WTF::MemoryClassInfo::addMember):
3067         (MemoryClassInfo):
3068         (WTF::MemoryInstrumentation::addObjectImpl):
3069         * wtf/MemoryObjectInfo.h: added methods for repoting class name and some name string.
3070         (WTF::MemoryObjectInfo::setClassName):
3071         (WTF::MemoryObjectInfo::setName):
3072         (MemoryObjectInfo):
3073
3074 2012-12-03  Filip Pizlo  <fpizlo@apple.com>
3075
3076         Replace JSValue::description() with JSValue::dump(PrintStream&)
3077         https://bugs.webkit.org/show_bug.cgi?id=103866
3078
3079         Reviewed by Darin Adler.
3080
3081         Make it easier to get a String from a StringPrintStream.
3082
3083         * wtf/StringPrintStream.cpp:
3084         (WTF::StringPrintStream::toString):
3085         * wtf/StringPrintStream.h:
3086         (StringPrintStream):
3087         (WTF::toString):
3088
3089 2012-12-02  Filip Pizlo  <fpizlo@apple.com>
3090
3091         It should be possible to build and run with DFG_ENABLE(PROPAGATION_VERBOSE)
3092         https://bugs.webkit.org/show_bug.cgi?id=103848
3093
3094         Reviewed by Sam Weinig.
3095
3096         Increase the variadicity of dataLog() and print(), and add a pointerDump()
3097         which allows passing a pointer to something that has a printInternal(). If
3098         the pointer is null, it'll print "(null)"; otherwise it'll invoke the
3099         printInternal() function.
3100
3101         * wtf/DataLog.h:
3102         (WTF):
3103         (WTF::dataLog):
3104         * wtf/PrintStream.h:
3105         (PrintStream):
3106         (WTF::PrintStream::print):
3107         (WTF):
3108         (PointerDump):
3109         (WTF::PointerDump::PointerDump):
3110         (WTF::PointerDump::dump):
3111         (WTF::pointerDump):
3112
3113 2012-11-30  Simon Hausmann  <simon.hausmann@digia.com>, Pierre Rossi  <pierre.rossi@digia.com>
3114
3115         [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
3116         https://bugs.webkit.org/show_bug.cgi?id=99314
3117
3118         Reviewed by Tor Arne Vestbø.
3119
3120         This big change separates QtWebKit into QtWebKit and QtWebKitWidgets as
3121         shared libraries.
3122
3123         It's a big refactoring that mostly involves moving WebCore dependent
3124         code into QtWebKit and accessing it through exported QWebFrameAdapter
3125         and QWebPageAdapter classes.
3126
3127
3128         * wtf/text/WTFString.h:
3129         (String): Export the QString conversions also as WTF_STRING_API.
3130
3131 2012-11-29  Filip Pizlo  <fpizlo@apple.com>
3132
3133         It should be easy to find code blocks in debug dumps
3134         https://bugs.webkit.org/show_bug.cgi?id=103623
3135
3136         Reviewed by Geoffrey Garen.
3137
3138         Changed RawPointer to accept both const void* and void*, and use the former internally.
3139         
3140         Cleaned up SHA1 so that the functionality already used internally for self-testing is
3141         available via the API. This includes addBytes(CString) and computing hex digests.
3142
3143         * wtf/RawPointer.h:
3144         (WTF::RawPointer::RawPointer):
3145         (RawPointer):
3146         (WTF::RawPointer::value):
3147         * wtf/SHA1.cpp:
3148         (WTF::expectSHA1):
3149         (WTF::SHA1::hexDigest):
3150         (WTF::SHA1::computeHexDigest):
3151         * wtf/SHA1.h:
3152         (WTF::SHA1::addBytes):
3153
3154 2012-11-29  Patrick Gansterer  <paroga@webkit.org>
3155
3156         Build fix for WinCE after r136096.
3157
3158         * wtf/StringPrintStream.cpp: Added missing include file.
3159
3160 2012-11-28  Filip Pizlo  <fpizlo@apple.com>
3161
3162         SpeculatedType dumping should not use the static char buffer[thingy] idiom
3163         https://bugs.webkit.org/show_bug.cgi?id=103584
3164
3165         Reviewed by Michael Saboff.
3166
3167         Added a StringPrintStream, and made it easy to create dumpers for typedefs to primitives.
3168
3169         * GNUmakefile.list.am:
3170         * WTF.gypi:
3171         * WTF.pro:
3172         * WTF.vcproj/WTF.vcproj:
3173         * WTF.xcodeproj/project.pbxproj:
3174         * wtf/CMakeLists.txt:
3175         * wtf/PrintStream.cpp:
3176         (WTF::dumpCharacter):
3177         * wtf/PrintStream.h:
3178         (WTF::printInternal):
3179         * wtf/StringPrintStream.cpp: Added.
3180         (WTF::StringPrintStream::StringPrintStream):
3181         (WTF::StringPrintStream::~StringPrintStream):
3182         (WTF::StringPrintStream::vprintf):
3183         (WTF::StringPrintStream::toCString):
3184         (WTF::StringPrintStream::increaseSize):
3185         * wtf/StringPrintStream.h: Added.
3186         (StringPrintStream):
3187         (WTF::toCString):
3188
3189 2012-11-28  Michael Saboff  <msaboff@apple.com>
3190
3191         Update String Stats for recent dataLog changes and add summary
3192         https://bugs.webkit.org/show_bug.cgi?id=103583
3193
3194         Reviewed by Filip Pizlo.
3195
3196         Updated calls to dataLog() to dataLogF() as a results of r135469.
3197         Added total savings from 8 bit strings in bytes and as a percentage.
3198
3199         * wtf/text/StringImpl.cpp:
3200         (WTF::StringStats::printStats):
3201
3202 2012-11-28  Roger Fong  <roger_fong@apple.com>
3203
3204         Make DataLog work/compile properly on Windows.
3205         https://bugs.webkit.org/show_bug.cgi?id=103544
3206
3207         Reviewed by Filip Pizlo.
3208
3209         * wtf/DataLog.cpp:
3210         (WTF::initializeLogFileOnce):
3211
3212 2012-11-28  Filip Pizlo  <fpizlo@apple.com>
3213
3214         It should be possible to say dataLog("count = ", count, "\n") instead of dataLogF("count = %d\n", count)
3215         https://bugs.webkit.org/show_bug.cgi?id=103009
3216
3217         Reviewed by Michael Saboff.
3218
3219         Added the ability to use out.print(...) and dataLog(...) variadically and with
3220         WTF::printInternal(PrintStream&, const T&) overloads for any type T that you want
3221         to be able to pass as an argument to out.print() or dataLog(). Also added one
3222         example class for doing this: RawPointer, which can be used to force a pointer
3223         to be printed as "%p" rather than matching any overloads that you might want to
3224         introduce.
3225
3226         * GNUmakefile.list.am:
3227         * WTF.gypi:
3228         * WTF.pro:
3229         * WTF.vcproj/WTF.vcproj:
3230         * WTF.xcodeproj/project.pbxproj:
3231         * wtf/CMakeLists.txt:
3232         * wtf/DataLog.h:
3233         (WTF):
3234         (WTF::dataLog):
3235         * wtf/PrintStream.cpp:
3236         (WTF::printInternal):
3237         (WTF):
3238         * wtf/PrintStream.h:
3239         (PrintStream):
3240         (WTF::PrintStream::print):
3241         (WTF):
3242         * wtf/RawPointer.h: Added.
3243         (WTF):
3244         (RawPointer):
3245         (WTF::RawPointer::RawPointer):
3246         (WTF::RawPointer::value):
3247
3248 2012-11-27  Filip Pizlo  <fpizlo@apple.com>
3249
3250         Convert some remaining uses of FILE* to PrintStream&.
3251
3252         Rubber stamped by Mark Hahnenberg.
3253
3254         * wtf/BitVector.cpp:
3255         (WTF::BitVector::dump):
3256         * wtf/BitVector.h:
3257         (BitVector):
3258
3259 2012-11-27  Pratik Solanki  <psolanki@apple.com>
3260
3261         objc/objc-runtime.h does not exist on all PLATFORM(MAC)
3262         https://bugs.webkit.org/show_bug.cgi?id=101780
3263
3264         Reviewed by Brent Fulgham.
3265
3266         Clean up header includes so we don't include objc/objc-runtime.h.
3267
3268         * wtf/Functional.h:
3269         * wtf/ObjcRuntimeExtras.h: Include objc/message.h here so we don't rely on proper ordering
3270         of includes in files that include this header.
3271
3272 2012-11-27  Sheriff Bot  <webkit.review.bot@gmail.com>
3273
3274         Unreviewed, rolling out r135828.
3275         http://trac.webkit.org/changeset/135828
3276         https://bugs.webkit.org/show_bug.cgi?id=103405
3277
3278         [Chromium] Multiple ASAN errors after a WebKit roll due to
3279         mismatched malloc/delete (not free) resulting from
3280         StringImpl::deref() (Requested by apavlov on #webkit).
3281
3282         * wtf/FastAllocBase.h:
3283         * wtf/Platform.h:
3284
3285 2012-11-26  Adam Barth  <abarth@webkit.org>
3286
3287         [Chromium] fastMalloc has an extra branch on Windows
3288         https://bugs.webkit.org/show_bug.cgi?id=103027
3289
3290         Reviewed by Eric Seidel.
3291
3292         There's no need to override the new/delete operators on non-Mac
3293         platform because:
3294
3295         1) We use the system malloc anyway.
3296         2) We've modified the system malloc to crash in out-of-memory conditions.
3297
3298         This patch removes a branch (and a call) from malloc, which will
3299         hopefully improve performance. I haven't measured the performance
3300         characteristics of this patch, but I will look at the graphs closely
3301         when landing.
3302
3303         * wtf/FastAllocBase.h:
3304         * wtf/Platform.h:
3305
3306 2012-11-26  Filip Pizlo  <fpizlo@apple.com>
3307
3308         DataLog to a file should work if there are multiple processes using WTF
3309         https://bugs.webkit.org/show_bug.cgi?id=103323
3310
3311         Reviewed by Mark Hahnenberg.
3312
3313         Whereas before DataLog would open a file with the name you specified, now it'll open a file with the
3314         name plus the PID appended to it. So if you are dealing with multiple processes running with DataLog
3315         to a file enabled, you'll get multiple separate log files.
3316
3317         * wtf/DataLog.cpp:
3318         (WTF::initializeLogFileOnce):
3319
3320 2012-11-26  Zeno Albisser  <zeno@webkit.org>
3321
3322         [Qt] Fix the LLInt build on Mac
3323         https://bugs.webkit.org/show_bug.cgi?id=97587
3324
3325         Reviewed by Simon Hausmann.
3326
3327         * wtf/InlineASM.h:
3328             Use OS(DARWIN) instead of PLATFORM(MAC),
3329             in order to allow Qt to use the same code.
3330         * wtf/Platform.h:
3331
3332 2012-11-26  Patrick Gansterer  <paroga@webkit.org>
3333
3334         Build fix for WinCE after r135640.
3335
3336         * wtf/DataLog.cpp:
3337
3338 2012-11-24  Adam Barth  <abarth@webkit.org>
3339
3340         Chromium should use TCMalloc on Mac to go fast
3341         https://bugs.webkit.org/show_bug.cgi?id=102866
3342
3343         Reviewed by Eric Seidel.
3344
3345         This patch enables TCMalloc for some WebKit objects. It improves
3346         dom-modify on Mac by 5-10%.
3347
3348         On non-Mac platforms, Chromium already uses TCMalloc throughout the
3349         project. Unfortunately, we haven't yet figured out how to turn TCMalloc
3350         on globally on Mac because the approach we use for other platforms makes
3351         some OS X APIs sad.
3352
3353         The next best thing would be to enable TCMalloc for WebKit by
3354         overriding the global new and delete operator, as is done on apple-mac
3355         and other platforms. Unfortunately, we cannot use that approach either
3356         because the Chromium WebKit API is not memory tight.
3357
3358         Fortunately, WebKit has a mechanism for selectively enabling TCMalloc
3359         for a selection of objects by overriding the new and delete operators
3360         on those objects. This patch opts chromium-mac into that scheme by
3361         setting the appropriate preprocessor macros.
3362
3363         * WTF.gyp/WTF.gyp:
3364         * wtf/Platform.h:
3365
3366 2012-11-21  Filip Pizlo  <fpizlo@apple.com>
3367
3368         Any function that can log things should be able to easily log them to a memory buffer as well
3369         https://bugs.webkit.org/show_bug.cgi?id=103000
3370
3371         Reviewed by Sam Weinig.
3372
3373         We have a number of places where we pass around a FILE* as a target to which to print
3374         some logging information. But the purpose of passing FILE* instead of always assuming
3375         that we should dump to stderr is that it may be sometimes useful to send the logging
3376         information elsewhere. Unfortunately, FILE* isn't quite powerful enough: it's combersome
3377         to use it to send logging to a string, for example.
3378         
3379         We could get around this by using <iostream> and <sstream>, but so far this aspect of
3380         C++ has not been part of the WebKit coding conventions. Personally I find <iostream>
3381         awkward due to its abuse of operator overloading.
3382         
3383         So this patch introduces the PrintStream abstract class, which offers printf-like
3384         functionality while completely abstracting the destination and mechanism of the printing
3385         output. It would be trivial to implement a StringPrintStream, for example. This will feed
3386         into work on https://bugs.webkit.org/show_bug.cgi?id=102999.
3387         
3388         This also sets us up for creating templatized print() and println() methods that will
3389         allow us to say things like out.print("count = ", count, "\n"), but that is the topic
3390         of https://bugs.webkit.org/show_bug.cgi?id=103009.
3391         
3392         This patch also changes dataLog() to use FilePrintStream internally, and WTF::dataFile()
3393         now returns a FilePrintStream&. Any previous users of WTF::dataFile() have been changed
3394         to expect a PrintStream&.
3395
3396         * GNUmakefile.list.am:
3397         * WTF.pro:
3398         * WTF.vcproj/WTF.vcproj:
3399         * WTF.xcodeproj/project.pbxproj:
3400         * wtf/CMakeLists.txt:
3401         * wtf/DataLog.cpp:
3402         (WTF):
3403         (WTF::initializeLogFileOnce):
3404         (WTF::initializeLogFile):
3405         (WTF::dataFile):
3406         (WTF::dataLogV):
3407         (WTF::dataLogString):
3408         * wtf/DataLog.h:
3409         (WTF):
3410         * wtf/FilePrintStream.cpp: Added.
3411         (WTF):
3412         (WTF::FilePrintStream::FilePrintStream):
3413         (WTF::FilePrintStream::~FilePrintStream):
3414         (WTF::FilePrintStream::vprintf):
3415         (WTF::FilePrintStream::flush):
3416         * wtf/FilePrintStream.h: Added.
3417         (WTF):
3418         (FilePrintStream):
3419         (WTF::FilePrintStream::file):
3420         * wtf/PrintStream.cpp: Added.
3421         (WTF):
3422         (WTF::PrintStream::PrintStream):
3423         (WTF::PrintStream::~PrintStream):
3424         (WTF::PrintStream::printf):
3425         (WTF::PrintStream::print):
3426         (WTF::PrintStream::println):
3427         (WTF::PrintStream::flush):
3428         (WTF::print):
3429         * wtf/PrintStream.h: Added.
3430         (WTF):
3431         (PrintStream):
3432         (WTF::print):
3433         (WTF::println):
3434
3435 2012-11-23  Robert Kroeger  <rjkroege@chromium.org>
3436
3437         Remove unused ScrollByPixelVelocity
3438         https://bugs.webkit.org/show_bug.cgi?id=102840
3439
3440         Reviewed by Sam Weinig.
3441
3442         The GESTURE_ANIMATION feature turns on code in WebCore is unused.
3443         Remove it.
3444
3445         No new tests: code removal/cleanup.
3446
3447         * wtf/Platform.h:
3448
3449 2012-11-23  Laszlo Gombos  <l.gombos@samsung.com>
3450
3451         [EFL] Define WTF_PLATFORM_EFL in Platform.h
3452         https://bugs.webkit.org/show_bug.cgi?id=101482
3453
3454         Reviewed by Kenneth Rohde Christiansen.
3455
3456         Define WTF_PLATFORM_EFL in Platform.h to be consistent with 
3457         other ports.
3458
3459         * wtf/Platform.h:
3460
3461 2012-11-16  Yury Semikhatsky  <yurys@chromium.org>
3462
3463         Memory instrumentation: extract MemoryObjectInfo declaration into a separate file
3464         https://bugs.webkit.org/show_bug.cgi?id=102510
3465
3466         Reviewed by Pavel Feldman.
3467
3468         Moved MemoryObjectInfo into separate header. Moved definition of MemoryInstrumentation
3469         methods that depend on MemoryObjectInfo declaration into MemoryInstrumentation.cpp to
3470         make MemoryInstrumentation require only forward declaration of MemoryObjectInfo.
3471
3472         * GNUmakefile.list.am:
3473         * WTF.gypi:
3474         * WTF.pro:
3475         * WTF.vcproj/WTF.vcproj:
3476         * wtf/CMakeLists.txt:
3477         * wtf/MemoryInstrumentation.cpp: Added.
3478         (WTF):
3479         (WTF::MemoryInstrumentation::MemoryInstrumentation):
3480         (WTF::MemoryInstrumentation::~MemoryInstrumentation):
3481         (WTF::MemoryInstrumentation::getObjectType): this method allows to get object type without
3482         pulling in MemoryObjectInfo.h and all its dependencies.
3483         (WTF::MemoryInstrumentation::callReportObjectInfo):
3484         (WTF::MemoryInstrumentation::InstrumentedPointerBase::InstrumentedPointerBase):
3485         (WTF::MemoryInstrumentation::InstrumentedPointerBase::process):
3486         (WTF::MemoryClassInfo::init):
3487         (WTF::MemoryClassInfo::addRawBuffer):
3488         (WTF::MemoryClassInfo::addPrivateBuffer):
3489         * wtf/MemoryInstrumentation.h:
3490         (MemoryInstrumentation):
3491         (WTF::MemoryInstrumentation::addRootObject):
3492         (InstrumentedPointerBase):
3493         (WTF::MemoryInstrumentation::reportObjectMemoryUsage):
3494         (InstrumentedPointer):
3495         (WTF::MemoryInstrumentation::addObject): we now pass owner's MemoryObjectInfo in all places
3496         where we report objects pointed by the owner.
3497         (WTF::MemoryInstrumentation::OwningTraits::addObject):
3498         (WTF::MemoryClassInfo::MemoryClassInfo):
3499         (WTF::MemoryClassInfo::addMember):
3500         (MemoryClassInfo):
3501         (WTF::MemoryInstrumentation::addObjectImpl):
3502         (WTF::::InstrumentedPointer):
3503         (WTF::::callReportMemoryUsage):
3504         * wtf/MemoryObjectInfo.h: Added.
3505         (WTF):
3506         (MemoryObjectInfo):
3507         (WTF::MemoryObjectInfo::MemoryObjectInfo):
3508         (WTF::MemoryObjectInfo::objectType):
3509         (WTF::MemoryObjectInfo::objectSize):
3510         (WTF::MemoryObjectInfo::reportedPointer):
3511         (WTF::MemoryObjectInfo::memoryInstrumentation):
3512         (WTF::MemoryObjectInfo::reportObjectInfo):
3513
3514 2012-11-23  Krzysztof Czech  <k.czech@samsung.com>
3515
3516         [EFL] Platform support for Accessibility feature.
3517         https://bugs.webkit.org/show_bug.cgi?id=100848
3518
3519         Reviewed by Gyuyoung Kim.
3520
3521         Enable HAVE(ACCESSIBILITY) ifdefs so that EFL port can use it.
3522
3523         * wtf/Platform.h:
3524
3525 2012-11-22  Michael Saboff  <msaboff@apple.com>
3526
3527         HTML integer parsing functions don't natively handle 8 bit strings
3528         https://bugs.webkit.org/show_bug.cgi?id=102997
3529
3530         Reviewed by Filip Pizlo.
3531
3532         Added exports to the LChar* versions of charactersToIntStrict() and charactersToUIntStrict()
3533         to support the changes made to parseHTMLInteger() and parseHTMLNonNegativeInteger().
3534
3535         * wtf/text/WTFString.h:
3536         (WTF::charactersToIntStrict): Added export
3537         (WTF::charactersToUIntStrict): Added export
3538
3539 2012-11-21  Filip Pizlo  <fpizlo@apple.com>
3540
3541         Rename dataLog() and dataLogV() to dataLogF() and dataLogFV()
3542         https://bugs.webkit.org/show_bug.cgi?id=103001
3543
3544         Rubber stamped by Dan Bernstein.
3545
3546         * wtf/DataLog.cpp:
3547         (WTF::dataLogFV):
3548         (WTF::dataLogF):
3549         (WTF::dataLogFString):
3550         * wtf/DataLog.h:
3551         (WTF):
3552         * wtf/HashTable.cpp:
3553         (WTF::HashTableStats::dumpStats):
3554         * wtf/HashTable.h:
3555         (WTF::HashTable::Stats::dumpStats):
3556         * wtf/MetaAllocator.cpp:
3557         (WTF::MetaAllocator::dumpProfile):
3558         * wtf/StackStats.cpp:
3559         (WTF::StackStats::initialize):
3560         (WTF::StackStats::PerThreadStats::PerThreadStats):
3561         (WTF::StackStats::CheckPoint::CheckPoint):
3562         (WTF::StackStats::CheckPoint::~CheckPoint):
3563         (WTF::StackStats::probe):
3564         (WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
3565         * wtf/text/WTFString.cpp:
3566         (String::show):
3567
3568 2012-11-21  Anthony G. Basile  <blueness@gentoo.org>
3569
3570         Source/WTF/wtf/Assertions.cpp: fix build on a uClibc system
3571         https://bugs.webkit.org/show_bug.cgi?id=102946
3572
3573         Reviewed by Tony Chang.
3574
3575         Webkit-Gtk fails to build on a uClibc system because
3576         Assertions.cpp assumes that all Linux systems have execinfo.h
3577         and provide backtrace(). This is not necessarily the case for
3578         uClibc which can be configured without these.  This patch
3579         refines the check for OS(LINUX) to prevent this breakage.
3580         Originally reported at https://bugs.gentoo.org/441674
3581
3582         * wtf/Assertions.cpp:
3583
3584 2012-11-19  Filip Pizlo  <fpizlo@apple.com>
3585
3586         DFG should be able to cache closure calls
3587         https://bugs.webkit.org/show_bug.cgi?id=102662
3588
3589         Reviewed by Gavin Barraclough.
3590
3591         Added support to the meta allocator for easily querying whether an address falls within
3592         a certain allocated chunk. Also added a useful debug routine to SentinelLinkedList,
3593         which can be used to check if a node is on a particular list.