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