blob: 2902a6cdc82c04fc44d32b988e4019c51e8f714a [file] [log] [blame]
2016-09-23 Filip Pizlo <fpizlo@apple.com>
Need a store-load fence between setting cell state and visiting the object in SlotVisitor
https://bugs.webkit.org/show_bug.cgi?id=162354
Reviewed by Mark Lam.
Fix this on x86-32.
* wtf/Atomics.h:
(WTF::x86_ortop):
2016-09-23 Caitlin Potter <caitp@igalia.com>
[JSC] Implement parsing of Async Functions
https://bugs.webkit.org/show_bug.cgi?id=161409
Reviewed by Yusuke Suzuki.
* wtf/FeatureDefines.h:
2016-09-23 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r206314, r206316, and r206319.
https://bugs.webkit.org/show_bug.cgi?id=162506
These changes broke various builds (Requested by ryanhaddad on
#webkit).
Reverted changesets:
"Need a store-load fence between setting cell state and
visiting the object in SlotVisitor"
https://bugs.webkit.org/show_bug.cgi?id=162354
http://trac.webkit.org/changeset/206314
"Unreviewed, fix cloop."
http://trac.webkit.org/changeset/206316
"Unreviewed, fix all other builds."
http://trac.webkit.org/changeset/206319
2016-09-23 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r194387): Crash on github.com in IntlDateTimeFormat::resolvedOptions in C locale
https://bugs.webkit.org/show_bug.cgi?id=162139
Reviewed by Michael Catanzaro.
Handle the case of "C" or "POSIX" locale and use "en-US" as default. That matches what ICU and other ports do,
as well as what layout tests expect (some tests like js/intl-collator.html pass in the bots only because we use
en-US as system locale in those bots).
* wtf/PlatformUserPreferredLanguagesUnix.cpp:
(WTF::platformLanguage):
2016-09-22 Filip Pizlo <fpizlo@apple.com>
Need a store-load fence between setting cell state and visiting the object in SlotVisitor
https://bugs.webkit.org/show_bug.cgi?id=162354
Reviewed by Mark Lam.
Fix this on x86-32.
* wtf/Atomics.h:
(WTF::x86_ortop):
2016-09-22 Filip Pizlo <fpizlo@apple.com>
Fences on x86 should be a lot cheaper
https://bugs.webkit.org/show_bug.cgi?id=162417
Reviewed by Mark Lam and Geoffrey Garen.
It turns out that:
lock; orl $0, (%rsp)
does everything that we wanted from:
mfence
And it's a lot faster. When I tried mfence for making object visiting concurrent-GC-TSO-
friendly, it was a 9% regression on Octane/splay. But when I tried ortop, it was neutral.
So, we should use ortop from now on.
This part of the change just affects our Atomics. I also changed this in the JITs.
* wtf/Atomics.h:
(WTF::x86_ortop):
(WTF::storeLoadFence):
(WTF::x86_mfence): Deleted.
2016-09-21 Alexey Proskuryakov <ap@apple.com>
Rolling out r206244, as it caused flaky crashes on tests.
Was: Correct uses of 'safeCast'
* wtf/StdLibExtras.h:
(WTF::safeCast):
2016-09-21 Keith Miller <keith_miller@apple.com>
Fix build for future versions of Clang.
https://bugs.webkit.org/show_bug.cgi?id=162346
Reviewed by Filip Pizlo.
This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.
* wtf/text/StringImpl.h:
2016-09-20 Brent Fulgham <bfulgham@apple.com>
Correct uses of 'safeCast'
https://bugs.webkit.org/show_bug.cgi?id=162301
<rdar://problem/28343658>
Reviewed by Antti Koivisto.
* wtf/StdLibExtras.h:
(WTF::safeCast): RELEASE_ASSERT on overflow.
2016-09-21 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r206222 and r206227.
https://bugs.webkit.org/show_bug.cgi?id=162361
"broke the windows build" (Requested by keith_mi_ on #webkit).
Reverted changesets:
"Fix build for future versions of Clang."
https://bugs.webkit.org/show_bug.cgi?id=162346
http://trac.webkit.org/changeset/206222
"Attempt to fix windows build after r206222."
http://trac.webkit.org/changeset/206227
2016-09-21 Keith Miller <keith_miller@apple.com>
Fix build for future versions of Clang.
https://bugs.webkit.org/show_bug.cgi?id=162346
Reviewed by Filip Pizlo.
This fixes issues with the WebCore build where inline
template-class function definitions are marked as exported. This
genereates a weak external symobl that our build does not like.
* wtf/text/StringImpl.h:
2016-09-20 Alex Christensen <achristensen@webkit.org>
Require WTFMove for String::adopt
https://bugs.webkit.org/show_bug.cgi?id=162313
Reviewed by Yusuke Suzuki.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::removeCharacters):
(WTF::StringImpl::simplifyMatchedCharactersToSpace):
(WTF::StringImpl::adopt):
* wtf/text/StringImpl.h:
(WTF::StringImpl::adopt):
* wtf/text/WTFString.h:
(WTF::String::adopt):
2016-09-20 Filip Pizlo <fpizlo@apple.com>
Make MarkedBlock state tracking support overlapped allocation and marking state
https://bugs.webkit.org/show_bug.cgi?id=161581
Reviewed by Geoffrey Garen.
The main change here is to bring back FastBitVector.cpp, so that I could outline some
large slow path functions. This also adds some utilities, like atomicSetAndCheck() and
isEmpty(). The GC uses these.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FastBitVector.cpp: Added.
(WTF::FastBitVectorWordOwner::setEqualsSlow):
(WTF::FastBitVectorWordOwner::resizeSlow):
* wtf/FastBitVector.h:
(WTF::FastBitVectorWordOwner::operator=):
(WTF::FastBitVectorWordOwner::resize):
(WTF::FastBitVectorImpl::isEmpty):
(WTF::FastBitVector::atomicSetAndCheck):
(WTF::FastBitVector::operator[]): Deleted.
2016-09-20 Jonathan Bedard <jbedard@apple.com>
Undefined behavior: Left shift negative number
https://bugs.webkit.org/show_bug.cgi?id=161866
Reviewed by Keith Miller.
Left shifting a negative number is undefined behavior in C/C++, although most implementations do define it. Explicitly clarifying the intended behavior due to shifting negative number in some cases.
* wtf/text/Base64.cpp:
(WTF::base64EncodeInternal): Changed signed character to unsigned when shifting.
(WTF::base64Encode): Ditto.
(WTF::base64URLEncode): Ditto.
(WTF::base64DecodeInternal): Ditto.
* wtf/text/Base64.h: Ditto.
(WTF::SignedOrUnsignedCharVectorAdapter): Rebuilt to stop using union as a bitwise_cast.
(WTF::ConstSignedOrUnsignedCharVectorAdapter): Ditto.
2016-09-19 Daniel Bates <dabates@apple.com>
Remove ENABLE(TEXT_AUTOSIZING) automatic text size adjustment code
https://bugs.webkit.org/show_bug.cgi?id=162167
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h:
2016-09-14 Jer Noble <jer.noble@apple.com>
[media-source] fix imported/w3c/web-platform-tests/media-source/mediasource-duration.html
https://bugs.webkit.org/show_bug.cgi?id=161999
Reviewed by Eric Carlson.
The mediasource-duration.html test tries to set the duration of a MediaSource to a double value
(5.0), then some work happens and the duration is set to a media time (12533/2500, or 5.0132).
The test then tries to set that value as the duration, converted from a media time to a double,
and asserts that no duration change event is fired. But because the floating point value and the
media time value are ever so slightly different, this round-tripping fails.
Fix this bug in MediaTime by, when one side or the other of a comparison is a floating point
MediaTime, convert both sides to doubles and run the comparison against those values. This preserves
the transitive equality of doubles <-> MediaTimes.
* wtf/MediaTime.cpp:
(WTF::MediaTime::compare):
2016-09-16 Anders Carlsson <andersca@apple.com>
Fix isValidEnum to work with older versions of GCC
https://bugs.webkit.org/show_bug.cgi?id=162065
Reviewed by Michael Catanzaro.
Use the ternary operator instead of a more complex function body.
* wtf/EnumTraits.h:
2016-09-15 JF Bastien <jfbastien@apple.com>
TextBreakIterator: unconvolute character break cache
https://bugs.webkit.org/show_bug.cgi?id=162001
Reviewed by Michael Saboff.
Simplify the one-element cache.
Added here (fixed a bit after): https://bugs.webkit.org/attachment.cgi?id=144118&action=prettypatch
Updated to never use a lock, and always use weak cmpxchg here: https://bugs.webkit.org/attachment.cgi?id=261719&action=prettypatch
It's just trying to reduce the number of times it calls into ICU
to initialize a UBRK_CHARACTER. The implementation keeps a
one-element cache of the latest used one, which threads can
optimistically grab. Failure is fine (just create a new one), same
for failure to cache (just destroy it), but the logic is odd and
you technically need release / acquire semantics because the
UBRK_CHARACTER creation's store need to be visible on acquisition
(but realistically it was created and then used and *then* cached,
so it's probably been long ago enough that read reorders never
manifested).
Using exchange directly achieves this without the headache.
* wtf/text/TextBreakIterator.cpp:
(WTF::getNonSharedCharacterBreakIterator):
(WTF::cacheNonSharedCharacterBreakIterator):
(WTF::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator):
(WTF::NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator):
(WTF::compareAndSwapNonSharedCharacterBreakIterator): Deleted.
2016-09-15 Keith Miller <keith_miller@apple.com>
Pragma out undefined-var-template warnings in JSC for JSObjects that are templatized
https://bugs.webkit.org/show_bug.cgi?id=161985
Reviewed by Alex Christensen.
Fix WTF_EXPORT_PRIVATE for an inline member function. This would
generate a weak export.
* wtf/MetaAllocator.h:
(WTF::MetaAllocator::getLock):
2016-09-14 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r205933 and r205936.
https://bugs.webkit.org/show_bug.cgi?id=162002
broke the build (Requested by keith_miller on #webkit).
Reverted changesets:
"Pragma out undefined-var-template warnings in JSC for
JSObjects that are templatized"
https://bugs.webkit.org/show_bug.cgi?id=161985
http://trac.webkit.org/changeset/205933
"Unreviewed, fix the Windows build."
http://trac.webkit.org/changeset/205936
2016-09-14 Keith Miller <keith_miller@apple.com>
Pragma out undefined-var-template warnings in JSC for JSObjects that are templatized
https://bugs.webkit.org/show_bug.cgi?id=161985
Reviewed by Geoffrey Garen.
Fix WTF_EXPORT_PRIVATE for an inline member function. This would
generate a weak export.
* wtf/MetaAllocator.h:
(WTF::MetaAllocator::getLock):
2016-09-14 JF Bastien <jfbastien@apple.com>
Atomics on ARM don't require full-system fencing, and other minutiae
https://bugs.webkit.org/show_bug.cgi?id=161928
Reviewed by Geoffrey Garen.
Add cmpxchg versions with both success and failure memory
ordering. In some interesting cases we can craft code which needs
barriers which aren't as strong.
weakCompareAndSwap is super dubious, its 3 uses seem
questionable... but for now I'm just adding debug asserts.
Rename armv7_dmb* functions to arm_dmb* because they apply to v7
and v8 (or more precisely; to ARMv7's ARM and Thumb2, as well as
ARMv8's aarch32 A32/T32 and aarch64).
Use inner-shareability domain for ARM barriers instead of
full-system. This is what C++ uses.
The default case for barriers simply used a compiler barrier. This
is generally wrong, e.g. for MIPS.
* wtf/Atomics.h:
(WTF::Atomic::compareExchangeWeak): offer two-order version
(WTF::Atomic::compareExchangeStrong): offer two-order version
(WTF::weakCompareAndSwap): a few assertions
(WTF::arm_dmb): rename since it applies to ARMv7 and v8; make it innser-shareable
(WTF::arm_dmb_st): rename since it applies to ARMv7 and v8; make it innser-shareable
(WTF::loadLoadFence): incorrect generally
(WTF::loadStoreFence): incorrect generally
(WTF::storeLoadFence): incorrect generally
(WTF::storeStoreFence): incorrect generally
(WTF::memoryBarrierAfterLock): incorrect generally
(WTF::memoryBarrierBeforeUnlock): incorrect generally
(WTF::armV7_dmb): Deleted.
(WTF::armV7_dmb_st): Deleted.
2016-09-14 JF Bastien <jfbastien@apple.com>
Alwasys inline atomic operations
https://bugs.webkit.org/show_bug.cgi?id=155371
Reviewed by Geoffrey Garen.
Fixes "build fails with memory model cannot be stronger than
success memory model for ‘__atomic_compare_exchange’".
Pre-5 revisions of GCC at Os only generated an error message
related to invalid failure memory ordering. The reason is that
libstdc++ tries to be clever about enforcing the C++ standard's
clause [atomics.types.operations.req] ¶21 which states:
Requires: The failure argument shall not be
`memory_order_release` nor `memory_order_acq_rel`. The failure
argument shall be no stronger than the success argument.
It fails at doing this because its inlining heuristics are
modified by Os, and they're not quite as dumb as O0 but not smart
enough to get to the good code at O1. Adding ALWAYS_INLINE fixes
the silliness at Os, leaves O1 great, and makes O0 slightly less
bad but still pretty bad.
The other good news is that I'm going to get this particular
problem fixed in the version of C++ which will come after C++17:
https://github.com/jfbastien/papers/blob/master/source/P0418r1.bs
While we're at it we should always inline all of these wrapped
functions because the generated code is horrendous if the memory
order isn't known at compile time.
* wtf/Atomics.h:
(WTF::Atomic::load):
(WTF::Atomic::store):
(WTF::Atomic::compareExchangeWeak):
(WTF::Atomic::compareExchangeStrong):
(WTF::Atomic::exchangeAndAdd):
(WTF::Atomic::exchange):
2016-09-13 Michael Saboff <msaboff@apple.com>
Promises aren't resolved properly when making a ObjC API callback
https://bugs.webkit.org/show_bug.cgi?id=161929
Reviewed by Geoffrey Garen.
Removed resetCurrentAtomicStringTable() which is no longer referenced.
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::resetCurrentAtomicStringTable): Deleted.
2016-09-13 Alex Christensen <achristensen@webkit.org>
Implement URLSearchParams
https://bugs.webkit.org/show_bug.cgi?id=161920
Reviewed by Chris Dumez.
* wtf/text/StringView.h:
(WTF::StringView::split): Added.
2016-09-12 Filip Pizlo <fpizlo@apple.com>
ParkingLot is going to have a bad time with threads dying
https://bugs.webkit.org/show_bug.cgi?id=161893
Reviewed by Michael Saboff.
If a thread dies right as it falls out of parkConditionally, then unparkOne() and friends
might die because they will dereference a deallocated ThreadData.
The solution is to ref-count ThreadData's. When unparkOne() and friends want to hold onto a
ThreadData past the queue lock, they can use RefPtr<>.
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkOneImpl):
(WTF::ParkingLot::unparkAll):
2016-09-12 Chris Dumez <cdumez@apple.com>
Fix post-landing review comments after r205787
https://bugs.webkit.org/show_bug.cgi?id=161885
Reviewed by Darin Adler.
Add new StringBuilder::append(CFStringRef) / append(NSString*)
overloads to avoid an extra string copy when possible.
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::append):
* wtf/text/StringBuilder.h:
(WTF::StringBuilder::append):
2016-09-12 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] HashTable's rehash is not compatible to Ref<T> and ASan
https://bugs.webkit.org/show_bug.cgi?id=161763
Reviewed by Darin Adler.
Destructors of HashTable's empty values need to be called while ones of deleted values don't.
* wtf/HashTable.h:
(WTF::KeyTraits>::deallocateTable):
* wtf/Ref.h:
2016-09-12 Myles C. Maxfield <mmaxfield@apple.com>
[Cocoa] Reduce uses of CGFonts in favor of CTFonts
https://bugs.webkit.org/show_bug.cgi?id=161809
Reviewed by Daniel Bates.
* wtf/unicode/CharacterNames.h:
2016-09-12 Saam Barati <sbarati@apple.com>
MapHash should do constant folding when it has a constant argument and its legal to hash that value
https://bugs.webkit.org/show_bug.cgi?id=161639
Reviewed by Filip Pizlo.
This patch adds a concurrentHash method to StringImpl. It's
probably safe to get the actual hash while being racy, however,
it's simpler and more future proof to not have to worry about
that and to just compute it on demand. Users of this API should
be aware that it's doing non-trivial work. Currently, the only
user is JSC's JIT compilers, and they only ask for hashes for small-ish
strings.
* wtf/text/StringImpl.h:
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::concurrentHash):
2016-09-11 Filip Pizlo <fpizlo@apple.com>
DFG::forAllKilledOperands() could use a faster bitvector scan in the same-inline-stack fast path
https://bugs.webkit.org/show_bug.cgi?id=161849
Reviewed by Saam Barati.
It turns out that templates make private fields weird. FastBitVectorImpl can't necessarily
touch privates in instances of different template specializations of itself. So, I added a
public method called wordView() that exposes the necessary private field.
* wtf/FastBitVector.h:
(WTF::FastBitVectorImpl::operator&):
(WTF::FastBitVectorImpl::operator|):
(WTF::FastBitVectorImpl::operator~):
(WTF::FastBitVectorImpl::forEachSetBit):
(WTF::FastBitVectorImpl::wordView):
2016-09-11 Filip Pizlo <fpizlo@apple.com>
FastBitVector should have efficient and easy-to-use vector-vector operations
https://bugs.webkit.org/show_bug.cgi?id=161847
Reviewed by Saam Barati.
FastBitVector is a bitvector representation that supports manual dynamic resizing and is
optimized for speed, not space. (BitVector supports automatic dynamic resizing and is
optimized for space, while Bitmap is sized statically and is optimized for both speed and
space.) This change greatly increases the power of FastBitVector. We will use these new
powers for changing the JSC GC to use FastBitVectors to track sets of MarkedBlocks (bug
161581) instead of using a combination of Vectors and doubly-linked lists.
This change splits FastBitVector into two parts:
- A thing that manages the storage of a bitvector: a uint32_t array and a size_t numBits.
We call this the word view.
- A thing that takes some kind of abstract array of uint32_t's and does bitvector
operations to it. We call this the FastBitVectorImpl.
FastBitVectorImpl and word views are immutable. The FastBitVector class is a subclass of
FastBitVectorImpl specialized on a word view that owns its words and has additional
support for mutable operations.
Doing this allows us to efficiently support things like this without any unnecessary
memory allocation or copying:
FastBitVector a, b, c; // Assume that there is code to initialize these.
a &= b | ~c;
Previously, this kind of operation would not be efficient, because "~c" would have to
create a whole new FastBitVector. But now, it just returns a FastBitVectorImpl whose
underlying word view bitnots (~) its words on the fly. Using template magic, this can get
pretty complex. For example "b | ~c" returns a FastBitVectorImpl that wraps a word view
whose implementation of WordView::word(size_t index) is something like:
uint32_t word(size_t index) { return b.m_words.word(index) | ~c.m_words.word(index); }
FastBitVectorImpl supports all of the fast bulk bitvector operations, like
forEachSetBit(), bitCount(), etc. So, when you say "a &= b | ~c", the actual
implementation is going to run these bit operations on word granularity directly over the
storage inside a, b, c.
The use of operator overloading is worth explaining a bit. Previously, FastBitVector
avoided operator overloading. For example, the &= operation was called filter(). I think
that this was a pretty good approach at the time. I tried using non-operator methods in
this FastBitVector rewrite, but I found it very odd to say things like:
a.filter(b.bitOr(c.bitNot()));
I think that it's harder to see what is going on here, then using operators, because infix
notation is always better.
* WTF.xcodeproj/project.pbxproj:
* wtf/BitVector.h:
(WTF::BitVector::findBitInWord): Deleted.
* wtf/CMakeLists.txt:
* wtf/Dominators.h:
(WTF::Dominators::NaiveDominators::NaiveDominators):
(WTF::Dominators::NaiveDominators::dominates):
(WTF::Dominators::NaiveDominators::pruneDominators):
* wtf/FastBitVector.cpp: Removed.
* wtf/FastBitVector.h:
(WTF::fastBitVectorArrayLength):
(WTF::FastBitVectorWordView::FastBitVectorWordView):
(WTF::FastBitVectorWordView::numBits):
(WTF::FastBitVectorWordView::word):
(WTF::FastBitVectorWordOwner::FastBitVectorWordOwner):
(WTF::FastBitVectorWordOwner::~FastBitVectorWordOwner):
(WTF::FastBitVectorWordOwner::view):
(WTF::FastBitVectorWordOwner::operator=):
(WTF::FastBitVectorWordOwner::setAll):
(WTF::FastBitVectorWordOwner::clearAll):
(WTF::FastBitVectorWordOwner::set):
(WTF::FastBitVectorWordOwner::numBits):
(WTF::FastBitVectorWordOwner::arrayLength):
(WTF::FastBitVectorWordOwner::resize):
(WTF::FastBitVectorWordOwner::word):
(WTF::FastBitVectorWordOwner::words):
(WTF::FastBitVectorAndWords::FastBitVectorAndWords):
(WTF::FastBitVectorAndWords::view):
(WTF::FastBitVectorAndWords::numBits):
(WTF::FastBitVectorAndWords::word):
(WTF::FastBitVectorOrWords::FastBitVectorOrWords):
(WTF::FastBitVectorOrWords::view):
(WTF::FastBitVectorOrWords::numBits):
(WTF::FastBitVectorOrWords::word):
(WTF::FastBitVectorNotWords::FastBitVectorNotWords):
(WTF::FastBitVectorNotWords::view):
(WTF::FastBitVectorNotWords::numBits):
(WTF::FastBitVectorNotWords::word):
(WTF::FastBitVectorImpl::FastBitVectorImpl):
(WTF::FastBitVectorImpl::numBits):
(WTF::FastBitVectorImpl::size):
(WTF::FastBitVectorImpl::arrayLength):
(WTF::FastBitVectorImpl::operator==):
(WTF::FastBitVectorImpl::operator!=):
(WTF::FastBitVectorImpl::at):
(WTF::FastBitVectorImpl::operator[]):
(WTF::FastBitVectorImpl::bitCount):
(WTF::FastBitVectorImpl::operator&):
(WTF::FastBitVectorImpl::operator|):
(WTF::FastBitVectorImpl::operator~):
(WTF::FastBitVectorImpl::forEachSetBit):
(WTF::FastBitVectorImpl::forEachClearBit):
(WTF::FastBitVectorImpl::forEachBit):
(WTF::FastBitVectorImpl::findBit):
(WTF::FastBitVectorImpl::findSetBit):
(WTF::FastBitVectorImpl::findClearBit):
(WTF::FastBitVectorImpl::dump):
(WTF::FastBitVectorImpl::atImpl):
(WTF::FastBitVector::FastBitVector):
(WTF::FastBitVector::operator=):
(WTF::FastBitVector::resize):
(WTF::FastBitVector::setAll):
(WTF::FastBitVector::clearAll):
(WTF::FastBitVector::setAndCheck):
(WTF::FastBitVector::operator|=):
(WTF::FastBitVector::operator&=):
(WTF::FastBitVector::at):
(WTF::FastBitVector::operator[]):
(WTF::FastBitVector::BitReference::BitReference):
(WTF::FastBitVector::BitReference::operator bool):
(WTF::FastBitVector::BitReference::operator=):
(WTF::FastBitVector::~FastBitVector): Deleted.
(WTF::FastBitVector::numBits): Deleted.
(WTF::FastBitVector::set): Deleted.
(WTF::FastBitVector::equals): Deleted.
(WTF::FastBitVector::merge): Deleted.
(WTF::FastBitVector::filter): Deleted.
(WTF::FastBitVector::exclude): Deleted.
(WTF::FastBitVector::clear): Deleted.
(WTF::FastBitVector::get): Deleted.
(WTF::FastBitVector::bitCount): Deleted.
(WTF::FastBitVector::forEachSetBit): Deleted.
(WTF::FastBitVector::arrayLength): Deleted.
* wtf/StdLibExtras.h:
(WTF::findBitInWord):
2016-09-10 Chris Dumez <cdumez@apple.com>
parseHTMLInteger() should take a StringView in parameter
https://bugs.webkit.org/show_bug.cgi?id=161669
Reviewed by Ryosuke Niwa.
* wtf/text/StringBuilder.h:
(WTF::StringBuilder::append):
Add StringBuilder::append() overload taking an AtomicString in parameter.
It used to call StringBuilder::append(const String&) implicitly when
passing an AtomicString. However, it is now ambiguous because there
is an overload taking a StringView, and it is now possible to construct
a StringView from an AtomicString.
* wtf/text/StringView.h:
(WTF::StringView::StringView):
- Add StringView constructor taking an AtomicString in parameter for
convenience. This avoids having to call AtomicString::string()
explicitly at call sites.
- Add StringView constructor taking a 'const char*' in parameter for
performance. There are several call sites that were passing a const
char* and implicitly constructing an unnecessary String to construct
a StringView. This became more obvious because the constructor taking
an AtomicString in parameter made such calls ambiguous.
2016-09-09 Mark Lam <mark.lam@apple.com>
Gardening: fixing a few JSC test failures.
https://bugs.webkit.org/show_bug.cgi?id=161760
Not reviewed.
Without this fix, the following tests will crash on a null dereference of isGCThread.
stress/slow-path-generator-updating-current-node-dfg.js.misc-ftl-no-cjit
stress/unshift-array-storage.js.misc-ftl-no-cjit
* wtf/MainThread.cpp:
(WTF::mayBeGCThread):
2016-09-08 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] HashTable's rehash is not compatible to Ref<T> and ASan
https://bugs.webkit.org/show_bug.cgi?id=161763
Reviewed by Mark Lam.
If we move an object, the location which the moved object used should not be touched anymore.
HashTable::rehash performs WTFMove for the object that resides in the old table.
However, after moving it, we accidentally touch this location by using `!isEmptyOrDeletedBucket(table[i])`
in HashTable::deallocateTable. And it causes ASan crashing if we use Ref<> for HashTable's key or value.
In this patch, we call the destructor right after moving the object. And HashTable::rehash just calls
fastFree since all the objects in the old table are already moved and destructed.
And we also change HashTable::deallocate to destruct only live objects. Calling destructors for empty objects
is meaningless. And according to the Ref<>'s comment, empty object is not designed to be destructed.
* wtf/HashTable.h:
(WTF::KeyTraits>::deallocateTable):
2016-09-08 Filip Pizlo <fpizlo@apple.com>
Heap::isMarked() shouldn't pay the price of concurrent lazy flipping
https://bugs.webkit.org/show_bug.cgi?id=161760
Reviewed by Mark Lam.
* wtf/MainThread.cpp:
(WTF::isMainThreadOrGCThread):
(WTF::mayBeGCThread):
* wtf/MainThread.h:
2016-09-08 Myles C. Maxfield <mmaxfield@apple.com>
Support new emoji group candidates
https://bugs.webkit.org/show_bug.cgi?id=161664
<rdar://problem/24802695>
<rdar://problem/27666433>
Reviewed by Simon Fraser.
Update breaking rules.
* wtf/text/TextBreakIterator.cpp:
(WTF::cursorMovementIterator):
2016-09-07 JF Bastien <jfbastien@apple.com>
bitwise_cast: allow const destination type
https://bugs.webkit.org/show_bug.cgi?id=161719
Reviewed by Saam Barati.
* wtf/StdLibExtras.h:
(WTF::bitwise_cast): allow `const To to = bitwise_cast<const To>(from);`
2016-09-07 Mark Lam <mark.lam@apple.com>
Add CatchScope and force all exception checks to be via ThrowScope or CatchScope.
https://bugs.webkit.org/show_bug.cgi?id=161498
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
2016-09-07 Youenn Fablet <youenn@apple.com>
[Streams API] Separate compile flag for ReadableStream and WritableStream
https://bugs.webkit.org/show_bug.cgi?id=161044
Reviewed by Alex Christensen.
* wtf/FeatureDefines.h:
2016-09-06 Saam Barati <sbarati@apple.com>
Make JSMap and JSSet faster
https://bugs.webkit.org/show_bug.cgi?id=160989
Reviewed by Filip Pizlo.
I made s_flagCount public in StringImpl since JSC's JITs now use this field.
* wtf/text/StringImpl.h:
2016-09-06 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r205504.
https://bugs.webkit.org/show_bug.cgi?id=161645
Broke the iOS device build (Requested by ryanhaddad on
#webkit).
Reverted changeset:
"Make JSMap and JSSet faster"
https://bugs.webkit.org/show_bug.cgi?id=160989
http://trac.webkit.org/changeset/205504
2016-09-06 Saam Barati <sbarati@apple.com>
Make JSMap and JSSet faster
https://bugs.webkit.org/show_bug.cgi?id=160989
Reviewed by Filip Pizlo.
I made s_flagCount public since JSC's JITs now use this field.
* wtf/text/StringImpl.h:
2016-09-06 Per Arne Vollan <pvollan@apple.com>
[Win] Enable strict runtime stack buffer checks.
https://bugs.webkit.org/show_bug.cgi?id=161629
Reviewed by Brent Fulgham.
* wtf/Platform.h:
2016-09-06 Daniel Bates <dabates@apple.com>
Remove EXTERN_C from WTF
https://bugs.webkit.org/show_bug.cgi?id=161090
Reviewed by Brent Fulgham.
Guard external C declarations in WTF_EXTERN_C_BEGIN, WTF_EXTERN_C_END.
* wtf/Compiler.h: Remove macro definition EXTERN_C.
* wtf/spi/cf/CFBundleSPI.h:
* wtf/spi/cocoa/NSMapTableSPI.h:
* wtf/spi/cocoa/SecuritySPI.h:
* wtf/spi/darwin/CommonCryptoSPI.h:
* wtf/spi/darwin/SandboxSPI.h:
* wtf/spi/darwin/XPCSPI.h:
* wtf/spi/darwin/dyldSPI.h:
2016-08-31 Filip Pizlo <fpizlo@apple.com>
Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression
https://bugs.webkit.org/show_bug.cgi?id=160125
Reviewed by Geoffrey Garen and Keith Miller.
I needed tryFastAlignedMalloc() so I added it.
* wtf/FastMalloc.cpp:
(WTF::tryFastAlignedMalloc):
* wtf/FastMalloc.h:
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::forEachImpl):
(WTF::ParkingLot::forEach): Deleted.
* wtf/ParkingLot.h:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::forEach):
* wtf/ScopedLambda.h:
(WTF::scopedLambdaRef):
* wtf/SentinelLinkedList.h:
(WTF::SentinelLinkedList::forEach):
(WTF::RawNode>::takeFrom):
* wtf/SimpleStats.h:
(WTF::SimpleStats::operator bool):
(WTF::SimpleStats::operator!): Deleted.
2016-09-02 JF Bastien <jfbastien@apple.com>
bitwise_cast infinite loops if called from the default constructor in ToType
https://bugs.webkit.org/show_bug.cgi?id=161365
Reviewed by Saam Barati.
* wtf/StdLibExtras.h:
(WTF::bitwise_cast): use aggregate initialization to avoid ctor
2016-09-01 Anders Carlsson <andersca@apple.com>
Use BlockPtr::fromCallable in WorkQueue::dispatch and WorkQueue::dispatchAfter
https://bugs.webkit.org/show_bug.cgi?id=161512
Reviewed by Chris Dumez.
This lets us get rid of leakCallable and adoptCallable.
* wtf/BlockPtr.h:
* wtf/Function.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
2016-09-01 Anders Carlsson <andersca@apple.com>
add BlockPtr::fromCallable
https://bugs.webkit.org/show_bug.cgi?id=161504
Reviewed by Tim Horton.
BlockPtr::fromCallable lets you create an Objective-C block from any callable object - including lambdas that contain move-only types.
The block will be allocated on the heap so it doesn't ever need to be copied (which is how it can work with move-only types).
* wtf/BlockPtr.h:
2016-08-31 Keith Rollin <krollin@apple.com>
WebKit should set a subsystem for os_log so it's easier to filter for WebKit log messages
https://bugs.webkit.org/show_bug.cgi?id=160969
<rdar://problem/26068734>
Reviewed by Simon Fraser.
Add support for attaching a subsystem and category when logging via
the RELEASE_LOG macros. This support is provided by adding subsystem
and category information to WTFLogChannel. An os_log_t object is then
created to enacpsulate that information. When using RELEASE_LOG to log
through that channel, the associated log object is used when calling
os_log.
To help support the inclusion of the subsystem and category
information in WTFLogChannel, the DECLARE_LOG_CHANNEL,
DEFINE_LOG_CHANNEL, and LOG_CHANNEL_ADDRESS macros that were defined
in various modules are consolidated and moved to Assertions.h.
DEFINE_LOG_CHANNEL is now defined to initialize the subsystem and
category.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/RefCountedLeakCounter.cpp:
2016-08-31 Alex Christensen <achristensen@webkit.org>
Implement IPv6 parsing in URLParser
https://bugs.webkit.org/show_bug.cgi?id=161390
Reviewed by Darin Adler.
* wtf/ASCIICType.h:
(WTF::lowerNibbleToLowercaseASCIIHexDigit):
(WTF::upperNibbleToLowercaseASCIIHexDigit):
2016-08-30 Brady Eidson <beidson@apple.com>
GameController.framework backend for gamepad API.
https://bugs.webkit.org/show_bug.cgi?id=161086
Reviewed by Alex Christensen.
* wtf/RunLoop.h:
(WTF::RunLoop::TimerBase::startOneShot):
2016-08-30 Mark Lam <mark.lam@apple.com>
Introduce the ThrowScope and force every throw site to instantiate a ThrowScope.
https://bugs.webkit.org/show_bug.cgi?id=161171
Reviewed by Filip Pizlo and Geoffrey Garen.
* wtf/Platform.h:
- Introduced the ENABLE(THROW_SCOPE_VERIFICATION) flag.
2016-08-27 Alex Christensen <achristensen@webkit.org>
URLParser should parse relative URLs
https://bugs.webkit.org/show_bug.cgi?id=161282
Reviewed by Darin Adler.
* wtf/text/StringView.h:
Use a std::reference_wrapper for the StringView& to make it reassignable so we can add an operator=.
2016-08-26 JF Bastien <jfbastien@apple.com>
bitwise_cast uses inactive member of union
https://bugs.webkit.org/show_bug.cgi?id=161244
Reviewed by Benjamin Poulain.
* wtf/Compiler.h:
Add COMPILER_HAS_CLANG_FEATURE
* wtf/StdLibExtras.h:
(WTF::bitwise_cast):
Fix C++ UB, add trivially-copyable check.
bitwise_cast stores into a union with one type and reads with
another, which is technically C++ undefined behavior because it's
accessing the wrong active member of the union. The better way to
do this is through memcpy, which compilers optimize as well
because it's known-size in known-not-to-escape storage (for small
types they'll inline and then convert stack memory access to SSA
values which may be in-register if that makes sense, which would
be a move between int/FP registers at worst).
The C++ Standard's section [basic.types] explicitly blesses memcpy:
For any trivially copyable type T, if two pointers to T point to
distinct T objects obj1 and obj2, where neither obj1 nor obj2 is a
base-class subobject, if the underlying bytes (1.7) making up obj1
are copied into obj2, 42 obj2 shall subsequently hold the same
value as obj1.
[Example:
T* t1p;
T* t2p;
// provided that t2p points to an initialized object ...
std::memcpy(t1p, t2p, sizeof(T));
// at this point, every subobject of trivially copyable type in *t1p contains
// the same value as the corresponding subobject in *t2p
— end example ]
Whereas section [class.union] says:
In a union, at most one of the non-static data members can be
active at any time, that is, the value of at most one of the
non-static data members can be stored in a union at any time.
While we're at it, checking that sizeof(To) == sizeof(From) is
good, but we should also check that both types are trivially
copyable (can have a ctor, no dtor, and copy is defaulted as if by
memcpy for type and all subtypes). Unfortunately that trait isn't
implemented consistently in all recent compiler+stdlib
implementations, but recent clang has an equivalent builtin
(other compilers simply won't do the check, and will break on bots
with the right compilers which is better than the current silent
breakage). This builtin hack also avoids #include <type_traits>
which really doesn't save much.
2016-08-26 Johan K. Jensen <johan_jensen@apple.com>
Web Inspector: Frontend should have access to Resource Timing information
https://bugs.webkit.org/show_bug.cgi?id=160095
Reviewed by Alex Christensen.
Add method to get elapsed time for any monotonic time.
Used by InspectorNetworkAgent.
* wtf/Stopwatch.h:
(WTF::Stopwatch::elapsedTimeSinceMonotonicTime):
2016-08-26 Csaba Osztrogonác <ossy@webkit.org>
Fix the ENABLE(WEBASSEMBLY) build on Linux
https://bugs.webkit.org/show_bug.cgi?id=161197
Reviewed by Mark Lam.
* wtf/Platform.h:
2016-08-25 Yusuke Suzuki <utatane.tea@gmail.com>
[DFG][FTL] Implement ES6 Generators in DFG / FTL
https://bugs.webkit.org/show_bug.cgi?id=152723
Reviewed by Filip Pizlo.
* wtf/FastBitVector.h:
(WTF::FastBitVector::FastBitVector):
2016-08-25 JF Bastien <jfbastien@apple.com>
TryGetById should have a ValueProfile so that it can predict its output type
https://bugs.webkit.org/show_bug.cgi?id=160921
Reviewed by Saam Barati.
Add WTF_CONCAT to StdLibExtras.h
* wtf/StdLibExtras.h:
2016-08-25 Johan K. Jensen <johan_jensen@apple.com>
Don't store networkLoadTiming in the disk cache
https://bugs.webkit.org/show_bug.cgi?id=161161
Reviewed by Antti Koivisto.
* wtf/Forward.h:
Remove Encode and Decode forward declarations.
2016-08-24 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC] Move generic data structures out of B3
https://bugs.webkit.org/show_bug.cgi?id=161155
Reviewed by Saam Barati.
Add IndexSet, IndexMap, and IndexedContainerIterator.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/IndexMap.h: Copied from Source/JavaScriptCore/b3/B3IndexMap.h.
(WTF::IndexMap::IndexMap):
(WTF::IndexMap::resize):
(WTF::IndexMap::clear):
(WTF::IndexMap::size):
(WTF::IndexMap::operator[]):
* wtf/IndexSet.h: Renamed from Source/JavaScriptCore/b3/B3IndexSet.h.
(WTF::IndexSet::IndexSet):
(WTF::IndexSet::add):
(WTF::IndexSet::addAll):
(WTF::IndexSet::remove):
(WTF::IndexSet::contains):
(WTF::IndexSet::size):
(WTF::IndexSet::isEmpty):
(WTF::IndexSet::Iterable::Iterable):
(WTF::IndexSet::Iterable::iterator::iterator):
(WTF::IndexSet::Iterable::iterator::operator*):
(WTF::IndexSet::Iterable::iterator::operator++):
(WTF::IndexSet::Iterable::iterator::operator==):
(WTF::IndexSet::Iterable::iterator::operator!=):
(WTF::IndexSet::Iterable::begin):
(WTF::IndexSet::Iterable::end):
(WTF::IndexSet::values):
(WTF::IndexSet::indices):
(WTF::IndexSet::dump):
* wtf/IndexedContainerIterator.h: Renamed from Source/JavaScriptCore/b3/B3IndexMap.h.
(WTF::IndexedContainerIterator::IndexedContainerIterator):
(WTF::IndexedContainerIterator::operator++):
(WTF::IndexedContainerIterator::operator==):
(WTF::IndexedContainerIterator::operator!=):
(WTF::IndexedContainerIterator::findNext):
2016-08-24 Andreas Kling <akling@apple.com>
Add WTF::isFastMallocEnabled().
<https://webkit.org/b/160534>
Reviewed by Joseph Pecoraro.
* wtf/FastMalloc.cpp:
(WTF::isFastMallocEnabled):
* wtf/FastMalloc.h:
2016-08-23 Anders Carlsson <andersca@apple.com>
Add enum traits and use them in the IPC::Decoder
https://bugs.webkit.org/show_bug.cgi?id=161103
Reviewed by Sam Weinig.
Add EnumTraits.h which provides a forward declaration for WTF::EnumTraits as well as
the WTF::isValidEnum function.
* WTF.xcodeproj/project.pbxproj:
* wtf/EnumTraits.h: Added.
2016-08-24 Filip Pizlo <fpizlo@apple.com>
Unreviewed, roll out r204901, r204897, r204866, r204856, r204854.
* wtf/FastMalloc.cpp:
(WTF::tryFastAlignedMalloc): Deleted.
* wtf/FastMalloc.h:
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::forEach):
(WTF::ParkingLot::forEachImpl): Deleted.
* wtf/ParkingLot.h:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::forEach): Deleted.
* wtf/ScopedLambda.h:
(WTF::scopedLambdaRef): Deleted.
2016-08-22 Filip Pizlo <fpizlo@apple.com>
Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression
https://bugs.webkit.org/show_bug.cgi?id=160125
Reviewed by Geoffrey Garen.
I needed tryFastAlignedMalloc() so I added it.
* wtf/FastMalloc.cpp:
(WTF::fastAlignedMalloc):
(WTF::tryFastAlignedMalloc):
(WTF::fastAlignedFree):
* wtf/FastMalloc.h:
2016-08-22 Keith Miller <keith_miller@apple.com>
Actually enable the WASM build.
https://bugs.webkit.org/show_bug.cgi?id=160933
Reviewed by Geoffrey Garen.
* wtf/FeatureDefines.h:
2016-08-17 Don Olmstead <don.olmstead@am.sony.com>
Use find_library within Windows build
https://bugs.webkit.org/show_bug.cgi?id=160904
Reviewed by Brent Fulgham.
* wtf/CMakeLists.txt:
2016-08-17 Anders Carlsson <andersca@apple.com>
Move WKSignedPublicKeyAndChallengeString into WebCore and make it proper C++
https://bugs.webkit.org/show_bug.cgi?id=160945
Reviewed by Dan Bernstein.
* wtf/RetainPtr.h:
(WTF::RetainPtr::operator&):
Cast this to the right type.
* wtf/spi/cocoa/SecuritySPI.h:
Add new SPI.
2016-08-17 Antti Koivisto <antti@apple.com>
Remove CSS_IMAGE_SET feature define
https://bugs.webkit.org/show_bug.cgi?id=160944
Reviewed by Dean Jackson.
* wtf/FeatureDefines.h:
2016-08-16 Keith Miller <keith_miller@apple.com>
Enable WebAssembly in the build.
https://bugs.webkit.org/show_bug.cgi?id=160916
Reviewed by Benjamin Poulain.
This patch turns on WebAssembly on all the platforms that support B3.
Turning on WebAssembly by default lets us check the build on every
platform.
* wtf/FeatureDefines.h:
2016-08-16 Anders Carlsson <andersca@apple.com>
Fix a thinko.
* wtf/Scope.h:
2016-08-16 Anders Carlsson <andersca@apple.com>
Add WTF::ScopeExit
https://bugs.webkit.org/show_bug.cgi?id=160908
Reviewed by Geoffrey Garen.
WTF::ScopeExit and WTF::makeScopeExit let you define an object that will invoke a function when the
object goes out of scope. This is going to be used to avoid spagetti-code and gotos in a future patch.
The class is modeled after the LWG paper "P0052 - Generic Scope Guard and RAII Wrapper for the Standard Library".
* WTF.xcodeproj/project.pbxproj:
* wtf/Scope.h: Added.
(WTF::makeScopeExit):
2016-08-15 Anders Carlsson <andersca@apple.com>
Add an address-of operator to RetainPtr
https://bugs.webkit.org/show_bug.cgi?id=160879
Reviewed by Tim Horton.
This will make some security-related code from WebKitSystemInterface easier to port.
* wtf/HashIterators.h:
(WTF::HashTableValuesIterator::get):
* wtf/HashTable.h:
(WTF::HashTableBucketInitializer<true>::initialize):
Use std::addressof instead of &, in case & is overloaded.
* wtf/RetainPtr.h:
(WTF::RetainPtr::operator&):
Implement this.
2016-08-15 Sam Weinig <sam@webkit.org>
Speed up compile times by not including wtf/Variant.h so much
https://bugs.webkit.org/show_bug.cgi?id=160847
Reviewed by Alex Christensen and Saam Barati.
* wtf/Forward.h:
Add forward declaration of std::variant.
* wtf/StdLibExtras.h:
Remove references to std::variant. Move them to wtf/Variant.h
2016-08-15 Keith Miller <keith_miller@apple.com>
Implement WASM Parser and B3 IR generator
https://bugs.webkit.org/show_bug.cgi?id=160681
Reviewed by Benjamin Poulain.
* wtf/DataLog.h:
(WTF::dataLogLn): Add a new dataLog function, dataLogLn that
automagically includes a new line at the end of the print.
* wtf/LEBDecoder.h:
(decodeUInt32):
(decodeInt32): Change the LEBDecoder to take a pointer and length
rather than a Vector.
2016-08-15 Keith Rollin <krollin@apple.com>
Rename LOG_ALWAYS
https://bugs.webkit.org/show_bug.cgi?id=160768
Rename LOG_ALWAYS and friends, given that the first parameter to it is
a boolean expression that determines whether or not logging should be
performed.
Reviewed by Chris Dumez.
* wtf/Assertions.h:
2016-08-15 Joseph Pecoraro <pecoraro@apple.com>
Remove unused includes of wtf headers
https://bugs.webkit.org/show_bug.cgi?id=160839
Reviewed by Alex Christensen.
* wtf/BackwardsGraph.h:
* wtf/DataLog.cpp:
* wtf/WorkQueue.cpp:
* wtf/text/StringImpl.cpp:
* wtf/unicode/icu/CollatorICU.cpp:
2016-08-14 Daniel Bates <dabates@apple.com>
Fix compiler errors when building iOS WebKit using the iOS 10 beta SDK
https://bugs.webkit.org/show_bug.cgi?id=160725
Reviewed by Sam Weinig.
For now, disable OS_LOG when building with the iOS 10 beta SDK until
we have the fix for <rdar://problem/27758343>.
* wtf/Platform.h:
2016-08-13 Dan Bernstein <mitz@apple.com>
Build fix follow-up to r204433.
* wtf/StdLibExtras.h:
(WTF::makeVisitor): Don’t use an auto return type.
2016-08-12 Sam Weinig <sam@webkit.org>
Make variant only available when compiling for C++14 or greater
https://bugs.webkit.org/show_bug.cgi?id=160813
Reviewed by Anders Carlsson.
* wtf/Compiler.h:
* wtf/StdLibExtras.h:
* wtf/Variant.h:
2016-08-11 Maureen Daum <mdaum@apple.com>
Add NSButtonType to AppKitCompatibilityDeclarations.h.
https://bugs.webkit.org/show_bug.cgi?id=160767.
Reviewed by Dan Bernstein.
Add NSButtonType to AppKitCompatibilityDeclarations.h so that we can use the new
names but still build successfully on older OS versions.
* wtf/mac/AppKitCompatibilityDeclarations.h:
2016-08-10 Benjamin Poulain <bpoulain@apple.com>
[JSC] TinyPtrSet::deleteListIfNecessary() no longer needs to test for reservedValue
https://bugs.webkit.org/show_bug.cgi?id=160721
Reviewed by Sam Weinig.
Previously, TinyPtrSet was using a ThinFlag if there was no OutOfLineList.
A side effect is that isThin() was false for reservedValue. When deleting
the list, we had to consider both cases: isThin() and reservedValue.
In r204065, I changed the flag to a FatFlag to ensure TinyPtrSet can be initialized
with bzero().
This changes the value of isThin() of reservedValue to true since reservedValue
does not have the FatFlag bit set.
This patch removes the useless condition from deleteListIfNecessary().
* wtf/TinyPtrSet.h:
(WTF::TinyPtrSet::deleteListIfNecessary):
2016-08-09 Sam Weinig <sam@webkit.org>
Fix windows build.
* wtf/Variant.h:
(std::experimental::__visit_helper2::__visit):
MSVC does not support extended constexpr. Use a ternary operator instead of an if statement.
2016-08-06 Sam Weinig <sam@webkit.org>
Replace NodeOrString with std::variant<RefPtr<Node>, String>
https://bugs.webkit.org/show_bug.cgi?id=160638
Reviewed by Anders Carlsson.
* wtf/StdLibExtras.h:
(WTF::Visitor::Visitor):
(WTF::makeVisitor):
Add WTF::makeVisitor() which takes a list of lambdas to use
an an overload set for a visitor object.
Also, re-export std::experimental::variant (and helpers) in the std
namespace using type aliasing.
* wtf/Variant.h:
Make std::experimental::variant work in WebCore.
2016-08-06 Sam Weinig <sam@webkit.org>
WTF needs a variant implementation
https://bugs.webkit.org/show_bug.cgi?id=160618
Reviewed by Darin Adler.
Add an implementation of std::experimental::variant matching the C++17 draft http://wg21.link/n4606
taken from https://bitbucket.org/anthonyw/variant/src (5bce47fa788648f79e5ea1d77b0eef2e8f0b2999) and
modified to support compiling without exceptions (where it used to throw, we lovingly CRASH()).
* WTF.xcodeproj/project.pbxproj:
Add new file.
* wtf/Compiler.h:
Add COMPILER_SUPPORTS define for C++ exceptions.
* wtf/Variant.h: Added.
2016-08-05 Keith Miller <keith_miller@apple.com>
Add LEBDecoder and tests
https://bugs.webkit.org/show_bug.cgi?id=160625
Reviewed by Benjamin Poulain.
Adds some LEB decoder functions to WTF. These are used in the
WASM spec to encode numbers in a semi-compressed format.
* WTF.xcodeproj/project.pbxproj:
* wtf/LEBDecoder.h: Added.
(decodeUInt32):
(decodeInt32):
2016-08-05 Keith Miller <keith_miller@apple.com>
Delete out of date WASM code.
https://bugs.webkit.org/show_bug.cgi?id=160603
Reviewed by Saam Barati.
Add Feature define for WebAssembly on mac.
* wtf/FeatureDefines.h:
2016-08-03 Csaba Osztrogonác <ossy@webkit.org>
Lacking support on a arm-traditional disassembler.
https://bugs.webkit.org/show_bug.cgi?id=123717
Reviewed by Mark Lam.
* wtf/Platform.h:
2016-08-02 Myles C. Maxfield <mmaxfield@apple.com>
Update breaking rules to match ICU 57
https://bugs.webkit.org/show_bug.cgi?id=160488
<rdar://problem/25856238>
Reviewed by Darin Adler.
This patch fixes a typo in the uax14AssignmentsAfter rules which
was causing flag emoji to have line breaking opportunities in their
middles. It also fixes significant language issues for languages
such as Hebrew, and adds correct breaking opportunities around
hyphens.
* wtf/text/TextBreakIterator.cpp:
(WTF::cursorMovementIterator):
(WTF::uax14AssignmentsAfter):
(WTF::uax14Forward):
(WTF::uax14Reverse):
2016-08-02 Benjamin Poulain <benjamin@webkit.org>
[JSC] Simplify the initialization of AbstractValue in the AbstractInterpreter
https://bugs.webkit.org/show_bug.cgi?id=160370
Reviewed by Saam Barati.
* wtf/TinyPtrSet.h:
(WTF::TinyPtrSet::isThin):
(WTF::TinyPtrSet::set):
2016-08-02 Benjamin Poulain <bpoulain@apple.com>
Clean up some useless AtomicString atoms
https://bugs.webkit.org/show_bug.cgi?id=160471
Reviewed by Geoffrey Garen.
* wtf/text/AtomicString.h:
* wtf/text/StringStatics.cpp:
(WTF::AtomicString::init): Deleted.
2016-08-01 Benjamin Poulain <bpoulain@apple.com>
[JSC][ARM64] Fix branchTest32/64 taking an immediate as mask
https://bugs.webkit.org/show_bug.cgi?id=160439
Reviewed by Filip Pizlo.
* wtf/MathExtras.h:
(getLSBSet):
This was not working at all for MacroAssembler.
Since TrustedImm32/64 are signed integers, the arithmetic shift would
never get rid of the top bit and we get an infinite loop.
2016-07-29 Mark Lam <mark.lam@apple.com>
Make StringView capable of being passed or returned in only 2 registers.
https://bugs.webkit.org/show_bug.cgi?id=160344
Reviewed by Geoffrey Garen.
We just need to #if out copy and move constructors and assignment operators.
After this change, the following test code:
JS_EXPORT_PRIVATE StringView returnStringView(StringView sv)
{
return sv;
}
... compiles to the following for x86_64:
__ZN3JSC16returnStringViewEN3WTF10StringViewE:
000000000093fb20 pushq %rbp
000000000093fb21 movq %rsp, %rbp
000000000093fb24 movq %rdi, %rax // Copy from arg word 0 to ret word 0.
000000000093fb27 movq %rsi, %rdx // Copy from arg word 1 to ret word 1.
000000000093fb2a popq %rbp
000000000093fb2b retq
... and this for arm64:
__ZN3JSC16returnStringViewEN3WTF10StringViewE:
0000000000818504 ret // arg word 0 and 1 are in the same regs as ret word 0 and 1.
* wtf/text/StringView.h:
(WTF::StringView::StringView):
(WTF::StringView::~StringView):
(WTF::StringView::operator=):
2016-07-29 Csaba Osztrogonác <ossy@webkit.org>
Remove PassRef.h after r177259
https://bugs.webkit.org/show_bug.cgi?id=160348
Reviewed by Andreas Kling.
* wtf/PassRef.h: Removed.
2016-07-28 Mark Lam <mark.lam@apple.com>
StringView should have an explicit m_is8Bit field.
https://bugs.webkit.org/show_bug.cgi?id=160282
<rdar://problem/27327943>
Reviewed by Benjamin Poulain.
The current implementation reserves 1 bit in the 32-bit m_length field as an
is16Bit flag. As a result, a StringView is incapable of handling strings that
have a length of 32-bit in size. This results in a mismatch with the
expectations of String, StringImpl, and JavaScriptCore's JSString which all
support a 32-bit unsigned length.
This patch fixes this issue by introducing an explicit m_is8Bit field, thereby
allowing m_length to be a full 32-bit again.
We also introduced a clear() convenience method to set the fields of StringView
to empty values. Previously, we were duplicating the code for clearing those
fields. We now call clear() in all those places instead.
Note: in clear(), we set m_is8Bit to true because we want an empty StringView
to be 8-bit rather than 16-bit. This is consistent with what the empty() method
returns.
* wtf/text/StringView.h:
(WTF::StringView::setUnderlyingString):
(WTF::StringView::StringView):
(WTF::StringView::operator=):
(WTF::StringView::initialize):
(WTF::StringView::clear):
(WTF::StringView::empty):
(WTF::StringView::length):
(WTF::StringView::operator bool):
(WTF::StringView::is8Bit):
(WTF::StringView::substring):
(WTF::StringView::getCharactersWithUpconvert):
(WTF::StringView::toString):
(WTF::StringView::toAtomicString):
(WTF::StringView::toFloat):
(WTF::StringView::toInt):
(WTF::StringView::toIntStrict):
(WTF::StringView::toStringWithoutCopying):
(WTF::StringView::find):
2016-07-24 Filip Pizlo <fpizlo@apple.com>
B3 should support multiple entrypoints
https://bugs.webkit.org/show_bug.cgi?id=159391
Reviewed by Saam Barati.
* wtf/GraphNodeWorklist.h: Expose some handy functionality.
(WTF::GraphNodeWorklist::pop):
(WTF::GraphNodeWorklist::saw):
(WTF::GraphNodeWorklist::seen):
* wtf/VectorTraits.h: Fix a bug! Otherwise filling a vector of byte-sized enum classes doesn't work.
2016-07-21 Myles C. Maxfield <mmaxfield@apple.com>
[macOS] Caret placement occurs in the middle of new emoji group candidates
https://bugs.webkit.org/show_bug.cgi?id=160008
<rdar://problem/27430111>
Reviewed by Simon Fraser.
r203330 added support for new emoji group candidates. This patch updates the rules
governing caret placement around these new emoji groups.
* wtf/text/TextBreakIterator.cpp:
(WTF::cursorMovementIterator):
2016-07-20 Rajeev Misra <rajeevmisraforapple@gmail.com>
Remove unnecessary if check from ParkingLot.cpp
https://bugs.webkit.org/show_bug.cgi?id=159961
Reviewed by Alex Christensen.
A good practice is to have as less conditional statement
or special cases as possible in code. This change
simply removes a unnecessary "if" statement for
condition which was already evaluated by switch/case
and thus there was no need to evaluate again.
* wtf/ParkingLot.cpp:
2016-07-18 Anders Carlsson <andersca@apple.com>
WebKit nightly fails to build on macOS Sierra
https://bugs.webkit.org/show_bug.cgi?id=159902
rdar://problem/27365672
Reviewed by Tim Horton.
* icu/unicode/ucurr.h: Added.
Add ucurr.h from ICU.
2016-07-18 Michael Saboff <msaboff@apple.com>
ASSERTION FAILED: : (year >= 1970 && yearday >= 0) || (year < 1970 && yearday < 0) -- WTF/wtf/DateMath.cpp
https://bugs.webkit.org/show_bug.cgi?id=159883
Reviewed by Filip Pizlo.
The function daysFrom1970ToYear() takes an integer year and returns a double result.
The calculation uses 1970 as a baseline year and subtracts 1970 from the argument year.
It does that subtraction using integer arithmetic, which given negative years close to
INT_MIN can underflow as a result of subtracting 1970. Since we want a double result,
the fix is to cast year as a double before the subtraction, which eliminates the underflow.
* wtf/DateMath.cpp:
(WTF::daysFrom1970ToYear):
2016-07-17 Filip Pizlo <fpizlo@apple.com>
RegisterSet should use a Bitmap instead of a BitVector so that it never allocates memory and is trivial to copy
https://bugs.webkit.org/show_bug.cgi?id=159863
Reviewed by Saam Barati.
Give Bitmap all of the power of BitVector (except for automatic resizing). This means a
variant of set() that takes a bool, and a bunch of helper methods (merge, filter, exclude,
forEachSetBit, ==, !=, and hash).
* wtf/Bitmap.h:
(WTF::WordType>::set):
(WTF::WordType>::testAndSet):
(WTF::WordType>::isFull):
(WTF::WordType>::merge):
(WTF::WordType>::filter):
(WTF::WordType>::exclude):
(WTF::WordType>::forEachSetBit):
(WTF::=):
(WTF::WordType>::hash):
2016-07-02 Filip Pizlo <fpizlo@apple.com>
WTF::Lock should be fair eventually
https://bugs.webkit.org/show_bug.cgi?id=159384
Reviewed by Geoffrey Garen.
In https://webkit.org/blog/6161/locking-in-webkit/ we showed how relaxing the fairness of
locks makes them fast. That post presented lock fairness as a trade-off between two
extremes:
- Barging. A barging lock, like WTF::Lock, releases the lock in unlock() even if there was a
thread on the queue. If there was a thread on the queue, the lock is released and that
thread is made runnable. That thread may then grab the lock, or some other thread may grab
the lock first (it may barge). Usually, the barging thread is the thread that released the
lock in the first place. This maximizes throughput but hurts fairness. There is no good
theoretical bound on how unfair the lock may become, but empirical data suggests that it's
fair enough for the cases we previously measured.
- FIFO. A FIFO lock, like HandoffLock in ToyLocks.h, does not release the lock in unlock()
if there is a thread waiting. If there is a thread waiting, unlock() will make that thread
runnable and inform it that it now holds the lock. This ensures perfect round-robin
fairness and allows us to reason theoretically about how long it may take for a thread to
grab the lock. For example, if we know that only N threads are running and each one may
contend on a critical section, and each one may hold the lock for at most S seconds, then
the time it takes to grab the lock is N * S. Unfortunately, FIFO locks perform very badly
in most cases. This is because for the common case of short critical sections, they force
a context switch after each critical section if the lock is contended.
This change makes WTF::Lock almost as fair as FIFO while still being as fast as barging.
Thanks to this new algorithm, you can now have both of these things at the same time.
This change makes WTF::Lock eventually fair. We can almost (more on the caveats below)
guarantee that the time it takes to grab a lock is N * max(1ms, S). In other words, critical
sections that are longer than 1ms are always fair. For shorter critical sections, the amount
of time that any thread waits is 1ms times the number of threads. There are some caveats
that arise from our use of randomness, but even then, in the limit as the critical section
length goes to infinity, the lock becomes fair. The corner cases are unlikely to happen; our
experiments show that the lock becomes exactly as fair as a FIFO lock for any critical
section that is 1ms or longer.
The fairness mechanism is broken into two parts. WTF::Lock can now choose to unlock a lock
fairly or unfairly thanks to the new ParkingLot token mechanism. WTF::Lock knows when to use
fair unlocking based on a timeout mechanism in ParkingLot called timeToBeFair.
ParkingLot::unparkOne() and ParkingLot::parkConditionally() can now communicate with each
other via a token. unparkOne() can pass a token, which parkConditionally() will return. This
change also makes parkConditionally() a lot more precise about when it was unparked due to a
call to unparkOne(). If unparkOne() is told that a thread was unparked then this thread is
guaranteed to report that it was unparked rather than timing out, and that thread is
guaranteed to get the token that unparkOne() passed. The token is an intptr_t. We use it as
a boolean variable in WTF::Lock, but you could use it to pass arbitrary data structures. By
default, the token is zero. WTF::Lock's unlock() will pass 1 as the token if it is doing
fair unlocking. In that case, unlock() will not release the lock, and lock() will know that
it holds the lock as soon as parkConditionally() returns. Note that this algorithm relies
on unparkOne() invoking WTF::Lock's callback while the queue lock is held, so that WTF::Lock
can make a decision about unlock strategy and inject a token while it has complete knowledge
over the state of the queue. As such, it's not immediately obvious how to implement this
algorithm on top of futexes. You really need ParkingLot!
WTF::Lock does not use fair unlocking every time. We expose a new API, Lock::unlockFairly(),
which forces the fair unlocking behavior. Additionally, ParkingLot now maintains a
per-bucket stochastic fairness timeout. When the timeout fires, the unparkOne() callback
sees UnparkResult::timeToBeFair = true. This timeout is set to be anywhere from 0ms to 1ms
at random. When a dequeue happens and there are threads that actually get dequeued, we check
if the time since the last unfair unlock (the last time timeToBeFair was set to true) is
more than the timeout amount. If so, then we set timeToBeFair to true and reset the timeout.
This means that in the absence of ParkingLot collisions, unfair unlocking is guaranteed to
happen at least once per millisecond. It will happen at 2 KHz on average. If there are
collisions, then each collision adds one millisecond to the worst case (and 0.5 ms to the
average case). The reason why we don't just use a fixed 1ms timeout is that we want to avoid
resonance. Imagine a program in which some thread acquires a lock at 1 KHz in-phase with the
timeToBeFair timeout. Then this thread would be the benefactor of fairness to the detriment
of everyone else. Randomness ensures that we aren't too fair to any one thread.
Empirically, this is neutral on our major benchmarks like JetStream but it's an enormous
improvement in LockFairnessTest. It's common for an unfair lock (either our BargingLock, the
old WTF::Lock, any of the other futex-based locks that barge, or new os_unfair_lock) to
allow only one thread to hold the lock during a whole second in which each thread is holding
the lock for 1ms at a time. This is because in a barging lock, releasing a lock after
holding it for 1ms and then reacquiring it immediately virtually ensures that none of the
other threads can wake up in time to grab it before it's relocked. But the new WTF::Lock
handles this case like a champ: each thread gets equal turns.
Here's some data. If we launch 10 threads and have each of them run for 1 second while
repeatedly holding a critical section for 1ms, then here's how many times each thread gets
to hold the lock using the old WTF::Lock algorithm:
799, 6, 1, 1, 1, 1, 1, 1, 1, 1
One thread hogged the lock for almost the whole time! With the new WTF::Lock, the lock
becomes totally fair:
80, 79, 79, 79, 79, 79, 79, 80, 80, 79
I don't know of anyone creating such an automatically-fair adaptive lock before, so I think
that this is a pretty awesome advancement to the state of the art!
This change is good for three reasons:
- We do have long critical sections in WebKit and we don't want to have to worry about
starvation. This reduces the likelihood that we will see starvation due to our lock
strategy.
- I was talking to ggaren about bmalloc's locking needs, and he wanted unlockFairly() or
lockFairly() or some moral equivalent for the scavenger thread.
- If we use a WTF::Lock to manage heap access in a multithreaded GC, we'll need the ability
to unlock and relock without barging.
* benchmarks/LockFairnessTest.cpp:
(main):
* benchmarks/ToyLocks.h:
* wtf/Condition.h:
(WTF::ConditionBase::waitUntil):
(WTF::ConditionBase::notifyOne):
* wtf/Lock.cpp:
(WTF::LockBase::lockSlow):
(WTF::LockBase::unlockSlow):
(WTF::LockBase::unlockFairlySlow):
(WTF::LockBase::unlockSlowImpl):
* wtf/Lock.h:
(WTF::LockBase::try_lock):
(WTF::LockBase::unlock):
(WTF::LockBase::unlockFairly):
(WTF::LockBase::isHeld):
(WTF::LockBase::isFullyReset):
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionallyImpl):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkOneImpl):
(WTF::ParkingLot::unparkAll):
* wtf/ParkingLot.h:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::compareAndPark):
(WTF::ParkingLot::unparkOne):
2016-07-17 Myles C. Maxfield <mmaxfield@apple.com>
Support new emoji group candidates
https://bugs.webkit.org/show_bug.cgi?id=159755
<rdar://problem/27325521>
Reviewed by Dean Jackson.
This patch doesn't update the rules for our cursor movement iterator, because
I don't know the language used for implementing these rules. These rules will
be updated in the near future. When they do,
editing/deleting/delete-emoji-expected.txt will need to be updated.
* wtf/text/TextBreakIterator.cpp:
(WTF::cursorMovementIterator):
2016-07-16 Chris Dumez <cdumez@apple.com>
Add move constructor / assignment operator to ListHashSet
https://bugs.webkit.org/show_bug.cgi?id=159837
Reviewed by Darin Adler.
Add move constructor / assignment operator to ListHashSet.
* wtf/ListHashSet.h:
(WTF::ListHashSetConstIterator::operator++):
(WTF::U>::ListHashSet):
(WTF::=):
(WTF::U>::clear):
(WTF::U>::appendNode):
(WTF::U>::prependNode):
(WTF::U>::deleteAllNodes):
(WTF::ListHashSetNode::ListHashSetNode): Deleted.
2016-07-15 Chris Dumez <cdumez@apple.com>
Use emptyString() / nullAtom when possible
https://bugs.webkit.org/show_bug.cgi?id=159850
Reviewed by Ryosuke Niwa.
Use emptyString() / nullAtom when possible, for performance.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::convertASCIICase):
2016-07-15 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r203304.
This is wrong because of Node* entries in the internal HashMap
Reverted changeset:
"Add move constructor / assignment operator to ListHashSet"
https://bugs.webkit.org/show_bug.cgi?id=159837
http://trac.webkit.org/changeset/203304
2016-07-15 Chris Dumez <cdumez@apple.com>
Add move constructor / assignment operator to ListHashSet
https://bugs.webkit.org/show_bug.cgi?id=159837
Reviewed by Alex Christensen.
Add move constructor / assignment operator to ListHashSet.
* wtf/ListHashSet.h:
2016-07-15 Geoffrey Garen <ggaren@apple.com>
Added a makeRef<T> helper
https://bugs.webkit.org/show_bug.cgi?id=159835
Reviewed by Andreas Kling.
Anders told me to!
* wtf/Ref.h:
(WTF::makeRef): Helper function to do type inference for you.
2016-07-15 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r203266.
This change caused editing/deleting/delete-emoji.html to time
out on El Capitan, crash under GuardMalloc
Reverted changeset:
"Support new emoji group candidates"
https://bugs.webkit.org/show_bug.cgi?id=159755
http://trac.webkit.org/changeset/203266
2016-07-15 Csaba Osztrogonác <ossy@webkit.org>
Revert r202560 to fix the ARMv7 build with ARM instruction set
https://bugs.webkit.org/show_bug.cgi?id=159707
Reviewed by Carlos Garcia Campos.
* wtf/Platform.h: Revert r202560.
2016-07-14 Myles C. Maxfield <mmaxfield@apple.com>
Support new emoji group candidates
https://bugs.webkit.org/show_bug.cgi?id=159755
<rdar://problem/27325521>
Reviewed by Dean Jackson.
This patch doesn't update the rules for our cursor movement iterator, because
I don't know the language used for implementing these rules. These rules will
be updated in the near future. When they do,
editing/deleting/delete-emoji-expected.txt will need to be updated.
* wtf/text/TextBreakIterator.cpp:
(WTF::cursorMovementIterator):
2016-07-14 Alex Christensen <achristensen@webkit.org>
Allow RefPtrs of const RefCounted types
https://bugs.webkit.org/show_bug.cgi?id=158269
Reviewed by Anders Carlsson.
* wtf/RefCounted.h:
(WTF::RefCountedBase::ref):
(WTF::RefCountedBase::~RefCountedBase):
(WTF::RefCountedBase::derefBase):
(WTF::RefCounted::deref):
Creating references to a const object does not really modify the object,
so everything in RefCounted is now mutable, and ref and deref are const.
2016-07-14 Chris Dumez <cdumez@apple.com>
Avoid an extra heap allocation when dispatching Functions to WorkQueue
https://bugs.webkit.org/show_bug.cgi?id=158367
Reviewed by Anders Carlsson.
Avoid an extra heap allocation when dispatching Functions to WorkQueue
by adding leakCallable() / adoptCallable() functions to Function.
* wtf/Function.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
2016-07-13 Myles C. Maxfield <mmaxfield@apple.com>
Addressing post-review comments after r203119
https://bugs.webkit.org/show_bug.cgi?id=159749
Unreviewed.
* wtf/text/StringView.h:
(WTF::StringView::CodePoints::Iterator::Iterator):
(WTF::StringView::CodePoints::Iterator::operator*):
(WTF::StringView::CodePoints::Iterator::operator==):
2016-07-13 Enrica Casucci <enrica@apple.com>
Update supported platforms in xcconfig files to match the sdk names.
https://bugs.webkit.org/show_bug.cgi?id=159728
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
2016-07-13 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] WebKitGtk+ uses too many file descriptors
https://bugs.webkit.org/show_bug.cgi?id=152316
Reviewed by Michael Catanzaro.
Add helper functions to duplicate a file descriptor setting close on exec flag, and also to set close on exec
flag to an existing file descriptor.
* wtf/UniStdExtras.h:
* wtf/UniStdExtras.cpp
(WTF::setCloseOnExec):
(WTF::dupCloseOnExec):
2016-07-12 Benjamin Poulain <bpoulain@apple.com>
[JSC] Array.prototype.join() fails some conformance tests
https://bugs.webkit.org/show_bug.cgi?id=159657
Reviewed by Saam Barati.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::number):
* wtf/text/AtomicString.h:
2016-07-12 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r203131.
https://bugs.webkit.org/show_bug.cgi?id=159698
This change caused an existing LayoutTest to time out on debug
testers (Requested by ryanhaddad on #webkit).
Reverted changeset:
"[JSC] Array.prototype.join() fails some conformance tests"
https://bugs.webkit.org/show_bug.cgi?id=159657
http://trac.webkit.org/changeset/203131
2016-07-12 Filip Pizlo <fpizlo@apple.com>
platformUserPreferredLanguages on Mac should not try to put the region into the language
https://bugs.webkit.org/show_bug.cgi?id=159693
Rubber stamped by Alexey Proskuryakov.
Currently, navigator.language is the thing that we use as the BCP-47 tag in our Intl code
when certain APIs are called without a locale argument. That mostly makes sense, and is
deeply wired into our engine.
In r200105, we made Intl aware of the region as a separate thing from the language by having
platformUserPreferredLanguages() return something like a BCP-47 tag that was
<language>-<region>. For example, if I told System Preferences that I want to speak English
but live in Poland then we'd get "en-pl". This had the effect of making Intl APIs format
dates using Polish formatting, for example.
But this is an odd change, since that same function also feeds into navigator.language.
"en-pl" isn't what we want there, since my System Preferences settings aren't supposed to
mean that I want to speak Polish-style English. There's no such thing.
It may be worthwhile to wire the region settings more elegantly into Intl, but if we do that,
it should be via a mechanism that is separate from navigator.language. So, this change simply
reverts r200105.
* wtf/PlatformUserPreferredLanguagesMac.mm:
(WTF::httpStyleLanguageCode):
(WTF::platformUserPreferredLanguages):
(WTF::isValidICUCountryCode): Deleted.
2016-07-12 Per Arne Vollan <pvollan@apple.com>
[Win] Fix for build error when trying to version stamp dll.
https://bugs.webkit.org/show_bug.cgi?id=159692
Reviewed by Brent Fulgham.
Use correct path to version stamp script.
* wtf/CMakeLists.txt:
2016-07-12 Benjamin Poulain <bpoulain@apple.com>
[JSC] Array.prototype.join() fails some conformance tests
https://bugs.webkit.org/show_bug.cgi?id=159657
Reviewed by Saam Barati.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::number):
* wtf/text/AtomicString.h:
2016-07-12 Myles C. Maxfield <mmaxfield@apple.com>
Relax ordering requirements on StringView::CodePoints iterator
https://bugs.webkit.org/show_bug.cgi?id=159609
Reviewed by Darin Adler.
Previously, there was a requirement where if you use a CodePoints
iterator, you couldn't dereference twice in a row or increment
twice in a row. This restriction is unnecessary.
* wtf/text/StringView.h:
(WTF::StringView::CodePoints::Iterator::Iterator):
(WTF::StringView::CodePoints::Iterator::advanceCurrentCodePoint):
(WTF::StringView::CodePoints::Iterator::operator*):
(WTF::StringView::CodePoints::Iterator::operator==):
2016-07-12 Csaba Osztrogonác <ossy@webkit.org>
JSCOnly bulidfix after r203078
https://bugs.webkit.org/show_bug.cgi?id=159669
Reviewed by Yusuke Suzuki.
* wtf/PlatformJSCOnly.cmake:
* wtf/text/jsconly/TextBreakIteratorInternalICUJSCOnly.cpp: Added.
(WTF::currentSearchLocaleID):
(WTF::currentTextBreakLocaleID):
2016-07-12 Per Arne Vollan <pvollan@apple.com>
[Win] DLLs are missing version information.
https://bugs.webkit.org/show_bug.cgi?id=159349
Reviewed by Brent Fulgham.
Generate autoversion.h and run perl version stamp utility.
* wtf/CMakeLists.txt:
2016-07-11 Myles C. Maxfield <mmaxfield@apple.com>
Implement grapheme cluster iterator on StringView
https://bugs.webkit.org/show_bug.cgi?id=159598
Reviewed by Anders Carlsson.
This is in preparation for honoring the second argument to FontFaceSet.load().
* wtf/text/StringView.cpp:
(WTF::StringView::GraphemeClusters::Iterator::Impl::Impl):
(WTF::StringView::GraphemeClusters::Iterator::Impl::operator++):
(WTF::StringView::GraphemeClusters::Iterator::Impl::operator*):
(WTF::StringView::GraphemeClusters::Iterator::Impl::operator==):
(WTF::StringView::GraphemeClusters::Iterator::Impl::computeIndexEnd):
(WTF::StringView::GraphemeClusters::Iterator::Iterator):
(WTF::StringView::GraphemeClusters::Iterator::~Iterator):
(WTF::StringView::GraphemeClusters::Iterator::operator*):
(WTF::StringView::GraphemeClusters::Iterator::operator==):
(WTF::StringView::GraphemeClusters::Iterator::operator!=):
* wtf/text/StringView.h:
(WTF::StringView::GraphemeClusters::GraphemeClusters):
* text/TextBreakIterator.cpp:
(WebCore::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator):
* text/TextBreakIterator.h:
2016-07-10 Myles C. Maxfield <mmaxfield@apple.com>
Move breaking iterator code to WTF
https://bugs.webkit.org/show_bug.cgi?id=159594
Reviewed by Alex Christensen.
This is in preparation for giving StringView a GraphemeClusters iterator.
Such an interator needs to be implemented on top of our breaking iterator
code.
* WTF.xcodeproj/project.pbxproj:
* icu/unicode/ubrk.h: Added.
* icu/unicode/utext.h: Renamed from Source/WebCore/icu/unicode/utext.h.
* wtf/CMakeLists.txt:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/PlatformMac.cmake:
* wtf/PlatformWin.cmake:
* wtf/TinyLRUCache.h:
* wtf/text/LineBreakIteratorPoolICU.h: Renamed from Source/WebCore/platform/text/LineBreakIteratorPoolICU.h.
(WTF::LineBreakIteratorPool::LineBreakIteratorPool):
(WTF::LineBreakIteratorPool::sharedPool):
(WTF::LineBreakIteratorPool::makeLocaleWithBreakKeyword):
(WTF::LineBreakIteratorPool::take):
(WTF::LineBreakIteratorPool::put):
* wtf/text/TextBreakIterator.cpp: Renamed from Source/WebCore/platform/text/TextBreakIterator.cpp.
(WTF::initializeIterator):
(WTF::initializeIteratorWithRules):
(WTF::setTextForIterator):
(WTF::setContextAwareTextForIterator):
(WTF::wordBreakIterator):
(WTF::sentenceBreakIterator):
(WTF::cursorMovementIterator):
(WTF::acquireLineBreakIterator):
(WTF::releaseLineBreakIterator):
(WTF::mapLineIteratorModeToRules):
(WTF::isCJKLocale):
(WTF::openLineBreakIterator):
(WTF::closeLineBreakIterator):
(WTF::compareAndSwapNonSharedCharacterBreakIterator):
(WTF::NonSharedCharacterBreakIterator::NonSharedCharacterBreakIterator):
(WTF::NonSharedCharacterBreakIterator::~NonSharedCharacterBreakIterator):
(WTF::textBreakFirst):
(WTF::textBreakLast):
(WTF::textBreakNext):
(WTF::textBreakPrevious):
(WTF::textBreakPreceding):
(WTF::textBreakFollowing):
(WTF::textBreakCurrent):
(WTF::isTextBreak):
(WTF::isWordTextBreak):
(WTF::numGraphemeClusters):
(WTF::numCharactersInGraphemeClusters):
* wtf/text/TextBreakIterator.h: Renamed from Source/WebCore/platform/text/TextBreakIterator.h.
(WTF::LazyLineBreakIterator::LazyLineBreakIterator):
(WTF::LazyLineBreakIterator::~LazyLineBreakIterator):
(WTF::LazyLineBreakIterator::string):
(WTF::LazyLineBreakIterator::isLooseCJKMode):
(WTF::LazyLineBreakIterator::lastCharacter):
(WTF::LazyLineBreakIterator::secondToLastCharacter):
(WTF::LazyLineBreakIterator::setPriorContext):
(WTF::LazyLineBreakIterator::updatePriorContext):
(WTF::LazyLineBreakIterator::resetPriorContext):
(WTF::LazyLineBreakIterator::priorContextLength):
(WTF::LazyLineBreakIterator::get):
(WTF::LazyLineBreakIterator::resetStringAndReleaseIterator):
(WTF::NonSharedCharacterBreakIterator::operator TextBreakIterator*):
* wtf/text/TextBreakIteratorInternalICU.h: Renamed from Source/WebCore/platform/text/TextBreakIteratorInternalICU.h.
* wtf/text/efl/TextBreakIteratorInternalICUEfl.cpp: Renamed from Source/WebCore/platform/text/efl/TextBreakIteratorInternalICUEfl.cpp.
(WebCore::currentSearchLocaleID):
(WebCore::currentTextBreakLocaleID):
* wtf/text/gtk/TextBreakIteratorInternalICUGtk.cpp: Renamed from Source/WebCore/platform/text/gtk/TextBreakIteratorInternalICUGtk.cpp.
(WebCore::currentSearchLocaleID):
(WebCore::currentTextBreakLocaleID):
* wtf/text/icu/UTextProvider.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProvider.cpp.
(WTF::fixPointer):
(WTF::uTextCloneImpl):
* wtf/text/icu/UTextProvider.h: Renamed from Source/WebCore/platform/text/icu/UTextProvider.h.
(WTF::uTextProviderContext):
(WTF::initializeContextAwareUTextProvider):
(WTF::uTextAccessPinIndex):
(WTF::uTextAccessInChunkOrOutOfRange):
* wtf/text/icu/UTextProviderLatin1.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp.
(WTF::uTextLatin1Clone):
(WTF::uTextLatin1NativeLength):
(WTF::uTextLatin1Access):
(WTF::uTextLatin1Extract):
(WTF::uTextLatin1MapOffsetToNative):
(WTF::uTextLatin1MapNativeIndexToUTF16):
(WTF::uTextLatin1Close):
(WTF::openLatin1UTextProvider):
(WTF::textLatin1ContextAwareGetCurrentContext):
(WTF::textLatin1ContextAwareMoveInPrimaryContext):
(WTF::textLatin1ContextAwareSwitchToPrimaryContext):
(WTF::textLatin1ContextAwareMoveInPriorContext):
(WTF::textLatin1ContextAwareSwitchToPriorContext):
(WTF::uTextLatin1ContextAwareClone):
(WTF::uTextLatin1ContextAwareNativeLength):
(WTF::uTextLatin1ContextAwareAccess):
(WTF::uTextLatin1ContextAwareExtract):
(WTF::uTextLatin1ContextAwareClose):
(WTF::openLatin1ContextAwareUTextProvider):
* wtf/text/icu/UTextProviderLatin1.h: Renamed from Source/WebCore/platform/text/icu/UTextProviderLatin1.h.
* wtf/text/icu/UTextProviderUTF16.cpp: Renamed from Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp.
(WTF::textUTF16ContextAwareGetCurrentContext):
(WTF::textUTF16ContextAwareMoveInPrimaryContext):
(WTF::textUTF16ContextAwareSwitchToPrimaryContext):
(WTF::textUTF16ContextAwareMoveInPriorContext):
(WTF::textUTF16ContextAwareSwitchToPriorContext):
(WTF::uTextUTF16ContextAwareClone):
(WTF::uTextUTF16ContextAwareNativeLength):
(WTF::uTextUTF16ContextAwareAccess):
(WTF::uTextUTF16ContextAwareExtract):
(WTF::uTextUTF16ContextAwareClose):
(WTF::openUTF16ContextAwareUTextProvider):
* wtf/text/icu/UTextProviderUTF16.h: Renamed from Source/WebCore/platform/text/icu/UTextProviderUTF16.h.
* wtf/text/mac/TextBreakIteratorInternalICUMac.mm: Renamed from Source/WebCore/platform/text/mac/TextBreakIteratorInternalICUMac.mm.
(WTF::textBreakLocalePreference):
(WTF::topLanguagePreference):
(WTF::getLocale):
(WTF::getSearchLocale):
(WTF::currentSearchLocaleID):
(WTF::getTextBreakLocale):
(WTF::currentTextBreakLocaleID):
* wtf/text/win/TextBreakIteratorInternalICUWin.cpp: Renamed from Source/WebCore/platform/text/win/TextBreakIteratorInternalICUWin.cpp.
(WebCore::currentSearchLocaleID):
(WebCore::currentTextBreakLocaleID):
2016-07-08 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r202799.
https://bugs.webkit.org/show_bug.cgi?id=159568
Caused build failure (Requested by perarne on #webkit).
Reverted changeset:
"[Win] DLLs are missing version information."
https://bugs.webkit.org/show_bug.cgi?id=159349
http://trac.webkit.org/changeset/202799
2016-07-08 Jiewen Tan <jiewen_tan@apple.com>
Define DYLD_MACOSX_VERSION_10_12
https://bugs.webkit.org/show_bug.cgi?id=159525
<rdar://problem/26250296>
Reviewed by Brent Fulgham.
* wtf/spi/darwin/dyldSPI.h:
2016-07-01 Jer Noble <jer.noble@apple.com>
REGRESSION (r202641): Netflix playback stalls after a few seconds
https://bugs.webkit.org/show_bug.cgi?id=159365
Reviewed by Eric Carlson.
Add a isBetween() convenience method.
* wtf/MediaTime.cpp:
(WTF::MediaTime::isBetween):
* wtf/MediaTime.h:
2016-07-03 Per Arne Vollan <pvollan@apple.com>
[Win] DLLs are missing version information.
https://bugs.webkit.org/show_bug.cgi?id=159349
Reviewed by Brent Fulgham.
Generate autoversion.h in the prebuild step.
Run the perl version stamp utility.
* wtf/CMakeLists.txt:
2016-07-03 Saam Barati <sbarati@apple.com>
BytecodeGenerator::getVariablesUnderTDZ is too conservative
https://bugs.webkit.org/show_bug.cgi?id=159387
Reviewed by Filip Pizlo.
I've templatized SmallPtrSet on its SmallArraySize instead
of it always being 8.
* wtf/SmallPtrSet.h:
(WTF::SmallPtrSet::SmallPtrSet):
(WTF::SmallPtrSet::add):
(WTF::SmallPtrSet::iterator::operator!=):
(WTF::SmallPtrSet::bucket):
2016-07-03 Filip Pizlo <fpizlo@apple.com>
Ugh. Once again, unreviewed, roll out unintentional commit in r202790.
* benchmarks/LockFairnessTest.cpp:
(main):
2016-07-02 Dan Bernstein <mitz@apple.com>
Build fix.
* wtf/Assertions.cpp:
2016-07-02 Filip Pizlo <fpizlo@apple.com>
Unreviewed, roll back unintentional commit in r202778.
* benchmarks/LockFairnessTest.cpp:
(main):
2016-07-01 Jer Noble <jer.noble@apple.com>
Deadlock inside -[WebCoreNSURLSession dealloc]
https://bugs.webkit.org/show_bug.cgi?id=159331
<rdar://problem/27122716>
Reviewed by Alex Christensen.
A Function<> object can wrap any callable type, including a C++ lambda.
dispatchFunctionsFromMainThread() holds a lock while iterating over the functions in
functionQueue(), and during ths iteration, the previous callable object is destroyed by
assigning the result of functionQueue().takeFirst(). Because lambdas (and other callables,
like functors) can own objects, destroying this callable can have side effects, and if one
of those side effects is to call callOnMainThread(), this can deadlock.
Move this side-effect-having call outside the locked block by clearing the function object
immediately after calling it.
* wtf/MainThread.cpp:
(WTF::dispatchFunctionsFromMainThread):
2016-06-29 Jer Noble <jer.noble@apple.com>
Adopt MediaRemote.
https://bugs.webkit.org/show_bug.cgi?id=159250
Reviewed by Eric Carlson.
Add USE_MEDIAREMOTE.
* wtf/Platform.h:
2016-06-28 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r202580.
https://bugs.webkit.org/show_bug.cgi?id=159245
Caused all WKTR tests to fail on GuardMalloc and Production
only for unknown reasons, investigating offline. (Requested by
brrian on #webkit).
Reverted changeset:
"RunLoop::Timer should use constructor templates instead of
class templates"
https://bugs.webkit.org/show_bug.cgi?id=159153
http://trac.webkit.org/changeset/202580
2016-06-28 Brian Burg <bburg@apple.com>
RunLoop::Timer should use constructor templates instead of class templates
https://bugs.webkit.org/show_bug.cgi?id=159153
Reviewed by Alex Christensen.
Refactor RunLoop::Timer to align with WebCore::Timer. Use a constructor
template instead of a class template. Store a bound std::function rather than
a templated member and function. Add a constructor that takes a std::function.
* wtf/RunLoop.h:
(WTF::RunLoop::Timer::Timer):
(WTF::RunLoop::Timer::fired):
2016-06-28 Tomas Popela <tpopela@redhat.com>
THUMB2 support not correctly detected on Fedora with GCC 6.1.
https://bugs.webkit.org/show_bug.cgi?id=159083
Reviewed by Carlos Garcia Campos.
On Fedora 24 with GCC 6.1. the __thumb2__ and __thumb__ are not
defined so the detection of THUMB2 support will fail. Look also
whether the __ARM_ARCH_ISA_THUMB is defined to fix the THUMB2
detection.
* wtf/Platform.h:
2016-06-27 Joseph Pecoraro <pecoraro@apple.com>
Remove now unused WTF::findNextLineStart
https://bugs.webkit.org/show_bug.cgi?id=159157
Reviewed by Mark Lam.
Unused after r202498.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::findNextLineStart): Deleted.
* wtf/text/StringImpl.h:
(WTF::findNextLineStart): Deleted.
* wtf/text/WTFString.h:
(WTF::String::findNextLineStart): Deleted.
2016-06-21 Anders Carlsson <andersca@apple.com>
Rename NoncopyableFunction to Function
https://bugs.webkit.org/show_bug.cgi?id=158354
Reviewed by Chris Dumez.
* WTF.xcodeproj/project.pbxproj:
* wtf/CrossThreadTask.h:
(WTF::CrossThreadTask::CrossThreadTask):
* wtf/Function.h: Renamed from Source/WTF/wtf/NoncopyableFunction.h.
* wtf/FunctionDispatcher.h:
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
* wtf/MainThread.h:
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/efl/DispatchQueueWorkItemEfl.h:
(WorkItem::WorkItem):
(TimerWorkItem::create):
(TimerWorkItem::TimerWorkItem):
* wtf/efl/WorkQueueEfl.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::TimerBase::ScheduledTask::create):
(WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
(WTF::RunLoop::dispatchAfter):
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::dispatch):
(WorkQueue::dispatchAfter):
* wtf/glib/RunLoopGLib.cpp:
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::RunLoop::dispatchAfter):
* wtf/win/WorkItemWin.cpp:
(WTF::WorkItemWin::WorkItemWin):
(WTF::WorkItemWin::create):
(WTF::HandleWorkItem::HandleWorkItem):
(WTF::HandleWorkItem::createByAdoptingHandle):
* wtf/win/WorkItemWin.h:
(WTF::WorkItemWin::function):
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
2016-06-23 David Kilzer <ddkilzer@apple.com>
REGRESSION (r202380): iOS 9.x internal builds are broken
Follow-up fix for: Enable window.open() for existing versions of Secret Society
<https://webkit.org/b/159049>
<rdar://problem/26528349>
* wtf/spi/darwin/dyldSPI.h: Define DYLD_IOS_VERSION_10_0 when
building on internal SDKs older than iOS 10.
2016-06-23 John Wilander <wilander@apple.com>
Enable window.open() for existing versions of Secret Society
https://bugs.webkit.org/show_bug.cgi?id=159049
<rdar://problem/26528349>
Reviewed by Andy Estes.
The Secret Society Hidden Mystery app has a broken version check treating iOS 10
as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
handler. We should allow the existing versions of the app to do this to not break
them.
* wtf/spi/darwin/dyldSPI.h:
Added DYLD_IOS_VERSION_10_0.
2016-06-21 Said Abou-Hallawa <sabouhallawa@apple,com>
Add system tracing points for requestAnimationFrame() workflow
https://bugs.webkit.org/show_bug.cgi?id=158723
Reviewed by Simon Fraser.
Define new trace score codes for requestAnimationFrame().
* wtf/SystemTracing.h:
(WTF::TracePoint):
(WTF::TraceScope::TraceScope):
(WTF::TraceScope::~TraceScope):
2016-06-20 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r202136.
https://bugs.webkit.org/show_bug.cgi?id=158932
JSBench wasn't regressed by r202002 and r202111 on iOS after
all (Requested by rniwa_ on #webkit).
Reverted changeset:
"Unreviewed, rolling out r202002 and r202111."
https://bugs.webkit.org/show_bug.cgi?id=158638
http://trac.webkit.org/changeset/202136
2016-06-17 Chris Dumez <cdumez@apple.com>
Optimize parseCacheHeader() by using StringView
https://bugs.webkit.org/show_bug.cgi?id=158891
Reviewed by Darin Adler.
Add a StringView::find() overload which takes a CharacterMatchFunction
to match the one on String.
* wtf/text/StringView.h:
(WTF::StringView::find):
2016-06-17 Mark Lam <mark.lam@apple.com>
OOM Assertion failure in JSON.stringify.
https://bugs.webkit.org/show_bug.cgi?id=158794
<rdar://problem/26826254>
Reviewed by Saam Barati.
The bug was actually in StringBuilder::appendQuotedJSONString() where it failed
to detect an imminent unsigned int overflow. The fix is to use Checked<unsigned>
for the needed math, and RELEASE_ASSERT afterwards that we did not overflow.
I also added more assertions to detect sooner if any there are any problems with
StringBuilder's m_buffer or m_length being incorrectly sized. These assertions
have been run on the JSC and layout tests without any issue.
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::resize):
(WTF::StringBuilder::allocateBuffer):
(WTF::StringBuilder::allocateBufferUpConvert):
(WTF::StringBuilder::reallocateBuffer<LChar>):
(WTF::StringBuilder::reallocateBuffer<UChar>):
(WTF::StringBuilder::reserveCapacity):
(WTF::StringBuilder::appendUninitializedSlow):
(WTF::StringBuilder::append):
(WTF::StringBuilder::appendQuotedJSONString):
* wtf/text/StringBuilder.h:
(WTF::StringBuilder::swap):
2016-06-14 Filip Pizlo <fpizlo@apple.com>
Baseline JIT should be concurrent
https://bugs.webkit.org/show_bug.cgi?id=158755
Reviewed by Geoffrey Garen.
The concurrent baseline JIT needs to be able to clone bytecode to get a consistent snapshot.
So, this adds such a method.
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
(WTF::RefCountedArray::clone):
2016-06-16 Chris Dumez <cdumez@apple.com>
No need to ref connection in lambda inside NetworkResourceLoader::tryStoreAsCacheEntry()
https://bugs.webkit.org/show_bug.cgi?id=158862
Reviewed by Darin Adler.
Add NoncopyableFunction constructor that takes a nullptr_t in, in order
to match the std::function API and make porting from one to the other
easier.
* wtf/NoncopyableFunction.h:
2016-06-16 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r202002 and r202111.
Ryosuke says this was a JSBench regression on iOS
Reverted changesets:
"Make HashMap and HashSet work with Refs"
https://bugs.webkit.org/show_bug.cgi?id=158638
http://trac.webkit.org/changeset/202002
"Improve HashMap and HashSet support for Ref"
https://bugs.webkit.org/show_bug.cgi?id=158789
http://trac.webkit.org/changeset/202111
2016-06-15 Chris Dumez <cdumez@apple.com>
[Cocoa] Clean up / optimize ResourceResponse::platformLazyInit(InitLevel)
https://bugs.webkit.org/show_bug.cgi?id=158809
Reviewed by Darin Adler.
Add toAtomicString() method to StringView to avoid having to call toString()
and then atomizing the String at call sites.
* wtf/text/StringView.h:
(WTF::StringView::toAtomicString):
2016-06-15 Sam Weinig <sam@webkit.org>
Improve HashMap and HashSet support for Ref
https://bugs.webkit.org/show_bug.cgi?id=158789
Reviewed by Chris Dumez.
Tests: Add more cases to WTF_HashMap.Ref_Key, WTF_HashMap.Ref_Value and WTF_HashSet.Ref
* wtf/HashMap.h:
* wtf/HashSet.h:
Add a MappedTakeType typedef and rework the take functions to use it and HashTraits::take(...).
* wtf/HashTraits.h:
(WTF::GenericHashTraits::assignToEmpty):
Move to GenericHashTraits rather than GenericHashTraitsBase, since it is not different
between integral and non-integral HashTraits.
(WTF::GenericHashTraits::take):
Add a trait function for take that defaults as a forward. This allows us to override take
just like we do with get/peek.
(WTF::HashTraits<Ref<P>>::emptyValue):
Remove unnecessary explicit construction.
(WTF::HashTraits<Ref<P>>::peek):
Fix assertion that could happen if you did a HashMap.get() on an empty Ref value.
(WTF::HashTraits<Ref<P>>::take):
Make the TakeType of a Ref<P> be Optional<Ref<P>>, to avoid having empty
Refs returned from HashMap and HashSet. Implement an explicit take() function to
construct one.
(WTF::HashTraits<Ref<P>>::customDeleteBucket): Deleted.
Remove unnecessary customDeleteBucket implementation. Ref does not assign nullptr to
it's m_ptr in destruction, so there is no dead store to avoid here.
* wtf/Ref.h:
(WTF::Ref::ptrAllowingHashTableEmptyValue):
Add HashTrait helper to allow getting the value of m_ptr even when it is null. This
allows us to avoid a branch in HashTraits<Ref<P>>::peek().
2016-06-15 Konstantin Tokarev <annulen@yandex.ru>
Only Mac port needs ObjC API for JSC
https://bugs.webkit.org/show_bug.cgi?id=158780
Reviewed by Philippe Normand.
* wtf/FeatureDefines.h:
2016-06-15 Yusuke Suzuki <utatane.tea@gmail.com>
Unreviewed, follow up patch for r202092
https://bugs.webkit.org/show_bug.cgi?id=158661
During checking Windows port on EWS, accidentally introduce the regression.
* wtf/Platform.h:
2016-06-15 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC] Move calling convention flags to WTF
https://bugs.webkit.org/show_bug.cgi?id=158661
Reviewed by Keith Miller.
* wtf/Platform.h:
2016-06-14 Myles C. Maxfield <mmaxfield@apple.com>
Honor bidi unicode codepoints
https://bugs.webkit.org/show_bug.cgi?id=149170
<rdar://problem/26527378>
Reviewed by Simon Fraser.
* wtf/unicode/CharacterNames.h:
2016-06-14 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r202057.
https://bugs.webkit.org/show_bug.cgi?id=158749
This change broke the Windows build. (Requested by ryanhaddad
on #webkit).
Reverted changeset:
"Honor bidi unicode codepoints"
https://bugs.webkit.org/show_bug.cgi?id=149170
http://trac.webkit.org/changeset/202057
2016-06-14 Myles C. Maxfield <mmaxfield@apple.com>
Honor bidi unicode codepoints
https://bugs.webkit.org/show_bug.cgi?id=149170
<rdar://problem/26527378>
Reviewed by Simon Fraser.
* wtf/unicode/CharacterNames.h:
2016-06-13 Alex Christensen <achristensen@webkit.org>
Add WebSocketProvider stub
https://bugs.webkit.org/show_bug.cgi?id=158702
Reviewed by Brady Eidson.
* wtf/UniqueRef.h:
(WTF::UniqueRef::operator->):
(WTF::UniqueRef::operator T&):
(WTF::UniqueRef::operator const T&):
Added operator T& to avoid unneeded .get() calls.
2016-06-13 Sam Weinig <sam@webkit.org>
Make HashMap and HashSet work with Refs
https://bugs.webkit.org/show_bug.cgi?id=158638
Reviewed by Darin Adler.
* wtf/GetPtr.h:
Move HashTableDeletedValueType and HashTableEmptyValueType here, as they are now shared
by more than one smart pointer. This file should probably be renamed to something else
at some point to indicate that it contains helpers for pointer and ref related functionality.
* wtf/HashFunctions.h:
Add a DefaultHash for Refs. Customize the PtrHash to indicate that it is not safe to compare
to empty or deleted Refs.
* wtf/HashMap.h:
(WTF::HashMapTranslator::equal):
(WTF::HashMapTranslator::translate):
(WTF::HashMapEnsureTranslator::equal):
(WTF::HashMapEnsureTranslator::translate):
* wtf/HashSet.h:
(WTF::IdentityExtractor::extract):
(WTF::HashSetTranslator::hash):
(WTF::HashSetTranslator::equal):
(WTF::HashSetTranslator::translate):
* wtf/HashTable.h:
(WTF::IdentityHashTranslator::hash):
(WTF::IdentityHashTranslator::equal):
(WTF::IdentityHashTranslator::translate):
Use the new assignToEmpty trait function to allow uninitialized Ref's to be safely assigned to.
* wtf/HashTraits.h:
(WTF::HashTraits<Ref<P>>::emptyValue):
(WTF::HashTraits<Ref<P>>::isEmptyValue):
(WTF::HashTraits<Ref<P>>::assignToEmpty):
(WTF::HashTraits<Ref<P>>::peek):
(WTF::HashTraits<Ref<P>>::customDeleteBucket):
Add custom HashTraits for Ref. Also, introduce a new trait function, assignToEmpty, for use
in translation assignments. This is necessary since the default assignment operator for Ref
will not allow assignment to the empty Ref, which we need to do here.
* wtf/Ref.h:
(WTF::Ref::operator=):
(WTF::Ref::Ref):
(WTF::Ref::isHashTableDeletedValue):
(WTF::Ref::hashTableDeletedValue):
(WTF::Ref::isHashTableEmptyValue):
(WTF::Ref::hashTableEmptyValue):
Add explicit constructors/predicates for making deleted/empty Refs.
(WTF::Ref::assignToHashTableEmptyValue):
Add a special function that allows assignment to an empty Ref, which the
assignment operator does not.
(WTF::IsSmartPtr):
Add an IsSmartPtr override to indicate that Ref is a smart pointer.
* wtf/RefPtr.h:
Move HashTableDeletedValueType to GetPtr.h.
2016-06-13 Fujii Hironori <Hironori.Fujii@sony.com>
Stack overflow at RefPtr::release on Windows port since r201782
https://bugs.webkit.org/show_bug.cgi?id=158687
Reviewed by Chris Dumez.
RefPtr::release calls RefPtr::RefPtr, and RefPtr::RefPtr calls
RefPtr::release.
RefPtr::RefPtr does not need to call RefPtr::release.
* wtf/RefPtr.h:
(WTF::RefPtr::RefPtr): Do not call RefPtr::release.
2016-06-11 Myles C. Maxfield <mmaxfield@apple.com>
Addressing post-review comments after r201978.
https://bugs.webkit.org/show_bug.cgi?id=158649
<rdar://problem/13258122>
Unreviewed.
* wtf/text/StringCommon.h:
(WTF::equal):
(WTF::naiveEqualWithoutPerformingUnicodeNormalization): Deleted.
2016-06-11 Myles C. Maxfield <mmaxfield@apple.com>
[Cocoa] Map commonly used Chinese Windows font names to names present on Cocoa operating systems
https://bugs.webkit.org/show_bug.cgi?id=158649
<rdar://problem/13258122>
Reviewed by Darin Adler.
* wtf/text/StringCommon.h:
(WTF::naiveEqualWithoutPerformingUnicodeNormalization): Added.
2016-06-11 Chris Dumez <cdumez@apple.com>
WorkerNavigator is missing some attributes
https://bugs.webkit.org/show_bug.cgi?id=158593
<rdar://problem/26731334>
Reviewed by Darin Adler.
* wtf/PlatformUserPreferredLanguages.h:
* wtf/PlatformUserPreferredLanguagesWin.cpp:
(WTF::platformLanguage):
(WTF::platformUserPreferredLanguages):
Make platformUserPreferredLanguages() thread safe on Windows. The
Mac and Unix implementations are already thread-safe.
HAS_FASTCALL_CALLING_CONVENTION is changed to COMPILER_SUPPORTS(FASTCALL_CALLING_CONVENTION).
2016-06-10 Alex Christensen <achristensen@webkit.org>
Introduce WTF::UniqueRef
https://bugs.webkit.org/show_bug.cgi?id=158596
Reviewed by Brady Eidson.
WTF::UniqueRef is like a std::unique_ptr that is guaranteed to be non-null.
std::make_unique returns a non-null value that is put into a std::unique_ptr, a type
that could contain null values. To be able to pass such values around and store them
without wondering if they are null, we now have WTF::UniqueRef which cannot be null.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/UniqueRef.h: Added.
(WTF::makeUniqueRef):
(WTF::UniqueRef::UniqueRef):
(WTF::UniqueRef::get):
(WTF::UniqueRef::operator&):
(WTF::UniqueRef::operator->):
2016-06-09 Brady Eidson <beidson@apple.com>
Unaddressed review feedback from r201872
* wtf/CrossThreadTask.h:
(WTF::callFunctionForCrossThreadTask): Fix typo.
2016-06-09 Brady Eidson <beidson@apple.com>
Greatly simplify CrossThreadTask.h.
https://bugs.webkit.org/show_bug.cgi?id=158542
Reviewed by Darin Adler.
* wtf/CrossThreadTask.h:
(WTF::crossThreadCopy):
(WTF::callFunctionForCrossThreadTaskImpl):
(WTF::callFunctionForCrossThreadTask):
(WTF::createCrossThreadTask):
(WTF::callMemberFunctionForCrossThreadTaskImpl):
(WTF::callMemberFunctionForCrossThreadTask):
2016-06-08 Brady Eidson <beidson@apple.com>
Make CrossThreadCopier more efficient (fewer copies!).
https://bugs.webkit.org/show_bug.cgi?id=158456
Reviewed by Alex Christensen.
Previously, we'd run all arguments through CrossThreadCopier, then immediately make
an unnecessary copy of the result during lambda capture.
Instead, we should just put the CrossThreadCopier generated objects directly in lambdas,
which are then captured by NoncopyableFunctions.
This reduces the number of constructor calls per argument from 2 copies to 1 move.
* wtf/CrossThreadTask.h:
(WTF::CrossThreadTask::CrossThreadTask):
(WTF::createCrossThreadTask):
2016-06-07 Filip Pizlo <fpizlo@apple.com>
Implement Air::allocateStack() in ES6 to see how much of a bad idea that is
https://bugs.webkit.org/show_bug.cgi?id=158318
Reviewed by Saam Barati.
* wtf/Insertion.h:
(WTF::executeInsertions): I found a bug while rewriting this code in JS.
* wtf/PrintStream.h:
(WTF::PrintStream::print):
(WTF::PrintStream::println): This is useful to have.
2016-06-07 Keith Rollin <krollin@apple.com>
Remove all uses of PassRefPtr in WTF
https://bugs.webkit.org/show_bug.cgi?id=157596
<rdar://problem/26234391>
Reviewed by Chris Dumez.
Remove/update most interfaces that take or return PassRefPtrs.
Remaining references include those in non-Cocoa implementations and
those required for continued compatibility with modules that still use
PassRefPtrs (specifically: Forward.h, RefPtr interoperability,
SizeLimits.h, WorkQueue (Windows) DispatchQueueEfl,
DispatchWorkItemEfl, and PassRefPtr itself).
Update calls to interfaces that no longer take or return PassRefPtrs.
Update adoptRef(T*) to return a RefPtr instead of a PassRefPtr and
move it to RefPtr.h from PassRefPtr.h.
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocate):
* wtf/MetaAllocator.h:
* wtf/ParallelJobsGeneric.h:
(WTF::ParallelEnvironment::ThreadPrivate::create):
* wtf/text/AtomicStringImpl.cpp:
(WTF::HashAndUTF8CharactersTranslator::translate):
(WTF::SubstringTranslator::translate):
* wtf/text/CString.cpp:
(WTF::CStringBuffer::createUninitialized):
* wtf/text/CString.h:
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::reifyString):
(WTF::StringBuilder::resize):
(WTF::StringBuilder::reallocateBuffer<LChar>):
(WTF::StringBuilder::reallocateBuffer<UChar>):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::reallocateInternal):
(WTF::StringImpl::reallocate):
(WTF::StringImpl::create8BitIfPossible):
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createNullSymbol):
(WTF::StringImpl::convertToLowercaseWithoutLocale):
(WTF::StringImpl::convertToUppercaseWithoutLocale):
(WTF::StringImpl::convertToLowercaseWithLocale):
(WTF::StringImpl::convertToUppercaseWithLocale):
(WTF::StringImpl::convertASCIICase):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createSubstringSharingImpl):
(WTF::StringImpl::tryCreateUninitialized):
(WTF::StringImpl::extractFoldedStringInSymbol):
* wtf/text/SymbolRegistry.cpp:
(WTF::SymbolRegistry::symbolForKey):
* wtf/text/WTFString.cpp:
(WTF::String::substringSharingImpl):
* wtf/text/WTFString.h:
(WTF::String::String): Deleted.
* wtf/text/cf/StringImplCF.cpp:
2016-06-07 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC] Do not allocate unnecessary UTF-8 string for encodeXXX functions
https://bugs.webkit.org/show_bug.cgi?id=158416
Reviewed by Darin Adler and Geoffrey Garen.
* wtf/Bitmap.h:
(WTF::Bitmap::size):
(WTF::WordType>::Bitmap):
(WTF::WordType>::get):
(WTF::WordType>::set):
(WTF::WordType>::testAndSet):
(WTF::WordType>::testAndClear):
(WTF::WordType>::concurrentTestAndSet):
(WTF::WordType>::concurrentTestAndClear):
(WTF::WordType>::clear):
(WTF::WordType>::clearAll):
(WTF::WordType>::nextPossiblyUnset):
(WTF::WordType>::findRunOfZeros):
(WTF::WordType>::count):
(WTF::WordType>::isEmpty):
(WTF::WordType>::isFull):
2016-06-06 Saam Barati <sbarati@apple.com>
equal(StringView, StringView) for strings should have a fast path for pointer equality
https://bugs.webkit.org/show_bug.cgi?id=158452
Reviewed by Andreas Kling.
JSBench does a lot of StringView::operator== on StringViews that have
the same underlying characters pointer. This becomes hot inside JSBench
because JSBench heavily stresses JSC's UnlinkedCodeCache with a high
hit rate. This means that when we get a hit in the cache, we used to
do the long form of string compare. However, we were often comparing
two StringViews that had the same underlying buffer and length.
This patch speeds this case up to run in constant time instead of
linear time.
* wtf/text/StringCommon.h:
(WTF::equalCommon):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::data):
* wtf/text/StringView.h:
(WTF::StringView::data):
2016-06-04 Anders Carlsson <andersca@apple.com>
Get rid of WorkItemWin
https://bugs.webkit.org/show_bug.cgi?id=158381
Reviewed by Sam Weinig.
* wtf/PlatformWin.cmake:
* wtf/WorkQueue.h:
* wtf/win/WorkItemWin.cpp: Removed.
(WTF::WorkItemWin::WorkItemWin): Deleted.
(WTF::WorkItemWin::create): Deleted.
(WTF::WorkItemWin::~WorkItemWin): Deleted.
* wtf/win/WorkItemWin.h: Removed.
(WTF::WorkItemWin::function): Deleted.
(WTF::WorkItemWin::queue): Deleted.
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::performWorkOnRegisteredWorkThread):
(WTF::WorkQueue::dispatch):
2016-06-03 Anders Carlsson <andersca@apple.com>
Get rid of HANDLE registration code in WorkQueueWin
https://bugs.webkit.org/show_bug.cgi?id=158375
Reviewed by Darin Adler.
* wtf/WorkQueue.h:
* wtf/win/WorkItemWin.cpp:
(WTF::HandleWorkItem::HandleWorkItem): Deleted.
(WTF::HandleWorkItem::createByAdoptingHandle): Deleted.
(WTF::HandleWorkItem::~HandleWorkItem): Deleted.
* wtf/win/WorkItemWin.h:
(WTF::HandleWorkItem::setWaitHandle): Deleted.
(WTF::HandleWorkItem::waitHandle): Deleted.
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::handleCallback): Deleted.
(WTF::WorkQueue::platformInvalidate): Deleted.
(WTF::WorkQueue::unregisterWaitAndDestroyItemSoon): Deleted.
(WTF::WorkQueue::unregisterWaitAndDestroyItemCallback): Deleted.
2016-06-03 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r201663.
https://bugs.webkit.org/show_bug.cgi?id=158374
Broke the Windows build (Requested by andersca on #webkit).
Reverted changeset:
"Rename NoncopyableFunction to Function"
https://bugs.webkit.org/show_bug.cgi?id=158354
http://trac.webkit.org/changeset/201663
2016-06-03 Anders Carlsson <andersca@apple.com>
Rename NoncopyableFunction to Function
https://bugs.webkit.org/show_bug.cgi?id=158354
Reviewed by Chris Dumez.
* WTF.xcodeproj/project.pbxproj:
* wtf/CrossThreadTask.h:
(WTF::CrossThreadTask::CrossThreadTask):
* wtf/Function.h: Renamed from Source/WTF/wtf/NoncopyableFunction.h.
* wtf/FunctionDispatcher.h:
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
* wtf/MainThread.h:
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/efl/DispatchQueueWorkItemEfl.h:
(WorkItem::WorkItem):
(TimerWorkItem::create):
(TimerWorkItem::TimerWorkItem):
* wtf/efl/WorkQueueEfl.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::TimerBase::ScheduledTask::create):
(WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
(WTF::RunLoop::dispatchAfter):
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::dispatch):
(WorkQueue::dispatchAfter):
* wtf/glib/RunLoopGLib.cpp:
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::RunLoop::dispatchAfter):
* wtf/win/WorkItemWin.cpp:
(WTF::WorkItemWin::WorkItemWin):
(WTF::WorkItemWin::create):
(WTF::HandleWorkItem::HandleWorkItem):
(WTF::HandleWorkItem::createByAdoptingHandle):
* wtf/win/WorkItemWin.h:
(WTF::WorkItemWin::function):
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
2016-06-03 Mark Lam <mark.lam@apple.com>
Clean up how StackVisitor dumps its frames.
https://bugs.webkit.org/show_bug.cgi?id=158316
Reviewed by Keith Miller.
Added an Indenter class what works with dataLog.
* WTF.xcodeproj/project.pbxproj:
* wtf/Indenter.h: Added.
(WTF::Indenter::Indenter):
(WTF::Indenter::dump):
(WTF::Indenter::operator++):
(WTF::Indenter::operator--):
2016-06-02 Said Abou-Hallawa <sabouhallawa@apple,com>
[iOS] PDFDocumentImage should not create a cached image larger than 4M pixels
https://bugs.webkit.org/show_bug.cgi?id=157857
Reviewed by Darin Adler.
* wtf/StdLibExtras.h: Add a constant value for GB (2^30).
2016-06-02 Oliver Hunt <oliver@apple.com>
JS parser incorrectly handles invalid utf8 in error messages.
https://bugs.webkit.org/show_bug.cgi?id=158128
Reviewed by Saam Barati.
Add a new toStringWithLatin1Fallback that simply uses
String::fromUTF8WithLatin1Fallback, so we can avoid the
standard String::fromUTF8 null return.
* wtf/StringPrintStream.cpp:
(WTF::StringPrintStream::toStringWithLatin1Fallback):
* wtf/StringPrintStream.h:
2016-06-02 Keith Miller <keith_miller@apple.com>
Unreviewed, reland r201532. The associated regressions have been fixed
by r201584.
2016-06-02 Filip Pizlo <fpizlo@apple.com>
Use "= delete" for Locker(int)
Rubber stamped by Saam Barati.
See discussion: https://bugs.webkit.org/show_bug.cgi?id=158306#c8
* wtf/Locker.h:
(WTF::Locker::Locker):
(WTF::Locker::~Locker):
2016-06-02 Filip Pizlo <fpizlo@apple.com>
Make it harder to accidentally pass an integer to a locker.
Rubber stamped by Keith Miller.
See here for the discussion: https://bugs.webkit.org/show_bug.cgi?id=158306#c3
* wtf/Locker.h:
(WTF::Locker::Locker):
(WTF::Locker::~Locker):
2016-06-02 Filip Pizlo <fpizlo@apple.com>
Make it easier to use NoLockingNecessary
https://bugs.webkit.org/show_bug.cgi?id=158306
Reviewed by Keith Miller.
An idiom that we borrowed from LLVM is that if a function requires a lock to be held, we
have it take a const Locker& as its first argument. This may not communicate which lock is
to be held, but it does help us to remember that some lock must be held. So far, it's been
relatively easy to then figure out which lock. We've had bugs where we forgot to hold a
lock but I don't remember the last time we had a bug where we grabbed the wrong lock.
But sometimes, we know at the point where we call such a method that we actually don't
need to hold any lock. This usually happens during object construction. If we're
constructing some object then we usually know that we have not escaped it yet, so we don't
need to waste time acquiring its lock. We could solve this by having a separate set of
methods that don't do or require locking. This would be cumbersome, since usually for
every variant that takes const Locker&, there is already one that doesn't, and that one
will grab the lock for you. So this means having a third variant, that also doesn't take a
const Locker&, but does no locking. That's pretty weird.
So, we introduced NoLockingNecessary for situations like this. The idiom went like so:
Locker<Whatever> locker(Locker<Whatever>::NoLockingNecessary)
stuff->foo(locker);
Usually though, there would be some distance between where the locker is defined and where
it's used, so when you just look at stuff->foo(locker) in isolation you don't know if this
is a real locker or a NoLockingNecessary cast. Also, requiring two lines for this just
adds code.
This change makes this easier. Now you can just do:
stuff->foo(NoLockingNecessary).
This is because NoLockingNecessary has been pulled out into the WTF namespace (and is
usinged from the global namespace) and the Locker<> constructor that takes
NoLockingNecessaryTag is now implicit.
The only possible downside of this change is that people might use this idiom more
frequently now that it's easier to use. I don't think that's a bad thing. I'm now
convinced that this is not a bad idiom. When I was fixing an unrelated bug, I almost went
the way of adding more locking to some core JSC data structures, and in the process, I
needed to use NoLockingNecessary. It's clear that this is a general-purpose idiom and we
should not impose artificial constraints on its use.
* wtf/Locker.h:
(WTF::Locker::Locker):
(WTF::Locker::~Locker):
2016-06-01 Brady Eidson <beidson@apple.com>
Get rid of StringCapture.
https://bugs.webkit.org/show_bug.cgi?id=158285
Reviewed by Chris Dumez.
* wtf/text/WTFString.h:
(WTF::StringCapture::StringCapture): Deleted.
(WTF::StringCapture::string): Deleted.
(WTF::StringCapture::releaseString): Deleted.
(WTF::StringCapture::operator=): Deleted.
2016-06-01 Benjamin Poulain <bpoulain@apple.com>
[JSC] Some setters for components of Date do not timeClip() their result
https://bugs.webkit.org/show_bug.cgi?id=158278
Unreviewed.
* wtf/DateMath.cpp:
(WTF::equivalentYearForDST): Deleted.
The assertion is bogus.
As the comments above explains, the function is completely wrong for years
outside [1900-2100].
The tests passing large values for years are failing (year <= maxYear).
The weird NaN test is a mystery. The old changelog does not explain it.
2016-05-31 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r201363 and r201456.
https://bugs.webkit.org/show_bug.cgi?id=158240
"40% regression on date-format-xparb" (Requested by
keith_miller on #webkit).
Reverted changesets:
"LLInt should be able to cache prototype loads for values in
GetById"
https://bugs.webkit.org/show_bug.cgi?id=158032
http://trac.webkit.org/changeset/201363
"get_by_id should support caching unset properties in the
LLInt"
https://bugs.webkit.org/show_bug.cgi?id=158136
http://trac.webkit.org/changeset/201456
2016-05-31 Brady Eidson <beidson@apple.com>
Make createCrossThreadTask() functions return on the stack instead of the heap.
https://bugs.webkit.org/show_bug.cgi?id=158215
Reviewed by Darin Adler.
* WTF.xcodeproj/project.pbxproj:
* wtf/CrossThreadCopier.cpp:
* wtf/CrossThreadQueue.h: Added. A lightweight of MessageQueue that deals directly
in objects instead of in std::unique_ptrs.
(WTF::CrossThreadQueue::isKilled):
(WTF::CrossThreadQueue<DataType>::append):
(WTF::CrossThreadQueue<DataType>::waitForMessage):
(WTF::CrossThreadQueue<DataType>::tryGetMessage):
* wtf/CrossThreadTask.h:
(WTF::createCrossThreadTask):
(WTF::CrossThreadTask::CrossThreadTask): Deleted.
2016-05-30 Brady Eidson <beidson@apple.com>
Move CrossThreadCopier/CrossThreadTask to WTF.
https://bugs.webkit.org/show_bug.cgi?id=158207
Reviewed by Alex Christensen.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/CrossThreadCopier.cpp: Renamed from Source/WebCore/platform/CrossThreadCopier.cpp.
* wtf/CrossThreadCopier.h: Renamed from Source/WebCore/platform/CrossThreadCopier.h.
(WTF::CrossThreadCopierPassThrough::copy):
* wtf/CrossThreadTask.h: Renamed from Source/WebCore/platform/CrossThreadTask.h.
(WTF::CrossThreadTask::CrossThreadTask):
(WTF::CrossThreadTask::performTask):
(WTF::createCrossThreadTask):
2016-05-28 Chris Dumez <cdumez@apple.com>
Templatize NoncopyableFunction class similarly to std::function
https://bugs.webkit.org/show_bug.cgi?id=158185
Reviewed by Darin Adler.
Templatize NoncopyableFunction class similarly to std::function, so
that it can be used as a std::function replacement in more places.
Previously, NoncopyableFunction could only support "void()" lambdas.
* wtf/FunctionDispatcher.h:
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
* wtf/MainThread.h:
* wtf/NoncopyableFunction.h:
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/efl/DispatchQueueWorkItemEfl.h:
(WorkItem::WorkItem):
(TimerWorkItem::create):
(TimerWorkItem::TimerWorkItem):
* wtf/efl/WorkQueueEfl.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::TimerBase::ScheduledTask::create):
(WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
(WTF::RunLoop::dispatchAfter):
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::dispatch):
(WorkQueue::dispatchAfter):
* wtf/glib/RunLoopGLib.cpp:
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::RunLoop::dispatchAfter):
* wtf/win/WorkItemWin.cpp:
(WTF::WorkItemWin::WorkItemWin):
(WTF::WorkItemWin::create):
(WTF::HandleWorkItem::HandleWorkItem):
(WTF::HandleWorkItem::createByAdoptingHandle):
* wtf/win/WorkItemWin.h:
(WTF::WorkItemWin::function):
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
2016-05-28 Dan Bernstein <mitz@apple.com>
Build fix for projects that include MainThread.h without including FastMalloc.h.
* wtf/NoncopyableFunction.h: Include FastMalloc.h from here.
2016-05-27 Chris Dumez <cdumez@apple.com>
callOnMainThread() should not copy captured lambda variables
https://bugs.webkit.org/show_bug.cgi?id=158166
Reviewed by Brady Eidson.
callOnMainThread() should not copy captured lambda variables. This
function is usually called cross-thread with a lambda and copying
the lambda (and its captured variables) can lead to thread-safety
issues.
This patch updates callOnMainThread() to take a NoncopyableFunction&&
in parameter instead of a std::function. The call sites of
callOnMainThread() have also been updated to use C++14's lambda
capture with initializer.
* WTF.xcodeproj/project.pbxproj:
* wtf/FunctionDispatcher.h:
* wtf/NoncopyableFunction.h:
- Moved NoncopyableFunction from FunctionDispatcher.h to
NoncopyableFunction.h.
- Add a new operator=(nullptr_t) operator to NoncopyableFunction to
match std::function, as one of the call sites needed it.
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
* wtf/MainThread.h:
2016-05-27 Yusuke Suzuki <utatane.tea@gmail.com>
Unreviewed, build fix for JSCOnly port.
https://bugs.webkit.org/show_bug.cgi?id=158111
Use NoncopyableFunction instead of std::function<>.
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::TimerBase::ScheduledTask::create):
(WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
2016-05-27 Chris Dumez <cdumez@apple.com>
WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables
https://bugs.webkit.org/show_bug.cgi?id=158111
Reviewed by Darin Adler.
WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables.
These are often used cross-thread and copying the captured lambda variables can be
dangerous (e.g. we do not want to copy a String after calling isolatedCopy() upon
capture).
This patch introduces a new NoncopyableFunction type that behaves similarly to
std::function but guarantees that the passed-in lambda (and its captured variables)
cannot be copied. This new NoncopyableFunction type is now used for
WorkQueue / RunLoop's dispatch() / dispatchAfter() which are commonly used
cross-thread. This should now allow us to call WorkQueue::dispatch() with a lambda
that captures a String like so:
[str = str.isolatedCopy()]() { }
Also note that even though this is not leveraged in this patch, NoncopyableFunction
would allow us to capture move-only types such as std::unique_ptr as so:
[p = WTFMove(p)]() { }
This does not work if we convert the lambda into an std::function because
std::function requires the lambda to be copyable, NoncopyableFunction does not.
* wtf/FunctionDispatcher.h:
(WTF::CallableWrapperBase::~CallableWrapperBase):
(WTF::NoncopyableFunction::NoncopyableFunction):
(WTF::NoncopyableFunction::operator()):
(WTF::NoncopyableFunction::operator bool):
(WTF::NoncopyableFunction::operator=):
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/efl/DispatchQueueWorkItemEfl.h:
(WorkItem::WorkItem):
(TimerWorkItem::create):
(TimerWorkItem::TimerWorkItem):
* wtf/efl/WorkQueueEfl.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
* wtf/generic/RunLoopGeneric.cpp:
(WTF::RunLoop::dispatchAfter):
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::dispatch):
(WorkQueue::dispatchAfter):
* wtf/glib/RunLoopGLib.cpp:
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::RunLoop::dispatchAfter):
* wtf/win/WorkItemWin.cpp:
(WTF::WorkItemWin::WorkItemWin):
(WTF::WorkItemWin::create):
(WTF::HandleWorkItem::HandleWorkItem):
(WTF::HandleWorkItem::createByAdoptingHandle):
* wtf/win/WorkItemWin.h:
(WTF::WorkItemWin::function):
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::timerCallback):
(WTF::WorkQueue::dispatchAfter):
2016-05-26 Filip Pizlo <fpizlo@apple.com>
ScopedLambda should have a lifetime story that makes sense to the compiler
https://bugs.webkit.org/show_bug.cgi?id=158118
Reviewed by Mark Lam.
Prior to this change, there were two lifetime bugs in ScopedLambda:
- scopedLambda(Functor&&) would bind Functor to const lambda&, so the resulting ScopedLambdaFunctor
would hold a reference to the original lambda. This would have surprising behavior; for example
it meant that this code was wrong:
auto l = scopedLambda<things>([&] ...);
The solution is to have explicit copy/move versions of scopedLambda() rather than rely on perfect
forwarding.
- ScopedLambdaFunctor did not override its copy or move operations, so if the compiler did not RVO
scopedLambda(), it would return a ScopedLambdaFunctor whose m_arg points to a dead temporary
ScopedLambdaFunctor instance. The solution is to have explicit copy/move constructors and
operators, which preserve the invariant that ScopedLambda::m_arg points to this.
One nice side-effect of all of these constructors and operators being explicit is that we can rely
on WTFMove's excellent assertions, which helped catch the first issue.
This reverts ParkingLot to use ScopedLambda again.
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionallyImpl):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkOneImpl):
* wtf/ParkingLot.h:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
* wtf/ScopedLambda.h:
(WTF::scopedLambda):
2016-05-25 Anders Carlsson <andersca@apple.com>
Get rid of WTF/Functional.h
https://bugs.webkit.org/show_bug.cgi?id=158081
Reviewed by Chris Dumez.
This is no longer used, and removing it will free up the name for a new Functional.h implementation.
* WTF.xcodeproj/project.pbxproj:
* wtf/Functional.h: Removed.
(WTF::RefAndDeref::ref): Deleted.
(WTF::RefAndDeref::deref): Deleted.
(WTF::ParamStorageTraits::wrap): Deleted.
(WTF::ParamStorageTraits::unwrap): Deleted.
(WTF::ParamStorageTraits<PassRefPtr<T>>::wrap): Deleted.
(WTF::ParamStorageTraits<PassRefPtr<T>>::unwrap): Deleted.
(WTF::ParamStorageTraits<RefPtr<T>>::wrap): Deleted.
(WTF::ParamStorageTraits<RefPtr<T>>::unwrap): Deleted.
(WTF::ParamStorageTraits<RetainPtr<T>>::wrap): Deleted.
(WTF::ParamStorageTraits<RetainPtr<T>>::unwrap): Deleted.
(WTF::FunctionImplBase::~FunctionImplBase): Deleted.
(WTF::FunctionBase::isNull): Deleted.
(WTF::FunctionBase::FunctionBase): Deleted.
(WTF::FunctionBase::impl): Deleted.
(WTF::bind): Deleted.
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
2016-05-24 Keith Miller <keith_miller@apple.com>
LLInt should be able to cache prototype loads for values in GetById
https://bugs.webkit.org/show_bug.cgi?id=158032
Reviewed by Filip Pizlo.
Add move constructors/initializers to Bags.
* wtf/Bag.h:
(WTF::Bag::Bag):
(WTF::Bag::operator=):
2016-05-24 Chris Dumez <cdumez@apple.com>
Use auto for some of our lambda function parameters
https://bugs.webkit.org/show_bug.cgi?id=158001
Reviewed by Darin Adler.
Use auto for some of our lambda function parameters now that we build with c++14.
* wtf/BubbleSort.h:
(WTF::bubbleSort):
2016-05-23 Chris Dumez <cdumez@apple.com>
Speed up move of vectors of POD types that have an inline buffer
https://bugs.webkit.org/show_bug.cgi?id=158003
Reviewed by Benjamin Poulain.
When moving a vector of POD types that have an inline buffer, we would
call std::swap() on the inline buffers. This unnecessarily slow because:
1. It does not consider the vector size, and therefore may end up doing
more work than necessary when the inline buffer is not full.
2. In the "move" case, the destination buffer is completely empty so
we don't really want a swap. We merely want the move the content of
the source's inline buffer into the destination's one.
Instead of calling std::swap(), we now call swapInlineBuffers() which
was already used for non-POD types. swapInlineBuffers() will do just
what we want in the "move" case because swapBound is going to be 0.
As a result, we will only move the content of the source buffer into
the destination one. Also swapInlineBuffers() is aware of the source
vector's size so it will only move what's strictly needed.
This seems to be a 2% progression on Dromaeo DOM attributes test.
* wtf/Vector.h:
(WTF::VectorBuffer::swapInlineBuffer):
2016-05-22 Dan Bernstein <mitz@apple.com>
Added NSEventMaskMouseMoved to AppKitCompatibilityDeclarations.h.
Rubber-stamped by Anders Carlsson.
* wtf/mac/AppKitCompatibilityDeclarations.h:
2016-05-22 Dan Bernstein <mitz@apple.com>
Another attempt to fix the GTK build after my previous changes.
* wtf/StdLibExtras.h:
2016-05-22 Dan Bernstein <mitz@apple.com>
Tried to fix the GTK build after r201257.
* wtf/StdLibExtras.h:
2016-05-22 Dan Bernstein <mitz@apple.com>
Additional fixes for non-C++14 Apple projects that use WTF.
* wtf/StdLibExtras.h:
(std::exchange):
2016-05-22 Dan Bernstein <mitz@apple.com>
Additional fixes for non-C++14 Apple projects that use WTF.
* wtf/StdLibExtras.h:
(std::make_unique):
(std::move):
2016-05-22 Dan Bernstein <mitz@apple.com>
Correct the previous build fix attempt.
* wtf/StdLibExtras.h:
2016-05-22 Dan Bernstein <mitz@apple.com>
Build fix for non-C++14 Apple projects that use WTF.
Rubber-stamped by Anders.
* wtf/StdLibExtras.h:
2016-05-22 Brady Eidson <beidson@apple.com>
Move to C++14.
https://bugs.webkit.org/show_bug.cgi?id=157948
Reviewed by Michael Catanzaro.
* Configurations/Base.xcconfig:
Delete a lot of "stl additions until we can adopt C++14" code:
* wtf/StdLibExtras.h:
(std::make_unique): Deleted.
(std::index_sequence::size): Deleted.
(std::exchange): Deleted.
(std::literals::chrono_literals::operator _s): Deleted.
(std::literals::chrono_literals::operator _ms): Deleted.
2016-05-20 Rawinder Singh <rawinder.singh-webkit@cisra.canon.com.au>
Implement operator== for WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=157883
Reviewed by Chris Dumez.
Implement operator== and operator!= for WeakPtr and update code to use the operators.
* wtf/WeakPtr.h:
(WTF::operator==):
(WTF::operator!=):
2016-05-19 Chris Dumez <cdumez@apple.com>
Improve compile-time assertions in is<>() / downcast<>()
https://bugs.webkit.org/show_bug.cgi?id=157817
Reviewed by Darin Adler.
* wtf/Ref.h:
(WTF::is):
Add is<>() overloads taking a Ref<>() so that is<>() keeps working when
passing a Ref<>(), despite the new static assertions on the input type.
Some call sites were already leveraging this as it was working by
implicitly converting the Ref<T> into a T&.
* wtf/TypeCasts.h:
(WTF::is):
(WTF::downcast):
Make static assertions stricter in is<>() / downcast<>() to catch more
cases where those are either unnecessary or incorrect.
2016-05-19 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix all of the builds. I failed a second time.
* wtf/BackwardsGraph.h:
(WTF::BackwardsGraph::rootName):
2016-05-19 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix all of the builds. I had made an additional change that I did not mean to
commit. This fixes it.
* wtf/BackwardsGraph.h:
(WTF::BackwardsGraph::rootName):
(WTF::BackwardsGraph::Set::dump):
(WTF::BackwardsGraph::dump):
2016-05-18 Filip Pizlo <fpizlo@apple.com>
DFG::LICMPhase shouldn't hoist type checks unless it knows that the check will succeed at the loop pre-header
https://bugs.webkit.org/show_bug.cgi?id=144527
Reviewed by Saam Barati.
This adds an adaptor for graphs called BackwardsGraph. The WTF graph framework is based on
passing around a Graph template argument that follows the protocol shared by DFG::CFG,
B3::CFG, and Air::CFG. These graphs always have a single root node but may have many leaf
nodes. This new BackwardsGraph adaptor reverses the graph by creating a synthetic return
node that it uses as the root in the inverted graph. This currently may resort to some
heuristics in programs that have an infinite loop, but other than that, it'll work well in
the general case.
This allows us to say Dominators<BackwardsGraph<some graph type>> as a way of computing
backwards dominators, which then allows us to easily answer control flow equivalence
queries.
* CMakeLists.txt:
* WTF.xcodeproj/project.pbxproj:
* wtf/BackwardsGraph.h: Added.
(WTF::BackwardsGraph::Node::Node):
(WTF::BackwardsGraph::Node::root):
(WTF::BackwardsGraph::Node::operator==):
(WTF::BackwardsGraph::Node::operator!=):
(WTF::BackwardsGraph::Node::operator bool):
(WTF::BackwardsGraph::Node::isRoot):
(WTF::BackwardsGraph::Node::node):
(WTF::BackwardsGraph::Set::Set):
(WTF::BackwardsGraph::Set::add):
(WTF::BackwardsGraph::Set::remove):
(WTF::BackwardsGraph::Set::contains):
(WTF::BackwardsGraph::Set::dump):
(WTF::BackwardsGraph::Map::Map):
(WTF::BackwardsGraph::Map::clear):
(WTF::BackwardsGraph::Map::size):
(WTF::BackwardsGraph::Map::operator[]):
(WTF::BackwardsGraph::BackwardsGraph):
(WTF::BackwardsGraph::root):
(WTF::BackwardsGraph::newMap):
(WTF::BackwardsGraph::successors):
(WTF::BackwardsGraph::predecessors):
(WTF::BackwardsGraph::index):
(WTF::BackwardsGraph::node):
(WTF::BackwardsGraph::numNodes):
(WTF::BackwardsGraph::dump):
* wtf/Dominators.h:
(WTF::Dominators::Dominators):
(WTF::Dominators::dump):
(WTF::Dominators::LengauerTarjan::computeDepthFirstPreNumbering):
* wtf/GraphNodeWorklist.h:
(WTF::GraphNodeWith::GraphNodeWith):
(WTF::GraphNodeWith::operator bool):
* wtf/StdLibExtras.h:
(WTF::callStatelessLambda):
(WTF::checkAndSet):
2016-05-18 Saam barati <sbarati@apple.com>
StringBuilder::appendQuotedJSONString doesn't properly protect against the math it's doing. Make the math fit the assertion.
https://bugs.webkit.org/show_bug.cgi?id=157868
Reviewed by Benjamin Poulain.
appendQuotedJSONString was rounding up to the next power of two when resizing
its buffer. Lets call the allocation size X. If X > 2^31, then
roundUpToPowerOfTwo(X) == 0. This patch fixes this by making the
assertion reflect what the code is doing. We now allocate to a size
of X = std::max(maximumCapacityRequired , roundUpToPowerOfTwo(maximumCapacityRequired))
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::appendQuotedJSONString):
2016-05-17 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r192855): Math.random() always produces the same first 7 decimal points the first two invocations
https://bugs.webkit.org/show_bug.cgi?id=157805
<rdar://problem/26327851>
Reviewed by Geoffrey Garen.
* wtf/WeakRandom.h:
(WTF::WeakRandom::setSeed):
Advance once to randomize the 32bit seed across the 128bit state
and avoid re-using 64bits of state in the second advance.
2016-05-17 Dean Jackson <dino@apple.com>
Remove ES6_GENERATORS flag
https://bugs.webkit.org/show_bug.cgi?id=157815
<rdar://problem/26332894>
Reviewed by Geoffrey Garen.
This flag isn't needed. Generators are enabled everywhere and
part of a stable specification.
* wtf/FeatureDefines.h:
2016-05-17 Filip Pizlo <fpizlo@apple.com>
WTF should know about Language
https://bugs.webkit.org/show_bug.cgi?id=157756
Reviewed by Geoffrey Garen.
This contains two changes:
- Move everything that WebCore's logic for getting the platform user preferred language
depended on into WTF. This means CFBundleSPI.h and BlockObjCExceptions.h|cpp.
- Move WebCore::platformUserPreferredLanguages() to WTF::platformUserPreferredLanguages().
This is needed by https://bugs.webkit.org/show_bug.cgi?id=157755, which will make JSC
use this to detect the platform user preferred language when running standalone.
Moving the dependencies accounts for a huge chunk of this change, since we have to rewire
all of the references to those headers in all of WebKit.
Moving platformUserPreferredLanguages() is mostly easy except for the weird callback.
That function would call languageDidChange(), which needs to stay in WebCore. So, this
gives WebCore the ability to register a languageDidChange callback. Other than this new
logic, the code being added to WTF is just being lifted out of WebCore.
* WTF.xcodeproj/project.pbxproj:
* wtf/BlockObjCExceptions.h: Added.
* wtf/BlockObjCExceptions.mm: Added.
(ReportBlockedObjCException):
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/PlatformJSCOnly.cmake:
* wtf/PlatformMac.cmake:
* wtf/PlatformUserPreferredLanguages.h: Added.
* wtf/PlatformUserPreferredLanguagesMac.mm: Added.
(WTF::setPlatformUserPreferredLanguagesChangedCallback):
(WTF::preferredLanguages):
(+[WTFLanguageChangeObserver languagePreferencesDidChange:]):
(WTF::httpStyleLanguageCode):
(WTF::isValidICUCountryCode):
(WTF::platformUserPreferredLanguages):
* wtf/PlatformUserPreferredLanguagesUnix.cpp: Added.
(WTF::setPlatformUserPreferredLanguagesChangedCallback):
(WTF::platformLanguage):
(WTF::platformUserPreferredLanguages):
* wtf/PlatformUserPreferredLanguagesWin.cpp: Added.
(WTF::setPlatformUserPreferredLanguagesChangedCallback):
(WTF::localeInfo):
(WTF::platformLanguage):
(WTF::platformUserPreferredLanguages):
* wtf/PlatformWin.cmake:
* wtf/spi/cf: Added.
* wtf/spi/cf/CFBundleSPI.h: Added.
2016-05-17 Youenn Fablet <youenn.fablet@crf.canon.fr>
DOMPromise should only restrict the resolution type
https://bugs.webkit.org/show_bug.cgi?id=157307
Reviewed by Darin Adler.
* wtf/Ref.h: Adding static constexpr to ease detection of Ref for templates.
* wtf/RefPtr.h: Ditto.
2016-05-16 Michael Saboff <msaboff@apple.com>
ARMV7K: Crash at JavaScriptCore: WTF::ScopedLambdaFunctor<bool
https://bugs.webkit.org/show_bug.cgi?id=157781
Reviewed by Filip Pizlo.
Replaced use of ScopedLambda in locking code with std::function much as it was
before change set 199760 to work around what appears to be a clang compiler issue.
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionallyImpl):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkAll):
(WTF::ParkingLot::forEach):
(WTF::ParkingLot::unparkOneImpl): Deleted.
(WTF::ParkingLot::forEachImpl): Deleted.
* wtf/ParkingLot.h:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne): Deleted.
(WTF::ParkingLot::forEach): Deleted.
2016-05-15 Chris Dumez <cdumez@apple.com>
Use more references in JS wrappers related code
https://bugs.webkit.org/show_bug.cgi?id=157721
Reviewed by Darin Adler.
Add new static_reference_cast() overload that takes a Ref<U>&& in
in order to downcast Ref<> types without causing ref-counting
churn.
* wtf/Ref.h:
(WTF::static_reference_cast):
2016-05-13 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r200837.
Seems to have regressed Speedometer and JetStream on iOS
Reverted changeset:
"DOMPromise should only restrict the resolution type"
https://bugs.webkit.org/show_bug.cgi?id=157307
http://trac.webkit.org/changeset/200837
2016-05-13 Beth Dakin <bdakin@apple.com>
Add dyldSPI.h
https://bugs.webkit.org/show_bug.cgi?id=157401
-and corresponding-
rdar://problem/26253396
Reviewed by Darin Adler.
New header for dyld spi.
* WTF.xcodeproj/project.pbxproj:
* wtf/spi/darwin/dyldSPI.h: Added.
2016-05-13 Youenn Fablet <youenn.fablet@crf.canon.fr>
DOMPromise should only restrict the resolution type
https://bugs.webkit.org/show_bug.cgi?id=157307
Reviewed by Darin Adler.
* wtf/Ref.h: Adding static constexpr to ease detection of Ref for templates.
* wtf/RefPtr.h: Ditto.
2016-05-12 Daniel Bates <dabates@apple.com>
Use SecTask SPI to retrieve code signing identifier for user directory suffix
https://bugs.webkit.org/show_bug.cgi?id=157570
Reviewed by Darin Adler.
<rdar://problem/25706517>
Forward declare SPI SecTaskCopySigningIdentifier().
* wtf/spi/cocoa/SecuritySPI.h:
2016-05-12 Csaba Osztrogonác <ossy@webkit.org>
Remove ENABLE(ES6_ARROWFUNCTION_SYNTAX) guards
https://bugs.webkit.org/show_bug.cgi?id=157564
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
2016-05-10 Filip Pizlo <fpizlo@apple.com>
Internal JSC profiler should have a timestamped log of events for each code block
https://bugs.webkit.org/show_bug.cgi?id=157538
Reviewed by Benjamin Poulain.
* wtf/PrintStream.h:
(WTF::PrintStream::print):
2016-05-10 Chris Dumez <cdumez@apple.com>
Get rid of a lot of calls to RefPtr::release()
https://bugs.webkit.org/show_bug.cgi?id=157505
Reviewed by Alex Christensen.
Get rid of a lot of calls to RefPtr::release() and use WTFMove() instead.
* wtf/text/AtomicStringImpl.cpp:
(WTF::HashAndUTF8CharactersTranslator::translate):
* wtf/text/CString.cpp:
(WTF::CString::copyBufferIfNeeded):
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::allocateBuffer):
(WTF::StringBuilder::allocateBufferUpConvert):
(WTF::StringBuilder::shrinkToFit):
* wtf/text/WTFString.cpp:
(WTF::String::append):
(WTF::String::insert):
(WTF::String::removeInternal):
* wtf/text/WTFString.h:
(WTF::String::String):
(WTF::String::operator=):
(WTF::String::releaseImpl):
(WTF::String::isNull): Deleted.
2016-05-08 Chris Dumez <cdumez@apple.com>
[COCOA] Disable HAVE_DTRACE at build time
https://bugs.webkit.org/show_bug.cgi?id=157433
<rdar://problem/26148841>
Reviewed by Mark Lam.
Disable HAVE_DTRACE on COCOA since it is mostly unused and has a performance
impact, at least on iOS.
* wtf/Platform.h:
2016-05-08 Chris Dumez <cdumez@apple.com>
[Bindings] Simplify [RequiresExistingAtomicString] IDL extended attribute handling
https://bugs.webkit.org/show_bug.cgi?id=157465
Reviewed by Darin Adler.
Add an AtomicString(RefPtr<AtomicStringImpl>&&) constructor that is now
used by the bindings when [RequiresExistingAtomicString] is used. This
is more efficient than using AtomicString(AtomicStringImpl*) as the
caller has a RefPtr<AtomicStringImpl> and is consistent with the
pre-existing String(RefPtr<AtomicStringImpl>&&) constructor.
* wtf/text/AtomicString.h:
(WTF::AtomicString::AtomicString):
2016-05-08 Darin Adler <darin@apple.com>
* wtf/text/WTFString.h: Remove pragma once. Not working for some reason.
2016-05-08 Darin Adler <darin@apple.com>
Follow-up to that last patch (missed review comments).
* wtf/text/WTFString.h: Use nullptr instead of 0 as needed. Also use pragma once.
2016-05-08 Darin Adler <darin@apple.com>
Change EventSource constructor to take an IDL dictionary instead of a WebCore::Dictionary
https://bugs.webkit.org/show_bug.cgi?id=157459
Reviewed by Chris Dumez.
* wtf/text/WTFString.h: Export a symbol now used in WebCore.
2016-05-02 Sam Weinig <sam@webkit.org>
On platforms that support it, use a SecTrustRef as the basis of CertificateInfo instead of a chain of SecCertificateRefs.
https://bugs.webkit.org/show_bug.cgi?id=157220
Reviewed by Darin Adler.
* wtf/Platform.h:
Add support for HAVE(SEC_TRUST_SERIALIZATION).
* wtf/spi/cocoa/SecuritySPI.h:
Add SPI access to SecTrustSerialize and SecTrustDeserialize.
2016-05-04 Filip Pizlo <fpizlo@apple.com>
Add HLE locks and synchronic TTAS locks to the ToyLocks benchmark suite
https://bugs.webkit.org/show_bug.cgi?id=157367
Rubber stamped by Benjamin Poulain.
Turns out they are both a lot slower than WTF::Lock. The HLE lock is written according to Intel's
documentation. The synchronic lock follows the algorithm of the "ttas_lock" in the synchronic
test.hpp.
* benchmarks/ToyLocks.h:
2016-05-04 Filip Pizlo <fpizlo@apple.com>
Add a few more WTF locking benchmarks
https://bugs.webkit.org/show_bug.cgi?id=157365
Rubber stamped by Benjamin Poulain.
Factors out our toy locks into ToyLocks.h and adds a new test (LockFairnessTest) that measures
the fairness of locks.
The result: WTF::Lock is pretty fair enough.
* benchmarks/LockFairnessTest.cpp: Added.
(main):
* benchmarks/LockSpeedTest.cpp:
(main):
* benchmarks/ToyLocks.h: Added.
2016-05-04 Filip Pizlo <fpizlo@apple.com>
Speed up JSGlobalObject initialization by making some properties lazy
https://bugs.webkit.org/show_bug.cgi?id=157045
Reviewed by Keith Miller.
This WTF change is at the heart of a large JSC change. In JSC I found myself wanting to
do this a lot:
static void callback(Foo& foo) { ... }
foo.setCallback(callback);
But that's not very nice to write if many different setCallback() calls are inside of the
same very large function: you'll have to have a lot of static function definitions in
one part of the file, and then a bunch of setCallback() calls in another part. It's hard
to reason about what's going on with such code.
So what if you wrote this instead:
foo.setCallback([] (Foo& foo) { ... });
Much nicer! There is a standard way to do this: lambdas that are stateless are
convertible to function pointers. This change also offers another approach that is a bit
more general.
These additions to WTF help you do it:
isStatelessLambda<Func>(): tells you if Func is a stateless lambda. This uses is_empty to
test if the lambda is stateless. This turns out to be a stronger property than
convertibility to function pointers. For example, a function pointer is convertible to a
function pointer, but it is definitely stateful: you cannot successfully call it if you
only has its type. On the other hand, a stateless lambda is really stateless in the sense
that you only need its type to call it.
callStatelessLambda<ResultType, Func>(Arguments&&...): calls the given stateless lambda.
JSC uses these to build up some sophisticated lazy-initialization APIs. The use of
statelessness allows JSC to combine a lambda with other logic into a single function
pointer.
* wtf/StdLibExtras.h:
(WTF::isStatelessLambda):
(WTF::callStatelessLambda):
2016-05-04 Per Arne Vollan <peavo@outlook.com>
[Win] Use NeverDestroyed template.
https://bugs.webkit.org/show_bug.cgi?id=157345
Reviewed by Darin Adler.
* wtf/ThreadingWin.cpp:
(WTF::threadMapMutex):
(WTF::threadMap):
2016-05-04 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r200383 and r200406.
Seems to have caused crashes on iOS / ARMv7s
Reverted changesets:
"Speed up JSGlobalObject initialization by making some
properties lazy"
https://bugs.webkit.org/show_bug.cgi?id=157045
http://trac.webkit.org/changeset/200383
"REGRESSION(r200383): Setting lazily initialized properties
across frame boundaries crashes"
https://bugs.webkit.org/show_bug.cgi?id=157333
http://trac.webkit.org/changeset/200406
2016-05-03 Filip Pizlo <fpizlo@apple.com>
Speed up JSGlobalObject initialization by making some properties lazy
https://bugs.webkit.org/show_bug.cgi?id=157045
Reviewed by Keith Miller.
This WTF change is at the heart of a large JSC change. In JSC I found myself wanting to
do this a lot:
static void callback(Foo& foo) { ... }
foo.setCallback(callback);
But that's not very nice to write if many different setCallback() calls are inside of the
same very large function: you'll have to have a lot of static function definitions in
one part of the file, and then a bunch of setCallback() calls in another part. It's hard
to reason about what's going on with such code.
So what if you wrote this instead:
foo.setCallback([] (Foo& foo) { ... });
Much nicer! There is a standard way to do this: lambdas that are stateless are
convertible to function pointers. This change also offers another approach that is a bit
more general.
These additions to WTF help you do it:
isStatelessLambda<Func>(): tells you if Func is a stateless lambda. This uses is_empty to
test if the lambda is stateless. This turns out to be a stronger property than
convertibility to function pointers. For example, a function pointer is convertible to a
function pointer, but it is definitely stateful: you cannot successfully call it if you
only has its type. On the other hand, a stateless lambda is really stateless in the sense
that you only need its type to call it.
callStatelessLambda<ResultType, Func>(Arguments&&...): calls the given stateless lambda.
JSC uses these to build up some sophisticated lazy-initialization APIs. The use of
statelessness allows JSC to combine a lambda with other logic into a single function
pointer.
* wtf/StdLibExtras.h:
(WTF::isStatelessLambda):
(WTF::callStatelessLambda):
2016-05-03 Per Arne Vollan <peavo@outlook.com>
[Win] Remove Windows XP Compatibility Requirements
https://bugs.webkit.org/show_bug.cgi?id=152899
Reviewed by Brent Fulgham.
Windows XP is not supported anymore, we can remove workarounds.
* wtf/Assertions.cpp:
2016-05-03 Per Arne Vollan <peavo@outlook.com>
[Win] Warning fix.
https://bugs.webkit.org/show_bug.cgi?id=157309
Reviewed by Darin Adler.
MSVC gives a warning when converting from signed to unsigned.
* wtf/SmallPtrSet.h:
(WTF::SmallPtrSet::begin):
2016-05-02 Brady Eidson <beidson@apple.com>
Add the ability to accumulate logs for specific logging channels to help diagnose test timeouts.
https://bugs.webkit.org/show_bug.cgi?id=157274
Reviewed by Alex Christensen.
This patch changes WTFLog to add the logging string to the logging accumulator if the logging channel says so.
It also adds support for using this new accumulation mechanism.
* WTF.xcodeproj/project.pbxproj:
* wtf/Assertions.cpp:
(WTF::resetAccumulatedLogs):
(WTF::getAndResetAccumulatedLogs):
* wtf/Assertions.h:
* wtf/LoggingAccumulator.h: Added. Expose functions to get accumulated logs and to reset the accumulation.
* wtf/text/WTFString.cpp:
(WTF::String::format): Update to handle %@ on CF (Well, really ObjC) platforms.
2016-05-02 Per Arne Vollan <peavo@outlook.com>
[Win] Enable IndexedDB.
https://bugs.webkit.org/show_bug.cgi?id=157192
Reviewed by Brent Fulgham.
Fix compile errors when format specifiers like PRIu64 is used, by defining
__STDC_FORMAT_MACROS before inttypes.h is included.
* wtf/Platform.h:
2016-04-27 Brady Eidson <beidson@apple.com>
Modern IDB: Implement native IDBFactory.getAllDatabaseNames for WebInspector.
https://bugs.webkit.org/show_bug.cgi?id=157072
Reviewed by Alex Christensen.
Moved these Hex Digit utilities from WebCore URL code (???),
and add a checked version of getting the hex digit value.
* wtf/HexNumber.h:
(WTF::isHexDigit):
(WTF::uncheckedHexDigit):
(WTF::hexDigitValue):
(WTF::uncheckedHexDigitValue):
2016-04-25 Ryosuke Niwa <rniwa@webkit.org>
Remove the build flag for template elements
https://bugs.webkit.org/show_bug.cgi?id=157022
Reviewed by Daniel Bates.
* wtf/FeatureDefines.h:
2016-04-25 Fujii Hironori <Hironori.Fujii@sony.com>
Heap corruption is detected when destructing JSGlobalObject
https://bugs.webkit.org/show_bug.cgi?id=156831
Reviewed by Mark Lam.
WebKit uses CRT static library on Windows. Each copy of the CRT
library has its own heap manager, allocating memory in one CRT
library and passing the pointer across a DLL boundary to be freed
by a different copy of the CRT library is a potential cause for
heap corruption.
Potential Errors Passing CRT Objects Across DLL Boundaries
<https://msdn.microsoft.com/en-us/library/ms235460(v=vs.140).aspx>
JSGlobalObject::createRareDataIfNeeded is inlined but
JSGlobalObject::~JSGlobalObject is not. Then, the heap of
allocating JSGlobalObjectRareData is WebKit.dll, but deallocating
JavaScriptCore.dll. Adding WTF_MAKE_FAST_ALLOCATED to
JSGlobalObjectRareData ensures heap consistency of it. WTF::Lock
also needs WTF_MAKE_FAST_ALLOCATED because it is allocated from
the inlined constructor of JSGlobalObjectRareData.
* wtf/Lock.h: Add WTF_MAKE_FAST_ALLOCATED.
2016-04-21 Saam barati <sbarati@apple.com>
Lets do less locking of symbol tables in the BytecodeGenerator where we don't have race conditions
https://bugs.webkit.org/show_bug.cgi?id=156821
Reviewed by Filip Pizlo.
This patch introduces a new constructor for Locker which implies no
locking is necessary. You instantiate such a locker like so:
`Locker<Lock> locker(Locker<Lock>::NoLockingNecessary);`
This is useful to for very specific places when it is not yet
required to engage in a specified locking protocol. As an example,
we use this in JSC when we allocate a particular object that
engages in a locking protocol with the concurrent compiler thread,
but before a concurrent compiler thread that could have access
to the object exists.
* wtf/Locker.h:
(WTF::Locker::Locker):
(WTF::Locker::~Locker):
2016-04-19 Michael Saboff <msaboff@apple.com>
iTunes crashing JavaScriptCore.dll
https://bugs.webkit.org/show_bug.cgi?id=156647
Reviewed by Filip Pizlo.
If a thread was created without using the WTF thread apis and that thread uses
a JavaScript VM and that thread exits with the VM still around, JSC won't know
that the thread has exited. Currently, we use ThreadSpecificThreadExit() to
clean up any thread specific keys. Cleaning up these keys is how JSC is
notified of a thread exit. We only call ThreadSpecificThreadExit() from
wtfThreadEntryPoint() when the thread entry point function returns.
This mechanism was put in place for Windows because we layer the WTF::ThreadSpecific
functionality on top of TLS (Thread Local Storage), but TLS doesn't have
a thread exiting callback the way that pthread_create_key does.
The fix is to change from using TLS to using FLS (Fiber Local Storage). Although
Windows allows multiple fibers per thread, WebKit is not designed to work with a
multiple fibers per thread. When there is only one fiber per thread, FLS works just
like TLS, but it has the destroy callback.
I restructured the Windows version of WTF::ThreadSpecific to be almost the same
as the pthread version. Added THREAD_SPECIFIC_CALL to set the correct
calling convenction for Windows 32 bit.
* wtf/ThreadSpecific.h:
(WTF::threadSpecificKeyCreate):
(WTF::threadSpecificKeyDelete):
(WTF::threadSpecificSet):
(WTF::threadSpecificGet):
(WTF::ThreadSpecific<T>::ThreadSpecific):
(WTF::ThreadSpecific<T>::~ThreadSpecific):
(WTF::ThreadSpecific<T>::get):
(WTF::ThreadSpecific<T>::set):
(WTF::ThreadSpecific<T>::destroy):
Restructured to use FLS. Renamed TLS* to FLS*.
* wtf/ThreadSpecificWin.cpp:
(WTF::flsKeyCount):
(WTF::flsKeys):
Renamed from tlsKey*() to flsKey*().
(WTF::destructorsList): Deleted.
(WTF::destructorsMutex): Deleted.
(WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
(WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
(WTF::PlatformThreadSpecificKey::setValue): Deleted.
(WTF::PlatformThreadSpecificKey::value): Deleted.
(WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
(WTF::tlsKeyCount): Deleted.
(WTF::tlsKeys): Deleted.
(WTF::threadSpecificKeyCreate): Deleted.
(WTF::threadSpecificKeyDelete): Deleted.
(WTF::threadSpecificSet): Deleted.
(WTF::threadSpecificGet): Deleted.
(WTF::ThreadSpecificThreadExit): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
2016-04-19 Filip Pizlo <fpizlo@apple.com>
Add more locking algorithms to the LockSpeedTest.
Rubber stamped by Saam Barati.
* benchmarks/LockSpeedTest.cpp:
(main):
2016-04-19 Filip Pizlo <fpizlo@apple.com>
Clean up the ParkingLot uparking API a bit
https://bugs.webkit.org/show_bug.cgi?id=156746
Reviewed by Saam Barati and Geoffrey Garen.
Previously, unparkOne() would either return a boolean to tell you if there are any more threads on
the queue or it would pass your callback a pair of booleans - one to tell if a thread was unparked
and another to tell if there are any more threads. This was an annoying inconsistency. What if you
wanted to know if unparkOne() unparked a thread but you don't care to use callbacks?
This fixes unparkOne() to use a struct called UnparkResult for both of its variants. This makes the
code a bit cleaner.
* wtf/Atomics.h: Add some more atomic ops.
(WTF::Atomic::exchangeAndAdd):
(WTF::Atomic::exchange):
* wtf/Condition.h: Change calls to unparkOne().
(WTF::ConditionBase::notifyOne):
* wtf/Lock.cpp: Change calls to unparkOne().
(WTF::LockBase::unlockSlow):
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
* wtf/ParkingLot.h: Switch to using ScopedLambda and introduce UnparkResult.
2016-04-19 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r199726.
https://bugs.webkit.org/show_bug.cgi?id=156748
WebKit tests crash on Windows 32 (Requested by msaboff on
#webkit).
Reverted changeset:
"iTunes crashing JavaScriptCore.dll"
https://bugs.webkit.org/show_bug.cgi?id=156647
http://trac.webkit.org/changeset/199726
2016-04-19 Michael Saboff <msaboff@apple.com>
iTunes crashing JavaScriptCore.dll
https://bugs.webkit.org/show_bug.cgi?id=156647
Reviewed by Saam Barati.
If a thread was created without using the WTF thread apis and that thread uses
a JavaScript VM and that thread exits with the VM still around, JSC won't know
that the thread has exited. Currently, we use ThreadSpecificThreadExit() to
clean up any thread specific keys. Cleaning up these keys is how JSC is
notified of a thread exit. We only call ThreadSpecificThreadExit() from
wtfThreadEntryPoint() when the thread entry point function returns.
This mechanism was put in place for Windows because we layer the WTF::ThreadSpecific
functionality on top of TLS (Thread Local Storage), but TLS doesn't have
a thread exiting callback the way that pthread_create_key.
The fix is to change from using TLS to using FLS (Fiber Local Storage). Although
Windows allows multiple fibers per thread, WebKit is not designed to work with a
multiple fibers per thread. When there is only one fiber per thread, FLS works just
like TLS, but it has the destroy callback.
I restructured the Windows version of WTF::ThreadSpecific to be almost the same
as the pthread version.
* wtf/ThreadSpecific.h:
(WTF::threadSpecificKeyCreate):
(WTF::threadSpecificKeyDelete):
(WTF::threadSpecificSet):
(WTF::threadSpecificGet):
(WTF::ThreadSpecific<T>::ThreadSpecific):
(WTF::ThreadSpecific<T>::~ThreadSpecific):
(WTF::ThreadSpecific<T>::get):
(WTF::ThreadSpecific<T>::set):
(WTF::ThreadSpecific<T>::destroy):
Restructured to use FLS. Renamed TLS* to FLS*.
* wtf/ThreadSpecificWin.cpp:
(WTF::flsKeyCount):
(WTF::flsKeys):
Renamed from tlsKey*() to flsKey*().
(WTF::destructorsList): Deleted.
(WTF::destructorsMutex): Deleted.
(WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
(WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
(WTF::PlatformThreadSpecificKey::setValue): Deleted.
(WTF::PlatformThreadSpecificKey::value): Deleted.
(WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
(WTF::tlsKeyCount): Deleted.
(WTF::tlsKeys): Deleted.
(WTF::threadSpecificKeyCreate): Deleted.
(WTF::threadSpecificKeyDelete): Deleted.
(WTF::threadSpecificSet): Deleted.
(WTF::threadSpecificGet): Deleted.
(WTF::ThreadSpecificThreadExit): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
2016-04-19 Yusuke Suzuki <utatane.tea@gmail.com>
[GTK] Use Generic WorkQueue instead of WorkQueueGLib
https://bugs.webkit.org/show_bug.cgi?id=156721
Reviewed by Benjamin Poulain.
WorkQueueGLib includes platform-dependent part only for WorkQueue::dispatchAfter.
However, its code is related to RunLoopGLib rather than WorkQueueGLib.
In this patch, we move the code from WorkQueueGLib to RunLoopGLib, drop WorkQueueGLib
and use WorkQueueGeneric.
* wtf/PlatformGTK.cmake:
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/glib/RunLoopGLib.cpp:
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::DispatchAfterContext::dispatch):
(WTF::RunLoop::dispatchAfter):
* wtf/glib/WorkQueueGLib.cpp: Removed.
(WTF::WorkQueue::platformInitialize): Deleted.
(WTF::WorkQueue::platformInvalidate): Deleted.
(WTF::WorkQueue::dispatch): Deleted.
(WTF::DispatchAfterContext::DispatchAfterContext): Deleted.
(WTF::DispatchAfterContext::~DispatchAfterContext): Deleted.
(WTF::DispatchAfterContext::dispatch): Deleted.
(WTF::WorkQueue::dispatchAfter): Deleted.
2016-04-18 Yusuke Suzuki <utatane.tea@gmail.com>
[JSCOnly] Implement RunLoop and remove glib dependency
https://bugs.webkit.org/show_bug.cgi?id=155706
Reviewed by Michael Catanzaro.
Add missing RunLoop and WorkQueue platform code for JSCOnly port.
The implementation does not use platform specific things. Instead, we
implement them on WTF framework; using condition variables to construct
the run loop and timers.
Since the fallback is implemented, it is not necessary for JSCOnly port
to depend on GLib's RunLoop abstraction. So this patch removes its
dependency. As a result, now, JSCOnly port removes dependencies except for the system ICU.
We clean up event loop ifdefs by introducing USE_XXX_EVENT_LOOP flags.
USE(XXX_EVENT_LOOP) is exclusive to each other. So from now, we do not need to take care
of the order of if-defs for the event loops. (For example, USE(GLIB) should have lead before
OS(DARWIN) in WorkQueue.h for WebKitGTK on Darwin.)
EVENT_LOOP determination is done in Platform.h. This follows the style of WTF PLATFORM.
* wtf/Platform.h:
* wtf/PlatformJSCOnly.cmake:
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/generic/MainThreadGeneric.cpp: Renamed from Source/WTF/wtf/none/MainThreadNone.cpp.
(WTF::initializeMainThreadPlatform):
(WTF::scheduleDispatchFunctionsOnMainThread):
* wtf/generic/RunLoopGeneric.cpp: Added.
(WTF::RunLoop::TimerBase::ScheduledTask::create):
(WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
(WTF::RunLoop::TimerBase::ScheduledTask::fired):
(WTF::RunLoop::TimerBase::ScheduledTask::scheduledTimePoint):
(WTF::RunLoop::TimerBase::ScheduledTask::updateReadyTime):
(WTF::RunLoop::TimerBase::ScheduledTask::EarliestSchedule::operator()):
(WTF::RunLoop::TimerBase::ScheduledTask::isActive):
(WTF::RunLoop::TimerBase::ScheduledTask::deactivate):
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::populateTasks):
(WTF::RunLoop::runImpl):
(WTF::RunLoop::run):
(WTF::RunLoop::iterate):
(WTF::RunLoop::stop):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::schedule):
(WTF::RunLoop::scheduleAndWakeUp):
(WTF::RunLoop::dispatchAfter):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::~TimerBase):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
* wtf/generic/WorkQueueGeneric.cpp: Added.
(WorkQueue::platformInitialize):
(WorkQueue::platformInvalidate):
(WorkQueue::dispatch):
(WorkQueue::dispatchAfter):
* wtf/none/MainThreadNone.cpp:
(WTF::initializeMainThreadPlatform): Deleted.
(WTF::scheduleDispatchFunctionsOnMainThread): Deleted.
* wtf/none/RunLoopNone.cpp:
(WTF::RunLoop::RunLoop): Deleted.
(WTF::RunLoop::~RunLoop): Deleted.
(WTF::RunLoop::run): Deleted.
(WTF::RunLoop::stop): Deleted.
(WTF::RunLoop::wakeUp): Deleted.
(WTF::RunLoop::TimerBase::TimerBase): Deleted.
(WTF::RunLoop::TimerBase::~TimerBase): Deleted.
(WTF::RunLoop::TimerBase::start): Deleted.
(WTF::RunLoop::TimerBase::stop): Deleted.
(WTF::RunLoop::TimerBase::isActive): Deleted.
* wtf/none/WorkQueueNone.cpp:
(WorkQueue::platformInitialize): Deleted.
(WorkQueue::platformInvalidate): Deleted.
(WorkQueue::dispatch): Deleted.
(WorkQueue::dispatchAfter): Deleted.
2016-04-18 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r199621.
https://bugs.webkit.org/show_bug.cgi?id=156708
made windows tests crash (Requested by alexchristensen on
#webkit).
Reverted changeset:
"iTunes crashing JavaScriptCore.dll"
https://bugs.webkit.org/show_bug.cgi?id=156647
http://trac.webkit.org/changeset/199621
2016-04-15 Michael Saboff <msaboff@apple.com>
iTunes crashing JavaScriptCore.dll
https://bugs.webkit.org/show_bug.cgi?id=156647
Reviewed by Geoffrey Garen.
If a thread was created without using the WTF thread apis and that thread uses
a JavaScript VM and that thread exits with the VM still around, JSC won't know
that the thread has exited. Currently, we use ThreadSpecificThreadExit() to
clean up any thread specific keys. Cleaning up these keys is how JSC is
notified of a thread exit. We only call ThreadSpecificThreadExit() from
wtfThreadEntryPoint() when the thread entry point function returns.
This mechanism was put in place for Windos because we layer the WTF::ThreadSpecific
functionality on top of TLS (Thread Local Storage), but TLS doesn't have
a thread exiting callback the way that pthread_create_key.
The fix is to change from using TLS to using FLS (Fiber Local Storage). Although
Windows allows multiple fibers per thread, WebKit is not designed to work with a
multiple fibers per thread. When ther is only one fiber per thread, FLS works just
like TLS, but it has the destroy callback.
I restructured the Windows version of WTF::ThreadSpecific to be almost the same
as the pthread version.
* wtf/ThreadSpecific.h:
(WTF::threadSpecificKeyCreate):
(WTF::threadSpecificKeyDelete):
(WTF::threadSpecificSet):
(WTF::threadSpecificGet):
(WTF::ThreadSpecific<T>::ThreadSpecific):
(WTF::ThreadSpecific<T>::~ThreadSpecific):
(WTF::ThreadSpecific<T>::get):
(WTF::ThreadSpecific<T>::set):
(WTF::ThreadSpecific<T>::destroy):
Restructured to use FLS. Renamed TLS* to FLS*.
* wtf/ThreadSpecificWin.cpp:
(WTF::flsKeyCount):
(WTF::flsKeys):
Renamed from tlsKey*() to flsKey*().
(WTF::destructorsList): Deleted.
(WTF::destructorsMutex): Deleted.
(WTF::PlatformThreadSpecificKey::PlatformThreadSpecificKey): Deleted.
(WTF::PlatformThreadSpecificKey::~PlatformThreadSpecificKey): Deleted.
(WTF::PlatformThreadSpecificKey::setValue): Deleted.
(WTF::PlatformThreadSpecificKey::value): Deleted.
(WTF::PlatformThreadSpecificKey::callDestructor): Deleted.
(WTF::tlsKeyCount): Deleted.
(WTF::tlsKeys): Deleted.
(WTF::threadSpecificKeyCreate): Deleted.
(WTF::threadSpecificKeyDelete): Deleted.
(WTF::threadSpecificSet): Deleted.
(WTF::threadSpecificGet): Deleted.
(WTF::ThreadSpecificThreadExit): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::wtfThreadEntryPoint): Eliminated call to ThreadSpecificThreadExit.
2016-04-12 Filip Pizlo <fpizlo@apple.com>
PolymorphicAccess should buffer AccessCases before regenerating
https://bugs.webkit.org/show_bug.cgi?id=156457
Reviewed by Benjamin Poulain.
* wtf/TinyPtrSet.h:
(WTF::TinyPtrSet::add): Add a helpful comment because I had forgotten what the bool return meant.
2016-04-12 Tomas Popela <tpopela@redhat.com>
S390X and PPC64 architectures detection is wrong
https://bugs.webkit.org/show_bug.cgi?id=156337
Reviewed by Carlos Garcia Campos.
After the http://trac.webkit.org/changeset/198919 was committed
it showed that the PPC64 detection is wrong as the CPU(PPC) path was
activated even for PPC64. The thing is that GCC defines __ppc__
even on PPC64 and not just on PPC(32). The same applies for S390X.
* wtf/Platform.h:
2016-04-05 Oliver Hunt <oliver@apple.com>
Remove compile time define for SEPARATED_HEAP
https://bugs.webkit.org/show_bug.cgi?id=155508
Reviewed by Mark Lam.
* wtf/FeatureDefines.h:
* wtf/Platform.h:
2016-04-11 Fujii Hironori <Hironori.Fujii@jp.sony.com>
[CMake] Make FOLDER property INHERITED
https://bugs.webkit.org/show_bug.cgi?id=156460
Reviewed by Brent Fulgham.
* CMakeLists.txt:
Set FOLDER directory property
2016-04-08 Alex Christensen <achristensen@webkit.org>
Progress towards running CMake WebKit2 on Mac
https://bugs.webkit.org/show_bug.cgi?id=156426
Reviewed by Tim Horton.
* wtf/PlatformMac.cmake:
2016-04-08 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC] Enable Concurrent JIT by default
https://bugs.webkit.org/show_bug.cgi?id=156341
Reviewed by Filip Pizlo.
We enable Concurrent JIT by default when DFG JIT and JSVALUE64 are enabled.
This change offers Concurrent JIT to the JSCOnly port.
* wtf/Platform.h:
2016-04-07 Joseph Pecoraro <pecoraro@apple.com>
Remove ENABLE(ENABLE_ES6_CLASS_SYNTAX) guards
https://bugs.webkit.org/show_bug.cgi?id=156384
Reviewed by Ryosuke Niwa.
* wtf/FeatureDefines.h:
2016-04-06 Filip Pizlo <fpizlo@apple.com>
JSC should have a simple way of gathering IC statistics
https://bugs.webkit.org/show_bug.cgi?id=156317
Reviewed by Benjamin Poulain.
Make it easier to do relative sleeping on a condition. Previously you could do this using
std::chrono. I now believe that std::chrono is just a bad decision, and I always want to
use doubles instead. This makes it easier to do the right thing and use doubles.
* wtf/Condition.h:
(WTF::ConditionBase::waitUntilMonotonicClockSeconds):
(WTF::ConditionBase::waitForSeconds):
2016-04-06 Simon Fraser <simon.fraser@apple.com>
Fix Windows build by converting clampToInteger() into a template that only
takes integral types.
* wtf/MathExtras.h:
(clampToInteger):
2016-04-06 Simon Fraser <simon.fraser@apple.com>
Page tiles are missing when graphics acceleration is unavailable
https://bugs.webkit.org/show_bug.cgi?id=156325
Reviewed by Tim Horton.
Add clampToInteger(size_t).
* wtf/MathExtras.h:
(clampToInteger):
2016-04-05 Simon Fraser <simon.fraser@apple.com>
Implement operator== and operator!= for Optional<>
https://bugs.webkit.org/show_bug.cgi?id=156266
Reviewed by Anders Carlsson.
Implement non-member operator== and operator!= variants for Optional<>.
* wtf/Optional.h:
(WTF::operator==):
(WTF::operator!=):
2016-03-19 Filip Pizlo <fpizlo@apple.com>
DFG and FTL should constant-fold RegExpExec
https://bugs.webkit.org/show_bug.cgi?id=155270
Reviewed by Saam Barati.
Make executeInsertions() return the amount by which the vector increased in size. This is a
convenient feature that I use in DFG::InsertionSet.
* wtf/Insertion.h:
(WTF::executeInsertions):
2016-04-05 Antoine Quint <graouts@apple.com>
[WebGL2] Allow enabling WebGL2 with a runtime flag
https://bugs.webkit.org/show_bug.cgi?id=156166
<rdar://problem/25526929>
Removed the manual overrides of ENABLE_WEBGL2.
Reviewed by Dean Jackson.
* wtf/FeatureDefines.h:
2016-03-31 Konstantin Tokarev <annulen@yandex.ru>
Removed leftovers of ENABLE(INSPECTOR) and ENABLE(VIEWPORT).
https://bugs.webkit.org/show_bug.cgi?id=156064
Reviewed by Csaba Osztrogonác.
This ifdef guards were removed in r178820 and r147714, respectively.
* wtf/FeatureDefines.h:
2016-03-31 Brent Fulgham <bfulgham@apple.com>
[WK2] Support download attribute feature
https://bugs.webkit.org/show_bug.cgi?id=102914
<rdar://problem/13177492>
Reviewed by Darin Adler.
* wtf/FeatureDefines.h: Turn the ENABLE_DOWNLOAD_ATTRIBUTE flag
on to see what happens.
2016-03-30 Brian Burg <bburg@apple.com>
Web Automation: Add Automation.performKeyboardInteractions
https://bugs.webkit.org/show_bug.cgi?id=155990
<rdar://problem/25426408>
Reviewed by Timothy Hatcher.
Add a missing NSEventType declaration.
* wtf/mac/AppKitCompatibilityDeclarations.h:
2016-03-29 Benjamin Poulain <bpoulain@apple.com>
[WTF] Removing a smart pointer from HashTable issues two stores to the same location
https://bugs.webkit.org/show_bug.cgi?id=155676
Reviewed by Darin Adler.
While working on the hot loop of r198376, I noticed something
weird...
Every time we removed a smart pointer from the hash table,
the code generated was something like:
Load([bucket]) -> Tmp
Store(0 -> [bucket])
JumpIfZero(Tmp, ->End)
Call fastFree()
Store(-1 -> [bucket])
-> End:
The useless store before the branch is annoying, especially on ARM.
Here is what happens:
1) The destructor of the smart pointer swaps its internal value with nullptr.
2) Since the smart pointer is not a local in-register value, that nullptr
is stored in memory because it could be observable from fastFree().
3) The destructor destroy the value if not zero (or deref for RefPtr).
The "if-not-zero" may or may not be eliminated depending on what
is between getting the iterator and the call to remove().
4) fastFree() is called.
5) The deleted value is set in the bucket.
This patch adds custom deletion for those cases to avoid the useless
store. The useless null check is still eliminated when we are lucky.
I went this path instead of changing the destructor of RefPtr for two reasons:
-I need this to work in unique_ptr for JSC.
-Nulling the memory may have security advantages in the cases where we do not immediately
write over that memory again.
This patch removes 13kb out of x86_64 WebCore.
* wtf/HashTable.h:
(WTF::HashTable::deleteBucket):
(WTF::KeyTraits>::removeIf):
* wtf/HashTraits.h:
(WTF::HashTraits<RefPtr<P>>::customDeleteBucket):
(WTF::hashTraitsDeleteBucket):
(WTF::KeyValuePairHashTraits::customDeleteBucket):
* wtf/text/AtomicStringHash.h:
(WTF::HashTraits<WTF::AtomicString>::isEmptyValue):
(WTF::HashTraits<WTF::AtomicString>::customDeleteBucket):
* wtf/text/StringHash.h:
(WTF::HashTraits<String>::customDeleteBucket):
2016-03-28 Brian Burg <bburg@apple.com>
Web Automation: implement Automation.performMouseInteraction
https://bugs.webkit.org/show_bug.cgi?id=155606
<rdar://problem/25227576>
Reviewed by Timothy Hatcher.
* wtf/mac/AppKitCompatibilityDeclarations.h: Add missing some NSEventTypes.
2016-03-29 Yusuke Suzuki <utatane.tea@gmail.com>
REGRESSION(r192914): 10% regression on Sunspider's date-format-tofte
https://bugs.webkit.org/show_bug.cgi?id=155559
Reviewed by Saam Barati.
Add HashTable::inlineLookup and HashMap::fastGet.
* wtf/HashMap.h:
* wtf/HashTable.h:
2016-03-25 Alex Christensen <achristensen@webkit.org>
Add a compile time flag for using QTKit
https://bugs.webkit.org/show_bug.cgi?id=155868
Reviewed by Dan Bates.
* wtf/Platform.h:
2016-03-24 Alex Christensen <achristensen@webkit.org>
Fix iOS9 performance regression after r197572
https://bugs.webkit.org/show_bug.cgi?id=155845
<rdar://problem/25144924>
Reviewed by Chris Dumez.
* wtf/Platform.h:
Use CFURLConnection instead of NSURLConnection on internal iOS9 builds.
2016-03-23 Saam Barati <sbarati@apple.com>
SmallPtrSet leaks memory in its move assignment operator when !this->isSmall()
https://bugs.webkit.org/show_bug.cgi?id=155701
Reviewed by Darin Adler.
* wtf/SmallPtrSet.h:
(WTF::SmallPtrSet::SmallPtrSet):
(WTF::SmallPtrSet::operator=):
2016-03-22 Per Arne Vollan <peavo@outlook.com>
[Win] [64-bit] Remove MSVC 2013 FMA3 Bug Workaround
https://bugs.webkit.org/show_bug.cgi?id=141499
Reviewed by Brent Fulgham.
As we have moved on to VS2015, this workaround is no longer needed.
* wtf/PlatformWin.cmake:
* wtf/win/WTFDLL.cpp: Removed.
2016-03-20 Dan Bernstein <mitz@apple.com>
[Mac] Determine TARGET_MAC_OS_X_VERSION_MAJOR from MACOSX_DEPLOYMENT_TARGET rather than from MAC_OS_X_VERSION_MAJOR
https://bugs.webkit.org/show_bug.cgi?id=155707
<rdar://problem/24980691>
Reviewed by Darin Adler.
* Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last
component of MACOSX_DEPLOYMENT_TARGET.
* Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of
TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.
2016-03-20 Dan Bernstein <mitz@apple.com>
Update build settings
Rubber-stamped by Andy Estes.
* Configurations/DebugRelease.xcconfig:
2016-03-17 Benjamin Poulain <bpoulain@apple.com>
[JSC] Make CSE's ImpureData faster when dealing with large blocks
https://bugs.webkit.org/show_bug.cgi?id=155594
Reviewed by Filip Pizlo.
* wtf/HashSet.h:
(WTF::V>::removeIf):
2016-03-17 Saam barati <sbarati@apple.com>
Implement SmallPtrSet and integrate it into the Parser
https://bugs.webkit.org/show_bug.cgi?id=155552
Reviewed by Filip Pizlo.
This patch implements the SmallPtrSet data struture.
Inspired by the implementation in llvm:
http://llvm.org/docs/doxygen/html/SmallPtrSet_8h_source.html
The data structure uses an inline array for storage up until
a fixed limit (8 entries in our implementation). If that storage
fills up, we fall back to a simple hash table implementation.
Crucially, this implementation doesn't support the remove
operation. This is on purpose. The hash table will only ever
grow.
Also, the implementation allows for it to be memcopied around.
I.e, we can put SmallPtrSet inside a Vector and allow that
Vector to use memcpy as its move operation (of course this
is only valid if the SmallPtrSet in the old memory doesn't have
its destructor called unless it is set back to its initial state.)
For now, SmallPtrSet only supports pointer types that are trivially
destructible. It's probably not too difficult to extend this to
smart pointers, but it's not part of this original implementation.
I've also implemented a pure forwarding varargs constructAndAppend
method on Vector. This allows you to do:
Vector<T> v;
v.constructAndAppend(a1, a2, ...)
as long as T has a constructor that accepts arguments (a1, a2, ...).
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/SmallPtrSet.h: Added.
(WTF::SmallPtrSet::SmallPtrSet):
(WTF::SmallPtrSet::operator=):
(WTF::SmallPtrSet::~SmallPtrSet):
(WTF::SmallPtrSet::add):
(WTF::SmallPtrSet::contains):
(WTF::SmallPtrSet::iterator::operator++):
(WTF::SmallPtrSet::iterator::operator*):
(WTF::SmallPtrSet::iterator::operator==):
(WTF::SmallPtrSet::iterator::operator!=):
(WTF::SmallPtrSet::begin):
(WTF::SmallPtrSet::end):
(WTF::SmallPtrSet::size):
(WTF::SmallPtrSet::emptyValue):
(WTF::SmallPtrSet::isValidEntry):
(WTF::SmallPtrSet::isSmall):
(WTF::SmallPtrSet::initialize):
(WTF::SmallPtrSet::grow):
(WTF::SmallPtrSet::bucket):
* wtf/Vector.h:
(WTF::Vector::append):
(WTF::Vector::uncheckedAppend):
(WTF::minCapacity>::append):
(WTF::minCapacity>::constructAndAppend):
(WTF::minCapacity>::appendSlowCase):
(WTF::minCapacity>::constructAndAppendSlowCase):
2016-03-16 Filip Pizlo <fpizlo@apple.com>
Replace all of the various non-working and non-compiling sampling profiler hacks with a single super hack
https://bugs.webkit.org/show_bug.cgi?id=155561
Reviewed by Saam Barati.
This patch replaces all of our various ad hoc profiling hacks with a single ad hoc profiling hack.
That needs to be able to sleep a thread, so I added a portable way to do it.
This also removes a bunch of ENABLE flags for all of the old non-working hacks.
* wtf/CurrentTime.cpp:
(WTF::currentCPUTime):
(WTF::sleep):
* wtf/CurrentTime.h:
(WTF::sleepMS):
* wtf/Platform.h:
2016-03-17 Chris Dumez <cdumez@apple.com>
Set the WebContent process's main thread QoS to USER-INTERACTIVE
https://bugs.webkit.org/show_bug.cgi?id=155595
<rdar://problem/22534965>
Reviewed by Antti Koivisto.
Add a relativePriority parameter to setCurrentThreadIsUser*() so that
we can do more fine-grained prioritization of threads that have the
same QoS.
* wtf/Threading.cpp:
(WTF::setCurrentThreadIsUserInteractive):
(WTF::setCurrentThreadIsUserInitiated):
(WTF::createThread): Deleted.
* wtf/Threading.h:
2016-03-17 Filip Pizlo <fpizlo@apple.com>
Silence leaks in ParkingLot
https://bugs.webkit.org/show_bug.cgi?id=155510
Reviewed by Alexey Proskuryakov.
ParkingLot has a concurrent hashtable that it reallocates on demand. It will not reallocate
it in steady state. The hashtable is sized to accommodate the high watermark of the number
of active threads - so long as the program doesn't just keep starting an unbounded number
of threads that are all active, the hashtable will stop resizing. Each resize operation is
designed to stay out of the way of the data-access-parallel normal path, in which two
threads operating on different lock addresses don't have to synchronize. To do this, it
simply drops the old hashtable without deleting it, so that threads that were still using
it don't crash. They will realize that they have the wrong hashtable before doing anything
bad, but we don't have a way of proving when all of those threads are no longer going to
read from the old hashtables. So, we just leak them.
This is a bounded leak, since the hashtable resizes exponentially. Thus the total memory
utilization of all hashtables, including the leaked ones, converges to a linear function of
the current hashtable's size (it's 2 * size of current hashtable).
But this leak is a problem for leaks tools, which will always report this leak. This is not
useful. It's better to silence the leak. That's what this patch does by ensuring that all
hashtables, including leaked ones, end up in a global vector. This is perf-neutral.
This requires making a StaticWordLock variant of WordLock. That's probably the biggest part
of this change.
* wtf/ParkingLot.cpp:
* wtf/WordLock.cpp:
(WTF::WordLockBase::lockSlow):
(WTF::WordLockBase::unlockSlow):
(WTF::WordLock::lockSlow): Deleted.
(WTF::WordLock::unlockSlow): Deleted.
* wtf/WordLock.h:
(WTF::WordLockBase::lock):
(WTF::WordLockBase::isLocked):
(WTF::WordLock::WordLock):
(WTF::WordLock::lock): Deleted.
(WTF::WordLock::isLocked): Deleted.
2016-03-16 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r198235, r198240, r198241, and
r198252.
Causing crashes on ARM
Reverted changesets:
"Remove compile time define for SEPARATED_HEAP"
https://bugs.webkit.org/show_bug.cgi?id=155508
http://trac.webkit.org/changeset/198235
"Gardening: build fix after r198235."
http://trac.webkit.org/changeset/198240
"Build fix."
http://trac.webkit.org/changeset/198241
"Rename performJITMemcpy to something more inline with our
normal webkit function names"
https://bugs.webkit.org/show_bug.cgi?id=155525
http://trac.webkit.org/changeset/198252
2016-03-15 Oliver Hunt <oliver@apple.com>
Remove compile time define for SEPARATED_HEAP
https://bugs.webkit.org/show_bug.cgi?id=155508
Reviewed by Mark Lam.
Remove the feature define.
* wtf/FeatureDefines.h:
* wtf/Platform.h:
2016-03-14 Mark Lam <mark.lam@apple.com>
Need to distinguish between Symbol() and Symbol("").
https://bugs.webkit.org/show_bug.cgi?id=155438
Reviewed by Saam Barati.
While toString of both Symbol() and Symbol("") yields "Symbol()", Function.name
should yield "" and "[]" respectively. Hence, we need to tell between the two.
This functionality will be needed later in https://bugs.webkit.org/show_bug.cgi?id=155437.
We achieve this by creating another singleton instance like the empty StringImpl
as the null StringImpl. isNullSymbol() tests if the Stringimpl instance is a
symbol, and its substring is the null() singleton.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createNullSymbol):
(WTF::StringImpl::containsOnlyWhitespace):
(WTF::StringImpl::createSymbolEmpty): Deleted.
* wtf/text/StringImpl.h:
(WTF::StringImpl::tryCreateUninitialized):
(WTF::StringImpl::stringKind):
(WTF::StringImpl::isSymbol):
(WTF::StringImpl::isAtomic):
(WTF::StringImpl::isNullSymbol):
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::null):
2016-03-13 Joseph Pecoraro <pecoraro@apple.com>
Remove ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX) guards
https://bugs.webkit.org/show_bug.cgi?id=155417
Reviewed by Yusuke Suzuki.
* wtf/FeatureDefines.h:
2016-03-13 Konstantin Tokarev <annulen@yandex.ru>
Added new port JSCOnly.
https://bugs.webkit.org/show_bug.cgi?id=154512
Reviewed by Michael Catanzaro.
This port allows to build JavaScriptCore engine with minimal
dependencies.
* wtf/PlatformJSCOnly.cmake: Added.
* wtf/none/MainThreadNone.cpp: Added.
* wtf/none/RunLoopNone.cpp: Added.
* wtf/none/WorkQueueNone.cpp: Added.
2016-03-13 David Kilzer <ddkilzer@apple.com>
REGRESSION (r198079): Windows build broke because of "%PRId64" format specifier
This fixes the following build failure in WebCore for Windows:
C:\Source\WebCore\page\DOMTimer.cpp(396): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
C:\Source\WebCore\page\DOMTimer.cpp(399): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
* wtf/StdLibExtras.h: Define "PRId64" for Windows here so it may
be shared. This should fix DOMTimer.cpp after r198079 since it
already includes StdLibExtras.h.
2016-03-11 Youenn Fablet <youenn.fablet@crf.canon.fr>
WTF should have a similar function as equalLettersIgnoringASCIICase to match beginning of strings
https://bugs.webkit.org/show_bug.cgi?id=153419
Reviewed by Darin Adler.
Introducing startsWithLettersIgnoringASCIICase, to check the beginning of a string.
Moving some code from WTF::equalLettersIgnoringASCIICaseCommonWithoutLength in
WTF::hasPrefixWithLettersIgnoringASCIICaseCommon to enable reuse in
WTF::startsWithLettersIgnoringASCIICaseCommon.
* wtf/text/StringCommon.h:
(WTF::hasPrefixWithLettersIgnoringASCIICaseCommon):
(WTF::equalLettersIgnoringASCIICaseCommonWithoutLength):
(WTF::startsWithLettersIgnoringASCIICaseCommonWithoutLength):
(WTF::startsWithLettersIgnoringASCIICaseCommon):
* wtf/text/StringImpl.h:
(WTF::startsWithLettersIgnoringASCIICase):
* wtf/text/WTFString.h:
(WTF::startsWithLettersIgnoringASCIICase):
2016-03-10 Frederic Wang <fwang@igalia.com>
[GTK] Add support for WOFF2
https://bugs.webkit.org/show_bug.cgi?id=152616
Reviewed by Carlos Garcia Campos.
* wtf/FeatureDefines.h: Enable USE_WOFF2 flag on GTK.
2016-03-09 Ryosuke Niwa <rniwa@webkit.org>
Add runtime flags for shadow DOM and custom elements
https://bugs.webkit.org/show_bug.cgi?id=155213
Reviewed by Dean Jackson.
Removed the manual overrides of ENABLE_SHADOW_DOM and ENABLE_CUSTOM_ELEMENTS as they were
making --no-shadow-dom and --no-custom-elements flags on build-webkit useless.
* wtf/FeatureDefines.h:
2016-03-09 Keith Rollin <krollin@apple.com>
Add state dumping facility
https://bugs.webkit.org/show_bug.cgi?id=154930
<rdar://problem/24939135>
Reviewed by Anders Carlsson.
Add an OS_STATE flag to control the inclusion of process state dumping
functionality.
* wtf/Platform.h:
2016-03-09 Oliver Hunt <oliver@apple.com>
Fix old iOS
* wtf/Platform.h:
2016-03-08 Filip Pizlo <fpizlo@apple.com>
Remove failing assertion. There are strings that claim to be atomic but that the
compiler thread can totally deal with, like the empty string.
Rubber stamped by Mark Lam.
* wtf/text/StringImpl.h:
(WTF::StringImpl::ref):
(WTF::StringImpl::deref):
2016-03-08 Filip Pizlo <fpizlo@apple.com>
DFG should be able to constant-fold strings
https://bugs.webkit.org/show_bug.cgi?id=155200
Reviewed by Geoffrey Garen.
Also disable assertions about reference counting strings on the JIT thread. We will do
that now and it's OK.
* wtf/text/StringImpl.h:
(WTF::StringImpl::ref):
(WTF::StringImpl::deref):
2016-03-08 Anders Carlsson <andersca@apple.com>
Fix AppKitCompatibilityDeclarations build.
* wtf/mac/AppKitCompatibilityDeclarations.h:
Remove duplicate declarations, conditionally define NSTextAlignment and
add a NSWindowStyleMask typedef.
2016-03-08 Oliver Hunt <oliver@apple.com>
Start moving to separated writable and executable mappings in the JIT
https://bugs.webkit.org/show_bug.cgi?id=155178
Reviewed by Fil Pizlo.
Update feature defines.
* wtf/FeatureDefines.h:
* wtf/Platform.h: ARM64 for now.
2016-03-08 Anders Carlsson <andersca@apple.com>
Add AppKit compatibility header
https://bugs.webkit.org/show_bug.cgi?id=155202
Reviewed by Beth Dakin.
* WTF.xcodeproj/project.pbxproj:
* wtf/mac/AppKitCompatibilityDeclarations.h: Added.
2016-03-08 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r197793 and r197799.
https://bugs.webkit.org/show_bug.cgi?id=155195
something weird happened while landing this and everything
broke (Requested by olliej on #webkit).
Reverted changesets:
"Start moving to separated writable and executable mappings in
the JIT"
https://bugs.webkit.org/show_bug.cgi?id=155178
http://trac.webkit.org/changeset/197793
"arm64 build fix after r197793."
http://trac.webkit.org/changeset/197799
2016-03-08 Oliver Hunt <oliver@apple.com>
Start moving to separated writable and executable mappings in the JIT
https://bugs.webkit.org/show_bug.cgi?id=155178
Reviewed by Filip Pizlo.
Update feature defines.
* wtf/FeatureDefines.h:
* wtf/Platform.h: ARM64 for now.
2016-03-08 Daniel Bates <dabates@apple.com>
Support iterating over an OptionSet and checking if it is empty
https://bugs.webkit.org/show_bug.cgi?id=154941
<rdar://problem/24964187>
Reviewed by Darin Adler.
Implements support for iterating over the enumerators in an OptionSet as well as
determining if the set is empty.
Iterating over an OptionSet is in Big Theta(N) where N is the number of items in
the set. More precisely, it is in Big Theta(log M) where M is the bitmask represented
by the bitwise OR-ing of all enumerators in the set.
* wtf/OptionSet.h: Added comment to describe the purpose of this class and its invariant -
the enumerators must be positive powers of two.
(WTF::OptionSet::Iterator::operator*): Returns the enumerator pointed to by the iterator.
(WTF::OptionSet::Iterator::operator++): Advance to the next smallest enumerator in the set.
(WTF::OptionSet::Iterator::operator==): Returns whether the iterator is equal to the specified iterator.
(WTF::OptionSet::Iterator::operator!=): Returns whether the iterator is not equal to the specified iterator.
(WTF::OptionSet::Iterator::Iterator): Added.
(WTF::OptionSet::fromRaw): Instantiate using specialized private constructor to allow
instantiation with a raw value of 0.
(WTF::OptionSet::OptionSet): Specialized constructor that asserts that the specified value
is a positive power of two. This variant is only compiled when assertions are enabled (i.e. !ASSERT_DISABLED).
(WTF::OptionSet::isEmpty): Returns whether the set is empty.
(WTF::OptionSet::begin): Returns an iterator to the enumerator with the smallest value in the set.
(WTF::OptionSet::end): Returns an iterator that represents the end sentinel of the set.
2016-03-07 Keith Rollin <krollin@apple.com>
Enhance logging: Use "always on" macros
https://bugs.webkit.org/show_bug.cgi?id=154499
<rdar://problem/24757730>
Reviewed by Chris Dumez.
Update LOG_ALWAYS and LOG_ALWAYS_ERROR macros to take an expression to
be evaluated. If the expression evaluates to True, the associated
message is logged. This facility is used to prevent logging from being
performed in private sessions, but it could be extended to prevent
logging under other circumstances as well.
* wtf/Assertions.h:
2016-03-04 Alex Christensen <achristensen@webkit.org>
Remove vcxproj build system
https://bugs.webkit.org/show_bug.cgi?id=154388
Rubber-stamped by Brent Fulgham.
* WTF.vcxproj/WTF.submit.sln: Removed.
* WTF.vcxproj/WTF.vcxproj: Removed.
* WTF.vcxproj/WTF.vcxproj.filters: Removed.
* WTF.vcxproj/WTFCFLite.props: Removed.
* WTF.vcxproj/WTFCommon.props: Removed.
* WTF.vcxproj/WTFCoreFoundation.props: Removed.
* WTF.vcxproj/WTFDebug.props: Removed.
* WTF.vcxproj/WTFDebugWinCairo.props: Removed.
* WTF.vcxproj/WTFGenerated.make: Removed.
* WTF.vcxproj/WTFGenerated.vcxproj: Removed.
* WTF.vcxproj/WTFGenerated.vcxproj.filters: Removed.
* WTF.vcxproj/WTFGeneratedCommon.props: Removed.
* WTF.vcxproj/WTFGeneratedDebug.props: Removed.
* WTF.vcxproj/WTFGeneratedProduction.props: Removed.
* WTF.vcxproj/WTFGeneratedRelease.props: Removed.
* WTF.vcxproj/WTFPostBuild.cmd: Removed.
* WTF.vcxproj/WTFPreBuild.cmd: Removed.
* WTF.vcxproj/WTFProduction.props: Removed.
* WTF.vcxproj/WTFRelease.props: Removed.
* WTF.vcxproj/WTFReleaseWinCairo.props: Removed.
* WTF.vcxproj/build-generated-files.pl: Removed.
* WTF.vcxproj/copy-files.cmd: Removed.
* WTF.vcxproj/work-around-vs-dependency-tracking-bugs.py: Removed.
2016-03-04 Alex Christensen <achristensen@webkit.org>
Use NSURLSession for loading in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=154993
Reviewed by Sam Weinig.
* wtf/Platform.h:
2016-03-03 Daniel Bates <dabates@apple.com>
Add unit tests for WTF::OptionSet
https://bugs.webkit.org/show_bug.cgi?id=154925
<rdar://problem/24964211>
Reviewed by Darin Adler.
* wtf/CMakeLists.txt: Add header OptionSet.h to the list of WTF headers.
* wtf/OptionSet.h: Use in-class initialization to initialize m_storage and declare
the trivial constexpr constructor as default.
(WTF::OptionSet::OptionSet): For convenience add a constructor that takes a std::initializer_list.
This code was written by Anders Carlsson.
2016-03-03 Andy Estes <aestes@apple.com>
Adopt CFNetwork storage partitioning SPI
https://bugs.webkit.org/show_bug.cgi?id=154957
rdar://problem/23614620
Reviewed by Darin Adler.
* wtf/Platform.h: Defined HAVE_CFNETWORK_STORAGE_PARTITIONING.
2016-03-02 Konstantin Tokarev <annulen@yandex.ru>
[cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
https://bugs.webkit.org/show_bug.cgi?id=154651
Reviewed by Alex Christensen.
* CMakeLists.txt: Moved shared code to WEBKIT_FRAMEWORK macro.
2016-03-01 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r197226 and r197256.
https://bugs.webkit.org/show_bug.cgi?id=154910
Caused crashes on Mac 32-bit and on ARM (Requested by ap on
#webkit).
Reverted changesets:
"Remove the on demand executable allocator"
https://bugs.webkit.org/show_bug.cgi?id=154749
http://trac.webkit.org/changeset/197226
"CLoop build fix."
http://trac.webkit.org/changeset/197256
2016-03-01 Alex Christensen <achristensen@webkit.org>
Reduce size of internal windows build output
https://bugs.webkit.org/show_bug.cgi?id=154763
Reviewed by Brent Fulgham.
* WTF.vcxproj/WTF.proj:
2016-03-01 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r197056.
https://bugs.webkit.org/show_bug.cgi?id=154870
broke win ews (Requested by alexchristensen on #webkit).
Reverted changeset:
"[cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK."
https://bugs.webkit.org/show_bug.cgi?id=154651
http://trac.webkit.org/changeset/197056
2016-02-29 Gavin Barraclough <barraclough@apple.com>
RefCounter<T>::Event -> RefCounterEvent
https://bugs.webkit.org/show_bug.cgi?id=154767
Reviewed by Darin Adler.
RefCounter<T>::Event is kinda verbose to use, and there is no need for this
to be specific to a particular typeof RefCounter. Move the enum class up to
the top level & rename to RefCounterEvent.
* wtf/RefCounter.h:
(WTF::RefCounter<T>::Count::ref):
(WTF::RefCounter<T>::Count::deref):
2016-02-26 Oliver Hunt <oliver@apple.com>
Remove the on demand executable allocator
https://bugs.webkit.org/show_bug.cgi?id=154749
Reviewed by Geoffrey Garen.
Remove the DeamndExecutableAllocator compile flags.
* wtf/Platform.h:
2016-02-26 Keith Rollin <krollin@apple.com>
Enhance logging: Add "always on" macros
https://bugs.webkit.org/show_bug.cgi?id=154498
<rdar://problem/24757759>
Reviewed by Chris Dumez.
Add support for efficient always-on logging (logging that is available
in both debug and release builds). This is implemented in the form of
some new macros:
- LOG_ALWAYS: Always log information-level statements.
- LOG_ALWAYS_ERROR: Always log error-level statements. These can be
filtered out of the normal logging so that they can be found more
easily.
In cases where there is no efficient underlying facility for it to
utilize, LOG_ALWAYS_ERROR is redirected to WTFReportError as a backup
mechanism. LOG_ALWAYS is not given a similar treatment so that we
don't overwhelm other logging systems that aren't prepared for "always
on" logging.
* wtf/Assertions.h:
* wtf/Platform.h:
2016-02-26 Anders Carlsson <andersca@apple.com>
Add WTF::OptionSet and use it for the website data types enum
https://bugs.webkit.org/show_bug.cgi?id=154733
Reviewed by Geoffrey Garen.
Add WTF::OptionSet which makes it easier to use strong enums as flags.
* WTF.xcodeproj/project.pbxproj:
* wtf/Forward.h:
* wtf/OptionSet.h: Copied from Source/WebKit2/Shared/WebsiteData/WebsiteData.h.
(WTF::OptionSet::fromRaw):
(WTF::OptionSet::OptionSet):
(WTF::OptionSet::toRaw):
(WTF::OptionSet::contains):
(WTF::OptionSet::operator|=):
2016-02-26 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r197168.
https://bugs.webkit.org/show_bug.cgi?id=154728
crashing on some devices (Requested by kling on #webkit).
Reverted changeset:
"[Darwin] Use vm_kernel_page_size for WTF::pageSize()."
https://bugs.webkit.org/show_bug.cgi?id=154726
http://trac.webkit.org/changeset/197168
2016-02-26 Andreas Kling <akling@apple.com>
[Darwin] Use vm_kernel_page_size for WTF::pageSize().
<https://webkit.org/b/154726>
Reviewed by Antti Koivisto.
Make sure we use the right VM page size on Darwin systems.
On devices where the native page size is 4 KB, it's both
possible and profitable to madvise in smaller chunks.
* wtf/PageBlock.cpp:
(WTF::systemPageSize):
2016-02-25 Gavin Barraclough <barraclough@apple.com>
RefCounter value changed callback should be called on all changes (not just zero edge).
https://bugs.webkit.org/show_bug.cgi?id=154699
Reviewed by Anders Carlsson.
RefCounter currently only triggers a callback when the count goes from zero
to non-zero and vice-versa. Change that, to be useful to more clients.
* wtf/RefCounter.h:
(WTF::RefCounter::Count::Count):
(WTF::RefCounter::RefCounter):
- Removed superfluous WTF_EXPORT_PRIVATE.
(WTF::RefCounter::value):
- Changed value() to a size_t.
(WTF::RefCounter<T>::Count::ref):
(WTF::RefCounter<T>::Count::deref):
- Trigger the callback on all increments/decrements.
(WTF::RefCounter<T>::RefCounter):
- Changed siganture of callback.
2016-02-25 Gavin Barraclough <barraclough@apple.com>
Replace RefCounter::Token implementation with RefPtr
https://bugs.webkit.org/show_bug.cgi?id=154698
Reviewed by Anders Carlsson.
* wtf/RefCounter.h:
(WTF::RefCounter::RefCounter):
(WTF::RefCounter::count):
(WTF::RefCounter::value):
(WTF::RefCounter<T>::~RefCounter):
(WTF::RefCounter::Token::Token): Deleted.
(WTF::RefCounter::Token::operator bool): Deleted.
(WTF::RefCounter<T>::Token::Token): Deleted.
(WTF::=): Deleted.
- Delete.
2016-02-25 Gavin Barraclough <barraclough@apple.com>
Should template RefCounter instead of RefCounter::Token
https://bugs.webkit.org/show_bug.cgi?id=154691
Speculative windows build fix.
* wtf/RefCounter.h:
(WTF::RefCounter::RefCounter):
(WTF::RefCounter::count):
2016-02-25 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r197137.
https://bugs.webkit.org/show_bug.cgi?id=154700
broke windows build (Requested by alexchristensen on #webkit).
Reverted changeset:
"Replace RefCounter::Token implementation with RefPtr"
https://bugs.webkit.org/show_bug.cgi?id=154698
http://trac.webkit.org/changeset/197137
2016-02-25 Gavin Barraclough <barraclough@apple.com>
Replace RefCounter::Token implementation with RefPtr
https://bugs.webkit.org/show_bug.cgi?id=154698
Reviewed by Anders Carlsson.
* wtf/RefCounter.h:
(WTF::RefCounter::RefCounter):
(WTF::RefCounter::count):
(WTF::RefCounter::value):
(WTF::RefCounter<T>::~RefCounter):
(WTF::RefCounter::Token::Token): Deleted.
(WTF::RefCounter::Token::operator bool): Deleted.
(WTF::RefCounter<T>::Token::Token): Deleted.
(WTF::=): Deleted.
- Delete.
2016-02-25 Gavin Barraclough <barraclough@apple.com>
Should template RefCounter instead of RefCounter::Token
https://bugs.webkit.org/show_bug.cgi?id=154691
Reviewed by Anders Carlsson.
My real goal here is to make the counter accurate. Currently returning a Token from token<>()
results in ref-count churn. Fixing this either means changing the return value, or improving
Token (which will probably mean replacing it with RefPtr). Either way would break the current
type checking. Move type tag to RefCount so this can still be enforced.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/RefCounter.cpp: Removed.
- Removed RefCounter.cpp.
* wtf/RefCounter.h:
(WTF::RefCounter::Token::Token):
(WTF::RefCounter::Token::operator bool):
(WTF::RefCounter::RefCounter):
(WTF::RefCounter::count):
(WTF::RefCounter::value):
(WTF::RefCounter<T>::Count::ref):
(WTF::RefCounter<T>::Count::deref):
(WTF::RefCounter<T>::RefCounter):
(WTF::RefCounter<T>::~RefCounter):
(WTF::RefCounter<T>::Token::Token):
(WTF::=):
(WTF::RefCounter::token): Deleted.
(WTF::RefCounter::Token<T>::Token): Deleted.
- RefCounter -> RefCounter<T>,
- Token<T> -> Token,
- renamed token<>() -> count().
2016-02-25 Sam Weinig <sam@webkit.org>
HashMap::ensure() should return an AddResult like all the other add-like functions.
https://bugs.webkit.org/show_bug.cgi?id=154680
Reviewed by Anders Carlsson.
While adopting HashMap::ensure(), I found it was useful in some circumstances to know
if the value was added or not. While I could discern this information by setting a bool
in the passed in lambda, it seemed clearer and more idiomatic to just have ensure return
an AddResult like all the other add-like functions do.
* wtf/HashMap.h:
Change return type of HashMap::ensure() to be an AddResult.
2016-02-24 Nikos Andronikos <nikos.andronikos-webkit@cisra.canon.com.au>
[web-animations] Add AnimationTimeline, DocumentTimeline and add extensions to Document interface
https://bugs.webkit.org/show_bug.cgi?id=151688
Reviewed by Dean Jackson.
Enables the WEB_ANIMATIONS compiler switch.
* wtf/FeatureDefines.h:
2016-02-24 Konstantin Tokarev <annulen@yandex.ru>
[cmake] Moved PRE/POST_BUILD_COMMAND to WEBKIT_FRAMEWORK.
https://bugs.webkit.org/show_bug.cgi?id=154651
Reviewed by Alex Christensen.
* CMakeLists.txt: Moved shared code to WEBKIT_FRAMEWORK macro.
2016-02-23 Dan Bernstein <mitz@apple.com>
[Xcode] Linker errors display mangled names, but no longer should
https://bugs.webkit.org/show_bug.cgi?id=154632
Reviewed by Sam Weinig.
* Configurations/Base.xcconfig: Stop setting LINKER_DISPLAYS_MANGLED_NAMES to YES.
2016-02-23 Gavin Barraclough <barraclough@apple.com>
Remove HIDDEN_PAGE_DOM_TIMER_THROTTLING feature define
https://bugs.webkit.org/show_bug.cgi?id=112323
Reviewed by Chris Dumez.
This feature is controlled by a runtime switch, and defaults off.
* wtf/FeatureDefines.h:
2016-02-22 Konstantin Tokarev <annulen@yandex.ru>
[cmake] Moved library setup code to WEBKIT_FRAMEWORK macro.
https://bugs.webkit.org/show_bug.cgi?id=154450
Reviewed by Alex Christensen.
* wtf/CMakeLists.txt:
2016-02-20 Mark Lam <mark.lam@apple.com>
Use of inlined asm statements causes problems for -std=c99 builds.
https://bugs.webkit.org/show_bug.cgi?id=154507
Reviewed by Dan Bernstein.
WTF's Assertions.h may inadvertantly get included by other projects that are built
with -std=c99. The use of the inlined asm statements with the keyword "asm" is
not recognized when the -std compiler flag is used.
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html says "When writing code that
can be compiled with -ansi and the various -std options, use __asm__ instead of
asm (see Alternate Keywords)."
So, to be a good citizen, we can change the use of "asm" in CRASH() to "__asm__"
so that we don't break the build of such other projects.
* wtf/Assertions.h:
2016-02-18 Brent Fulgham <bfulgham@apple.com>
Extend HashCountedSet with a method to efficiently set the count of an entry
https://bugs.webkit.org/show_bug.cgi?id=154352
Reviewed by Geoffrey Garen.
Tested by new TestWebKitAPI tests.
Update the HashCountedSet class with a new 'add' method to support efficient initialization of
the count of a given key. Also provide move and pointer template specializations to expand the
types of data that can be used as 'keys' in the HashCountedSet to match the underlying HashMap
implementation.
* wtf/HashCountedSet.h:
(WTF::Traits>::add): Added new overload supporting a supplied count.
2016-02-18 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r196791.
https://bugs.webkit.org/show_bug.cgi?id=154438
broke windows build (Requested by alexchristensen on #webkit).
Reverted changeset:
"Extend HashCountedSet with a method to efficiently set the
count of an entry"
https://bugs.webkit.org/show_bug.cgi?id=154352
http://trac.webkit.org/changeset/196791
2016-02-18 Brent Fulgham <bfulgham@apple.com>
Extend HashCountedSet with a method to efficiently set the count of an entry
https://bugs.webkit.org/show_bug.cgi?id=154352
Reviewed by Geoffrey Garen.
Tested by new TestWebKitAPI tests.
Update the HashCountedSet class with a new 'add' method to support efficient initialization of
the count of a given key. Also provide move and pointer template specializations to expand the
types of data that can be used as 'keys' in the HashCountedSet to match the underlying HashMap
implementation.
* wtf/HashCountedSet.h:
(WTF::Traits>::add): Added new overload supporting a supplied count.
2016-02-17 Filip Pizlo <fpizlo@apple.com>
Remove LLVM dependencies from WebKit
https://bugs.webkit.org/show_bug.cgi?id=154323
Reviewed by Antti Koivisto and Benjamin Poulain.
* wtf/Platform.h:
2016-02-16 Sam Weinig <sam@webkit.org>
Add an ensure function on HashMap that takes a key and a function to make the lazy value initialization idiom easier
https://bugs.webkit.org/show_bug.cgi?id=134857
Reviewed by Geoffrey Garen.
The current idiom for adding a value to a HashMap if the key is not already present, to allow for not
unnecessarily constructing the new value if it won't be used, is:
{
auto result = map.add(key, Value());
if (!result.isNewEntry)
return result.iterator->value;
result.iterator->value = createNewValue();
return result.iterator->value;
}
or sometimes
{
auto& value = map.add(key, Value()).iterator->value;
if (!value)
value = createNewValue();
return value;
}
With this patch, you can now use the new function HashMap::ensure(key, functor). This will allow us to
change to using the following idiom:
{
return map.ensure(key, [] { return createNewValue(); });
}
The passed in functor will only be called if the key is not already present in the HashMap.
* wtf/HashMap.h:
(WTF::HashMapTranslator::translate):
(WTF::HashMapEnsureTranslator::hash):
(WTF::HashMapEnsureTranslator::equal):
(WTF::HashMapEnsureTranslator::translate):
(WTF::HashMapTranslatorAdapter::hash):
2016-02-16 Filip Pizlo <fpizlo@apple.com>
FTL_USES_B3 should be unconditionally true
https://bugs.webkit.org/show_bug.cgi?id=154324
Reviewed by Benjamin Poulain.
* wtf/Platform.h:
2016-02-13 Mark Lam <mark.lam@apple.com>
Eliminate the need for WTFCrashImpl().
https://bugs.webkit.org/show_bug.cgi?id=154202
Reviewed by Alexey Proskuryakov.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2016-02-12 Sukolsak Sakshuwong <sukolsak@gmail.com>
Update ICU header files to version 52
https://bugs.webkit.org/show_bug.cgi?id=154160
Reviewed by Alex Christensen.
Update ICU header files to version 52 to allow the use of newer APIs.
* icu/unicode/bytestream.h:
* icu/unicode/localpointer.h:
* icu/unicode/platform.h:
* icu/unicode/ptypes.h:
* icu/unicode/putil.h:
* icu/unicode/rep.h:
(Replaceable::Replaceable):
* icu/unicode/std_string.h:
* icu/unicode/strenum.h:
* icu/unicode/stringpiece.h:
* icu/unicode/uchar.h:
* icu/unicode/ucnv.h:
* icu/unicode/ucol.h:
* icu/unicode/uconfig.h:
* icu/unicode/uenum.h:
* icu/unicode/uiter.h:
* icu/unicode/uloc.h:
* icu/unicode/umachine.h:
* icu/unicode/unistr.h:
(UnicodeString::UnicodeString):
(UnicodeString::operator== ):
(UnicodeString::startsWith):
(UnicodeString::setTo):
(UnicodeString::remove):
(UnicodeString::replace): Deleted.
(UnicodeString::extract): Deleted.
(UnicodeString::char32At): Deleted.
(UnicodeString::getChar32Start): Deleted.
(UnicodeString::getChar32Limit): Deleted.
(UnicodeString::getTerminatedBuffer): Deleted.
(UnicodeString::append): Deleted.
(UnicodeString::truncate): Deleted.
* icu/unicode/unorm2.h:
* icu/unicode/uobject.h:
* icu/unicode/urename.h:
* icu/unicode/uscript.h:
* icu/unicode/uset.h:
* icu/unicode/ustring.h:
* icu/unicode/utf.h:
* icu/unicode/utf16.h:
* icu/unicode/utf8.h:
* icu/unicode/utf_old.h:
* icu/unicode/utypes.h:
* icu/unicode/uvernum.h:
* icu/unicode/uversion.h:
2016-02-11 Mark Lam <mark.lam@apple.com>
Need WTFCrash workaround for shipping SafariForWebKitDevelopment binaries.
https://bugs.webkit.org/show_bug.cgi?id=154125
Reviewed by Joseph Pecoraro.
Presently shipping SafariForWebKitDevelopment binaries still expect to link to a
WTFCrash function. We need to provide this function as a workaround until we can
update SafariForWebKitDevelopment to use the new inlined version.
We do this by doing:
1. Make WTFCrashImpl() the sole function for implementing a crash.
The CRASH() macro is now defined to be WTFCrashImpl() instead of WTFCrash().
2. Renamed the legacy WTFCrash() to WTFCrashImpl() for debug or non-Darwin builds.
For (non-debug && OS(DARWIN)) builds, WTFCrashImpl() will be an inlined
function with an asm statement that issues a breakpoint trap.
3. Implement WTFCrash() as a function that calls CRASH().
This satisfies the need of shipping SafariForWebKitDevelopment binaries.
4. Change WTFCrashWithSecurityImplication() to call CRASH().
This ensures that we have a consistent implementation of how we crash.
5. Changed WTFLogAlwaysAndCrash() to call CRASH() instead of WTFCrash().
This is just to have consistency in that all code in the WebKit project
now crashes by calling CRASH(), not WTFCrash().
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2016-02-09 Mark Lam <mark.lam@apple.com>
Changed WTFCrash to not trash the crash site register state.
https://bugs.webkit.org/show_bug.cgi?id=153996
Reviewed by Geoffrey Garen.
When doing post-mortem crash site analysis using data from crash reports, it is
immensely valuable to be able to infer the crashing program's state from the
register values at crash time. However, for RELEASE_ASSERT failures, we crash
using WTFCrash(), and WTFCrash() is currently implemented as a function call
that, in turn, calls a lot of other functions to do crash handling before
actually crashing. As a result, the register values captured in the crash
reports are not likely to still contain the values used by the caller function
that failed the RELEASE_ASSERT.
This patch aims to remedy this issue for non-debug builds on OS(DARWIN) ports.
It does so by changing WTFCrash() into an inlined function that has an inlined
asm statement to issues the CPU specific breakpoint trap instruction. As a
result, for non-debug OS(DARWIN) builds, crashes due to failed RELEASE_ASSERTs
will now show up in crash reports as crashing due to EXC_BREAKPOINT (SIGTRAP)
instead of a EXC_BAD_ACCESS (SIGSEGV) on address 0xbbadbeef.
For debug and non-DARWIN builds, WTFCrash() behavior currently remains unchanged.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2016-02-09 Csaba Osztrogonác <ossy@webkit.org>
[GTK][EFL] Fix several build configuration related to SamplingProfiler after r196245
https://bugs.webkit.org/show_bug.cgi?id=154033
Reviewed by Michael Catanzaro.
* wtf/Platform.h:
2016-02-08 Filip Pizlo <fpizlo@apple.com>
Make sure that locking code that relies on module boundaries for compiler fences uses NEVER_INLINE
https://bugs.webkit.org/show_bug.cgi?id=153972
Reviewed by Andreas Kling.
When this code was written, we assumed that module boundaries were compiler fences. That might
not be the case if we ever do LTO.
* wtf/Lock.cpp:
(WTF::LockBase::lockSlow):
(WTF::LockBase::unlockSlow):
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkAll):
(WTF::ParkingLot::forEach):
* wtf/WordLock.cpp:
(WTF::WordLock::lockSlow):
(WTF::WordLock::unlockSlow):
2016-02-07 Yusuke Suzuki <utatane.tea@gmail.com>
[GTK][EFL] Enable SamplingProfiler
https://bugs.webkit.org/show_bug.cgi?id=153638
Reviewed by Michael Catanzaro.
* wtf/Platform.h:
2016-02-07 Dan Bernstein <mitz@apple.com>
[Cocoa] Replace __has_include guards around inclusion of Apple-internal-SDK headers with USE(APPLE_INTERNAL_SDK)
https://bugs.webkit.org/show_bug.cgi?id=153963
Reviewed by Sam Weinig.
* wtf/SystemTracing.h:
* wtf/WTFThreadData.h:
* wtf/spi/darwin/CommonCryptoSPI.h:
2016-02-06 Darin Adler <darin@apple.com>
Finish auditing call sites of upper() and lower(), eliminate many, and rename the functions
https://bugs.webkit.org/show_bug.cgi?id=153905
Reviewed by Sam Weinig.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::lower): Deleted.
* wtf/text/AtomicString.h: Deleted the lower function.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::convertToLowercaseWithoutLocale): Renamed from lower.
(WTF::StringImpl::convertToUppercaseWithoutLocale): Renamed from upper.
(WTF::StringImpl::convertToLowercaseWithLocale): Renamed from lower.
(WTF::StringImpl::convertToUppercaseWithLocale): Renamed from upper.
(WTF::StringImpl::foldCase): Added fast cases for ASCII since this is
now used in some more-performance-critical code.
* wtf/text/StringImpl.h: Renamed lower and upper.
* wtf/text/WTFString.cpp:
(WTF::String::convertToLowercaseWithoutLocale): Renamed from lower.
(WTF::String::convertToUppercaseWithoutLocale): Renamed from upper.
(WTF::String::convertToLowercaseWithLocale): Renamed from lower.
(WTF::String::convertToUppercaseWithLocale): Renamed from upper.
* wtf/text/WTFString.h: Renamed lower and upper. Removed unneeded comment.
2016-02-03 Darin Adler <darin@apple.com>
Convert another batch of String::lower callsites to something better, typically convertToASCIILowercase
https://bugs.webkit.org/show_bug.cgi?id=153789
Reviewed by Sam Weinig.
* wtf/text/StringView.h:
(WTF::StringView::toInt): Added an overload without the out parameter.
2016-02-03 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK][EFL] Switch FTL to B3
https://bugs.webkit.org/show_bug.cgi?id=153478
Reviewed by Csaba Osztrogonác.
Enable B3 by default on all x86.
* wtf/Platform.h:
2016-02-03 Anders Carlsson <andersca@apple.com>
Fix BlockPtr's call operator
https://bugs.webkit.org/show_bug.cgi?id=153836
Reviewed by Enrica Casucci.
* wtf/BlockPtr.h:
2016-02-01 Said Abou-Hallawa <sabouhallawa@apple.com>
Cache the Path instead of creating it every time it is required
https://bugs.webkit.org/show_bug.cgi?id=152939
Reviewed by Darin Adler.
If the key type of an LRU cache can't to be strongly tided to a specific
data type; e.g. FloatRect -> Path, we need to be able to pass the policy
type to the TinyLRUCache template instead of just specializing it. This
will make the code more readable and will allow different caches for the
same key type.
* wtf/TinyLRUCache.h:
(WebCore::TinyLRUCache::get):
2016-02-01 Alex Christensen <achristensen@webkit.org>
[Win] WTFHeaderDetection.h no longer needed
https://bugs.webkit.org/show_bug.cgi?id=153753
rdar://problem/24434627
Reviewed by Darin Adler.
* wtf/Platform.h:
* wtf/PlatformWin.cmake:
2016-01-31 Darin Adler <darin@apple.com>
Cut down on calls to String::lower; mostly replace with convertToASCIILowercase
https://bugs.webkit.org/show_bug.cgi?id=153732
Reviewed by Dean Jackson.
* wtf/text/StringView.h: Added toIntStrict. Not thrilled about the name of this
function, but generally it seems likely to be useful more often than toInt.
And it's needed for one call site in WebCore that was using String::lower.
2016-01-31 Darin Adler <darin@apple.com>
Get rid of most calls to String::upper; mostly replace them with convertToASCIIUppercase
https://bugs.webkit.org/show_bug.cgi?id=153715
Reviewed by Gyuyoung Kim.
* wtf/text/AtomicString.h:
(WTF::AtomicString::upper): Deleted.
2016-01-31 Dan Bernstein <mitz@apple.com>
[Cocoa] Remove unused definition of HAVE_HEADER_DETECTION_H
https://bugs.webkit.org/show_bug.cgi?id=153729
Reviewed by Sam Weinig.
After r141700, HAVE_HEADER_DETECTION_H is no longer used.
* Configurations/Base.xcconfig:
2016-01-31 Darin Adler <darin@apple.com>
Replace CaseFoldingHash with ASCIICaseInsensitiveHash
https://bugs.webkit.org/show_bug.cgi?id=153639
Reviewed by Filip Pizlo.
* wtf/text/StringHash.h: Renamed CaseFoldingHash to ASCIICaseInsensitiveHash.
(WTF::ASCIICaseInsensitiveHash::foldCase): Use toASCIILower.
(WTF::ASCIICaseInsensitiveHash::equal): Use equalIgnoringASCIICase.
Also added some assertions.
* wtf/text/StringImpl.cpp: Made the latin1CaseFoldTable private to this file,
since it's no longer needed by CaseFoldingHash. Moved it up before its first use.
(WTF::equalCompatibilityCaseless): Fixed typo in the name of this function.
(WTF::equalCompatibiltyCaselessNonNull): Deleted.
* wtf/text/StringImpl.h: Removed declarations of latin1CaseFoldTable and
equalCompatibiltyCaselessNonNull
2016-01-30 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r195911.
https://bugs.webkit.org/show_bug.cgi?id=153723
Caused frequent assertion failures on bots (Requested by ap on
#webkit).
Reverted changeset:
"Replace CaseFoldingHash with ASCIICaseInsensitiveHash"
https://bugs.webkit.org/show_bug.cgi?id=153639
http://trac.webkit.org/changeset/195911
2016-01-30 Darin Adler <darin@apple.com>
Replace CaseFoldingHash with ASCIICaseInsensitiveHash
https://bugs.webkit.org/show_bug.cgi?id=153639
Reviewed by Filip Pizlo.
* wtf/text/StringHash.h: Renamed CaseFoldingHash to ASCIICaseInsensitiveHash.
(WTF::ASCIICaseInsensitiveHash::foldCase): Use toASCIILower.
(WTF::ASCIICaseInsensitiveHash::equal): Use equalIgnoringASCIICase.
Also added some assertions.
* wtf/text/StringImpl.cpp: Made the latin1CaseFoldTable private to this file,
since it's no longer needed by CaseFoldingHash. Moved it up before its first use.
(WTF::equalCompatibilityCaseless): Fixed typo in the name of this function.
(WTF::equalCompatibiltyCaselessNonNull): Deleted.
* wtf/text/StringImpl.h: Removed declarations of latin1CaseFoldTable and
equalCompatibiltyCaselessNonNull
2016-01-29 Ada Chan <adachan@apple.com>
Enable VIDEO_PRESENTATION_MODE only in Debug and Release builds on Mac
https://bugs.webkit.org/show_bug.cgi?id=153665
Reviewed by Dan Bernstein.
* wtf/Platform.h:
Remove this as the flag is already defined in FeatureDefines.xcconfig files.
2016-01-30 Yusuke Suzuki <utatane.tea@gmail.com>
Enable SamplingProfiler on POSIX environment
https://bugs.webkit.org/show_bug.cgi?id=153584
Reviewed by Michael Saboff.
Use __GLIBC__ since mcontext_t layout depends on it.
* wtf/Platform.h:
2016-01-28 Darin Adler <darin@apple.com>
Remove equalIgnoringCase since all callers really wanted equalIgnoringASCIICase
https://bugs.webkit.org/show_bug.cgi?id=153411
Reviewed by Ryosuke Niwa.
* wtf/text/AtomicString.h: Removed equalIgnoringCase.
Added some overloads for equalIgnoringASCIICase and moved the function bodies to
bottom of the file to make the function declarations easier to read and scan through.
I plan to do this for more of the functions in this class in the future.
* wtf/text/StringCommon.h: Added overloads for equalIgnoringASCIICase,
equalPossiblyIgnoringASCIICase, and a helper named equalIgnoringASCIICaseCommon.
Added an overload for equalLettersIgnoringASCIICase.
* wtf/text/StringImpl.cpp:
(WTF::equalIgnoringCase): Made the few remaining versions of this function private
to this file. Once we get done moving every client that should be using ASCII case
instead to new functions, these will almost certainly be deleted.
(WTF::equalIgnoringASCIICaseNonNull): Tweaked implementation a tiny bit.
* wtf/text/StringImpl.h: Sorted forward declarations at the top of the file.
Fixed some small formatting mistakes. Removed equalIgnoringCase, but left
equalIgnoringCaseNonNull behind for use by CaseFoldingHash until it is replaced
with ASCIICaseFoldingHash. Improved equalIgnoringASCIICase implementation.
Removed unneeded using for equalIgnoringASCIICase now that StringCommon.h takes
care of it.
* wtf/text/StringView.cpp:
(WTF::equalIgnoringASCIICase): Deleted. We no longer pass in the length for this,
so the arguments have changed and the implementation is also now in ASCIICommon.h
so it's an inline in the header file.
* wtf/text/StringView.h: Added an overload of equalIgnoringASCIICase,while
removing another.
* wtf/text/WTFString.h: Removed some unneeded forward delcarations. Fixed formatting
of the type name NSString *. Improved some comments. Removed equalIgnoringCase.
Separated declaration from implementation in a few cases to start making the
function declarations easier to read and scan through. I plan to do more in the future.
2016-01-27 Chris Dumez <cdumez@apple.com>
window.atob() should ignore spaces in input
https://bugs.webkit.org/show_bug.cgi?id=153522
<rdar://problem/24357822>
Reviewed by Benjamin Poulain.
Turn Base64DecodePolicy enum into flags so that the caller can indicate
to both validate padding AND ignore spaces.
Also make sure that the output Vector size is properly shrunk when
spaces are ignored.
* wtf/text/Base64.cpp:
(WTF::base64DecodeInternal):
(WTF::base64Decode):
(WTF::base64URLDecode):
* wtf/text/Base64.h:
2016-01-27 Alexey Proskuryakov <ap@apple.com>
Remove ENABLE_CURRENTSRC
https://bugs.webkit.org/show_bug.cgi?id=153545
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h:
2016-01-26 I-Ting Liu <iting_liu@apple.com>
Implement wildcard matching for plug-in policy host.
https://bugs.webkit.org/show_bug.cgi?id=153090
Reviewed by Darin Adler.
* wtf/text/AtomicString.h:
(WTF::AtomicString::AtomicString):
Add __bridge to allow compilation.
2016-01-26 Joseph Pecoraro <pecoraro@apple.com>
Generalize ResourceUsageData gathering to be used outside of ResourceUsageOverlay
https://bugs.webkit.org/show_bug.cgi?id=153509
<rdar://problem/24354291>
Reviewed by Andreas Kling.
* wtf/Platform.h:
Rename the ENABLE flag.
2016-01-26 Yusuke Suzuki <utatane.tea@gmail.com>
Make HashTable iterators STL iterators compatible
https://bugs.webkit.org/show_bug.cgi?id=153512
Reviewed by Alex Christensen.
While r178581 makes many hash table iterators STL compatible, still several iterators are not.
This patch fixes that; inheriting std::iterator correctly to meet STL iterator requirements (like iterator_category etc.)
It could recover Windows build failure.
* wtf/HashTable.h:
2016-01-26 Anders Carlsson <andersca@apple.com>
BlockPtr needs boolean operators
https://bugs.webkit.org/show_bug.cgi?id=153506
Reviewed by Tim Horton.
* wtf/BlockPtr.h:
2016-01-25 Filip Pizlo <fpizlo@apple.com>
FTLB3Output should maintain good block order like the LLVM one does
https://bugs.webkit.org/show_bug.cgi?id=152222
Reviewed by Geoffrey Garen.
In the FTL we need to be able to construct a list by inserting elements before other
specific elements. We didn't already have a scalable way to do this, so this adds such a
data structure to WTF. This also has changes to SentinelLinkedList to make it support
these kinds of insertions.
* WTF.xcodeproj/project.pbxproj:
* wtf/OrderMaker.h: Added.
(WTF::OrderMaker::Node::Node):
(WTF::OrderMaker::OrderMaker):
(WTF::OrderMaker::prepend):
(WTF::OrderMaker::append):
(WTF::OrderMaker::insertBefore):
(WTF::OrderMaker::insertAfter):
(WTF::OrderMaker::iterator::iterator):
(WTF::OrderMaker::iterator::operator*):
(WTF::OrderMaker::iterator::operator++):
(WTF::OrderMaker::iterator::operator==):
(WTF::OrderMaker::iterator::operator!=):
(WTF::OrderMaker::begin):
(WTF::OrderMaker::end):
(WTF::OrderMaker::newNode):
* wtf/SentinelLinkedList.h:
(WTF::BasicRawSentinelNode::isOnList):
(WTF::BasicRawSentinelNode<T>::remove):
(WTF::BasicRawSentinelNode<T>::prepend):
(WTF::BasicRawSentinelNode<T>::append):
(WTF::RawNode>::SentinelLinkedList):
(WTF::RawNode>::push):
(WTF::RawNode>::append):
(WTF::RawNode>::remove):
(WTF::RawNode>::prepend):
(WTF::RawNode>::isOnList):
2016-01-25 Alex Christensen <achristensen@webkit.org>
[Win] Copy forwarding headers before building a project
https://bugs.webkit.org/show_bug.cgi?id=153434
Reviewed by Brent Fulgham.
* wtf/CMakeLists.txt:
* wtf/PlatformWin.cmake:
2016-01-20 Ryosuke Niwa <rniwa@webkit.org>
HTMLElement::nodeName should not upper case non-ASCII characters
https://bugs.webkit.org/show_bug.cgi?id=153231
Reviewed by Darin Adler.
Added convertToASCIIUppercase to AtomicString, String, and StringImpl.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::convertASCIICase): Generalized from convertToASCIILowercase.
(WTF::AtomicString::convertToASCIILowercase):
(WTF::AtomicString::convertToASCIIUppercase):
* wtf/text/AtomicString.h:
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::convertASCIICase): Generalized from convertToASCIILowercase.
(WTF::StringImpl::convertToASCIILowercase):
(WTF::StringImpl::convertToASCIIUppercase):
* wtf/text/StringImpl.h:
* wtf/text/WTFString.cpp:
(WTF::String::convertToASCIIUppercase): Added.
* wtf/text/WTFString.h:
2016-01-22 Chris Dumez <cdumez@apple.com>
Unreviewed attempt to fix the Windows build after r195452.
* wtf/text/WTFString.h:
2016-01-22 Darin Adler <darin@apple.com>
Reduce use of equalIgnoringCase to just ignore ASCII case
https://bugs.webkit.org/show_bug.cgi?id=153266
Reviewed by Ryosuke Niwa.
* wtf/ASCIICType.h:
(WTF::isASCIIAlphaCaselessEqual): Loosened the assertion in this function
so it can work with ASCII spaces, numeric digits, and some punctuation.
Commented that we might want to change its name later.
* wtf/Assertions.cpp:
(WTFInitializeLogChannelStatesFromString): Use equalLettersIgnoringASCIICase.
* wtf/text/AtomicString.h:
(WTF::equalLettersIgnoringASCIICase): Added. Calls the version that takes a String.
* wtf/text/StringCommon.h:
(WTF::equalLettersIgnoringASCIICase): Added. Takes a pointer to characters.
(WTF::equalLettersIgnoringASCIICaseCommonWithoutLength): Added.
(WTF::equalLettersIgnoringASCIICaseCommon): Added.
* wtf/text/StringImpl.h:
(WTF::equalLettersIgnoringASCIICase): Added. Calls equalLettersIgnoringASCIICaseCommon.
* wtf/text/StringView.h:
(WTF::equalLettersIgnoringASCIICase): Added. Calls equalLettersIgnoringASCIICaseCommon.
* wtf/text/WTFString.h: Reordered/reformatted a little.
(WTF::equalIgnoringASCIICase): Added. Calls the version that takes a StringImpl.
2016-01-22 Csaba Osztrogonác <ossy@webkit.org>
Buildfix for older GCCs after r195142
https://bugs.webkit.org/show_bug.cgi?id=153351
Unreviewed buildfix.
* wtf/SystemTracing.h:
2016-01-21 Filip Pizlo <fpizlo@apple.com>
REGRESSION(r195417): many tests crash
https://bugs.webkit.org/show_bug.cgi?id=153316
Reviewed by Saam Barati.
This rolls out the StdLibExtras.h change, and simplifies RangeSet to not use binary search.
That's fine for now, since B3 doesn't stress RangeSet enough right now.
* wtf/RangeSet.h:
(WTF::RangeSet::contains):
(WTF::RangeSet::overlaps):
(WTF::RangeSet::clear):
(WTF::RangeSet::findRange):
* wtf/StdLibExtras.h:
(WTF::binarySearchImpl):
(WTF::binarySearch):
(WTF::tryBinarySearch):
(WTF::approximateBinarySearch):
2016-01-21 Filip Pizlo <fpizlo@apple.com>
B3 should have load elimination
https://bugs.webkit.org/show_bug.cgi?id=153288
Reviewed by Geoffrey Garen.
I needed a way to track sets of ranges, where there is a high likelihood that all of the
ranges overlap. So I created RangeSet. It's a usually-sorted list of coalesced ranges.
Practically this means that right now, FTL B3 will end up with two kinds of range sets: a set
that just contains top and a set that contains nothing. In the future, most sets will either
be top of empty but some of them will contain a handful of other things.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/MathExtras.h:
(WTF::leftShiftWithSaturation):
(WTF::nonEmptyRangesOverlap):
(WTF::rangesOverlap):
* wtf/RangeSet.h: Added.
(WTF::RangeSet::RangeSet):
(WTF::RangeSet::~RangeSet):
(WTF::RangeSet::add):
(WTF::RangeSet::contains):
(WTF::RangeSet::overlaps):
(WTF::RangeSet::clear):
(WTF::RangeSet::dump):
(WTF::RangeSet::dumpRaw):
(WTF::RangeSet::compact):
(WTF::RangeSet::overlapsNonEmpty):
(WTF::RangeSet::subsumesNonEmpty):
(WTF::RangeSet::findRange):
* wtf/StdLibExtras.h:
(WTF::binarySearchImpl):
(WTF::binarySearch):
(WTF::tryBinarySearch):
(WTF::approximateBinarySearch):
2016-01-19 Ada Chan <adachan@apple.com>
Make it possible to enable VIDEO_PRESENTATION_MODE on other Cocoa platforms.
https://bugs.webkit.org/show_bug.cgi?id=153218
Reviewed by Eric Carlson.
* wtf/Platform.h:
2016-01-19 Filip Pizlo <fpizlo@apple.com>
B3 should have basic path specialization
https://bugs.webkit.org/show_bug.cgi?id=153200
Reviewed by Benjamin Poulain.
* wtf/GraphNodeWorklist.h:
(WTF::GraphNodeWorklist::push):
(WTF::GraphNodeWorklist::pushAll):
(WTF::GraphNodeWorklist::isEmpty):
(WTF::GraphNodeWorklist::notEmpty):
2016-01-20 Said Abou-Hallawa <sabouhallawa@apple.com>
Refactor AtomicStringKeyedMRUCache to be a generic LRU cache
https://bugs.webkit.org/show_bug.cgi?id=153109
Reviewed by Darin Adler.
Refactor AtomicStringKeyedMRUCache, move it to WTF project and rename it
to be TinyLRUCache. Define another template and call it TinyLRUCachePolicy.
This one can be overridden for different keys and values. Its function is
creating the cached values.
* WTF.xcodeproj/project.pbxproj:
* wtf/TinyLRUCache.h: Added.
(WebCore::TinyLRUCachePolicy::isKeyNull):
(WebCore::TinyLRUCachePolicy::createValueForNullKey):
(WebCore::TinyLRUCachePolicy::createValueForKey):
(WebCore::TinyLRUCache::get):
2016-01-19 Saam barati <sbarati@apple.com>
WTF::Bag should be non-copyable
https://bugs.webkit.org/show_bug.cgi?id=153253
Reviewed by Filip Pizlo.
* wtf/Bag.h:
* wtf/SegmentedVector.h:
(WTF::SegmentedVector::append):
(WTF::SegmentedVector::alloc):
2016-01-19 Enrica Casucci <enrica@apple.com>
Add support for DataDetectors in WK (iOS).
https://bugs.webkit.org/show_bug.cgi?id=152989
rdar://problem/22855960
Reviewed by Tim Horton.
Adding feature definition for data detection.
* wtf/FeatureDefines.h:
2016-01-19 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r195300.
https://bugs.webkit.org/show_bug.cgi?id=153244
enrica wants more time to fix Windows (Requested by thorton on
#webkit).
Reverted changeset:
"Add support for DataDetectors in WK (iOS)."
https://bugs.webkit.org/show_bug.cgi?id=152989
http://trac.webkit.org/changeset/195300
2016-01-19 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r195141.
Seems to cause crashes on iOS9 64bit
Reverted changeset:
"Fragmentation-free allocator for timeless and/or coupled
allocations."
https://bugs.webkit.org/show_bug.cgi?id=152696
http://trac.webkit.org/changeset/195141
2016-01-19 Enrica Casucci <enrica@apple.com>
Add support for DataDetectors in WK (iOS).
https://bugs.webkit.org/show_bug.cgi?id=152989
rdar://problem/22855960
Reviewed by Tim Horton.
Adding feature definition for data detection.
* wtf/FeatureDefines.h:
2016-01-17 Filip Pizlo <fpizlo@apple.com>
FTL B3 should be just as fast as FTL LLVM on Octane/crypto
https://bugs.webkit.org/show_bug.cgi?id=153113
Reviewed by Saam Barati.
* wtf/IndexSparseSet.h:
(WTF::IndexSparseSet<OverflowHandler>::IndexSparseSet):
(WTF::IndexSparseSet<OverflowHandler>::add):
(WTF::IndexSparseSet<OverflowHandler>::remove):
* wtf/StringPrintStream.h:
(WTF::StringPrintStream::length):
2016-01-17 Michael Catanzaro <mcatanzaro@igalia.com>
[CMake] Do not build bmalloc when USE_SYSTEM_MALLOC is ON
https://bugs.webkit.org/show_bug.cgi?id=153190
Reviewed by Csaba Osztrogonác.
Build bmalloc when NOT USE_SYSTEM_MALLOC rather than when NOT WIN32.
* wtf/CMakeLists.txt:
2016-01-15 Simon Fraser <simon.fraser@apple.com>
Add kdebug_trace signposts for a few WebCore operations
https://bugs.webkit.org/show_bug.cgi?id=153136
rdar://problem/24208487
Reviewed by Sam Weinig.
New header with the reserved WebKit component code, trace point codes, and
a stack-based helper that traces scope entry and exit.
The available range of trace point codes is arbitrarily segmented into WTF, JSC,
WebCore, WebKit and WebKit2.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/SystemTracing.h: Added.
(WTF::TraceScope::TraceScope):
(WTF::TraceScope::~TraceScope):
2016-01-15 Andreas Kling <akling@apple.com>
Fragmentation-free allocator for timeless and/or coupled allocations.
<https://webkit.org/b/152696>
Reviewed by Antti Koivisto.
Introduce BumpArena, a space-efficient memory allocator for situations where
you feel pretty confident betting on allocation lifetimes.
Basic design:
- Reserves 128MB range of memory at startup.
- Allocates 4kB-aligned blocks of 4kB from VM at a time.
- Bump-pointer allocates out of a block until it reaches end.
- Each allocation increments the ref-count of its block.
- Each deallocation decrements the ref-count of its block.
- Transparently falls back to fastMalloc()/fastFree() when needed.
Interface:
- BumpArena::create()
Create your very own BumpArena!
- BumpArena::allocate(BumpArena* arena, size_t size)
Allocates 'size' bytes of memory from 'arena'.
If 'arena' is null, falls back to fastMalloc().
- BumpArena::deallocate(void* ptr)
If 'ptr' is BumpArena allocation, decrements block ref-count.
If 'ptr' is FastMalloc allocation, calls fastFree() on it.
- WTF_MAKE_BUMPARENA_ALLOCATED;
Macro that gives a class or struct custom operators new and delete
for allocation out of BumpArena. Just like WTF_MAKE_FAST_ALLOCATED;
Note that while the name of this patch says "fragmentation-free allocator"
it will only be fragmentation-free when used for appropriate things.
This is not meant to be a general-purpose allocator. Only use it for sets of
allocations that are known to die roughly at the same time.
BumpArena will never resume allocating from a block that has been filled,
so it's even more important than usual that everything gets deallocated.
BumpArena redirects allocations to FastMalloc in three cases:
- When invoked with a null BumpArena*
- When allocation request is larger than BumpArena's block size (4kB)
- When BumpArena has exhausted all of its pre-reserved VM. (128MB)
The VM allocator will eagerly return blocks of VM to the kernel by calling
madvise(). Average time spent in madvise is around 0.007ms on my box.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/BumpArena.cpp: Added.
(WTF::BumpArena::Block::capacity):
(WTF::BumpArena::Block::arena):
(WTF::BumpArena::Block::payloadStart):
(WTF::arenas):
(WTF::BumpArena::Block::Block):
(WTF::BumpArena::Block::~Block):
(WTF::BumpArena::Block::ref):
(WTF::BlockAllocator::BlockAllocator):
(WTF::BlockAllocator::isAllocation):
(WTF::blockAllocator):
(WTF::BlockAllocator::allocateBlock):
(WTF::BlockAllocator::deallocateBlock):
(WTF::BumpArena::Block::deref):
(WTF::BumpArena::Block::create):
(WTF::BumpArena::Block::dump):
(WTF::BumpArena::dump):
(WTF::BumpArena::create):
(WTF::BumpArena::BumpArena):
(WTF::BumpArena::~BumpArena):
(WTF::BumpArena::allocateSlow):
(WTF::BumpArena::allocate):
(WTF::BumpArena::deallocate):
(WTF::BumpArena::Block::blockFor):
(WTF::BumpArena::arenaFor):
* wtf/BumpArena.h: Added.
* wtf/CMakeLists.txt:
2016-01-15 Konstantin Tokarev <annulen@yandex.ru>
[EFL] WorkQueue methods should be defined inside WTF namespace.
https://bugs.webkit.org/show_bug.cgi?id=153097
Reviewed by Gyuyoung Kim.
* wtf/efl/WorkQueueEfl.cpp:
2016-01-14 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r195035.
Caused 1-3% PLT regression on iOS
Reverted changeset:
"Part 2/2: Stop using USE(CFNETWORK) path on iOS"
https://bugs.webkit.org/show_bug.cgi?id=142540
http://trac.webkit.org/changeset/195035
2016-01-14 David Kilzer <ddkilzer@apple.com>
Part 2/2: Stop using USE(CFNETWORK) path on iOS
<https://webkit.org/b/142540>
Original patch by Antti Koivisto <antti@apple.com> on 2015-03-10
Reviewed by Chris Dumez.
* wtf/Platform.h: Turn off USE(CFNETWORK) for PLATFORM(IOS).
2016-01-14 Per Arne Vollan <peavo@outlook.com>
[Win] Remove workarounds for fixed bugs in fmod and pow.
https://bugs.webkit.org/show_bug.cgi?id=153071
Reviewed by Brent Fulgham.
The bugs have been fixed in the MSVC CRT, and we can remove the workarounds.
* wtf/MathExtras.h:
(wtf_fmod): Deleted.
(wtf_pow): Deleted.
2016-01-13 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r194963.
https://bugs.webkit.org/show_bug.cgi?id=153079
This change causes ASan tests to crash and exit early
(Requested by ryanhaddad on #webkit).
Reverted changeset:
"Fragmentation-free allocator for timeless and/or coupled
allocations."
https://bugs.webkit.org/show_bug.cgi?id=152696
http://trac.webkit.org/changeset/194963
2016-01-13 Andreas Kling <akling@apple.com>
Fragmentation-free allocator for timeless and/or coupled allocations.
<https://webkit.org/b/152696>
Reviewed by Antti Koivisto.
Introduce BumpArena, a space-efficient memory allocator for situations where
you feel pretty confident betting on allocation lifetimes.
Basic design:
- Allocates 4kB-aligned blocks of 4kB from bmalloc at a time.
- Bump-pointer allocates out of a block until it reaches end.
- Each allocation increments the ref-count of its block.
- Each deallocation decrements the ref-count of its block.
Interface:
- BumpArena::create()
Create your very own BumpArena!
- BumpArena::allocate(BumpArena* arena, size_t size)
Allocates 'size' bytes of memory from 'arena'.
If 'arena' is null, allocation comes out of the shared global BumpArena.
- BumpArena::deallocate(void* ptr)
Deallocates 'ptr', decrementing the ref-count of its block.
- WTF_MAKE_BUMPARENA_ALLOCATED;
Macro that gives a class or struct custom operators new and delete
for allocation out of BumpArena. Just like WTF_MAKE_FAST_ALLOCATED;
Note that while the name of this patch says "fragmentation-free allocator"
it will only be fragmentation-free when used for appropriate things.
This is not meant to be a general-purpose allocator. Only use it for sets of
allocations that are known to die roughly at the same time.
BumpArena will never resume allocating from a block that has been filled,
so it's even more important than usual that everything gets deallocated.
As noted above, calling allocate() with a null BumpArena will allocate out
of a global shared arena. Ideally you're always allocating out of a specific,
controlled arena, but there are situations where you may not have one.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/BumpArena.cpp: Added.
(WTF::BumpArena::Block::defaultCapacity):
(WTF::BumpArena::Block::arena):
(WTF::BumpArena::Block::payloadStart):
(WTF::globalArena):
(WTF::arenas):
(WTF::BumpArena::Block::Block):
(WTF::BumpArena::Block::~Block):
(WTF::BumpArena::Block::ref):
(WTF::BumpArena::Block::deref):
(WTF::BumpArena::Block::create):
(WTF::BumpArena::Block::dump):
(WTF::BumpArena::dump):
(WTF::BumpArena::create):
(WTF::BumpArena::BumpArena):
(WTF::BumpArena::~BumpArena):
(WTF::BumpArena::allocateSlow):
(WTF::BumpArena::allocate):
(WTF::BumpArena::deallocate):
(WTF::BumpArena::Block::blockFor):
(WTF::BumpArena::arenaFor):
* wtf/BumpArena.h: Added.
* wtf/CMakeLists.txt:
2016-01-08 Andy Estes <aestes@apple.com>
[Content Filtering] Lazily load platform frameworks
https://bugs.webkit.org/show_bug.cgi?id=152881
rdar://problem/23270886
Reviewed by Brady Eidson.
* wtf/Platform.h: Moved definition of HAVE_NETWORK_EXTENSION to here from WebCore/platform/cocoa/NetworkExtensionContentFilter.h.
2016-01-12 Ryosuke Niwa <rniwa@webkit.org>
Add a build flag for custom element
https://bugs.webkit.org/show_bug.cgi?id=153005
Reviewed by Alex Christensen.
* wtf/FeatureDefines.h:
2016-01-11 Andreas Kling <akling@apple.com>
NeverDestroyed should relax adoption requirements on all RefCountedBase subclasses.
<https://webkit.org/b/152960>
Reviewed by Antti Koivisto.
Instead of relaxing on subclasses of RefCounted<T>, relax on subclasses of RefCountedBase.
This allows e.g NeverDestroyed<CSSPrimitiveValue> to relax its pointee despite the class
hierarchy starting with RefCounted<CSSValue> (not RefCounted<CSSPrimitiveValue>.)
* wtf/NeverDestroyed.h:
2016-01-10 Saam barati <sbarati@apple.com>
Implement a sampling profiler
https://bugs.webkit.org/show_bug.cgi?id=151713
Reviewed by Filip Pizlo.
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::decrementPageOccupancy):
(WTF::MetaAllocator::isInAllocatedMemory):
(WTF::MetaAllocator::roundUp):
* wtf/MetaAllocator.h:
(WTF::MetaAllocator::getLock):
* wtf/Platform.h:
2016-01-10 Filip Pizlo <fpizlo@apple.com>
It should be possible to run liveness over registers without also tracking Tmps
https://bugs.webkit.org/show_bug.cgi?id=152963
Reviewed by Saam Barati.
Add set methods (add/contains/remove) to BitVector, since it gets used as a set in a lot of
places. This also makes BitVector a drop-in replacement for HashSet<unsigned> in a lot of
places.
Also made the iterator methods of BitVector live on BitVector directly rather than behind the
thing returned from setBits(). This makes sense since that makes BitVector even more of a
drop-in for HashSet. It's not harmful since we've never added any other mode of iterating a
BitVector other than this, so it doesn't make sense to make it harder to access.
* wtf/BitVector.h:
(WTF::BitVector::get):
(WTF::BitVector::contains):
(WTF::BitVector::set):
(WTF::BitVector::add):
(WTF::BitVector::ensureSizeAndSet):
(WTF::BitVector::clear):
(WTF::BitVector::remove):
(WTF::BitVector::hash):
(WTF::BitVector::iterator::iterator):
(WTF::BitVector::iterator::operator*):
(WTF::BitVector::iterator::operator++):
(WTF::BitVector::iterator::operator==):
(WTF::BitVector::iterator::operator!=):
(WTF::BitVector::begin):
(WTF::BitVector::end):
(WTF::BitVector::bitsInPointer):
(WTF::BitVector::SetBitsIterable::SetBitsIterable): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::iterator): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator*): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator++): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator==): Deleted.
(WTF::BitVector::SetBitsIterable::iterator::operator!=): Deleted.
(WTF::BitVector::SetBitsIterable::begin): Deleted.
(WTF::BitVector::SetBitsIterable::end): Deleted.
(WTF::BitVector::setBits): Deleted.
2016-01-09 Andreas Kling <akling@apple.com>
Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL
<https://webkit.org/b/152902>
Reviewed by Anders Carlsson.
Mostly mechanical conversion to NeverDestroyed throughout WTF.
* wtf/RunLoop.cpp:
(WTF::RunLoop::current):
* wtf/ThreadingPthreads.cpp:
(WTF::threadMapMutex):
(WTF::threadMap):
2016-01-08 Anders Carlsson <andersca@apple.com>
Nullopt and InPlace should be structs, not enum values
https://bugs.webkit.org/show_bug.cgi?id=152915
Reviewed by Andreas Kling.
Without this,
Optional<int> o = flag ? 1 : Nullopt;
would cause Nullopt to be treated as an integer, causing o to be initialized to 0,
instead of Nullopt. With this change, the above code now causes a compile error.
Also, get rid of the CONSTEXPR macro since all compilers support constexpr properly,
and add a WTF::makeOptional to match the current iteration of std::experimental::optional.
* wtf/Compiler.h:
* wtf/Forward.h:
* wtf/Optional.h:
(WTF::NulloptTag::NulloptTag):
(WTF::makeOptional):
* wtf/StdLibExtras.h:
(std::literals::chrono_literals::operator _s):
(std::literals::chrono_literals::operator _ms):
(std::move):
2016-01-06 Anders Carlsson <andersca@apple.com>
Add a smart block pointer
https://bugs.webkit.org/show_bug.cgi?id=152799
Reviewed by Tim Horton.
Introduce WTF::BlockPtr, a smart block pointer.
* WTF.xcodeproj/project.pbxproj:
* wtf/BlockPtr.h: Added.
(WTF::makeBlockPtr):
2016-01-04 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Allow to save and restore session
https://bugs.webkit.org/show_bug.cgi?id=115600
Reviewed by Michael Catanzaro.
Add GVariantIter specialization of GUniquePtr.
* wtf/glib/GTypedefs.h:
* wtf/glib/GUniquePtr.h:
2016-01-04 Tim Horton <timothy_horton@apple.com>
Turn on gesture events when building for Yosemite
https://bugs.webkit.org/show_bug.cgi?id=152704
rdar://problem/24042472
Reviewed by Anders Carlsson.
* wtf/FeatureDefines.h:
2016-01-04 Benjamin Poulain <bpoulain@apple.com>
[JSC] Build B3 by default on iOS ARM64
https://bugs.webkit.org/show_bug.cgi?id=152525
Reviewed by Filip Pizlo.
* wtf/Platform.h:
2016-01-03 Andreas Kling <akling@apple.com>
Unreviewed, rolling out r194510.
Broke 2 API tests, no time to investigate right now
Reverted changeset:
"StringBuilder often creates two StringImpls."
https://bugs.webkit.org/show_bug.cgi?id=152662
http://trac.webkit.org/changeset/194510
2016-01-03 Khem Raj <raj.khem@gmail.com>
WebKit fails to build with musl libc library
https://bugs.webkit.org/show_bug.cgi?id=152625
Reviewed by Daniel Bates.
Disable ctype.h check for musl C library on Linux.
Enable backtrace on Linux when using glibc.
We don't have backtrace() implemented on non-glibc system
C libraries on Linux e.g. musl.
* wtf/DisallowCType.h: Check for __GLIBC__.
* wtf/Assertions.cpp:
(WTFGetBacktrace): Check if libc is glibc.
2016-01-03 Andreas Kling <akling@apple.com>
StringBuilder often creates two StringImpls.
<https://webkit.org/b/152662>
Reviewed by Anders Carlsson.
If StringBuilder didn't manage to guess the exact final length of the
string being built, it would still keep the buffer around, and the final
build process would then return a substring into that buffer.
This effectively yielded two StringImpls instead of one, with the substring
retaining the longer buffer StringImpl.
This patch improves the situation by having StringImpl crop the buffer's
m_length field to the final built string length. That way we never have to
return a substring.
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::reifyString):
* wtf/text/StringImpl.h:
2016-01-03 Andreas Kling <akling@apple.com>
Remove redundant StringImpl substring creation function.
<https://webkit.org/b/152652>
Reviewed by Daniel Bates.
Remove StringImpl::createSubstringSharingImpl8() and make the only
caller use createSubstringSharingImpl() instead.
They do the same thing anyway, the only difference is that the branch
on is8Bit() now happens in the callee instead of at the call site.
* wtf/text/StringImpl.h:
(WTF::StringImpl::createSubstringSharingImpl8): Deleted.
2015-12-31 Andy Estes <aestes@apple.com>
Replace WTF::move with WTFMove
https://bugs.webkit.org/show_bug.cgi?id=152601
Reviewed by Brady Eidson.
This also removes the definition of WTF::move.
* wtf/Deque.h:
* wtf/HashMap.h:
* wtf/HashSet.h:
* wtf/HashTable.h:
(WTF::HashTable::add):
(WTF::KeyTraits>::HashTable):
* wtf/Insertion.h:
(WTF::executeInsertions):
* wtf/IteratorAdaptors.h:
(WTF::FilterIterator::FilterIterator):
(WTF::TransformIterator::TransformIterator):
(WTF::makeTransformIterator):
* wtf/IteratorRange.h:
(WTF::IteratorRange::IteratorRange):
* wtf/ListHashSet.h:
(WTF::U>::takeFirst):
(WTF::U>::takeLast):
* wtf/MainThread.cpp:
(WTF::callOnMainThread):
* wtf/MallocPtr.h:
(WTF::MallocPtr::operator=):
* wtf/MessageQueue.h:
(WTF::MessageQueue<DataType>::append):
(WTF::MessageQueue<DataType>::appendAndKill):
(WTF::MessageQueue<DataType>::appendAndCheckEmpty):
(WTF::MessageQueue<DataType>::prepend):
* wtf/NakedPtr.h:
(WTF::=):
* wtf/OSObjectPtr.h:
(WTF::OSObjectPtr::operator=):
* wtf/Optional.h:
(WTF::Optional::Optional):
(WTF::Optional::operator=):
* wtf/RefPtr.h:
(WTF::=):
* wtf/RetainPtr.h:
(WTF::=):
* wtf/RunLoop.cpp:
(WTF::RunLoop::dispatch):
* wtf/SharedTask.h:
(WTF::createSharedTask):
* wtf/StdLibExtras.h:
(WTF::move): Deleted.
* wtf/Threading.cpp:
(WTF::threadEntryPoint):
(WTF::createThread):
* wtf/Vector.h:
(WTF::Vector::takeLast):
* wtf/efl/DispatchQueueEfl.cpp:
(DispatchQueue::dispatch):
(DispatchQueue::setSocketEventHandler):
(DispatchQueue::performTimerWork):
(DispatchQueue::insertTimerWorkItem):
* wtf/efl/DispatchQueueWorkItemEfl.h:
(WorkItem::WorkItem):
(TimerWorkItem::create):
(TimerWorkItem::TimerWorkItem):
* wtf/efl/WorkQueueEfl.cpp:
(WorkQueue::registerSocketEventHandler):
(WorkQueue::dispatch):
(WorkQueue::dispatchAfter):
* wtf/glib/GRefPtr.h:
(WTF::=):
* wtf/glib/WorkQueueGLib.cpp:
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::WorkQueue::dispatchAfter):
* wtf/text/AtomicString.h:
(WTF::AtomicString::AtomicString):
(WTF::AtomicString::operator=):
* wtf/text/StringConcatenate.h:
(WTF::tryMakeString):
* wtf/text/WTFString.cpp:
(WTF::String::isolatedCopy):
* wtf/text/WTFString.h:
(WTF::String::String):
(WTF::StringCapture::releaseString):
* wtf/win/GDIObject.h:
(WTF::=):
2015-12-31 David Kilzer <ddkilzer@apple.com>
Stop using USE(CFNETWORK) path on iOS
<https://webkit.org/b/142540>
Step 1/2: Do everything but turn off USE(CFNETWORK) internally.
Original patch by Antti Koivisto <antti@apple.com> on 2015-03-10
Reviewed by Daniel Bates.
* wtf/SchedulePair.h: Update macros to match WebCore.
2015-12-31 Andy Estes <aestes@apple.com>
Rename WTF_MOVE to WTFMove
https://bugs.webkit.org/show_bug.cgi?id=152601
Reviewed by Daniel Bates.
Our coding style guidelines say that macros that expand to function calls should be named like functions,
so WTFMove() is a more appropriate name.
* wtf/StdLibExtras.h:
2015-12-30 Andy Estes <aestes@apple.com>
Use of WTF::move prevents clang's move diagnostics from warning about several classes of mistakes
https://bugs.webkit.org/show_bug.cgi?id=152601
Reviewed by Brady Eidson.
Clang has recently added warnings to catch certain classes of mistakes with the use of std::move():
-Wpessimizing-move (warns if moving prevents copy elision), -Wredundant-move (warns if a move is redundant),
and -Wself-move (warns if moving to self). Enabling these warnings manually (by renaming WTF::move to std::move)
have caught numerous mistakes in our codebase (see http://trac.webkit.org/changeset/194428).
It would be nice to be able to take advantage of these warnings, but doing so requires that we use std::move,
not WTF::move. But since WTF::move does provide useful checks for which clang does not yet have warnings,
we should write a best-of-both-worlds move function.
This patch adds a function that satisfies clang's criteria for a move function (in namespace std, named "move",
and takes a single argument) but also retains WTF::move's compile-time checks. It also adds a convenience macro
called WTF_MOVE for use by callers.
* wtf/StdLibExtras.h:
(std::move):
2015-12-25 Andy Estes <aestes@apple.com>
Stop moving local objects in return statements
https://bugs.webkit.org/show_bug.cgi?id=152557
Reviewed by Brady Eidson.
* wtf/StdLibExtras.h: Added a FIXME about how using WTF::move() prevents several Clang diagnostics from emitting useful warnings.
2015-12-22 Filip Pizlo <fpizlo@apple.com>
FTL B3 should be able to run richards
https://bugs.webkit.org/show_bug.cgi?id=152514
Reviewed by Michael Saboff.
Change the list dumping helpers to work with a broader set of list kinds.
* wtf/ListDump.h:
(WTF::ListDump::dump):
(WTF::MapDump::dump):
(WTF::sortedMapDump):
(WTF::ListDumpInContext::dump):
2015-12-22 Filip Pizlo <fpizlo@apple.com>
FTL B3 does not logicalNot correctly
https://bugs.webkit.org/show_bug.cgi?id=152512
Reviewed by Saam Barati.
This change introduces yet another use of SharedTask in JSC. While doing this, I noticed that
SharedTask::run() always demands that whatever arguments the callback takes, they must be
passed as rvalue references. This was a clear misuse of perfect forwarding. This change makes
SharedTask's approach to forwarding match what we were already doing in ScopedLambda.
* wtf/SharedTask.h:
2015-12-20 Michael Catanzaro <mcatanzaro@igalia.com>
[SOUP] Performs DNS prefetch when a proxy is configured (information leak)
https://bugs.webkit.org/show_bug.cgi?id=145542
Reviewed by Darin Adler.
Specialize GUniquePtr<char*>, using g_strfreev.
* wtf/glib/GUniquePtr.h:
2015-12-19 Dan Bernstein <mitz@apple.com>
[Mac] WebKit contains dead source code for OS X Mavericks and earlier
https://bugs.webkit.org/show_bug.cgi?id=152462
Reviewed by Alexey Proskuryakov.
* Configurations/DebugRelease.xcconfig: Removed definition of MACOSX_DEPLOYMENT_TARGET for
OS X 10.9.
- Simplified expressions involving __MAC_OS_X_VERSION_MIN_REQUIRED and removed code that was
never getting compiled:
* wtf/FeatureDefines.h:
* wtf/MainThread.h:
* wtf/OSObjectPtr.h:
* wtf/Platform.h:
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
* wtf/spi/darwin/XPCSPI.h:
2015-12-17 Sukolsak Sakshuwong <sukolsak@gmail.com>
[INTL] Implement Collator Compare Functions
https://bugs.webkit.org/show_bug.cgi?id=147604
Reviewed by Darin Adler.
* wtf/unicode/Collator.h:
2015-12-16 Andreas Kling <akling@apple.com>
Give kernel VM some hints about non-live memory-cached resources.
<https://webkit.org/b/152362>
Reviewed by Geoffrey Garen.
Add an API to OSAllocator for hinting to the OS that a range of memory
is not expected to be used anytime soon.
* wtf/OSAllocator.h:
* wtf/OSAllocatorPosix.cpp:
(WTF::OSAllocator::hintMemoryNotNeededSoon):
* wtf/OSAllocatorWin.cpp:
(WTF::OSAllocator::hintMemoryNotNeededSoon):
* wtf/Platform.h:
2015-12-16 Alex Christensen <achristensen@webkit.org>
Fix internal Windows build
https://bugs.webkit.org/show_bug.cgi?id=152364
rdar://problem/23928759
Reviewed by Tim Horton.
* WTF.vcxproj/WTF.proj:
2015-12-16 Youenn Fablet <youenn.fablet@crf.canon.fr>
[Fetch API] Add fetch API compile time flag
https://bugs.webkit.org/show_bug.cgi?id=152254
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
2015-12-14 Yusuke Suzuki <utatane.tea@gmail.com>
Math.random should have an intrinsic thunk and it should be later handled as a DFG Node
https://bugs.webkit.org/show_bug.cgi?id=152133
Reviewed by Geoffrey Garen.
Change 64bit random to double logic to convert efficiently.
* wtf/WeakRandom.h:
(WTF::WeakRandom::get):
(WTF::WeakRandom::lowOffset):
(WTF::WeakRandom::highOffset):
2015-12-14 Sukolsak Sakshuwong <sukolsak@gmail.com>
Make UCharIterator createIterator(StringView) visible to other classes
https://bugs.webkit.org/show_bug.cgi?id=151917
Reviewed by Darin Adler.
Make UCharIterator createIterator(StringView) in CollatorICU.cpp visible
to other classes so that future patches that will ucol_strcollIter
(including Bug 147604) can use it.
* wtf/unicode/Collator.h:
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::createIterator):
2015-12-14 David Kilzer <ddkilzer@apple.com>
REGRESSION (r162777): Remove Boost Software License from WTF
<http://webkit.org/b/152243>
Reviewed by Darin Adler.
The source code that the Boost Software License was referring to
was removed in r162777 by switching to std::atomic.
* wtf/Atomics.cpp:
* wtf/Atomics.h:
* wtf/ThreadSafeRefCounted.h:
- Remove Boost Software License.
- Update Apple Inc. copyright as needed.
- Refresh Apple Inc. license text.
2015-12-10 Joseph Pecoraro <pecoraro@apple.com>
Remote Inspector: Verify the identity of the other side of XPC connections
https://bugs.webkit.org/show_bug.cgi?id=152153
Reviewed by Brian Burg.
* WTF.xcodeproj/project.pbxproj:
* wtf/spi/cocoa/SecuritySPI.h: Renamed from Source/WebCore/platform/spi/cocoa/SecuritySPI.h.
Push this down into WTF from WebCore and add a new method.
2015-12-08 Filip Pizlo <fpizlo@apple.com>
FTL B3 should have basic GetById support
https://bugs.webkit.org/show_bug.cgi?id=152035
Reviewed by Saam Barati.
When dealing with shared task lambdas, you often want to force a value to be allocated so that it
has reference semantics, but you still want the lambda to execute OK when we pop stack. In PL we
usually call this a "box". This is easy to do if the value that happened to be stack-allocated
is also RefCounted, but that's rare, since stack-allocated values often have copy semantics. So,
I've added a Box type to WTF. Behind the scenes, it allocates your object with fast malloc inside
a ThreadSAfeRefCounted. When you pass Box<T>, you're passing the reference. This makes it a lot
easier to work with by-reference capture.
* WTF.xcodeproj/project.pbxproj:
* wtf/Box.h: Added.
(WTF::Box::Box):
(WTF::Box::create):
(WTF::Box::get):
(WTF::Box::operator*):
(WTF::Box::operator->):
(WTF::Box::operator bool):
(WTF::Box::Data::Data):
2015-12-09 Andreas Kling <akling@apple.com>
[iOS] ResourceUsageOverlay should work on iOS.
<https://webkit.org/b/152021>
Reviewed by Antti Koivisto.
* wtf/Platform.h: Enable RESOURCE_USAGE_OVERLAY for all COCOA platforms.
2015-12-08 Joseph Pecoraro <pecoraro@apple.com>
Create a Sandbox SPI header
https://bugs.webkit.org/show_bug.cgi?id=151981
Reviewed by Andy Estes.
* WTF.xcodeproj/project.pbxproj:
* wtf/spi/darwin/SandboxSPI.h: Added.
2015-12-07 Filip Pizlo <fpizlo@apple.com>
FTL B3 should be able to flag the tag constants as being super important so that B3 can hoist them and Air can force them into registers
https://bugs.webkit.org/show_bug.cgi?id=151955
Reviewed by Geoffrey Garen.
Remove some remaining DFG-specific snippets from Dominators. This used to be a non-template
DFG class, and some time ago I hoisted it into WTF and made it generic. But since the only
user of the class was the DFG, this class still had a handful of DFG-specific snippets that
didn't compile when I started using it from B3.
Also renamed immediateDominatorOf() to idom(). This is the sort of abbreviation that we
wouldn't ordinarily want to have in WebKit. But WebKit does allow for abbreviations that are
"more canonical". The term "idom" is definitely more canonical than "immediateDominatorOf".
* wtf/Dominators.h:
(WTF::Dominators::dominates):
(WTF::Dominators::idom):
(WTF::Dominators::forAllStrictDominatorsOf):
(WTF::Dominators::NaiveDominators::dominates):
(WTF::Dominators::NaiveDominators::dump):
(WTF::Dominators::ValidationContext::handleErrors):
2015-12-03 Anders Carlsson <andersca@apple.com>
Remove Objective-C GC support
https://bugs.webkit.org/show_bug.cgi?id=151819
rdar://problem/23746991
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
* wtf/ThreadingPthreads.cpp:
(WTF::initializeCurrentThreadInternal): Deleted.
* wtf/text/cf/StringImplCF.cpp:
(WTF::StringImpl::createCFString):
(garbageCollectionEnabled): Deleted.
(WTF::StringWrapperCFAllocator::create): Deleted.
2015-12-02 Filip Pizlo <fpizlo@apple.com>
FTL B3 should support OSR exit
https://bugs.webkit.org/show_bug.cgi?id=151710
Reviewed by Saam Barati.
Make sure that this has perfect forwarding.
* wtf/SegmentedVector.h:
(WTF::SegmentedVector::append):
(WTF::SegmentedVector::alloc):
2015-12-01 Yusuke Suzuki <utatane.tea@gmail.com>
[ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
https://bugs.webkit.org/show_bug.cgi?id=150792
Reviewed by Saam Barati.
* wtf/FastBitVector.h:
(WTF::FastBitVector::forEachSetBit):
* wtf/FeatureDefines.h:
2015-12-01 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r192914.
https://bugs.webkit.org/show_bug.cgi?id=151734
JSC tests for this change are failing on 32 and 64-bit bots
(Requested by ryanhaddad on #webkit).
Reverted changeset:
"[ES6] Implement LLInt/Baseline Support for ES6 Generators and
enable this feature"
https://bugs.webkit.org/show_bug.cgi?id=150792
http://trac.webkit.org/changeset/192914
2015-12-01 Myles C. Maxfield <mmaxfield@apple.com>
Give String and AtomicString an existingHash() function
https://bugs.webkit.org/show_bug.cgi?id=151717
Reviewed by Andreas Kling.
Test: WTF.AtomicStringExistingHash
WTF.StringExistingHash
* wtf/text/AtomicString.h:
(WTF::AtomicString::existingHash):
* wtf/text/WTFString.h:
(WTF::String::existingHash):
2015-12-01 Yusuke Suzuki <utatane.tea@gmail.com>
[ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
https://bugs.webkit.org/show_bug.cgi?id=150792
Reviewed by Saam Barati.
* wtf/FastBitVector.h:
(WTF::FastBitVector::forEachSetBit):
* wtf/FeatureDefines.h:
2015-11-30 Geoffrey Garen <ggaren@apple.com>
Use a better RNG for Math.random()
https://bugs.webkit.org/show_bug.cgi?id=151641
Reviewed by Anders Carlsson.
Use 64 bits in the random number generator instead of 32 bit. (In
the end, JavaScript, which uses doubles, will only see 52 bits.) This
prevents programs that multiply a random number by a large constant from
seeing non-random "banding" caused by zeroes in the low 20 bits.
I also took the opportunity to upgrade from GameRandom to Xorshift+,
since Xorshift+ passes more benchmarks for randomness, and is not any
slower or more complicated.
Now let us all remember the fateful words of Steve Weibe, who would be
King of Kong: "The randomness went the opposite way that it usually goes."
* wtf/WeakRandom.h:
(WTF::WeakRandom::WeakRandom):
(WTF::WeakRandom::setSeed): Use standard naming.
(WTF::WeakRandom::seed): This function is safe now. "Unsafe" in function
names makes me itch.
(WTF::WeakRandom::get):
(WTF::WeakRandom::getUint32): Update to 64bit.
(WTF::WeakRandom::advance): The Xorshift+ algorithm.
(WTF::WeakRandom::initializeSeed): Deleted.
(WTF::WeakRandom::seedUnsafe): Deleted.
2015-11-30 Benjamin Poulain <bpoulain@apple.com>
[JSC] Speed up Air Liveness Analysis on Tmps
https://bugs.webkit.org/show_bug.cgi?id=151556
Reviewed by Filip Pizlo.
* WTF.xcodeproj/project.pbxproj:
* wtf/IndexSparseSet.h: Added.
(WTF::IndexSparseSet<OverflowHandler>::IndexSparseSet):
(WTF::IndexSparseSet<OverflowHandler>::add):
(WTF::IndexSparseSet<OverflowHandler>::remove):
(WTF::IndexSparseSet<OverflowHandler>::clear):
(WTF::IndexSparseSet<OverflowHandler>::size):
(WTF::IndexSparseSet<OverflowHandler>::isEmpty):
(WTF::IndexSparseSet<OverflowHandler>::contains):
2015-11-30 Tim Horton <timothy_horton@apple.com>
Get rid of the !USE(ASYNC_NSTEXTINPUTCLIENT) codepath
https://bugs.webkit.org/show_bug.cgi?id=151673
Reviewed by Anders Carlsson.
* wtf/Platform.h:
2015-11-30 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Remove GMainLoopSource and GThreadSafeMainLoopSource
https://bugs.webkit.org/show_bug.cgi?id=151633
Reviewed by Csaba Osztrogonác.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/glib/GMainLoopSource.cpp: Removed.
* wtf/glib/GMainLoopSource.h: Removed.
* wtf/glib/GThreadSafeMainLoopSource.cpp: Removed.
* wtf/glib/GThreadSafeMainLoopSource.h: Removed.
2015-11-27 Csaba Osztrogonác <ossy@webkit.org>
Fix build warning in bignum.cc
https://bugs.webkit.org/show_bug.cgi?id=150797
Reviewed by Geoffrey Garen.
* wtf/dtoa/bignum.cc:
2015-11-18 Daniel Bates <dabates@apple.com>
[iOS] ASSERTION FAILED: temporaryFilePath.last() == '/' in WebCore::openTemporaryFile()
https://bugs.webkit.org/show_bug.cgi?id=151392
<rdar://problem/23595341>
Reviewed by Alexey Proskuryakov.
Workaround <rdar://problem/23579077> where confstr(_CS_DARWIN_USER_TEMP_DIR, ..., ...) retrieves
the path to the user temporary directory without a trailing slash in the iOS simulator.
* wtf/DataLog.cpp:
(WTF::initializeLogFileOnce):
2015-11-17 Filip Pizlo <fpizlo@apple.com>
CheckAdd/Mul should have commutativity optimizations in B3->Air lowering
https://bugs.webkit.org/show_bug.cgi?id=151214
Reviewed by Geoffrey Garen.
Disable my failed attempts at perfect forwarding, since they were incorrect, and caused compile
errors if you tried to pass an argument that bound to lvalue. This shouldn't affect performance of
anything we care about, and performance tests seem to confirm that it's all good.
* wtf/ScopedLambda.h:
2015-11-17 Filip Pizlo <fpizlo@apple.com>
Air should lay out code optimally
https://bugs.webkit.org/show_bug.cgi?id=150478
Reviewed by Geoffrey Garen.
* wtf/GraphNodeWorklist.h:
(WTF::GraphNodeWorklist::push):
(WTF::GraphNodeWorklist::isEmpty):
(WTF::GraphNodeWorklist::notEmpty):
(WTF::GraphNodeWorklist::pop):
2015-11-11 Anders Carlsson <andersca@apple.com>
Enable cross-platform context menus by default
https://bugs.webkit.org/show_bug.cgi?id=151173
Reviewed by Tim Horton.
* wtf/Platform.h:
2015-11-12 Csaba Osztrogonác <ossy@webkit.org>
Remove ENABLE(SATURATED_LAYOUT_ARITHMETIC) guards
https://bugs.webkit.org/show_bug.cgi?id=150972
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
2015-11-11 Filip Pizlo <fpizlo@apple.com>
B3 should be able to compile and canonicalize Mul
https://bugs.webkit.org/show_bug.cgi?id=151124
Reviewed by Geoffrey Garen.
* wtf/MathExtras.h:
(WTF::fastLog2):
2015-11-10 Filip Pizlo <fpizlo@apple.com>
B3 should be able to compile a program with ChillDiv
https://bugs.webkit.org/show_bug.cgi?id=151114
Reviewed by Benjamin Poulain.
Needed to beef up some compiler algorithms. All of the hardening was about making them
work with objects that have move semantics but not copy semantics. This arises in B3
basic block insertion sets.
* wtf/BubbleSort.h:
(WTF::bubbleSort):
* wtf/Insertion.h:
(WTF::Insertion::Insertion):
(WTF::Insertion::index):
(WTF::Insertion::element):
(WTF::Insertion::operator<):
(WTF::executeInsertions):
2015-11-10 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use CROSS_PLATFORM_CONTEXT_MENUS
https://bugs.webkit.org/show_bug.cgi?id=150642
Reviewed by Martin Robinson.
Enable CROSS_PLATFORM_CONTEXT_MENUS for GTK+ port.
* wtf/Platform.h:
2015-11-09 Anders Carlsson <andersca@apple.com>
Introspect reply block types as well
https://bugs.webkit.org/show_bug.cgi?id=151048
Reviewed by Tim Horton.
Fix operator-> implementation.
* wtf/Optional.h:
(WTF::Optional::operator->):
2015-11-05 Nikos Andronikos <nikos.andronikos-webkit@cisra.canon.com.au>
Add runtime and compile time flags for enabling Web Animations API and model.
https://bugs.webkit.org/show_bug.cgi?id=150914
Reviewed by Benjamin Poulain.
Add ENABLE_WEB_ANIMATIONS compile time flag, runtime flag webAnimationsEnabled and Expose WK2 preference for runtime flag.
* wtf/FeatureDefines.h:
2015-11-05 Zan Dobersek <zdobersek@igalia.com>
[GLib] Avoid gint64, std::chrono::microseconds overflows in RunLoop::TimerBase
https://bugs.webkit.org/show_bug.cgi?id=150930
Reviewed by Carlos Garcia Campos.
In RunLoop::TimerBase::start(), avoid overflowing the std::chrono::microseconds
value in case the passed-in fire interval (in seconds) is too large (e.g. when
std::chrono::microseconds::max() is used as the desired interval). This is
achieved by using the passed-in fire interval, converted in microseconds, only
if the value of this interval is smaller than std::chrono::microseconds::max().
In RunLoop::TimerBase::updateReadyTime(), the zero-delay is still considered a
short cut, but we use G_MAXINT64 in case the sum of the current time and the
desired fire interval (now in microseconds) would overflow.
* wtf/glib/RunLoopGLib.cpp:
(WTF::RunLoop::TimerBase::updateReadyTime):
(WTF::RunLoop::TimerBase::start):
2015-11-02 Filip Pizlo <fpizlo@apple.com>
B3/Air should use bubble sort for their insertion sets, because it's faster than std::stable_sort
https://bugs.webkit.org/show_bug.cgi?id=150828
Reviewed by Geoffrey Garen.
Add a pretty good bubble sort implementation to WTF. This implementation has three
common tricks:
- Forward and backward scans. This reduces the severity of certain kinds of bubble sort
pathologies.
- Return if a scan finds the list to be sorted. This gives the algorithm one of its most
attractive properties: it's super fast when the list is already sorted.
- Each scan eliminates one element from future scans. This makes the algorithm no worse
than insertion sort.
Why do we want this? Because bubble sort is a really great stable sort for small lists,
or large lists in which only a handful of elements are out of order. Compiler insertion
sets tend to be one of those or somewhere in between: usually they are very small, and
usually they are sorted. It's rare that an element will be out of order, and when it is,
it's usually very close to where it's supposed to be.
This is a significant speed-up for B3 compile times.
* WTF.xcodeproj/project.pbxproj:
* wtf/BubbleSort.h: Added.
(WTF::bubbleSort):
* wtf/CMakeLists.txt:
2015-11-02 Andy Estes <aestes@apple.com>
[Cocoa] Add tvOS and watchOS to SUPPORTED_PLATFORMS
https://bugs.webkit.org/show_bug.cgi?id=150819
Reviewed by Dan Bernstein.
This tells Xcode to include these platforms in its Devices dropdown, making it possible to build in the IDE.
* Configurations/Base.xcconfig:
2015-11-02 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Remove support for GSocket main loop sources from GMainLoopSource
https://bugs.webkit.org/show_bug.cgi?id=150772
Reviewed by Žan Doberšek.
It complicated the code just to make generic what is only used in
one place.
* wtf/glib/GMainLoopSource.cpp:
(WTF::GMainLoopSource::cancel): Deleted.
(WTF::GMainLoopSource::schedule): Deleted.
(WTF::GMainLoopSource::scheduleTimeoutSource): Deleted.
(WTF::GMainLoopSource::scheduleAfterDelay): Deleted.
(WTF::GMainLoopSource::finishVoidCallback): Deleted.
(WTF::GMainLoopSource::voidCallback): Deleted.
(WTF::GMainLoopSource::prepareBoolCallback): Deleted.
* wtf/glib/GMainLoopSource.h:
(WTF::GMainLoopSource::Context::operator=): Deleted.
2015-11-02 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Remove delete on destroy GMainLoopSources
https://bugs.webkit.org/show_bug.cgi?id=150771
Reviewed by Žan Doberšek.
Delete on destroy sources made the GMainLoopSource implementation
more complex and they are currently unused.
* wtf/glib/GMainLoopSource.cpp:
(WTF::GMainLoopSource::boolCallback):
(WTF::GMainLoopSource::create): Deleted.
(WTF::GMainLoopSource::GMainLoopSource): Deleted.
(WTF::GMainLoopSource::cancel): Deleted.
(WTF::GMainLoopSource::scheduleAndDeleteOnDestroy): Deleted.
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy): Deleted.
(WTF::GMainLoopSource::voidCallback): Deleted.
* wtf/glib/GMainLoopSource.h:
2015-11-01 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use RunLoop in WorkQueue implementation
https://bugs.webkit.org/show_bug.cgi?id=150770
Reviewed by Darin Adler.
Instead of using GMainLoop directly. RunLoop already abstracts the
GMainLoop details and uses persistent sources making it more efficient.
For the dispatchAfter implementation we use a helper context class
and a GSource directly, since we are going to get rid of delete on
destroy GMainLoop soon and this is the only place where we still
use them.
* wtf/RunLoop.h:
(WTF::RunLoop::mainContext): Return the GMainContext.
* wtf/WorkQueue.h:
* wtf/glib/WorkQueueGLib.cpp:
(WTF::WorkQueue::platformInitialize): The RunLoop needs to be
created in the worker thread now, so we now use a mutex to wait
until the thread has started and the RunLoop has been created.
(WTF::WorkQueue::platformInvalidate): Stop the RunLoop and wait
until the thread finishes.
(WTF::WorkQueue::dispatch): Use RunLoop::dispatch().
(WTF::DispatchAfterContext::DispatchAfterContext):
(WTF::DispatchAfterContext::~DispatchAfterContext):
(WTF::DispatchAfterContext::dispatch):
(WTF::WorkQueue::dispatchAfter):
2015-11-01 Yusuke Suzuki <utatane.tea@gmail.com>
[ES6] Support Generator Syntax
https://bugs.webkit.org/show_bug.cgi?id=150769
Reviewed by Geoffrey Garen.
Added ENABLE_ES6_GENERATORS flag.
* wtf/FeatureDefines.h:
2015-11-01 Darin Adler <darin@apple.com>
ASCIICType refinements
https://bugs.webkit.org/show_bug.cgi?id=150787
Reviewed by Geoffrey Garen.
Refined ASCIICType.h by using narrower types. The most valuable part of this
is the part where the result of toASCIIHexValue is uint8_t instead of int;
that's slightly better for RGB values that the compiler needs to know fit
into a byte (coming in some Color work I plan to do soon).
* wtf/ASCIICType.h: Used CharacterType instead of CharType throughout, and
also sorted the using declarations at the bottom of the header.
(WTF::isASCII): Use the name "character" instead of "c".
(WTF::isASCIIAlpha): Ditto. Also use isASCIILower and toASCIILowerUnchecked
instead of writing it out.
(WTF::isASCIIDigit): Ditto.
(WTF::isASCIIAlphanumeric): Ditto.
(WTF::isASCIIHexDigit): Ditto. Also use toASCIILowerUnchecked instead of
writing it out.
(WTF::isASCIILower): Ditto.
(WTF::isASCIIBinaryDigit): Ditto. Also removed unneeded parentheses to match
the style of the rest of the file.
(WTF::isASCIIOctalDigit): Ditto.
(WTF::isASCIIPrintable): Ditto.
(WTF::isASCIISpace): Ditto.
(WTF::isASCIIUpper): Ditto.
(WTF::toASCIILower): Ditto. Also use isASCIIUpper instead of writing it out.
(WTF::toASCIILowerUnchecked): Tweaked comment.
(WTF::toASCIIUpper): Ditto. Also use isASCIILower instead of writing it out.
(WTF::toASCIIHexValue): Ditto. Also change return type from int to uint8_t.
Also broke a single assertion with && into two separate assertions and got
rid of unnnecessary masking with 0xF0 after shifting left. Also renamed
arguments for the two argument value so they are more sensible.
(WTF::lowerNibbleToASCIIHexDigit): Changed argument type to uint8_t, since
this function does not take a character. Also called it "value" instead of "c".
Also slightly tweaked how the expression is written.
(WTF::upperNibbleToASCIIHexDigit): Ditto. Using the more specific type also
got rid of the need to explicitly mask in this function.
(WTF::isASCIIAlphaCaselessEqual): Renamed the arguments for greater clarity.
With the new clearer argument names, the comment was superfluous.
2015-11-01 Filip Pizlo <fpizlo@apple.com>
Dominators should be factored out of the DFG
https://bugs.webkit.org/show_bug.cgi?id=150764
Reviewed by Geoffrey Garen.
This takes what used to be DFGDominators.h/DFGDominators.cpp and turns it into a generic
algorithm that can take any abstract graph. The idea is that you create Dominators<CFG> and
pass it a CFG object, which defines the types of graph nodes and methods for getting
successors, predecessors, etc. The DFG now defines a class called CFG, which is a wrapper for
DFG::Graph that conforms to the thing that wtf/Dominators.h expects.
When doing things to graphs, it's common to refer to the things in the graph as "nodes".
Because I intend to reuse the CFG abstraction with many graph algorithms, that abstraction uses
the term "node" to refer to a DFG basic block. But in Dominators, the method and variable names
still use "block". This is because although Dominators are applicable to any kind of directed
graph, it's super unlikely that we will ever use them for anything but compilers. Indeed, the
only reason why I'm factoring them out of the DFG is so that I can use them with B3 and Air.
This has the nice side effect that a user of WTF::Dominators<JSC::DFG::CFG> will see familiar
terminology like "blocksStrictlyDominatedBy(...)" instead of "nodesStrictlyDominatedBy(...)",
which would be super confusing.
Overall, wtf/Dominators.h is a combination of what used to be in DFGDominators.h,
DFGDominators.cpp, DFGNaiveDominators.h, and DFGNaiveDominators.cpp. I only changed code when I
had to in order to make it generic.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Dominators.h: Added.
(WTF::Dominators::Dominators):
(WTF::Dominators::compute):
(WTF::Dominators::strictlyDominates):
(WTF::Dominators::dominates):
(WTF::Dominators::immediateDominatorOf):
(WTF::Dominators::forAllStrictDominatorsOf):
(WTF::Dominators::forAllDominatorsOf):
(WTF::Dominators::forAllBlocksStrictlyDominatedBy):
(WTF::Dominators::forAllBlocksDominatedBy):
(WTF::Dominators::strictDominatorsOf):
(WTF::Dominators::dominatorsOf):
(WTF::Dominators::blocksStrictlyDominatedBy):
(WTF::Dominators::blocksDominatedBy):
(WTF::Dominators::forAllBlocksInDominanceFrontierOf):
(WTF::Dominators::dominanceFrontierOf):
(WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOf):
(WTF::Dominators::forAllBlocksInPrunedIteratedDominanceFrontierOf):
(WTF::Dominators::iteratedDominanceFrontierOf):
(WTF::Dominators::dump):
(WTF::Dominators::LengauerTarjan::LengauerTarjan):
(WTF::Dominators::LengauerTarjan::compute):
(WTF::Dominators::LengauerTarjan::immediateDominator):
(WTF::Dominators::LengauerTarjan::computeDepthFirstPreNumbering):
(WTF::Dominators::LengauerTarjan::computeSemiDominatorsAndImplicitImmediateDominators):
(WTF::Dominators::LengauerTarjan::computeExplicitImmediateDominators):
(WTF::Dominators::LengauerTarjan::link):
(WTF::Dominators::LengauerTarjan::eval):
(WTF::Dominators::LengauerTarjan::compress):
(WTF::Dominators::LengauerTarjan::BlockData::BlockData):
(WTF::Dominators::NaiveDominators::NaiveDominators):
(WTF::Dominators::NaiveDominators::dominates):
(WTF::Dominators::NaiveDominators::dump):
(WTF::Dominators::NaiveDominators::pruneDominators):
(WTF::Dominators::ValidationContext::ValidationContext):
(WTF::Dominators::ValidationContext::reportError):
(WTF::Dominators::ValidationContext::handleErrors):
(WTF::Dominators::naiveDominates):
(WTF::Dominators::forAllBlocksInDominanceFrontierOfImpl):
(WTF::Dominators::forAllBlocksInIteratedDominanceFrontierOfImpl):
(WTF::Dominators::BlockData::BlockData):
2015-11-01 Darin Adler <darin@apple.com>
Remove some dead and unneeded code (ScrollbarThemeSafari, RenderThemeSafari, OPENCL, a little color space logic)
https://bugs.webkit.org/show_bug.cgi?id=150783
Reviewed by Tim Horton.
* wtf/FeatureDefines.h: Removed the OPENCL feature, no longer supported.
2015-10-31 Filip Pizlo <fpizlo@apple.com>
B3::reduceStrength's DCE should be more agro and less wrong
https://bugs.webkit.org/show_bug.cgi?id=150748
Reviewed by Geoffrey Garen.
* wtf/GraphNodeWorklist.h:
(WTF::GraphNodeWorklist::saw): This method is super useful.
2015-11-01 Philip Chimento <philip.chimento@gmail.com>
[GTK] Fix combinations of PLATFORM(GTK) and OS(DARWIN)
https://bugs.webkit.org/show_bug.cgi?id=144560
Reviewed by Darin Adler.
* wtf/Platform.h: Don't USE(ACCELERATE) on PLATFORM(GTK).
* wtf/WorkQueue.h: Change order of OS(DARWIN) and PLATFORM(GTK)
checks so that GTK facilities are used even when building the
GTK platform on Darwin.
2015-11-01 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use RunLoop::Timer in main thread shared timer GTK+ implementation
https://bugs.webkit.org/show_bug.cgi?id=150754
Reviewed by Darin Adler.
Add API to set the priority of a RunLoop::Timer for GLib.
* wtf/RunLoop.h:
* wtf/glib/RunLoopGLib.cpp:
(WTF::RunLoop::TimerBase::setPriority):
2015-10-31 Andreas Kling <akling@apple.com>
Add a debug overlay with information about web process resource usage.
<https://webkit.org/b/150599>
Reviewed by Darin Adler.
Add ENABLE(RESOURCE_USAGE_OVERLAY) flag, enabled on Mac by default.
* wtf/Platform.h:
2015-10-30 Chris Dumez <cdumez@apple.com>
Regression(r191673): Crash in RunLoopTimer::schedule()
https://bugs.webkit.org/show_bug.cgi?id=150723
Reviewed by Anders Carlsson.
We were crashing in RunLoopTimer::schedule() when iterating over the
SchedulePairHashSet. The reason is that we were passing this
SchedulePairHashSet from the main thread to a background thread, which
was not safe because the SchedulePair objects inside the HashSet were
not ThreadSafeRefCounted. This patch makes them ThreadSafeRefCounted.
* wtf/SchedulePair.h:
2015-10-30 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Move the socket polling off the WorkQueue
https://bugs.webkit.org/show_bug.cgi?id=150593
Reviewed by Anders Carlsson.
It doesn't really belong to the WorkQueue, it's only used by the
WebKit2 connection, so it can be moved there.
* wtf/WorkQueue.h:
* wtf/glib/WorkQueueGLib.cpp:
(WTF::WorkQueue::registerSocketEventHandler): Deleted.
(WTF::WorkQueue::unregisterSocketEventHandler): Deleted.
2015-10-29 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use a persistent main loop source in RunLoop glib implementation
https://bugs.webkit.org/show_bug.cgi?id=150590
Reviewed by Žan Doberšek.
It's more efficient than creating and destroying a new source for
every dispatch and it simplifies the code.
* wtf/RunLoop.h:
* wtf/glib/MainThreadGLib.cpp:
(WTF::scheduleDispatchFunctionsOnMainThread): Use
RunLoop::dispatch() instead of GMainLoopSource::scheduleAndDeleteOnDestroy().
* wtf/glib/RunLoopGLib.cpp:
(WTF::RunLoop::RunLoop): Create and setup the persistent source.
(WTF::RunLoop::~RunLoop): Destroy the persistent source.
(WTF::RunLoop::stop): Stop the persistent source before stopping
the main loop.
(WTF::RunLoop::wakeUp): Make the persistent source active. We
no longer need to explicitly wakeup the context.
(WTF::RunLoop::TimerBase::TimerBase): Create and setup the
persistent source.
(WTF::RunLoop::TimerBase::~TimerBase): Destroy the persistent source.
(WTF::RunLoop::TimerBase::updateReadyTime): Set the ready time
according to the fire interval.
(WTF::RunLoop::TimerBase::start): Make the persistent source active.
(WTF::RunLoop::TimerBase::stop): Stop the persistent source.
(WTF::RunLoop::TimerBase::isActive): Return whether the
persistent source is active.
2015-10-30 Philippe Normand <pnormand@igalia.com>
[GTK][Mac] fix WTF build
https://bugs.webkit.org/show_bug.cgi?id=150502
Reviewed by Alex Christensen.
* wtf/CMakeLists.txt: Add CommonCryptoSPI.h in the headers.
2015-10-29 Alex Christensen <achristensen@webkit.org>
Fix Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=150686
Reviewed by Filip Pizlo.
* wtf/CMakeLists.txt:
* wtf/Platform.h:
* wtf/PlatformMac.cmake:
2015-10-29 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r191728.
https://bugs.webkit.org/show_bug.cgi?id=150668
Caused a lot of timeouts in layout tests (Requested by KaL on
#webkit).
Reverted changeset:
"[GTK] Use a persistent main loop source in RunLoop glib
implementation"
https://bugs.webkit.org/show_bug.cgi?id=150590
http://trac.webkit.org/changeset/191728
2015-10-29 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use a persistent main loop source in RunLoop glib implementation
https://bugs.webkit.org/show_bug.cgi?id=150590
Reviewed by Žan Doberšek.
It's more efficient than creating and destroying a new source for
every dispatch and it simplifies the code.
* wtf/RunLoop.h:
* wtf/glib/MainThreadGLib.cpp:
(WTF::scheduleDispatchFunctionsOnMainThread): Use
RunLoop::dispatch() instead of GMainLoopSource::scheduleAndDeleteOnDestroy().
* wtf/glib/RunLoopGLib.cpp:
(WTF::RunLoop::RunLoop): Create and setup the persistent source.
(WTF::RunLoop::~RunLoop): Destroy the persistent source.
(WTF::RunLoop::stop): Stop the persistent source before stopping
the main loop.
(WTF::RunLoop::wakeUp): Make the persistent source active. We
no longer need to explicitly wakeup the context.
(WTF::RunLoop::TimerBase::TimerBase): Create and setup the
persistent source.
(WTF::RunLoop::TimerBase::~TimerBase): Destroy the persistent source.
(WTF::RunLoop::TimerBase::updateReadyTime): Set the ready time
according to the fire interval.
(WTF::RunLoop::TimerBase::start): Make the persistent source active.
(WTF::RunLoop::TimerBase::stop): Stop the persistent source.
(WTF::RunLoop::TimerBase::isActive): Return whether the
persistent source is active.
2015-10-28 Filip Pizlo <fpizlo@apple.com>
Unreviewed, make sure B3 is disabled on iOS for now.
* wtf/Platform.h:
2015-10-28 Filip Pizlo <fpizlo@apple.com>
Create a super rough prototype of B3
https://bugs.webkit.org/show_bug.cgi?id=150280
Reviewed by Benjamin Poulain.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/HashSet.h:
(WTF::copyToVector):
(WTF::=):
* wtf/ListDump.h:
(WTF::PointerListDump::PointerListDump):
(WTF::PointerListDump::dump):
(WTF::MapDump::MapDump):
(WTF::listDump):
(WTF::pointerListDump):
(WTF::sortedListDump):
* wtf/MathExtras.h:
(WTF::leftShiftWithSaturation):
(WTF::rangesOverlap):
* wtf/Platform.h:
* wtf/ScopedLambda.h: Added.
(WTF::scopedLambda):
* wtf/SharedTask.h:
(WTF::createSharedTask):
2015-10-28 Alberto Garcia <berto@igalia.com>
[SOUP] Cannot build the network process in glibc-based BSD systems
https://bugs.webkit.org/show_bug.cgi?id=150618
Reviewed by Carlos Garcia Campos.
* wtf/Platform.h: Don't enable HAVE_STAT_BIRTHTIME if the system
is using glibc.
2015-10-21 Filip Pizlo <fpizlo@apple.com>
Factor out the graph node worklists from DFG into WTF
https://bugs.webkit.org/show_bug.cgi?id=150411
Reviewed by Geoffrey Garen.
The new GraphNodeWorklist.h file is basically just the functionality from the old
DFGBlockWorklist.h, but templatized to work for any graph node type and any kind of graph
node set.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/GraphNodeWorklist.h: Added.
(WTF::GraphNodeWorklist::push):
(WTF::GraphNodeWorklist::notEmpty):
(WTF::GraphNodeWorklist::pop):
(WTF::GraphNodeWith::GraphNodeWith):
(WTF::GraphNodeWith::operator bool):
(WTF::ExtendedGraphNodeWorklist::ExtendedGraphNodeWorklist):
(WTF::ExtendedGraphNodeWorklist::forcePush):
(WTF::ExtendedGraphNodeWorklist::push):
(WTF::ExtendedGraphNodeWorklist::notEmpty):
(WTF::ExtendedGraphNodeWorklist::pop):
(WTF::GraphNodeWithOrder::GraphNodeWithOrder):
(WTF::GraphNodeWithOrder::operator bool):
(WTF::PostOrderGraphNodeWorklist::PostOrderGraphNodeWorklist):
(WTF::PostOrderGraphNodeWorklist::~PostOrderGraphNodeWorklist):
(WTF::PostOrderGraphNodeWorklist::pushPre):
(WTF::PostOrderGraphNodeWorklist::pushPost):
(WTF::PostOrderGraphNodeWorklist::push):
(WTF::PostOrderGraphNodeWorklist::notEmpty):
(WTF::PostOrderGraphNodeWorklist::pop):
* wtf/HashTable.h:
(WTF::HashTableAddResult::HashTableAddResult):
(WTF::HashTableAddResult::operator bool):
2015-10-20 Tim Horton <timothy_horton@apple.com>
Try to fix the build by disabling MAC_GESTURE_EVENTS on 10.9 and 10.10
* wtf/FeatureDefines.h:
2015-10-20 Yoav Weiss <yoav@yoav.ws>
Rename the PICTURE_SIZES flag to CURRENTSRC
https://bugs.webkit.org/show_bug.cgi?id=150275
Reviewed by Dean Jackson.
* wtf/FeatureDefines.h:
2015-10-19 Beth Dakin <bdakin@apple.com>
Build fix.
* wtf/FeatureDefines.h:
2015-10-19 Tim Horton <timothy_horton@apple.com>
Add magnify and rotate gesture event support for Mac
https://bugs.webkit.org/show_bug.cgi?id=150179
<rdar://problem/8036240>
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
New feature flag.
2015-10-17 Mark Lam <mark.lam@apple.com>
Add CPU(X86) to the supported MASM_PROBE CPUs. This was accidentally left out in r191197.
Not reviewed.
* wtf/Platform.h:
2015-10-16 Mark Lam <mark.lam@apple.com>
Always enable MASM_PROBE for debug builds.
https://bugs.webkit.org/show_bug.cgi?id=150190
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
2015-10-14 Andreas Kling <akling@apple.com>
REGRESSION(r190882): Concatenating a character array and an empty string is broken.
<https://webkit.org/b/150135>
Reviewed by Geoffrey Garen.
StringAdapter templates for raw character arrays were always using 1 as the array length
in toString().
* wtf/text/StringConcatenate.h:
2015-10-14 Per Arne Vollan <peavo@outlook.com>
[Win64] Enable concurrent JIT.
https://bugs.webkit.org/show_bug.cgi?id=150098
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2015-10-13 Simon Fraser <simon.fraser@apple.com>
Add helper funtion for checking pointer equivalency and use it
https://bugs.webkit.org/show_bug.cgi?id=150022
Reviewed by Darin Adler.
Add PointerComparison.h which contains the templated pointer comparison
function.
* WTF.xcodeproj/project.pbxproj:
* wtf/PointerComparison.h: Added.
(WTF::arePointingToEqualData):
2015-10-12 Andreas Kling <akling@apple.com>
"A + B" with strings shouldn't copy if A or B is empty.
<https://webkit.org/b/150034>
Reviewed by Anders Carlsson.
Add a fast path to WTF's operator+ magic for concatenation of two strings where
one of them is empty. In that case, try to avoid allocation altogether by returning
the non-empty string.
Spotted this while analyzing memory peaks during page load; it turns out we were
duplicating whole text resources (JS, CSS) at the end of decoding, below
TextResourceDecoder::decodeAndFlush(). That function effectively does:
return decode() + flush();
Very often, flush() returns an empty string, so due to the naive operator+,
we'd allocate a new StringImpl of length (decode().length() + flush().length())
and copy the return value from decode() into it. So silly!
Had to make the tryMakeString() machinery use String as a return type instead of
RefPtr<StringImpl> to make all the right overloads gel. StringTypeAdapter templates
are now required to provide a toString() function.
* wtf/text/StringConcatenate.h:
(WTF::StringTypeAdapter<char>::toString):
(WTF::StringTypeAdapter<UChar>::toString):
(WTF::StringTypeAdapter<Vector<char>>::toString):
(WTF::StringTypeAdapter<String>::toString):
(WTF::tryMakeString):
(WTF::makeString):
* wtf/text/StringOperators.h:
(WTF::StringAppend::operator String):
* wtf/text/StringView.h:
(WTF::StringTypeAdapter<StringView>::toString):
2015-10-12 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix style in the hopes that it fixes Windows.
* wtf/ParallelHelperPool.cpp:
(WTF::ParallelHelperClient::~ParallelHelperClient):
(WTF::ParallelHelperClient::setTask):
(WTF::ParallelHelperClient::doSomeHelping):
(WTF::ParallelHelperClient::runTaskInParallel):
(WTF::ParallelHelperClient::finish):
(WTF::ParallelHelperClient::claimTask):
(WTF::ParallelHelperClient::runTask):
(WTF::ParallelHelperPool::doSomeHelping):
(WTF::ParallelHelperPool::helperThreadBody):
* wtf/ParallelHelperPool.h:
(WTF::ParallelHelperClient::setFunction):
(WTF::ParallelHelperClient::runFunctionInParallel):
(WTF::ParallelHelperClient::pool):
2015-10-10 Filip Pizlo <fpizlo@apple.com>
FTL should generate code to call slow paths lazily
https://bugs.webkit.org/show_bug.cgi?id=149936
Reviewed by Saam Barati.
Enables SharedTask to handle any function type, not just void().
It's probably better to use SharedTask instead of std::function in performance-sensitive
code. std::function uses the system malloc and has copy semantics. SharedTask uses FastMalloc
and has aliasing semantics. So, you can just trust that it will have sensible performance
characteristics.
* wtf/ParallelHelperPool.cpp:
(WTF::ParallelHelperClient::~ParallelHelperClient):
(WTF::ParallelHelperClient::setTask):
(WTF::ParallelHelperClient::doSomeHelping):
(WTF::ParallelHelperClient::runTaskInParallel):
(WTF::ParallelHelperClient::finish):
(WTF::ParallelHelperClient::claimTask):
(WTF::ParallelHelperClient::runTask):
(WTF::ParallelHelperPool::doSomeHelping):
(WTF::ParallelHelperPool::helperThreadBody):
* wtf/ParallelHelperPool.h:
(WTF::ParallelHelperClient::setFunction):
(WTF::ParallelHelperClient::runFunctionInParallel):
(WTF::ParallelHelperClient::pool):
* wtf/SharedTask.h:
(WTF::createSharedTask):
(WTF::SharedTask::SharedTask): Deleted.
(WTF::SharedTask::~SharedTask): Deleted.
(WTF::SharedTaskFunctor::SharedTaskFunctor): Deleted.
2015-10-10 Dan Bernstein <mitz@apple.com>
[iOS] Remove unnecessary iOS version checks
https://bugs.webkit.org/show_bug.cgi?id=150002
Reviewed by Alexey Proskuryakov.
* wtf/Platform.h:
2015-10-10 Dan Bernstein <mitz@apple.com>
[iOS] Remove project support for iOS 8
https://bugs.webkit.org/show_bug.cgi?id=149993
Reviewed by Alexey Proskuryakov.
* Configurations/Base.xcconfig:
* Configurations/WTF.xcconfig:
* Configurations/mbmalloc.xcconfig:
2015-10-08 Joseph Pecoraro <pecoraro@apple.com>
Clean up Marked classes
https://bugs.webkit.org/show_bug.cgi?id=149853
Reviewed by Darin Adler.
* wtf/PageBlock.h:
Remove duplicate using statement.
2015-10-08 Joseph Pecoraro <pecoraro@apple.com>
Remove PageReservation.h clang fixme that has been fixed for a while
https://bugs.webkit.org/show_bug.cgi?id=149908
Reviewed by Csaba Osztrogonác.
* wtf/PageReservation.h:
(WTF::PageReservation::operator bool): Deleted.
2015-10-06 Daniel Bates <dbates@webkit.org>
Enable XSLT when building WebKit for iOS using the public iOS SDK
https://bugs.webkit.org/show_bug.cgi?id=149827
Reviewed by Alexey Proskuryakov.
* wtf/FeatureDefines.h:
2015-10-04 Filip Pizlo <fpizlo@apple.com>
Inline cache repatching should be throttled if it happens a lot
https://bugs.webkit.org/show_bug.cgi?id=149796
rdar://problem/22674436
Reviewed by Saam Barati.
Add some helpers for saturated math.
* wtf/MathExtras.h:
(WTF::incrementWithSaturation):
(WTF::leftShiftWithSaturation):
2015-10-01 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed CMake build fixes.
* wtf/CMakeLists.txt: Correct build flags to match
the original project files.
2015-09-30 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r190324.
https://bugs.webkit.org/show_bug.cgi?id=149671
Caused flaky crashes, rdar://problem/22916304 (Requested by ap
on #webkit).
Reverted changeset:
"ParallelHelperPool::runFunctionInParallel() shouldn't
allocate, and ParallelHelperPool.h shouldn't be included
everywhere"
https://bugs.webkit.org/show_bug.cgi?id=149635
http://trac.webkit.org/changeset/190324
2015-09-29 Filip Pizlo <fpizlo@apple.com>
ParallelHelperPool::runFunctionInParallel() shouldn't allocate, and ParallelHelperPool.h shouldn't be included everywhere
https://bugs.webkit.org/show_bug.cgi?id=149635
Reviewed by Saam Barati.
* wtf/ParallelHelperPool.h:
(WTF::ParallelHelperClient::runFunctionInParallel): Stack-allocate the task instead of heap-allocating it.
2015-09-29 Filip Pizlo <fpizlo@apple.com>
GC copy phase spans too many files
https://bugs.webkit.org/show_bug.cgi?id=149586
Reviewed by Andreas Kling.
Extract the load balancing algorithm used by the GC's copy phase into a reusable template.
The GC copy phase now uses this.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/ParallelVectorIterator.h: Added.
(WTF::ParallelVectorIterator::ParallelVectorIterator):
(WTF::ParallelVectorIterator::iterate):
2015-09-26 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix Windows build by adding WTF_EXPORT_PRIVATE in various places.
* wtf/ParallelHelperPool.h:
(WTF::ParallelHelperClient::setFunction):
(WTF::ParallelHelperPool::numberOfThreads):
2015-09-24 Filip Pizlo <fpizlo@apple.com>
VMs should share GC threads
https://bugs.webkit.org/show_bug.cgi?id=149433
rdar://problem/12859344
Reviewed by Geoffrey Garen.
This adds two major things to WTF: WeakRandom and ParallelHelperPool. WeakRandom was
already in JSC; we're just hoisting it into WTF. It's just a weak random number generator
that's suitable for places where you need just a tiny bit of randomness.
ParallelHelperPool is a new API that simplifies data-parallel algorithms like the JSC GC.
In a data-parallel algorithm, we want to run one task on as many cores as possible and let
the task worry about which subset of the input data to work on. In some cases, the
algorithm will not need to do any load balancing - and if load balancing is required, it's
up to the user. This is appropriate in contexts where the load balancing needs to be
custom-tuned for performance, like the GC's marking phase.
This new API has three concepts: task, client, and pool. A task is a reference counted
object with a run() method, which may be run in parallel. It is usually used to wrap a
functor. A pool is a pool of threads that can run things. A client is a placeholder for a
task. A client can have zero or one tasks. A client must be registered with a pool. When a
client has a task, the pool's threads may choose to run it. If a thread starts running a
task, it will run it to completion. When the task returns on any thread, the client takes
it to mean that the task should be removed. That means that any currently running instances
of the task will finish but no new threads will attempt to run the task. You can easily ask
a client to wait until a task finishes. You can also easily ask a client to run a task on
the current thread in addition to possibly some helper threads from the pool.
For some data-parallel algorithms, programming with ParallelHelperPool is as easy as:
client.runFunctionInParallel(
[=] () {
do things;
});
Note that you cannot tell ahead of time how many threads will join to help the task.
Threads may become available after the task has already started running. Those threads may
join after the other threads have already started. It's not advisable to make algorithmic
decisions based on client.numberOfActiveThreads(), since that number may change. Usually
the best way to use ParallelHelperPool is with an algorithm that has its own custom
worklist. An example of a very simple custom worklist is the one in the JSC GC's copying
phase - it's just a Vector and an index that indicates the next set of elements to process.
This new API was initially designed to simplify how GCThread works, by replacing Phase with
a callback that contains the phase's workload. I then realized that with a few tweaks, I
could make this somewhat general enough that it might become interesting outside GC. I also
realized that I could use this to enable thread sharing. So, although the API is kinda
quirky, it's grounded in the reality of how the JSC GC does parallelism.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/ParallelHelperPool.cpp: Added.
(WTF::ParallelHelperClient::ParallelHelperClient):
(WTF::ParallelHelperClient::~ParallelHelperClient):
(WTF::ParallelHelperClient::setTask):
(WTF::ParallelHelperClient::finish):
(WTF::ParallelHelperClient::doSomeHelping):
(WTF::ParallelHelperClient::runTaskInParallel):
(WTF::ParallelHelperClient::claimTask):
(WTF::ParallelHelperClient::runTask):
(WTF::ParallelHelperPool::ParallelHelperPool):
(WTF::ParallelHelperPool::~ParallelHelperPool):
(WTF::ParallelHelperPool::addThreads):
(WTF::ParallelHelperPool::ensureThreads):
(WTF::ParallelHelperPool::doSomeHelping):
(WTF::ParallelHelperPool::didMakeWorkAvailable):
(WTF::ParallelHelperPool::helperThreadBody):
(WTF::ParallelHelperPool::hasClientWithTask):
(WTF::ParallelHelperPool::getClientWithTask):
(WTF::ParallelHelperPool::waitForClientWithTask):
* wtf/ParallelHelperPool.h: Added.
(WTF::ParallelHelperClient::setFunction):
(WTF::ParallelHelperClient::runFunctionInParallel):
(WTF::ParallelHelperClient::pool):
(WTF::ParallelHelperClient::numberOfActiveThreads):
(WTF::ParallelHelperPool::numberOfThreads):
* wtf/SharedTask.h: Added.
(WTF::SharedTask::SharedTask):
(WTF::SharedTask::~SharedTask):
(WTF::SharedTaskFunctor::SharedTaskFunctor):
(WTF::createSharedTask):
* wtf/WeakRandom.h: Copied from Source/JavaScriptCore/runtime/WeakRandom.h.
(WTF::WeakRandom::WeakRandom):
(WTF::WeakRandom::initializeSeed):
(WTF::WeakRandom::seedUnsafe):
(WTF::WeakRandom::getUint32):
(WTF::WeakRandom::advance):
(JSC::WeakRandom::WeakRandom): Deleted.
(JSC::WeakRandom::seedUnsafe): Deleted.
(JSC::WeakRandom::getUint32): Deleted.
(JSC::WeakRandom::advance): Deleted.
(JSC::WeakRandom::initializeSeed): Deleted.
2015-09-25 Alex Christensen <achristensen@webkit.org>
Clean up CMake build on Mac
https://bugs.webkit.org/show_bug.cgi?id=149573
Reviewed by Chris Dumez.
* wtf/PlatformMac.cmake:
2015-09-25 Alex Christensen <achristensen@webkit.org>
[Win] Switch to CMake
https://bugs.webkit.org/show_bug.cgi?id=148111
Reviewed by Brent Fulgham.
* WTF.vcxproj/WTF.proj:
2015-09-25 Joseph Pecoraro <pecoraro@apple.com>
Simplify Stopwatch::elapsedTime
https://bugs.webkit.org/show_bug.cgi?id=149538
Reviewed by Darin Adler.
* wtf/Stopwatch.h:
(WTF::Stopwatch::elapsedTime):
Simplify by not starting/stopping but just computing without updating members.
2015-09-25 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed build fix.
* wtf/FeatureDefines.h: Don't turn STREAMS_API on by default
on Windows.
2015-09-24 Ryosuke Niwa <rniwa@webkit.org>
Ran sort-Xcode-project-file.
* WTF.xcodeproj/project.pbxproj:
2015-09-23 Andy Estes <aestes@apple.com>
Disable QuickLook on watchOS
https://bugs.webkit.org/show_bug.cgi?id=149508
<rdar://problem/22517968>
Reviewed by Dan Bernstein.
* wtf/Platform.h:
2015-09-22 Andy Estes <aestes@apple.com>
Disable QuickLook on tvOS
https://bugs.webkit.org/show_bug.cgi?id=149492
<rdar://problem/22741586>
Reviewed by Dan Bernstein.
* wtf/Platform.h: Stopped enabling QuickLook on tvOS.
2015-09-22 Filip Pizlo <fpizlo@apple.com>
Get rid of ENABLE(PARALLEL_GC)
https://bugs.webkit.org/show_bug.cgi?id=149436
Reviewed by Mark Lam.
We always enable parallel GC everywhere but Windows, and it doesn't look like it was disabled
there for any good reason. So, get rid of the flag.
* wtf/MainThread.cpp:
(WTF::canAccessThreadLocalDataForThread):
(WTF::initializeGCThreads):
(WTF::registerGCThread):
(WTF::isMainThreadOrGCThread):
* wtf/Platform.h:
2015-09-22 Filip Pizlo <fpizlo@apple.com>
Get rid of ENABLE(GGC)
https://bugs.webkit.org/show_bug.cgi?id=149472
Reviewed by Mark Hahnenberg and Mark Lam.
* wtf/Platform.h:
2015-09-21 Filip Pizlo <fpizlo@apple.com>
Always use the compiler's CAS implementation and get rid of ENABLE(COMPARE_AND_SWAP)
https://bugs.webkit.org/show_bug.cgi?id=149438
Reviewed by Mark Lam.
* wtf/Atomics.h: Make weakCompareAndSwap() just forward to the system CAS via WTF::Atomic.
(WTF::weakCompareAndSwap):
(WTF::weakCompareAndSwapUIntPtr): Deleted.
(WTF::weakCompareAndSwapSize): Deleted.
* wtf/Bitmap.h: Small changes to use the new API.
(WTF::WordType>::concurrentTestAndSet):
* wtf/Platform.h: Remove ENABLE(COMPARE_AND_SWAP)
2015-09-21 Csaba Osztrogonác <ossy@webkit.org>
Remove old GCC cruft from wtf/StdLibExtras.h
https://bugs.webkit.org/show_bug.cgi?id=149401
Reviewed by Alex Christensen.
* wtf/StdLibExtras.h:
2015-09-21 Andy Estes <aestes@apple.com>
Disable Parental Controls on the Apple TV platform
https://bugs.webkit.org/show_bug.cgi?id=149421
Reviewed by Darin Adler.
* wtf/Platform.h:
2015-09-21 Filip Pizlo <fpizlo@apple.com>
JSC should infer property types
https://bugs.webkit.org/show_bug.cgi?id=148610
Reviewed by Geoffrey Garen.
* wtf/HashTable.h:
(WTF::HashTableAddResult::HashTableAddResult): Make it possible to say "HashMap::AddResult result" without assigning anything to it yet.
* wtf/PrintStream.h:
(WTF::printInternal): Beef up printing of some common WTF types, in particular RefPtr<UniquedStringImpl>.
2015-09-20 Youenn Fablet <youenn.fablet@crf.canon.fr>
Remove XHR_TIMEOUT compilation guard
https://bugs.webkit.org/show_bug.cgi?id=149260
Reviewed by Benjamin Poulain.
* wtf/FeatureDefines.h:
2015-09-17 Filip Pizlo <fpizlo@apple.com>
Unreviewed, revert unintended change.
* benchmarks/LockSpeedTest.cpp:
(main):
2015-09-15 Ryosuke Niwa <rniwa@webkit.org>
Add ShadowRoot interface and Element.prototype.attachShadow
https://bugs.webkit.org/show_bug.cgi?id=149187
Reviewed by Antti Koivisto.
* wtf/FeatureDefines.h:
2015-09-11 Keith Miller <keith_miller@apple.com>
cryptographicallyRandomValuesFromOS should use CCRandomCopyBytes when available.
https://bugs.webkit.org/show_bug.cgi?id=148439
Reviewed by Alexey Proskuryakov.
Recently, we switched to using arc4random_buf on Darwin but further research indicates that
arc4random_buf has the same behavior we had before and thus we were just pushing the problem
further down the stack. CCRandomCopyBytes, however, appears to be more advanced and has much
better error handling than we had before.
* WTF.xcodeproj/project.pbxproj:
* wtf/OSRandomSource.cpp:
(WTF::cryptographicallyRandomValuesFromOS):
* wtf/spi/darwin/CommonCryptoSPI.h: Added.
2015-09-08 Filip Pizlo <fpizlo@apple.com>
There should be one stub hanging off an inline cache that contains code for all of the cases, rather than forming a linked list consisting of one stub per case
https://bugs.webkit.org/show_bug.cgi?id=148717
Reviewed by Michael Saboff.
Beef up dumping a bit.
* wtf/PrintStream.h:
(WTF::pointerDump):
(WTF::printInternal):
2015-09-08 Mark Lam <mark.lam@apple.com>
GC stack scan should include ABI red zone.
https://bugs.webkit.org/show_bug.cgi?id=148976
Reviewed by Geoffrey Garen and Benjamin Poulain.
* wtf/StackBounds.h:
(WTF::StackBounds::origin):
(WTF::StackBounds::end):
(WTF::StackBounds::size):
2015-09-04 Csaba Osztrogonác <ossy@webkit.org>
Enable reference qualified functions for GCC
https://bugs.webkit.org/show_bug.cgi?id=148526
Reviewed by Darin Adler.
* wtf/Compiler.h:
2015-09-04 Csaba Osztrogonác <ossy@webkit.org>
webkit-unassigned@lists.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=148525
Reviewed by Darin Adler.
* wtf/Compiler.h:
2015-08-29 Zan Dobersek <zdobersek@igalia.com>
[WTF] Improve a ParkingLot::parkConditionally() comment for a libstdc++ workaround
https://bugs.webkit.org/show_bug.cgi?id=148571
Reviewed by Filip Pizlo.
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally): Adjust the comment about the workaround for
the libstdc++ std::condition_variable implementation, linking to the WebKit bug
that dissected the problem and the GCC bug that originally reported the problem.
2015-08-28 Anders Carlsson <andersca@apple.com>
Remove the #if PLATFORM(MAC) in DeprecatedSymbolsUsedBySafari.mm so we'll actually build it on iOS.
Reviewed by Dan Bernstein.
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
2015-08-27 Anders Carlsson <andersca@apple.com>
Define legacy main thread calling functions for iOS as well
https://bugs.webkit.org/show_bug.cgi?id=148530
Reviewed by Tim Horton.
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
2015-08-26 Anders Carlsson <andersca@apple.com>
Fix build.
* wtf/WorkQueue.cpp:
2015-08-26 Anders Carlsson <andersca@apple.com>
Add and implement WorkQueue::concurrentApply
https://bugs.webkit.org/show_bug.cgi?id=148488
Reviewed by Geoffrey Garen.
WorkQueue::concurrentApply is modeled after dispatch_apply, and on Cocoa it uses dispatch_apply directly.
For other ports there's a generic concurrentApply implemented using our threading primitives.
* wtf/NeverDestroyed.h:
(WTF::LazyNeverDestroyed::operator->):
* wtf/WorkQueue.cpp:
(WTF::WorkQueue::concurrentApply):
* wtf/WorkQueue.h:
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::WorkQueue::concurrentApply):
2015-08-25 Filip Pizlo <fpizlo@apple.com>
Node::origin should be able to tell you if it's OK to exit
https://bugs.webkit.org/show_bug.cgi?id=145204
Reviewed by Geoffrey Garen.
* wtf/Insertion.h:
(WTF::executeInsertions): Add a useful assertion. This come into play because JSC will use UINT_MAX as "invalid index", and that ought to trigger this assertion.
2015-08-25 Csaba Osztrogonác <ossy@webkit.org>
Require GCC version at least 4.9
https://bugs.webkit.org/show_bug.cgi?id=148430
Reviewed by Darin Adler.
* wtf/Compiler.h:
2015-08-22 Anders Carlsson <andersca@apple.com>
std::once_flag needs to be static.
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
(WTF::MainThreadFunctionTracker::singleton):
2015-08-21 Anders Carlsson <andersca@apple.com>
Build fix.
* wtf/MainThread.h:
2015-08-21 Anders Carlsson <andersca@apple.com>
Address review feedback from Darin.
* wtf/MainThread.h:
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
(WTF::callOnMainThread):
(WTF::cancelCallOnMainThread):
2015-08-21 Anders Carlsson <andersca@apple.com>
Deprecate the old school callOnMainThread/cancelCallOnMainThread functions
https://bugs.webkit.org/show_bug.cgi?id=148327
Reviewed by Sam Weinig.
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
Change the function queue to be a queue of std::function<void ()> and get rid of dead code.
* wtf/MainThread.h:
Conditionalize callOnMainThread and cancelCallOnMainThread because Safari on Mavericks still expects to them to be
declared in MainThread.h under 10.9.
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
Add a MainThreadFunctionTracker singleton that keeps track of scheduled functions so we can ensure that they're not
called if they're cancelled.
(WTF::MainThreadFunctionTracker::singleton):
Return the singleton.
(WTF::MainThreadFunctionTracker::callOnMainThread):
Add the function/context pair to our map and schedule the function to be run on the main thread.
If the function has been removed, don't call it.
(WTF::MainThreadFunctionTracker::cancelCallOnMainThread):
Remove all entries with the given function/context pair.
(WTF::MainThreadFunctionTracker::addFunction):
Add the function/context pair to the map and return the unique identifier.
(WTF::MainThreadFunctionTracker::removeIdentifier):
Look up the identifier and remove it if it still exists. If it exists we know that it hasn't been canceled and that we can call it.
(WTF::MainThreadFunctionTracker::removeFunctions):
Remove all function identifiers matched by the function/context pair.
(WTF::callOnMainThread):
Implement using MainThreadFunctionTracker.
(WTF::cancelCallOnMainThread):
Implement using MainThreadFunctionTracker.
2015-08-21 Anders Carlsson <andersca@apple.com>
Get rid of uses of the old callOnMainThread function that takes a function ptr + context
https://bugs.webkit.org/show_bug.cgi?id=148324
Reviewed by Tim Horton.
* wtf/text/cf/StringImplCF.cpp:
(WTF::StringWrapperCFAllocator::deallocate):
(WTF::StringWrapperCFAllocator::deallocateOnMainThread): Deleted.
2015-08-20 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r188717 and r188719.
https://bugs.webkit.org/show_bug.cgi?id=148272
Broke the Mavericks build (Requested by andersca on #webkit).
Reverted changesets:
"Merge Lock and LockBase"
https://bugs.webkit.org/show_bug.cgi?id=148266
http://trac.webkit.org/changeset/188717
"Merge ConditionBase and Condition"
https://bugs.webkit.org/show_bug.cgi?id=148270
http://trac.webkit.org/changeset/188719
2015-08-20 Anders Carlsson <andersca@apple.com>
Merge ConditionBase and Condition
https://bugs.webkit.org/show_bug.cgi?id=148270
Reviewed by Filip Pizlo.
* wtf/Condition.h:
Direct initialize m_hasWaiters so Condition gets a constexpr constructor.
* wtf/Lock.h:
Remove a now outdated comment.
2015-08-20 Anders Carlsson <andersca@apple.com>
Merge Lock and LockBase
https://bugs.webkit.org/show_bug.cgi?id=148266
Reviewed by Filip Pizlo.
* wtf/Atomics.h:
(WTF::Atomic::Atomic):
Add a default constructor as well as a constexpr constructor that takes a value.
* wtf/Lock.cpp:
(WTF::Lock::lockSlow):
(WTF::Lock::unlockSlow):
Rename LockBase to Lock.
* wtf/Lock.h:
Rename LockBase to Lock and direct-initialize Atomic to 0. Since the Atomic constructor is constexpr,
Lock also gets a constexpr constructor. Change the LockBase -> StaticLock typedef and add a fixme.
* wtf/WordLock.h:
Direct initialize m_word to 0.
2015-08-19 Filip Pizlo <fpizlo@apple.com>
Remove WTF::SpinLock
https://bugs.webkit.org/show_bug.cgi?id=148208
Reviewed by Geoffrey Garen.
Remove the SpinLock.h file and remove references to the SpinLock class. Put the old SpinLock
algorithm in LockSpeedTest.cpp - which isn't compiled as part of a WTF or WebKit build - just
so we can still benchmark our locking algorithms against a spinlock baseline.
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* benchmarks/LockSpeedTest.cpp:
* wtf/CMakeLists.txt:
* wtf/Lock.h:
* wtf/SpinLock.h: Removed.
* wtf/WordLock.h:
2015-08-19 Alex Christensen <achristensen@webkit.org>
CMake Windows build should not include files directly from other Source directories
https://bugs.webkit.org/show_bug.cgi?id=148198
Reviewed by Brent Fulgham.
* wtf/CMakeLists.txt:
* wtf/PlatformWin.cmake:
2015-08-18 Filip Pizlo <fpizlo@apple.com>
Replace all uses of std::mutex/std::condition_variable with WTF::Lock/WTF::Condition
https://bugs.webkit.org/show_bug.cgi?id=148140
Reviewed by Geoffrey Garen.
Also beef up Condition by giving it a StaticCondition variant.
* wtf/Condition.h:
(WTF::ConditionBase::notifyAll):
(WTF::ConditionBase::waitForSecondsImpl):
(WTF::ConditionBase::absoluteFromRelative):
(WTF::Condition::Condition):
(WTF::Condition::notifyAll): Deleted.
(WTF::Condition::waitForSecondsImpl): Deleted.
(WTF::Condition::absoluteFromRelative): Deleted.
* wtf/CryptographicallyRandomNumber.cpp:
* wtf/HashTable.cpp:
(WTF::HashTableStats::recordCollisionAtCount):
(WTF::HashTableStats::dumpStats):
(WTF::hashTableStatsMutex): Deleted.
* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):
(WTF::KeyTraits>::invalidateIterators):
(WTF::addIterator):
(WTF::removeIterator):
* wtf/Lock.h:
* wtf/MainThread.cpp:
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
(WTF::cancelCallOnMainThread):
(WTF::mainThreadFunctionQueueMutex): Deleted.
* wtf/StackStats.cpp:
(WTF::StackStats::PerThreadStats::PerThreadStats):
(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
(WTF::StackStats::initialize): Deleted.
* wtf/StackStats.h:
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::initialize): Deleted.
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
(WTF::callOnMainThread):
(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):
(WTF::atomicallyInitializedStaticMutex): Deleted.
* wtf/text/StringView.cpp:
(WTF::StringView::UnderlyingString::UnderlyingString):
(WTF::underlyingStrings):
(WTF::StringView::invalidate):
(WTF::StringView::adoptUnderlyingString):
(WTF::StringView::setUnderlyingString):
(WTF::underlyingStringsMutex): Deleted.
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::Collator::Collator):
(WTF::Collator::~Collator):
(WTF::cachedCollatorMutex): Deleted.
2015-08-18 Zan Dobersek <zdobersek@igalia.com>
[GLib] GMainLoopSource should receive the std::function<> objects through rvalue references
https://bugs.webkit.org/show_bug.cgi?id=147981
Reviewed by Carlos Garcia Campos.
Scheduling methods on GMainLoopSource and GThreadSafeMainLoopSource should
have the std::function<> objects passed through rvalue references, and should
move the passed-in objects forward when required.
* wtf/glib/GMainLoopSource.cpp:
(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::GMainLoopSource::scheduleAndDeleteOnDestroy):
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy):
* wtf/glib/GMainLoopSource.h:
* wtf/glib/GThreadSafeMainLoopSource.cpp:
(WTF::GThreadSafeMainLoopSource::schedule):
(WTF::GThreadSafeMainLoopSource::scheduleAfterDelay):
* wtf/glib/GThreadSafeMainLoopSource.h:
2015-08-18 Eric Carlson <eric.carlson@apple.com>
Remove "platform text track menu"
https://bugs.webkit.org/show_bug.cgi?id=148139
Reviewed by Jer Noble.
* wtf/Platform.h: Remove PLATFORM_TEXT_TRACK_MENU.
2015-08-18 Filip Pizlo <fpizlo@apple.com>
WTF::Condition should have a fast path for notifyOne/notifyAll that avoids calling unparkOne/unparkAll
https://bugs.webkit.org/show_bug.cgi?id=148090
Reviewed by Geoffrey Garen.
This change makes notifyOne()/notifyAll() blazing fast when nobody is waiting, by using the
various hooks that ParkingLot gives us to maintain a m_hasWaiters variable. When it's false, it
means that any unpark operation would simply return immediately.
This is a 45% speed-up for the 1-producer/1-consumer scenario with a 100-element queue when you
use the notifyOne()-per-enqueue style. What's cool about this change is that you can now safely
call notifyOne() (or notifyAll()) out of paranoia, just in case someone might be waiting. It's
free to do so if nobody is waiting!
* wtf/Condition.h:
(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):
2015-08-17 Filip Pizlo <fpizlo@apple.com>
Replace all remaining uses of WTF::Mutex with WTF::Lock
https://bugs.webkit.org/show_bug.cgi?id=148089
Reviewed by Geoffrey Garen.
This also beefs up and rationalizes the Condition API, so that it can deal with units of time
other than just steady_clock. This makes it easier to port ThreadCondition and
std::condition_variable code over to Condition. This patch does not take a position on what
kind of time is best; from reading a lot of the uses in WebCore, it seems like our use of
double to measure seconds is often nicer than the many different classes in std::chrono.
Also added a Condition speed test, to make sure that all of this is a good idea. And indeed it
is. The 1-producer/1-consumer scenario with a 100-element queue runs 36x faster using
Lock/Condition than Mutex/ThreadCondition when you use the notifyOne()-per-enqueue style. It
runs 58x faster with Lock/Condition when you use the notifyAll()-at-boundary style. Note that
I have a bug open for making the notifyOne()-per-enqueue style even faster:
https://bugs.webkit.org/show_bug.cgi?id=148090. Also, the 10-consumer/10-producer scenario with
a 100-element queue runs 20x faster with Lock/Condition for notifyOne()-per-enqueue and 30x
faster with notifyAll()-at-boundary. The only way to tweak the test to get
Mutex/ThreadCondition to win is to have one producer, one consumer, a 1-element queue, and use
the notifyOne()-per-enqueue style. In that case, one of the two threads is going to be waiting
most of the time and the test basically measures wake-up latency and nothing else. Because
Condition::wait() does a little bit more work than ThreadCondition::wait(),
Mutex/ThreadCondition end up running 3% faster in this test case. But if you vary any of the
parameters of the test, Mutex/ThreadCondition ends up losing - all it takes is more threads or
a queue size of 5 or more. To my knowledge, we never do producer/consumer with a queue bounded
to one element precisely because that approach is the least efficient regardless of locking
algorithm. For example, neither WTF::MessageQueue nor DFG::Worklist have any bounds on their
queue size. So, it seems that replacing all uses of system mutexes and condition variables with
our own thing is a great idea.
* benchmarks/LockSpeedTest.cpp:
* benchmarks/ConditionSpeedTest.cpp: Added.
* wtf/Condition.h:
(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::waitFor):
(WTF::Condition::wait):
(WTF::Condition::waitUntilWallClockSeconds):
(WTF::Condition::waitUntilMonotonicClockSeconds):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):
(WTF::Condition::waitForSecondsImpl):
(WTF::Condition::waitForImpl):
(WTF::Condition::absoluteFromRelative):
* wtf/MessageQueue.h:
(WTF::MessageQueue::infiniteTime):
(WTF::MessageQueue<DataType>::append):
(WTF::MessageQueue<DataType>::appendAndKill):
(WTF::MessageQueue<DataType>::appendAndCheckEmpty):
(WTF::MessageQueue<DataType>::prepend):
(WTF::MessageQueue<DataType>::removeIf):
(WTF::MessageQueue<DataType>::isEmpty):
(WTF::MessageQueue<DataType>::kill):
(WTF::MessageQueue<DataType>::killed):
* wtf/ParallelJobsGeneric.cpp:
(WTF::ParallelEnvironment::ThreadPrivate::execute):
(WTF::ParallelEnvironment::ThreadPrivate::waitForFinish):
(WTF::ParallelEnvironment::ThreadPrivate::workerThread):
* wtf/ParallelJobsGeneric.h:
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally):
* wtf/ParkingLot.h:
(WTF::ParkingLot::compareAndPark):
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
* wtf/ThreadingWin.cpp:
(WTF::initializeThreading):
* wtf/dtoa.cpp:
(WTF::pow5mult):
* wtf/dtoa.h:
2015-08-17 Alex Christensen <achristensen@webkit.org>
Build Debug Suffix on Windows with CMake
https://bugs.webkit.org/show_bug.cgi?id=148083
Reviewed by Brent Fulgham.
* wtf/PlatformWin.cmake:
Add DEBUG_SUFFIX
2015-08-17 Myles C. Maxfield <mmaxfield@apple.com>
Implement IntegerHasher
https://bugs.webkit.org/show_bug.cgi?id=147866
Reviewed by Darin Adler and Anders Carlsson.
Rename StringHasher.h to Hasher.h, and include an IntegerHasher class.
* WTF.vcxproj/WTF.vcxproj: Update to target new file.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/Hasher.h: Renamed from Source/WTF/wtf/StringHasher.h.
* wtf/text/CString.cpp: Use new #include
* wtf/text/StringHash.h: Ditto.
* wtf/text/StringImpl.h: Ditto.
* wtf/unicode/UTF8.cpp: Ditto.
2015-08-17 Alex Christensen <achristensen@webkit.org>
Move some commands from ./CMakeLists.txt to Source/cmake
https://bugs.webkit.org/show_bug.cgi?id=148003
Reviewed by Brent Fulgham.
* CMakeLists.txt:
Added commands needed to build WTF by itself.
2015-08-14 Filip Pizlo <fpizlo@apple.com>
Use WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std::mutex, and std::condition_variable
https://bugs.webkit.org/show_bug.cgi?id=147999
Reviewed by Geoffrey Garen.
Relanding after fixing a deadlock on Linux.
* wtf/Condition.h: "using WTF::Condition".
* wtf/Lock.h:
(WTF::LockBase::lock):
(WTF::LockBase::tryLock): Add tryLock() because it turns out that we use it sometimes.
(WTF::LockBase::try_lock): unique_lock needs this.
(WTF::LockBase::unlock):
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally): Work around a Linux C++ bug where wait_until with time_point::max() immediately returns and doesn't flash the lock.
2015-08-14 Keith Miller <keith_miller@apple.com>
cryptographicallyRandomValuesFromOS should use arc4random_buf on Darwin.
https://bugs.webkit.org/show_bug.cgi?id=148038
Reviewed by Geoffrey Garen.
Currently, we open a file descriptor to /dev/urandom, which can sometimes
fail to open. Using arc4random_buf instead should get around this issue.
* wtf/OSRandomSource.cpp:
(WTF::cryptographicallyRandomValuesFromOS):
2015-08-14 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r188444.
https://bugs.webkit.org/show_bug.cgi?id=148029
Broke GTK and EFL (see bug #148027) (Requested by philn on
#webkit).
Reverted changeset:
"Use WTF::Lock and WTF::Condition instead of WTF::Mutex,
WTF::ThreadCondition, std::mutex, and std::condition_variable"
https://bugs.webkit.org/show_bug.cgi?id=147999
http://trac.webkit.org/changeset/188444
2015-08-13 Filip Pizlo <fpizlo@apple.com>
Use WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std::mutex, and std::condition_variable
https://bugs.webkit.org/show_bug.cgi?id=147999
Reviewed by Geoffrey Garen.
* wtf/Condition.h: "using WTF::Condition".
* wtf/Lock.h:
(WTF::LockBase::lock):
(WTF::LockBase::tryLock): Add tryLock() because it turns out that we use it sometimes.
(WTF::LockBase::try_lock): unique_lock needs this.
(WTF::LockBase::unlock):
2015-08-13 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r188428.
https://bugs.webkit.org/show_bug.cgi?id=148015
broke cmake build (Requested by alexchristensen on #webkit).
Reverted changeset:
"Move some commands from ./CMakeLists.txt to Source/cmake"
https://bugs.webkit.org/show_bug.cgi?id=148003
http://trac.webkit.org/changeset/188428
2015-08-13 Alex Christensen <achristensen@webkit.org>
Move some commands from ./CMakeLists.txt to Source/cmake
https://bugs.webkit.org/show_bug.cgi?id=148003
Reviewed by Brent Fulgham.
* CMakeLists.txt:
Added commands needed to build WTF by itself.
2015-08-13 Mark Lam <mark.lam@apple.com>
WorkQueue::dispatchAfter() on Windows fires early.
https://bugs.webkit.org/show_bug.cgi?id=147992
Reviewed by Brent Fulgham.
The Windows implementation of WorkQueue::dispatchAfter() uses CreateTimerQueueTimer().
Unfortunately, CreateTimerQueueTimer() is sloppy and can fire early. We need to compensate
for this slop to ensure that the specified duration does expire before the callback function
is called. Otherwise, the JSC watchdog (which depends on this) can fail randomly.
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::dispatchAfter):
2015-08-13 Filip Pizlo <fpizlo@apple.com>
WTF should have a compact Condition object to use with Lock
https://bugs.webkit.org/show_bug.cgi?id=147986
Reviewed by Geoffrey Garen.
Adds a condition variable implementation based on ParkingLot, called simply WTF::Condition.
It can be used with WTF::Lock or actually any lock implementation. It should even work with
WTF::SpinLock, WTF::Mutex, or std::mutex. Best of all, Condition only requires one byte.
ParkingLot almost contained all of the functionality needed to implemenet wait/notify. We
could have implemented Condition using a 32-bit (or even 64-bit) version that protects
against a notify that happens just before we park. But, this changes the ParkingLot API to
give us the ability to run some code between when ParkingLot enqueues the current thread
and when it actually sleeps. This callback is called with no locks held, so it can call
unlock() on any kind of lock, so long as that lock's unlock() method doesn't recurse into
ParkingLot::parkConditionally(). That seems unlikely; unlock() is more likely to call
ParkingLot::unparkOne() or unparkAll(). WTF::Lock will never call parkConditionally()
inside unlock(), so WTF::Lock is definitely appropriate for use with Condition.
Condition supports most of the API that std::condition_variable supports. It does some
things to try to reduce footgun potential. The preferred timeout form is waitUntil() which
takes an absolute time from the steady_clock. The only relative timeout form also takes a
predicate callback, so it's impossible to write the subtly incorrect
"while (...) wait_for(...)" idiom.
This patch doesn't actually introduce any uses of WTF::Condition other than the unit tests.
I'll start switching code over to using WTF::Condition in another patch.
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Condition.h: Added.
(WTF::Condition::Condition):
(WTF::Condition::waitUntil):
(WTF::Condition::waitFor):
(WTF::Condition::wait):
(WTF::Condition::notifyOne):
(WTF::Condition::notifyAll):
* wtf/Lock.cpp:
(WTF::LockBase::unlockSlow): Make this useful assertion be a release assertion. It catches cases where you unlock the lock even though you don't hold it.
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally): Add the beforeSleep() callback.
(WTF::ParkingLot::unparkOne):
* wtf/ParkingLot.h:
(WTF::ParkingLot::compareAndPark):
2015-08-12 Anders Carlsson <andersca@apple.com>
Use WTF::Optional in WindowFeatures
https://bugs.webkit.org/show_bug.cgi?id=147956
Reviewed by Sam Weinig.
Add new operators to WTF::Optional to make it more like std::optional.
* wtf/Optional.h:
(WTF::Optional::operator->):
(WTF::Optional::operator*):
2015-08-12 Filip Pizlo <fpizlo@apple.com>
WTF::Lock should not suffer from the thundering herd
https://bugs.webkit.org/show_bug.cgi?id=147947
Reviewed by Geoffrey Garen.
This changes Lock::unlockSlow() to use unparkOne() instead of unparkAll(). The problem with
doing this is that it's not obvious after calling unparkOne() if there are any other threads
that are still parked on the lock's queue. If we assume that there are and leave the
hasParkedBit set, then future calls to unlock() will take the slow path. We don't want that
if there aren't actually any threads parked. On the other hand, if we assume that there
aren't any threads parked and clear the hasParkedBit, then if there actually were some
threads parked, then they may never be awoken since future calls to unlock() won't take slow
path and so won't call unparkOne(). In other words, we need a way to be very precise about
when we clear the hasParkedBit and we need to do it in a race-free way: it can't be the case
that we clear the bit just as some thread gets parked on the queue.
A similar problem arises in futexes, and one of the solutions is to have a thread that
acquires a lock after parking sets the hasParkedBit. This is what Rusty Russel's usersem
does. It's a subtle algorithm. Also, it means that if a thread barges in before the unparked
thread runs, then that barging thread will not know that there are threads parked. This
could increase the severity of barging.
Since ParkingLot is a user-level API, we don't have to worry about the kernel-user security
issues and so we can expose callbacks while ParkingLot is holding its internal locks. This
change does exactly that for unparkOne(). The new variant of unparkOne() will call a user
function while the queue from which we are unparking is locked. The callback is told basic
stats about the queue: did we unpark a thread this time, and could there be more threads to
unpark in the future. The callback runs while it's impossible for the queue state to change,
since the ParkingLot's internal locks for the queue is held. This means that
Lock::unlockSlow() can either clear, or leave, the hasParkedBit while releasing the lock
inside the callback from unparkOne(). This takes care of the thundering herd problem while
also reducing the greed that arises from barging threads.
This required some careful reworking of the ParkingLot algorithm. The first thing I noticed
was that the ThreadData::shouldPark flag was useless, since it's set exactly when
ThreadData::address is non-null. Then I had to make sure that dequeue() could lazily create
both hashtables and buckets, since the "callback is called while queue is locked" invariant
requires that we didn't exit early due to the hashtable or bucket not being present. Note
that all of this is done in such a way that the old unparkOne() and unparkAll() don't have
to create any buckets, though they now may create the hashtable. We don't care as much about
the hashtable being created by unpark since it's just such an unlikely scenario and it would
only happen once.
This change reduces the kernel CPU usage of WTF::Lock for the long critical section test by
about 8x and makes it always perform as well as WTF::WordLock and WTF::Mutex for that
benchmark.
* benchmarks/LockSpeedTest.cpp:
* wtf/Lock.cpp:
(WTF::LockBase::unlockSlow):
* wtf/Lock.h:
(WTF::LockBase::isLocked):
(WTF::LockBase::isFullyReset):
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkAll):
* wtf/ParkingLot.h:
* wtf/WordLock.h:
(WTF::WordLock::isLocked):
(WTF::WordLock::isFullyReset):
2015-08-11 Filip Pizlo <fpizlo@apple.com>
Always use a byte-sized lock implementation
https://bugs.webkit.org/show_bug.cgi?id=147908
Reviewed by Geoffrey Garen.
At the start of my locking algorithm crusade, I implemented Lock, which is a sizeof(void*)
lock implementation with some nice theoretical properties and good performance. Then I added
the ParkingLot abstraction and ByteLock. ParkingLot uses Lock in its implementation.
ByteLock uses ParkingLot to create a sizeof(char) lock implementation that performs like
Lock.
It turns out that ByteLock is always at least as good as Lock, and sometimes a lot better:
it requires 8x less memory on 64-bit systems. It's hard to construct a benchmark where
ByteLock is significantly slower than Lock, and when you do construct such a benchmark,
tweaking it a bit can also create a scenario where ByteLock is significantly faster than
Lock.
So, the thing that we call "Lock" should really use ByteLock's algorithm, since it is more
compact and just as fast. That's what this patch does.
But we still need to keep the old Lock algorithm, because it's used to implement ParkingLot,
which in turn is used to implement ByteLock. So this patch does this transformation:
- Move the algorithm in Lock into files called WordLock.h|cpp. Make ParkingLot use
WordLock.
- Move the algorithm in ByteLock into Lock.h|cpp. Make everyone who used ByteLock use Lock
instead. All other users of Lock now get the byte-sized lock implementation.
- Remove the old ByteLock files.
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* benchmarks/LockSpeedTest.cpp:
(main):
* wtf/WordLock.cpp: Added.
(WTF::WordLock::lockSlow):
(WTF::WordLock::unlockSlow):
* wtf/WordLock.h: Added.
(WTF::WordLock::WordLock):
(WTF::WordLock::lock):
(WTF::WordLock::unlock):
(WTF::WordLock::isHeld):
(WTF::WordLock::isLocked):
* wtf/ByteLock.cpp: Removed.
* wtf/ByteLock.h: Removed.
* wtf/CMakeLists.txt:
* wtf/Lock.cpp:
(WTF::LockBase::lockSlow):
(WTF::LockBase::unlockSlow):
* wtf/Lock.h:
(WTF::LockBase::lock):
(WTF::LockBase::unlock):
(WTF::LockBase::isHeld):
(WTF::LockBase::isLocked):
(WTF::Lock::Lock):
* wtf/ParkingLot.cpp:
2015-08-11 Filip Pizlo <fpizlo@apple.com>
Remove ByteSpinLock
https://bugs.webkit.org/show_bug.cgi?id=147900
Rubber stamped by Mark Lam.
* WTF.xcodeproj/project.pbxproj:
* wtf/ByteSpinLock.h: Removed.
2015-08-11 Brent Fulgham <bfulgham@apple.com>
[Win] Switch Windows build to Visual Studio 2015
https://bugs.webkit.org/show_bug.cgi?id=147887
<rdar://problem/22235098>
Reviewed by Alex Christensen.
Update Visual Studio project file settings to use the current Visual
Studio and compiler. Continue targeting binaries to run on our minimum
supported configuration of Windows 7.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTFGenerated.vcxproj:
2015-08-10 Filip Pizlo <fpizlo@apple.com>
WTF should have a ParkingLot for parking sleeping threads, so that locks can fit in 1.6 bits
https://bugs.webkit.org/show_bug.cgi?id=147665
Reviewed by Mark Lam.
This change adds a major new abstraction for concurrency algorithms in WebKit. It's called a
ParkingLot, and it makes available a thread parking queue for each virtual address in memory.
The queues are maintained by a data-access-parallel concurrent hashtable implementation. The
memory usage is bounded at around half a KB per thread.
The ParkingLot makes it easy to turn any spinlock-based concurrency protocol into one that
parks threads after a while. Because queue state management is up to the ParkingLot and not
the user's data structure, this patch uses it to implement a full adaptive mutex in one byte.
In fact, only three states of that byte are used (0 = available, 1 = locked, 2 = locked and
there are parked threads). Hence the joke that ParkingLot allows locks that fit in 1.6 bits.
ByteLock is used as a replacement for ByteSpinLock in JavaScriptCore.
The API tests for this also demo how to create a completely fair (FIFO) binary semamphore. The
comment in Lock.h shows how we could accelerate Lock performance using ParkingLot. After we
are sure that this code works, we can expand the use of ParkingLot. That's covered by
https://bugs.webkit.org/show_bug.cgi?id=147841.
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* benchmarks/LockSpeedTest.cpp:
(main):
* wtf/Atomics.h:
(WTF::Atomic::compareExchangeWeak):
(WTF::Atomic::compareExchangeStrong):
* wtf/ByteLock.cpp: Added.
(WTF::ByteLock::lockSlow):
(WTF::ByteLock::unlockSlow):
* wtf/ByteLock.h: Added.
(WTF::ByteLock::ByteLock):
(WTF::ByteLock::lock):
(WTF::ByteLock::unlock):
(WTF::ByteLock::isHeld):
(WTF::ByteLock::isLocked):
* wtf/CMakeLists.txt:
* wtf/Lock.h:
* wtf/ParkingLot.cpp: Added.
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
(WTF::ParkingLot::unparkAll):
(WTF::ParkingLot::forEach):
* wtf/ParkingLot.h: Added.
(WTF::ParkingLot::compareAndPark):
2015-08-11 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed gardening.
* WTF.vcxproj/WTF.vcxproj.filters: Place file references so that files appear in correct
folders in IDE.
2015-08-10 Youenn Fablet <youenn.fablet@crf.canon.fr>
Compile warning (-Wsign-compare) on 32-bits at WebCore/platform/FileSystem.cpp
https://bugs.webkit.org/show_bug.cgi?id=146414
Reviewed by Darin Adler.
Added convertSafely routine based on isInBounds routine.
Updated BoundChecker by adding a third boolean parameter to this template giving whether Target has greater or equal precision than Source.
Removed BoundCheckElider, which is no longer necessary and had some issues.
* wtf/CheckedArithmetic.h:
(WTF::isInBounds):
(WTF::convertSafely):
2015-08-07 Filip Pizlo <fpizlo@apple.com>
Lightweight locks should be adaptive
https://bugs.webkit.org/show_bug.cgi?id=147545
Reviewed by Geoffrey Garen.
A common idiom in WebKit is to use spinlocks. We use them because the lock acquisition
overhead is lower than system locks and because they take dramatically less space than system
locks. The speed and space advantages of spinlocks can be astonishing: an uncontended spinlock
acquire is up to 10x faster and under microcontention - short critical section with two or
more threads taking turns - spinlocks are up to 100x faster. Spinlocks take only 1 byte or 4
bytes depending on the flavor, while system locks take 64 bytes or more. Clearly, WebKit
should continue to avoid system locks - they are just far too slow and far too big.
But there is a problem with this idiom. System lock implementations will sleep a thread when
it attempts to acquire a lock that is held, while spinlocks will cause the thread to burn CPU.
In WebKit spinlocks, the thread will repeatedly call sched_yield(). This is awesome for
microcontention, but awful when the lock will not be released for a while. In fact, when
critical sections take tens of microseconds or more, the CPU time cost of our spinlocks is
almost 100x more than the CPU time cost of a system lock. This case doesn't arise too
frequently in our current uses of spinlocks, but that's probably because right now there are
places where we make a conscious decision to use system locks - even though they use more
memory and are slower - because we don't want to waste CPU cycles when a thread has to wait a
while to acquire the lock.
The solution is to just implement a modern adaptive mutex in WTF. Luckily, this isn't a new
concept. This patch implements a mutex that is reminiscent of the kinds of low-overhead locks
that JVMs use. The actual implementation here is inspired by some of the ideas from [1]. The
idea is simple: the fast path is an inlined CAS to immediately acquire a lock that isn't held,
the slow path tries some number of spins to acquire the lock, and if that fails, the thread is
put on a queue and put to sleep. The queue is made up of statically allocated thread nodes and
the lock itself is a tagged pointer: either it is just bits telling us the complete lock state
(not held or held) or it is a pointer to the head of a queue of threads waiting to acquire the
lock. This approach gives WTF::Lock three different levels of adaptation: an inlined fast path
if the lock is not contended, a short burst of spinning for microcontention, and a full-blown
queue for critical sections that are held for a long time.
On a locking microbenchmark, this new Lock exhibits the following performance
characteristics:
- Lock+unlock on an uncontended no-op critical section: 2x slower than SpinLock and 3x faster
than a system mutex.
- Lock+unlock on a contended no-op critical section: 2x slower than SpinLock and 100x faster
than a system mutex.
- CPU time spent in lock() on a lock held for a while: same as system mutex, 90x less than a
SpinLock.
- Memory usage: sizeof(void*), so on 64-bit it's 8x less than a system mutex but 2x worse than
a SpinLock.
This patch replaces all uses of SpinLock with Lock, since our critical sections are not
no-ops so if you do basically anything in your critical section, the Lock overhead will be
invisible. Also, in all places where we used SpinLock, we could tolerate 8 bytes of overhead
instead of 4. Performance benchmarking using JSC macrobenchmarks shows no difference, which is
as it should be: the purpose of this change is to reduce CPU time wasted, not wallclock time.
This patch doesn't replace any uses of ByteSpinLock, since we expect that the space benefits
of having a lock that just uses a byte are still better than the CPU wastage benefits of
Lock. But, this work will enable some future work to create locks that will fit in just 1.6
bits: https://bugs.webkit.org/show_bug.cgi?id=147665.
Rolling this back in after fixing Lock::unlockSlow() for architectures that have a truly weak
CAS. Since the Lock::unlock() fast path can go to slow path spuriously, it may go there even if
there aren't any threads on the Lock's queue. So, unlockSlow() must be able to deal with the
possibility of a null queue head.
[1] http://www.filpizlo.com/papers/pizlo-pppj2011-fable.pdf
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* benchmarks: Added.
* benchmarks/LockSpeedTest.cpp: Added.
(main):
* wtf/Atomics.h:
(WTF::Atomic::compareExchangeWeak):
(WTF::Atomic::compareExchangeStrong):
* wtf/CMakeLists.txt:
* wtf/Lock.cpp: Added.
(WTF::LockBase::lockSlow):
(WTF::LockBase::unlockSlow):
* wtf/Lock.h: Added.
(WTF::LockBase::lock):
(WTF::LockBase::unlock):
(WTF::LockBase::isHeld):
(WTF::LockBase::isLocked):
(WTF::Lock::Lock):
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::release):
(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):
(WTF::MetaAllocator::addFreshFreeSpace):
(WTF::MetaAllocator::debugFreeSpaceSize):
* wtf/MetaAllocator.h:
* wtf/SpinLock.h:
* wtf/ThreadingPthreads.cpp:
* wtf/ThreadingWin.cpp:
* wtf/text/AtomicString.cpp:
* wtf/text/AtomicStringImpl.cpp:
(WTF::AtomicStringTableLocker::AtomicStringTableLocker):
2015-08-05 Filip Pizlo <fpizlo@apple.com>
Unreviewed, roll out http://trac.webkit.org/changeset/187972.
* wtf/Atomics.cpp:
(WTF::getSwapLock):
(WTF::atomicStep):
* wtf/MessageQueue.h:
(WTF::MessageQueue::infiniteTime):
(WTF::MessageQueue<DataType>::append):
(WTF::MessageQueue<DataType>::appendAndKill):
(WTF::MessageQueue<DataType>::appendAndCheckEmpty):
(WTF::MessageQueue<DataType>::prepend):
(WTF::MessageQueue<DataType>::removeIf):
(WTF::MessageQueue<DataType>::isEmpty):
(WTF::MessageQueue<DataType>::kill):
(WTF::MessageQueue<DataType>::killed):
* wtf/ParallelJobsGeneric.cpp:
(WTF::ParallelEnvironment::ThreadPrivate::execute):
(WTF::ParallelEnvironment::ThreadPrivate::waitForFinish):
(WTF::ParallelEnvironment::ThreadPrivate::workerThread):
* wtf/ParallelJobsGeneric.h:
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/ThreadSpecificWin.cpp:
(WTF::destructorsList):
(WTF::destructorsMutex):
(WTF::threadSpecificKeyCreate):
(WTF::threadSpecificKeyDelete):
(WTF::ThreadSpecificThreadExit):
* wtf/Threading.cpp:
(WTF::threadEntryPoint):
(WTF::createThread):
* wtf/ThreadingPrimitives.h:
* wtf/ThreadingPthreads.cpp:
(WTF::threadMapMutex):
(WTF::initializeThreading):
(WTF::identifierByPthreadHandle):
(WTF::establishIdentifierForPthreadHandle):
(WTF::changeThreadPriority):
(WTF::waitForThreadCompletion):
(WTF::detachThread):
(WTF::threadDidExit):
(WTF::currentThread):
(WTF::Mutex::Mutex):
(WTF::Mutex::~Mutex):
(WTF::Mutex::lock):
(WTF::Mutex::tryLock):
(WTF::Mutex::unlock):
(WTF::ThreadCondition::~ThreadCondition):
(WTF::ThreadCondition::wait):
(WTF::ThreadCondition::timedWait):
(WTF::DeprecatedMutex::DeprecatedMutex): Deleted.
(WTF::DeprecatedMutex::~DeprecatedMutex): Deleted.
(WTF::DeprecatedMutex::lock): Deleted.
(WTF::DeprecatedMutex::tryLock): Deleted.
(WTF::DeprecatedMutex::unlock): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::initializeCurrentThreadInternal):
(WTF::threadMapMutex):
(WTF::initializeThreading):
(WTF::storeThreadHandleByIdentifier):
(WTF::threadHandleForIdentifier):
(WTF::clearThreadHandleForIdentifier):
(WTF::currentThread):
(WTF::Mutex::Mutex):
(WTF::Mutex::~Mutex):
(WTF::Mutex::lock):
(WTF::Mutex::tryLock):
(WTF::Mutex::unlock):
(WTF::ThreadCondition::~ThreadCondition):
(WTF::ThreadCondition::wait):
(WTF::ThreadCondition::timedWait):
(WTF::DeprecatedMutex::DeprecatedMutex): Deleted.
(WTF::DeprecatedMutex::~DeprecatedMutex): Deleted.
(WTF::DeprecatedMutex::lock): Deleted.
(WTF::DeprecatedMutex::tryLock): Deleted.
(WTF::DeprecatedMutex::unlock): Deleted.
* wtf/WorkQueue.h:
* wtf/dtoa.cpp:
* wtf/dtoa.h:
* wtf/efl/DispatchQueueEfl.cpp:
(DispatchQueue::dispatch):
(DispatchQueue::performWork):
(DispatchQueue::performTimerWork):
(DispatchQueue::insertTimerWorkItem):
(DispatchQueue::wakeUpThread):
(DispatchQueue::getNextTimeOut):
* wtf/efl/DispatchQueueEfl.h:
* wtf/efl/RunLoopEfl.cpp:
(WTF::RunLoop::wakeUpEvent):
(WTF::RunLoop::wakeUp):
* wtf/threads/BinarySemaphore.cpp:
(WTF::BinarySemaphore::signal):
(WTF::BinarySemaphore::wait):
* wtf/threads/BinarySemaphore.h:
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::handleCallback):
(WTF::WorkQueue::platformInvalidate):
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::timerCallback):
(WTF::WorkQueue::dispatchAfter):
2015-08-05 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix Windows.
* wtf/ThreadSpecificWin.cpp:
(WTF::destructorsList):
(WTF::destructorsMutex):
(WTF::threadSpecificKeyCreate):
(WTF::threadSpecificKeyDelete):
(WTF::ThreadSpecificThreadExit):
2015-08-04 Filip Pizlo <fpizlo@apple.com>
Rename Mutex to DeprecatedMutex
https://bugs.webkit.org/show_bug.cgi?id=147675
Reviewed by Geoffrey Garen.
* wtf/Atomics.cpp:
(WTF::getSwapLock):
(WTF::atomicStep):
* wtf/MessageQueue.h:
(WTF::MessageQueue::infiniteTime):
(WTF::MessageQueue<DataType>::append):
(WTF::MessageQueue<DataType>::appendAndKill):
(WTF::MessageQueue<DataType>::appendAndCheckEmpty):
(WTF::MessageQueue<DataType>::prepend):
(WTF::MessageQueue<DataType>::removeIf):
(WTF::MessageQueue<DataType>::isEmpty):
(WTF::MessageQueue<DataType>::kill):
(WTF::MessageQueue<DataType>::killed):
* wtf/ParallelJobsGeneric.cpp:
(WTF::ParallelEnvironment::ThreadPrivate::execute):
(WTF::ParallelEnvironment::ThreadPrivate::waitForFinish):
(WTF::ParallelEnvironment::ThreadPrivate::workerThread):
* wtf/ParallelJobsGeneric.h:
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/Threading.cpp:
(WTF::threadEntryPoint):
(WTF::createThread):
* wtf/ThreadingPrimitives.h:
* wtf/ThreadingPthreads.cpp:
(WTF::threadMapMutex):
(WTF::initializeThreading):
(WTF::identifierByPthreadHandle):
(WTF::establishIdentifierForPthreadHandle):
(WTF::changeThreadPriority):
(WTF::waitForThreadCompletion):
(WTF::detachThread):
(WTF::threadDidExit):
(WTF::currentThread):
(WTF::DeprecatedMutex::DeprecatedMutex):
(WTF::DeprecatedMutex::~DeprecatedMutex):
(WTF::DeprecatedMutex::lock):
(WTF::DeprecatedMutex::tryLock):
(WTF::DeprecatedMutex::unlock):
(WTF::ThreadCondition::~ThreadCondition):
(WTF::ThreadCondition::wait):
(WTF::ThreadCondition::timedWait):
(WTF::Mutex::Mutex): Deleted.
(WTF::Mutex::~Mutex): Deleted.
(WTF::Mutex::lock): Deleted.
(WTF::Mutex::tryLock): Deleted.
(WTF::Mutex::unlock): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::initializeCurrentThreadInternal):
(WTF::threadMapMutex):
(WTF::initializeThreading):
(WTF::storeThreadHandleByIdentifier):
(WTF::threadHandleForIdentifier):
(WTF::clearThreadHandleForIdentifier):
(WTF::currentThread):
(WTF::DeprecatedMutex::DeprecatedMutex):
(WTF::DeprecatedMutex::~DeprecatedMutex):
(WTF::DeprecatedMutex::lock):
(WTF::DeprecatedMutex::tryLock):
(WTF::DeprecatedMutex::unlock):
(WTF::ThreadCondition::~ThreadCondition):
(WTF::ThreadCondition::wait):
(WTF::ThreadCondition::timedWait):
(WTF::Mutex::Mutex): Deleted.
(WTF::Mutex::~Mutex): Deleted.
(WTF::Mutex::lock): Deleted.
(WTF::Mutex::tryLock): Deleted.
(WTF::Mutex::unlock): Deleted.
* wtf/WorkQueue.h:
* wtf/dtoa.cpp:
* wtf/dtoa.h:
* wtf/efl/DispatchQueueEfl.cpp:
(DispatchQueue::dispatch):
(DispatchQueue::performWork):
(DispatchQueue::performTimerWork):
(DispatchQueue::insertTimerWorkItem):
(DispatchQueue::wakeUpThread):
(DispatchQueue::getNextTimeOut):
* wtf/efl/DispatchQueueEfl.h:
* wtf/efl/RunLoopEfl.cpp:
(WTF::RunLoop::wakeUpEvent):
(WTF::RunLoop::wakeUp):
* wtf/threads/BinarySemaphore.cpp:
(WTF::BinarySemaphore::signal):
(WTF::BinarySemaphore::wait):
* wtf/threads/BinarySemaphore.h:
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::handleCallback):
(WTF::WorkQueue::platformInvalidate):
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::timerCallback):
(WTF::WorkQueue::dispatchAfter):
2015-08-04 Alex Christensen <achristensen@webkit.org>
Fix quirks with CMake and VS2015
https://bugs.webkit.org/show_bug.cgi?id=147663
Reviewed by Brent Fulgham.
* wtf/Platform.h:
Build fix after r187908
2015-08-04 Brent Fulgham <bfulgham@apple.com>
[Win] Update Apple Windows build for VS2015
https://bugs.webkit.org/show_bug.cgi?id=147653
Reviewed by Dean Jackson.
* WTF.vcxproj/WTF.vcxproj.filters: Drive-by-fix to place files in
proper project locations in the IDE.
* wtf/Platform.h: Don't define the _HAS_EXCEPTIONS macro when building with
Visual Studio 2015.
2015-08-04 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r187815 and r187817.
https://bugs.webkit.org/show_bug.cgi?id=147644
Caused lots of Windows crashes (Requested by smfr on #webkit).
Reverted changesets:
"[WTF] Turn tryMakeString(), makeString() into variadic
templates"
https://bugs.webkit.org/show_bug.cgi?id=147142
http://trac.webkit.org/changeset/187815
"Unreviewed build fix."
http://trac.webkit.org/changeset/187817
2015-08-04 Alex Christensen <achristensen@webkit.org>
Enable WebGL on Windows CMake build.
https://bugs.webkit.org/show_bug.cgi?id=143311
Reviewed by Csaba Osztrogonác.
* wtf/FeatureDefines.h:
Made the CMake feature defines the same as the non-CMake feature defines.
2015-08-03 Csaba Osztrogonác <ossy@webkit.org>
Introduce COMPILER(GCC_OR_CLANG) guard and make COMPILER(GCC) true only for GCC
https://bugs.webkit.org/show_bug.cgi?id=146833
Reviewed by Alexey Proskuryakov.
* wtf/Assertions.cpp:
* wtf/Assertions.h: Removed redundant COMPILER(CLANG) guard.
* wtf/Atomics.cpp:
* wtf/Atomics.h:
(WTF::weakCompareAndSwap):
(WTF::compilerFence):
* wtf/Compiler.h:
- Renamed COMPILER(GCC) to COMPILER(GCC_OR_CLANG), because it is true for both compiler.
- Added COMPILER(GCC) which is true only for GCC.
- Moved all GCC related stuff to one block and removed redundant guards accordingly.
- Removed the unused default false definition of GCC_VERSION_AT_LEAST for non GCC compilers.
* wtf/ExportMacros.h:
* wtf/FastMalloc.h:
* wtf/Platform.h:
* wtf/StdLibExtras.h:
* wtf/Vector.h:
* wtf/text/ASCIIFastPath.h:
(WTF::copyLCharsFromUCharSource):
2015-08-03 Zan Dobersek <zdobersek@igalia.com>
Unreviewed build fix.
* wtf/text/StringConcatenate.h: Include <tuple> to avoid missing
std::tuple<> class definitions.
2015-08-03 Zan Dobersek <zdobersek@igalia.com>
[WTF] Turn tryMakeString(), makeString() into variadic templates
https://bugs.webkit.org/show_bug.cgi?id=147142
Reviewed by Sam Weinig.
Built upon the original work by Anders Carlsson, Mark Rowe and Sam Weinig.
Implement tryMakeString() and makeString() as variadic templates, replacing
the argument count-based overloads.
tryMakeString() now constructs a stack-based tuple of necessary StringTypeAdapter
objects and utilizes the StringAdapterTuple struct template to operate on that
tuple, recursively calling the necessary operations on each element in the tuple.
This effectively mimics the process of previous tryMakeString() implementation,
but makes it scalable to a tuple of elements that are to be concatenated.
StringAppend class template now stores two StringTypeAdapter objects for the
two passed-in string objects, packed in a tuple, calling
StringAdapterTuple<>::createString() directly when concatenating the two objects
into one String.
* wtf/text/StringConcatenate.h:
(WTF::StringTypeAdapter<char>::length):
(WTF::StringTypeAdapter<char>::is8Bit):
(WTF::StringAdapterTuple::sumWithOverflow):
(WTF::StringAdapterTuple::is8Bit):
(WTF::StringAdapterTuple::writeTo):
(WTF::StringAdapterTuple::createString):
(WTF::tryMakeString):
(WTF::makeString):
(WTF::sumWithOverflow): Deleted.
* wtf/text/StringOperators.h:
(WTF::StringAppend::StringAppend):
(WTF::StringAppend::operator String):
(WTF::StringAppend::is8Bit):
(WTF::StringAppend::writeTo):
(WTF::StringAppend::length):
(WTF::StringAppend::string1):
(WTF::StringAppend::string2):
2015-08-03 Anders Carlsson <andersca@apple.com>
Make it possible to use String::utf8() in the debugger
https://bugs.webkit.org/show_bug.cgi?id=147566
Reviewed by Tim Horton.
Add a new utf8() overload that doesn't take any parameters and just calls utf8(LenientConversion), since lldb doesn't support evaluating
function calls with default parameters at the moment.
* wtf/text/WTFString.cpp:
(WTF::String::utf8):
* wtf/text/WTFString.h:
2015-08-02 Benjamin Poulain <bpoulain@apple.com>
Investigate HashTable::HashTable(const HashTable&) and HashTable::operator=(const HashTable&) performance for hash-based static analyses
https://bugs.webkit.org/show_bug.cgi?id=118455
Reviewed by Filip Pizlo.
Previously, when copying a HashTable, we would start from scratch
with an empty table and insert elements one by one, growing-rehashing
the table as needed.
With this patch, we have 2 improvements to remove most of the cost.
First, we compute a good size from the start. This removes all the
reallocations and rehashs.
This is where the biggest gain comes from.
The second part is a simpler version of add() when we know that
we cannot find a bucket with the same key and there cannot
be any deleted bucket.
This removes most branches from the hot loop, cutting another 25%
of the time.
* wtf/HashTable.h:
(WTF::KeyTraits>::addUniqueForInitialization):
(WTF::KeyTraits>::HashTable):
2015-08-01 Myles C. Maxfield <mmaxfield@apple.com>
HashTraits<AtomicString> can use SimpleClassHashTraits
https://bugs.webkit.org/show_bug.cgi?id=147528
Reviewed by Andreas Kling.
No point in duplicating the code inside SimpleClassHashTraits.
* wtf/text/AtomicStringHash.h:
(WTF::HashTraits<WTF::AtomicString>::constructDeletedValue): Deleted.
(WTF::HashTraits<WTF::AtomicString>::isDeletedValue): Deleted.
2015-08-01 Alex Christensen <achristensen@webkit.org>
Fix compile errors with VS2015
https://bugs.webkit.org/show_bug.cgi?id=147526
Reviewed by Myles Maxfield.
* wtf/StringExtras.h:
(snprintf):
(wtf_vsnprintf):
VS2015 has an implementation of snprintf.
2015-07-31 Alex Christensen <achristensen@webkit.org>
Prepare for VS2015
https://bugs.webkit.org/show_bug.cgi?id=146579
Reviewed by Jon Honeycutt.
* wtf/StdLibExtras.h:
(std::exchange):
Added preprocessor macros around functions implemented in VS2015's standard library.
2015-07-30 Chris Dumez <cdumez@apple.com>
Mark more classes as fast allocated
https://bugs.webkit.org/show_bug.cgi?id=147440
Reviewed by Sam Weinig.
Mark more classes as fast allocated for performance. We heap-allocate
objects of those types throughout the code base.
* wtf/Bag.h:
* wtf/SegmentedVector.h:
* wtf/SentinelLinkedList.h:
2015-07-29 Basile Clement <basile_clement@apple.com>
Remove native call inlining
https://bugs.webkit.org/show_bug.cgi?id=147417
Rubber-stamped by Filip Pizlo.
* wtf/Platform.h:
2015-07-28 Yusuke Suzuki <utatane.tea@gmail.com>
[ES6] Add ENABLE_ES6_MODULES compile time flag with the default value "false"
https://bugs.webkit.org/show_bug.cgi?id=147350
Reviewed by Sam Weinig.
* wtf/FeatureDefines.h:
2015-07-28 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix Windows build.
* wtf/MetaAllocatorHandle.h:
(WTF::MetaAllocatorHandle::key):
2015-07-27 Filip Pizlo <fpizlo@apple.com>
Add logging when executable code gets deallocated
https://bugs.webkit.org/show_bug.cgi?id=147355
Reviewed by Mark Lam.
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocatorHandle::dump): It's useful to be able to dump these.
* wtf/MetaAllocatorHandle.h:
2015-07-28 Benjamin Poulain <bpoulain@apple.com>
Speed up StringBuilder::appendQuotedJSONString()
https://bugs.webkit.org/show_bug.cgi?id=147352
Reviewed by Andreas Kling.
* wtf/text/StringBuilder.cpp:
(WTF::appendQuotedJSONStringInternal):
The cases '"' and '\\' are not that uncommon, and they can easily
be handled in the original branch testing for them.
This is about 2.5% better on the JSON.stringify test.
2015-07-27 Alex Christensen <achristensen@webkit.org>
Progress towards building AppleWin with CMake
https://bugs.webkit.org/show_bug.cgi?id=147325
Reviewed by Martin Robinson.
* wtf/PlatformWin.cmake:
Link with CoreFoundation.lib.
2015-07-25 Carlos Alberto Lopez Perez <clopez@igalia.com>
REGRESSION (bmalloc): WebKit performance tests don't report memory stats.
https://bugs.webkit.org/show_bug.cgi?id=141247
Reviewed by Geoffrey Garen.
Meanwhile a better way of getting memory stats with bmalloc is not found
(see bug 136592), we can report as memory stats the resident set size
information that the operating system provides to us.
This at least should be good enough to get back the memory stats on the
performance tests and being able to track down memory usage regressions
at https://perf.webkit.org
* wtf/FastMalloc.cpp:
(WTF::fastMallocStatistics): Report maxrss data as committedVMBytes.
2015-07-24 Csaba Osztrogonác <ossy@webkit.org>
Remove the unused GCC workaround - std::is_trivially_destructible
https://bugs.webkit.org/show_bug.cgi?id=147226
Reviewed by Darin Adler.
* wtf/StdLibExtras.h:
2015-07-23 Alex Christensen <achristensen@webkit.org>
Remove compile and runtime flags for promises.
https://bugs.webkit.org/show_bug.cgi?id=147244
Reviewed by Yusuke Suzuki.
* wtf/FeatureDefines.h:
2015-07-22 Sukolsak Sakshuwong <sukolsak@gmail.com>
Add ENABLE_WEBASSEMBLY feature flag for WebAssembly
https://bugs.webkit.org/show_bug.cgi?id=147212
Reviewed by Filip Pizlo.
* wtf/FeatureDefines.h:
2015-07-22 Filip Pizlo <fpizlo@apple.com>
Introduce release assert for using threads before threading is initialized
https://bugs.webkit.org/show_bug.cgi?id=147200
Reviewed by Michael Saboff.
This will help bugs where you use createThread() before calling initializeThreading().
* wtf/ThreadIdentifierDataPthreads.cpp:
(WTF::ThreadIdentifierData::initialize):
2015-07-21 Daniel Bates <dabates@apple.com>
WTFCrash() in WebKit::WebProcess::networkConnection()
https://bugs.webkit.org/show_bug.cgi?id=147112
<rdar://problem/18477459>
Reviewed by Gavin Barraclough.
Add explicit boolean conversion function and remove overload of operator! to support
checking whether an activity token is valid more directly than using the overloaded operator!.
* wtf/RefCounter.h:
(WTF::RefCounter::Token::operator bool): Added.
(WTF::RefCounter::Token::operator!): Deleted.
2015-07-20 Mark Lam <mark.lam@apple.com>
Rollout r187020 and r187021: breaks JSC API tests on debug builds.
https://bugs.webkit.org/show_bug.cgi?id=147110
* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::WTFThreadData):
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::stack):
2015-07-20 Alex Christensen <achristensen@webkit.org>
Resurrect CMake build on Windows.
https://bugs.webkit.org/show_bug.cgi?id=147083
Reviewed by Gyuyoung Kim.
* wtf/PlatformWin.cmake:
2015-07-20 Per Arne Vollan <peavo@outlook.com>
JavaScriptCore performance is very bad on Windows
https://bugs.webkit.org/show_bug.cgi?id=146448
Reviewed by Mark Lam.
Updating the stack bounds is time consuming.
Only update the stack bounds when a new fiber is running.
* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::WTFThreadData):
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::stack):
2015-07-20 Julien Brianceau <julien.brianceau@gmail.com>
Use isnan from std namespace in Stopwatch.h.
https://bugs.webkit.org/show_bug.cgi?id=146911
Reviewed by Žan Doberšek.
* wtf/Stopwatch.h:
(WTF::Stopwatch::isActive):
(WTF::Stopwatch::start):
(WTF::Stopwatch::stop):
(WTF::Stopwatch::elapsedTime):
2015-07-16 Benjamin Poulain <bpoulain@apple.com>
[Content extensions] Combine suffixes when generating NFAs
https://bugs.webkit.org/show_bug.cgi?id=146961
Reviewed by Alex Christensen.
* wtf/Vector.h:
(WTF::minCapacity>::Vector):
(WTF::=):
Copying a vector with a different inline capacity was broken due to
the addition of MinimumCapacity.
This feature was needed by this patch so I fixed WTF.
2015-07-15 Anders Carlsson <andersca@apple.com>
Make JavaScriptCore SPI headers used by WebCore SPI headers self-contained
https://bugs.webkit.org/show_bug.cgi?id=146978
Reviewed by Dan Bernstein.
* wtf/ExportMacros.h:
2015-07-14 Anders Carlsson <andersca@apple.com>
Assertions.h should include ExportMacros.h
https://bugs.webkit.org/show_bug.cgi?id=146948
Reviewed by Tim Horton.
* wtf/Assertions.h:
2015-07-11 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed build fix, restrict APP_LINKS to just iOS.
* wtf/Platform.h:
2015-07-09 Tim Horton <timothy_horton@apple.com>
Use CoreAnimation fences instead of synchronous IPC to synchronize resize
https://bugs.webkit.org/show_bug.cgi?id=146294
<rdar://problem/21090193>
Reviewed by Anders Carlsson.
* wtf/Platform.h:
Add HAVE(COREANIMATION_FENCES)
2015-07-04 Chris Dumez <cdumez@apple.com>
Drop RefPtr::clear() method
https://bugs.webkit.org/show_bug.cgi?id=146556
Reviewed by Brady Eidson.
Drop RefPtr::clear() method in favor of "= nullptr;" pattern.
Also made the "= nullptr;" pattern as efficient as clear()
by providing a operator=(nullptr_t) overload. Local micro-
benchmarking showed that "= nullptr;" used to be ~1.7% slower
than clear().
2015-07-03 Dan Bernstein <mitz@apple.com>
[Xcode] Update some build settings as recommended by Xcode 7
https://bugs.webkit.org/show_bug.cgi?id=146597
Reviewed by Sam Weinig.
* Configurations/Base.xcconfig: Enabled CLANG_WARN_UNREACHABLE_CODE and
GCC_NO_COMMON_BLOCKS. Removed GCC_MODEL_TUNING.
* WTF.xcodeproj/project.pbxproj: Updated LastUpgradeCheck.
2015-07-01 Alex Christensen <achristensen@webkit.org>
Re-enable WebGL on WinCairo
https://bugs.webkit.org/show_bug.cgi?id=146537
Reviewed by Csaba Osztrogonác.
* wtf/FeatureDefines.h:
Enable WebGL on WinCairo again.
2015-07-01 Alex Christensen <achristensen@webkit.org>
Ignore Visual Studio warning in SegmentedVector
https://bugs.webkit.org/show_bug.cgi?id=146514
Reviewed by Andreas Kling.
* wtf/SegmentedVector.h:
(WTF::SegmentedVector::deleteAllSegments):
Use pragmas to ignore the 0 element array warning.
2015-07-01 Dean Jackson <dino@apple.com>
Disable the experimental WebGL2 implementation
https://bugs.webkit.org/show_bug.cgi?id=146526
<rdar://problem/21641235>
Reviewed by Myles Maxfield.
Add (and disable) an ENABLE_WEBGL2 flag.
* wtf/FeatureDefines.h:
2015-06-30 Alex Christensen <achristensen@webkit.org>
[Win] Unreviewed build fix after r186169.
* wtf/FeatureDefines.h:
Temporarily disable WebGL on WinCairo. It was already temporarily disabled on AppleWin.
2015-06-30 Andy VanWagoner <thetalecrafter@gmail.com>
Implement ECMAScript Internationalization API
https://bugs.webkit.org/show_bug.cgi?id=90906
Reviewed by Benjamin Poulain.
* wtf/FeatureDefines.h: add ENABLE_INTL flag
2015-06-30 Keith Miller <keith_miller@apple.com>
Errors in read() are not handled in WTF::cryptographicallyRandomValuesFromOS.
https://bugs.webkit.org/show_bug.cgi?id=146473
Reviewed by Filip Pizlo.
We were not checking if errors occurred in WTF::cryptographicallyRandomValuesFromOS.
We now buffer the data until enough bits of entropy exist to fill the buffer
rather than crash. Additionally, added two crash functions so we can distinguish
between the two reasons why we crashed in traces.
* wtf/OSRandomSource.cpp:
(WTF::crashUnableToOpenFD):
(WTF::crashUnableToReadFromFD):
(WTF::cryptographicallyRandomValuesFromOS):
2015-06-29 Dean Jackson <dino@apple.com>
Temporarily disable PICTURE_SIZES
https://bugs.webkit.org/show_bug.cgi?id=146435
<rdar://problem/21087013>
Reviewed by Tim Horton.
Temporarily disable PICTURE_SIZES because it causes problems with out
of date <picture> polyfills.
* wtf/FeatureDefines.h:
2015-06-26 Antti Koivisto <antti@apple.com>
Network process hangs fetching disk cache entries
https://bugs.webkit.org/show_bug.cgi?id=146348
<rdar://problem/21528072>
Reviewed by Anders Carlsson.
RunLoop::dispatch may deadlock if invoked with std::function that captures an object that calls RunLoop::dispatch in destructor.
* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
Don't reuse std::function variable in loop. We may end up destroying previously held std::function in assignment
while holding the runloop mutex. With this change std::function is always destroyed with mutex unlocked.
2015-06-24 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r185906.
https://bugs.webkit.org/show_bug.cgi?id=146276
MSVC doesn't yet provide a const-qualified std::array<T,
N>::size(), failing to compile the static_assert (Requested by
zdobersek on #webkit).
Reverted changeset:
"Improve the source code generated by make_names.pl"
https://bugs.webkit.org/show_bug.cgi?id=146208
http://trac.webkit.org/changeset/185906
2015-06-24 Zan Dobersek <zdobersek@igalia.com>
Improve the source code generated by make_names.pl
https://bugs.webkit.org/show_bug.cgi?id=146208
Reviewed by Darin Adler.
* wtf/text/StringImpl.h:
(WTF::StringImpl::assertHashIsCorrect): Make this method const-qualified.
2015-06-22 Darin Adler <darin@apple.com>
Make Array.join work directly on substrings without reifying them
https://bugs.webkit.org/show_bug.cgi?id=146191
Reviewed by Andreas Kling.
* wtf/Vector.h: Added an overload of uncheckedAppend like the one we added
a while back, a non-template function that forwards through to the function
template. This lets us call uncheckedAppend on an argument list and have it
properly convert it to the Vector's element type.
* wtf/text/StringView.h:
(WTF::StringView::getCharactersWithUpconvert): Changed to not use memcpy;
saw some indication the hand-written loop was faster when profiling. Also
use m_length directly when we know we are dealing with an 8-bit string,
since the masking that the index function does is not needed in that case.
(WTF::StringView::UpconvertedCharacters::UpconvertedCharacters): Ditto.
(WTF::StringView::toString): Ditto.
(WTF::StringView::toFloat): Ditto.
(WTF::StringView::toInt): Ditto.
(WTF::StringView::toStringWithoutCopying): Ditto.
(WTF::StringView::find): Ditto.
2015-06-22 YunQiang Su <wzssyqa@gmail.com>
[WTF] Platform.h: use _ABI64 instead of _MIPS_SIM_ABI64 to determine MIPS N64
https://bugs.webkit.org/show_bug.cgi?id=145113
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2015-06-22 Anders Carlsson <andersca@apple.com>
Fix build.
* wtf/threads/BinarySemaphore.cpp:
2015-06-22 Anders Carlsson <andersca@apple.com>
Get rid of the Windows specific BinarySemaphore implementation
https://bugs.webkit.org/show_bug.cgi?id=146216
Reviewed by Andreas Kling.
The fact that the Windows implementation uses a HEVENT internally was only useful
to the Windows port of WebKit2; we can get rid of it now.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* wtf/threads/BinarySemaphore.h:
(WTF::BinarySemaphore::event): Deleted.
* wtf/threads/win/BinarySemaphoreWin.cpp: Removed.
(WTF::BinarySemaphore::BinarySemaphore): Deleted.
(WTF::BinarySemaphore::~BinarySemaphore): Deleted.
(WTF::BinarySemaphore::signal): Deleted.
(WTF::BinarySemaphore::wait): Deleted.
2015-06-21 Gavin Barraclough <barraclough@apple.com>
Page load performance regression due to bugs.webkit.org/show_bug.cgi?id=145542
https://bugs.webkit.org/show_bug.cgi?id=146198
Unreviewed rollout.
* wtf/glib/GUniquePtr.h:
2015-06-20 Michael Catanzaro <mcatanzaro@igalia.com>
[EFL][GTK] Define GLIB_VERSION_MIN_REQUIRED and require glib 2.36 for GTK
https://bugs.webkit.org/show_bug.cgi?id=146181
Reviewed by Martin Robinson.
Define GLIB_VERSION_MIN_REQUIRED to avoid deprecation warnings.
* wtf/Platform.h:
2015-06-19 Michael Catanzaro <mcatanzaro@igalia.com>
[SOUP] Define SOUP_VERSION_MIN_REQUIRED
https://bugs.webkit.org/show_bug.cgi?id=146165
Reviewed by Martin Robinson.
Define SOUP_VERSION_MIN_REQUIRED to avoid deprecation warnings.
* wtf/Platform.h:
2015-06-19 Mark Lam <mark.lam@apple.com>
Gardening: build fixes for GTK and EFL for CheckedArithmetic change.
Not reviewed.
* wtf/CheckedArithmetic.h:
(WTF::Checked::operator<):
(WTF::Checked::operator<=):
(WTF::Checked::operator>):
(WTF::Checked::operator>=):
2015-06-19 Mark Lam <mark.lam@apple.com>
CheckedArithmetic's operator bool() and operator==() is broken.
https://bugs.webkit.org/show_bug.cgi?id=146129
Reviewed by Geoffrey Garen and Oliver Hunt.
The existing operator UnspecifiedBoolType*() in CheckedArithmetic is erroneously
allowing the Checked value to be implicitly casted into pointer types. This is
because it is doing a reinterpret_cast<UnspecifiedBoolType*>(1) whereas the idiom
relies on the address of a member e.g. &Checked::m_value. As a result,
ImageBufferData::putData() was getting an implicit cast of a Checked value to
(void*)1 and doing incorrect pointer comparisons on it.
Also, 2 of CheckedArithmetic's operator==() will crash if used on an overflowed
value, while a 3rd one does not. The 3rd one should be consistent and also crash
if used on an overflowed Checked value.
In this fix, we replace operator UnspecifiedBoolType*() with an explicit operator
bool(). We also add the missing operators <, <=, >, and >=. That takes care of
the comparisons in ImageBufferData::putData().
* wtf/CheckedArithmetic.h:
(WTF::CrashOnOverflow::overflowed):
(WTF::CrashOnOverflow::crash):
(WTF::RecordOverflow::crash):
(WTF::Checked::operator!):
(WTF::Checked::operator bool):
(WTF::Checked::unsafeGet):
- Don't call CRASH() directly. Delegate to the handler.
(WTF::Checked::operator==):
- Should call the handler's crash() to be consistent with the other 2 versions of
operator== which will crash in unsafeGet() if used on an overflowed Checked
value.
(WTF::Checked::operator<):
(WTF::Checked::operator<=):
(WTF::Checked::operator>):
(WTF::Checked::operator>=):
- Add missing operators.
(WTF::Checked::operator UnspecifiedBoolType*): Deleted.
2015-06-19 Csaba Osztrogonác <ossy@webkit.org>
[WK2] Fix unused-private-field warning in WebProcess/Plugins/PluginView.<h|cpp>
https://bugs.webkit.org/show_bug.cgi?id=145252
Reviewed by Tim Horton.
* wtf/FeatureDefines.h: Moved the definition of ENABLE_PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC
here from Source/WebKit2/WebProcess/WebPage/WebPage.h
2015-06-17 Andreas Kling <akling@apple.com>
SegmentedVector should waste less memory.
<https://webkit.org/b/146069>
Reviewed by Anders Carlsson.
We were wasting sizeof(Vector) on every segment in SegmentVector.
The segments were using inline capacity, and would never go beyond it,
so all the size/capacity/out-of-line-buffer metadata was useless.
Change the internal representation to Vector<T[SegmentSize]> instead.
This saves 16 bytes per segment, so lower SegmentSize -> bigger savings!
* wtf/SegmentedVector.h:
(WTF::SegmentedVectorIterator::operator*):
(WTF::SegmentedVectorIterator::operator->):
(WTF::SegmentedVectorIterator::operator++):
(WTF::SegmentedVectorIterator::operator==):
(WTF::SegmentedVectorIterator::operator!=):
(WTF::SegmentedVectorIterator::SegmentedVectorIterator):
(WTF::SegmentedVector::at):
(WTF::SegmentedVector::append):
(WTF::SegmentedVector::removeLast):
(WTF::SegmentedVector::grow):
(WTF::SegmentedVector::begin):
(WTF::SegmentedVector::end):
(WTF::SegmentedVector::deleteAllSegments):
(WTF::SegmentedVector::ensureSegmentsFor):
(WTF::SegmentedVector::ensureSegment):
(WTF::SegmentedVector::allocateSegment):
(WTF::SegmentedVectorIterator::operator=): Deleted.
(WTF::SegmentedVector::SegmentedVector): Deleted.
2015-06-16 Andreas Kling <akling@apple.com>
Remove unused template parameter InlineCapacity from SegmentedVector.
<https://webkit.org/b/146044>
Reviewed by Anders Carlsson.
* wtf/SegmentedVector.h:
(WTF::SegmentedVectorIterator::operator=):
(WTF::SegmentedVectorIterator::SegmentedVectorIterator):
(WTF::SegmentedVector::at):
2015-06-16 Mark Lam <mark.lam@apple.com>
Use NakedPtr<Exception>& to return exception results.
https://bugs.webkit.org/show_bug.cgi?id=145870
Reviewed by Anders Carlsson and Filip Pizlo.
Introducing the NakedPtr class.
* WTF.xcodeproj/project.pbxproj:
* wtf/NakedPtr.h: Added.
(WTF::NakedPtr::NakedPtr):
(WTF::NakedPtr::get):
(WTF::NakedPtr::clear):
(WTF::NakedPtr::operator*):
(WTF::NakedPtr::operator->):
(WTF::NakedPtr::operator T*):
(WTF::NakedPtr::operator!):
(WTF::NakedPtr::operator bool):
(WTF::=):
(WTF::NakedPtr<T>::swap):
(WTF::swap):
2015-06-12 Zan Dobersek <zdobersek@igalia.com>
[GLib] Move files under Source/WTF/wtf/gobject to Source/WTF/wtf/glib
https://bugs.webkit.org/show_bug.cgi?id=145799
Reviewed by Carlos Garcia Campos.
Move the GLib-specific files to the Source/WTF/wtf/glib/ directory.
'gobject' wasn't the most appropriate name for the directory since
GObject is a submodule of GLib, but a lot of the code there didn't
have much to do with GObject specifically.
Build rules for the moved files are also updated.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* wtf/Platform.h:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/RunLoop.h:
* wtf/WorkQueue.h:
* wtf/glib/GLibUtilities.cpp: Renamed from Source/WTF/wtf/gobject/GlibUtilities.cpp.
(getCurrentExecutablePath):
* wtf/glib/GLibUtilities.h: Renamed from Source/WTF/wtf/gobject/GlibUtilities.h.
* wtf/glib/GMainLoopSource.cpp: Renamed from Source/WTF/wtf/gobject/GMainLoopSource.cpp.
(WTF::GMainLoopSource::create):
(WTF::GMainLoopSource::GMainLoopSource):
(WTF::GMainLoopSource::~GMainLoopSource):
(WTF::GMainLoopSource::isScheduled):
(WTF::GMainLoopSource::isActive):
(WTF::GMainLoopSource::cancel):
(WTF::GMainLoopSource::scheduleIdleSource):
(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleTimeoutSource):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::createMicrosecondsTimeoutSource):
(WTF::GMainLoopSource::scheduleAndDeleteOnDestroy):
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy):
(WTF::GMainLoopSource::prepareVoidCallback):
(WTF::GMainLoopSource::finishVoidCallback):
(WTF::GMainLoopSource::voidCallback):
(WTF::GMainLoopSource::prepareBoolCallback):
(WTF::GMainLoopSource::finishBoolCallback):
(WTF::GMainLoopSource::boolCallback):
(WTF::GMainLoopSource::socketCallback):
(WTF::GMainLoopSource::voidSourceCallback):
(WTF::GMainLoopSource::boolSourceCallback):
(WTF::GMainLoopSource::socketSourceCallback):
(WTF::GMainLoopSource::Context::destroySource):
* wtf/glib/GMainLoopSource.h: Renamed from Source/WTF/wtf/gobject/GMainLoopSource.h.
(WTF::GMainLoopSource::Context::operator=):
* wtf/glib/GMutexLocker.h: Renamed from Source/WTF/wtf/gobject/GMutexLocker.h.
(WTF::MutexWrapper<GMutex>::lock):
(WTF::MutexWrapper<GMutex>::unlock):
(WTF::MutexWrapper<GRecMutex>::lock):
(WTF::MutexWrapper<GRecMutex>::unlock):
(WTF::GMutexLocker::GMutexLocker):
(WTF::GMutexLocker::~GMutexLocker):
(WTF::GMutexLocker::lock):
(WTF::GMutexLocker::unlock):
* wtf/glib/GRefPtr.cpp: Renamed from Source/WTF/wtf/gobject/GRefPtr.cpp.
(WTF::refGPtr):
(WTF::derefGPtr):
* wtf/glib/GRefPtr.h: Renamed from Source/WTF/wtf/gobject/GRefPtr.h.
(WTF::GRefPtr::GRefPtr):
(WTF::GRefPtr::~GRefPtr):
(WTF::GRefPtr::clear):
(WTF::GRefPtr::outPtr):
(WTF::GRefPtr::isHashTableDeletedValue):
(WTF::GRefPtr::get):
(WTF::GRefPtr::operator*):
(WTF::GRefPtr::operator->):
(WTF::GRefPtr::operator!):
(WTF::GRefPtr::operator UnspecifiedBoolType):
(WTF::GRefPtr::hashTableDeletedValue):
(WTF::=):
(WTF::GRefPtr<T>::swap):
(WTF::swap):
(WTF::operator==):
(WTF::operator!=):
(WTF::static_pointer_cast):
(WTF::const_pointer_cast):
(WTF::adoptGRef):
(WTF::refGPtr):
(WTF::derefGPtr):
* wtf/glib/GThreadSafeMainLoopSource.cpp: Renamed from Source/WTF/wtf/gobject/GThreadSafeMainLoopSource.cpp.
(WTF::GThreadSafeMainLoopSource::GThreadSafeMainLoopSource):
(WTF::GThreadSafeMainLoopSource::~GThreadSafeMainLoopSource):
(WTF::GThreadSafeMainLoopSource::cancel):
(WTF::GThreadSafeMainLoopSource::schedule):
(WTF::GThreadSafeMainLoopSource::scheduleAfterDelay):
(WTF::GThreadSafeMainLoopSource::prepareVoidCallback):
(WTF::GThreadSafeMainLoopSource::finishVoidCallback):
(WTF::GThreadSafeMainLoopSource::voidCallback):
(WTF::GThreadSafeMainLoopSource::prepareBoolCallback):
(WTF::GThreadSafeMainLoopSource::finishBoolCallback):
(WTF::GThreadSafeMainLoopSource::boolCallback):
* wtf/glib/GThreadSafeMainLoopSource.h: Renamed from Source/WTF/wtf/gobject/GThreadSafeMainLoopSource.h.
* wtf/glib/GTypedefs.h: Renamed from Source/WTF/wtf/gobject/GTypedefs.h.
* wtf/glib/GUniquePtr.h: Renamed from Source/WTF/wtf/gobject/GUniquePtr.h.
(WTF::GPtrDeleter::operator()):
(WTF::GUniqueOutPtr::GUniqueOutPtr):
(WTF::GUniqueOutPtr::~GUniqueOutPtr):
(WTF::GUniqueOutPtr::outPtr):
(WTF::GUniqueOutPtr::release):
(WTF::GUniqueOutPtr::operator*):
(WTF::GUniqueOutPtr::operator->):
(WTF::GUniqueOutPtr::get):
(WTF::GUniqueOutPtr::operator!):
(WTF::GUniqueOutPtr::operator UnspecifiedBoolType):
(WTF::GUniqueOutPtr::reset):
* wtf/glib/MainThreadGLib.cpp:
* wtf/gobject/GMainLoopSource.cpp:
(WTF::GMainLoopSource::create): Deleted.
(WTF::GMainLoopSource::GMainLoopSource): Deleted.
(WTF::GMainLoopSource::~GMainLoopSource): Deleted.
(WTF::GMainLoopSource::isScheduled): Deleted.
(WTF::GMainLoopSource::isActive): Deleted.
(WTF::GMainLoopSource::cancel): Deleted.
(WTF::GMainLoopSource::scheduleIdleSource): Deleted.
(WTF::GMainLoopSource::schedule): Deleted.
(WTF::GMainLoopSource::scheduleTimeoutSource): Deleted.
(WTF::GMainLoopSource::scheduleAfterDelay): Deleted.
(WTF::createMicrosecondsTimeoutSource): Deleted.
(WTF::GMainLoopSource::scheduleAndDeleteOnDestroy): Deleted.
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy): Deleted.
(WTF::GMainLoopSource::prepareVoidCallback): Deleted.
(WTF::GMainLoopSource::finishVoidCallback): Deleted.
(WTF::GMainLoopSource::voidCallback): Deleted.
(WTF::GMainLoopSource::prepareBoolCallback): Deleted.
(WTF::GMainLoopSource::finishBoolCallback): Deleted.
(WTF::GMainLoopSource::boolCallback): Deleted.
(WTF::GMainLoopSource::socketCallback): Deleted.
(WTF::GMainLoopSource::voidSourceCallback): Deleted.
(WTF::GMainLoopSource::boolSourceCallback): Deleted.
(WTF::GMainLoopSource::socketSourceCallback): Deleted.
(WTF::GMainLoopSource::Context::destroySource): Deleted.
* wtf/gobject/GMainLoopSource.h:
(WTF::GMainLoopSource::Context::operator=): Deleted.
* wtf/gobject/GMutexLocker.h:
(WTF::MutexWrapper<GMutex>::lock): Deleted.
(WTF::MutexWrapper<GMutex>::unlock): Deleted.
(WTF::MutexWrapper<GRecMutex>::lock): Deleted.
(WTF::MutexWrapper<GRecMutex>::unlock): Deleted.
(WTF::GMutexLocker::GMutexLocker): Deleted.
(WTF::GMutexLocker::~GMutexLocker): Deleted.
(WTF::GMutexLocker::lock): Deleted.
(WTF::GMutexLocker::unlock): Deleted.
* wtf/gobject/GRefPtr.cpp:
(WTF::refGPtr): Deleted.
(WTF::derefGPtr): Deleted.
* wtf/gobject/GRefPtr.h:
(WTF::GRefPtr::GRefPtr): Deleted.
(WTF::GRefPtr::~GRefPtr): Deleted.
(WTF::GRefPtr::clear): Deleted.
(WTF::GRefPtr::outPtr): Deleted.
(WTF::GRefPtr::isHashTableDeletedValue): Deleted.
(WTF::GRefPtr::get): Deleted.
(WTF::GRefPtr::operator*): Deleted.
(WTF::GRefPtr::operator->): Deleted.
(WTF::GRefPtr::operator!): Deleted.
(WTF::GRefPtr::operator UnspecifiedBoolType): Deleted.
(WTF::GRefPtr::hashTableDeletedValue): Deleted.
(WTF::=): Deleted.
(WTF::GRefPtr<T>::swap): Deleted.
(WTF::swap): Deleted.
(WTF::operator==): Deleted.
(WTF::operator!=): Deleted.
(WTF::static_pointer_cast): Deleted.
(WTF::const_pointer_cast): Deleted.
(WTF::adoptGRef): Deleted.
(WTF::refGPtr): Deleted.
(WTF::derefGPtr): Deleted.
* wtf/gobject/GThreadSafeMainLoopSource.cpp:
(WTF::GThreadSafeMainLoopSource::GThreadSafeMainLoopSource): Deleted.
(WTF::GThreadSafeMainLoopSource::~GThreadSafeMainLoopSource): Deleted.
(WTF::GThreadSafeMainLoopSource::cancel): Deleted.
(WTF::GThreadSafeMainLoopSource::schedule): Deleted.
(WTF::GThreadSafeMainLoopSource::scheduleAfterDelay): Deleted.
(WTF::GThreadSafeMainLoopSource::prepareVoidCallback): Deleted.
(WTF::GThreadSafeMainLoopSource::finishVoidCallback): Deleted.
(WTF::GThreadSafeMainLoopSource::voidCallback): Deleted.
(WTF::GThreadSafeMainLoopSource::prepareBoolCallback): Deleted.
(WTF::GThreadSafeMainLoopSource::finishBoolCallback): Deleted.
(WTF::GThreadSafeMainLoopSource::boolCallback): Deleted.
* wtf/gobject/GUniquePtr.h:
(WTF::GPtrDeleter::operator()): Deleted.
(WTF::GUniqueOutPtr::GUniqueOutPtr): Deleted.
(WTF::GUniqueOutPtr::~GUniqueOutPtr): Deleted.
(WTF::GUniqueOutPtr::outPtr): Deleted.
(WTF::GUniqueOutPtr::release): Deleted.
(WTF::GUniqueOutPtr::operator*): Deleted.
(WTF::GUniqueOutPtr::operator->): Deleted.
(WTF::GUniqueOutPtr::get): Deleted.
(WTF::GUniqueOutPtr::operator!): Deleted.
(WTF::GUniqueOutPtr::operator UnspecifiedBoolType): Deleted.
(WTF::GUniqueOutPtr::reset): Deleted.
* wtf/gobject/GlibUtilities.cpp:
(getCurrentExecutablePath): Deleted.
2015-06-10 Basile Clement <basile_clement@apple.com>
Unreviewed, fix an typo in unused template code.
* wtf/TinyPtrSet.h:
(WTF::TinyPtrSet::iterator::operator*): s/at(index)/at(m_index)/
2015-06-09 Csaba Osztrogonác <ossy@webkit.org>
[cmake] Fix the style issues in cmake project files
https://bugs.webkit.org/show_bug.cgi?id=145755
Reviewed by Darin Adler.
* wtf/CMakeLists.txt:
2015-06-08 Alexey Proskuryakov <ap@apple.com>
Build fix.
* wtf/TinyPtrSet.h: (WTF::TinyPtrSet::isEmpty): s/poointer/pointer/
2015-06-07 Filip Pizlo <fpizlo@apple.com>
The tiny set magic in StructureSet should be available in WTF
https://bugs.webkit.org/show_bug.cgi?id=145722
Reviewed by Geoffrey Garen.
As the management of structure sets evolved in JSC, the StructureSet data structure grew
increasingly smart. It's got some smart stuff for managing small sets of pointers. I
wanted to take the generic logic out of JSC and put it into a reusable templatized class
in WTF.
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/TinyPtrSet.h: Added.
(WTF::TinyPtrSet::TinyPtrSet):
(WTF::TinyPtrSet::operator=):
(WTF::TinyPtrSet::~TinyPtrSet):
(WTF::TinyPtrSet::clear):
(WTF::TinyPtrSet::onlyEntry):
(WTF::TinyPtrSet::isEmpty):
(WTF::TinyPtrSet::add):
(WTF::TinyPtrSet::remove):
(WTF::TinyPtrSet::contains):
(WTF::TinyPtrSet::merge):
(WTF::TinyPtrSet::forEach):
(WTF::TinyPtrSet::genericFilter):
(WTF::TinyPtrSet::filter):
(WTF::TinyPtrSet::exclude):
(WTF::TinyPtrSet::isSubsetOf):
(WTF::TinyPtrSet::isSupersetOf):
(WTF::TinyPtrSet::overlaps):
(WTF::TinyPtrSet::size):
(WTF::TinyPtrSet::at):
(WTF::TinyPtrSet::operator[]):
(WTF::TinyPtrSet::last):
(WTF::TinyPtrSet::iterator::iterator):
(WTF::TinyPtrSet::iterator::operator*):
(WTF::TinyPtrSet::iterator::operator++):
(WTF::TinyPtrSet::iterator::operator==):
(WTF::TinyPtrSet::iterator::operator!=):
(WTF::TinyPtrSet::begin):
(WTF::TinyPtrSet::end):
(WTF::TinyPtrSet::operator==):
(WTF::TinyPtrSet::addOutOfLine):
(WTF::TinyPtrSet::containsOutOfLine):
(WTF::TinyPtrSet::copyFrom):
(WTF::TinyPtrSet::copyFromOutOfLine):
(WTF::TinyPtrSet::OutOfLineList::create):
(WTF::TinyPtrSet::OutOfLineList::destroy):
(WTF::TinyPtrSet::OutOfLineList::list):
(WTF::TinyPtrSet::OutOfLineList::OutOfLineList):
(WTF::TinyPtrSet::deleteListIfNecessary):
(WTF::TinyPtrSet::isThin):
(WTF::TinyPtrSet::pointer):
(WTF::TinyPtrSet::singleEntry):
(WTF::TinyPtrSet::list):
(WTF::TinyPtrSet::set):
(WTF::TinyPtrSet::setEmpty):
(WTF::TinyPtrSet::getReservedFlag):
(WTF::TinyPtrSet::setReservedFlag):
2015-06-05 Chris Dumez <cdumez@apple.com>
[WK2][iOS] Limit the number of vnodes used by the WebContent processes
https://bugs.webkit.org/show_bug.cgi?id=145672
<rdar://problem/21126637>
Reviewed by Antti Koivisto.
* wtf/RefCounter.h:
(WTF::RefCounter::value):
Expose the actual refcount instead of a boolean value.
2015-06-05 Alex Christensen <achristensen@webkit.org>
[Web Timing] Use new SPI to enable data collection.
https://bugs.webkit.org/show_bug.cgi?id=145650
rdar://problem/21203358
Reviewed by Chris Dumez.
* wtf/Platform.h:
Added HAVE_TIMINGDATAOPTIONS for platform and version dependent feature.
2015-06-05 Xabier Rodriguez Calvar <calvaris@igalia.com> and Youenn Fablet <youenn.fablet@crf.canon.fr>
[Streams API] ReadableStream should store callbacks as a Deque
https://bugs.webkit.org/show_bug.cgi?id=145641
Reviewed by Darin Adler.
* wtf/Deque.h:
(WTF::Deque::append): Adding not templated append method, forwarding to templated append method.
2015-06-02 Xabier Rodriguez Calvar <calvaris@igalia.com> and Youenn Fablet <youenn.fablet@crf.canon.fr>
[Streams API] Delegate ReadableStreamReader reference counting to ReadableStream
https://bugs.webkit.org/show_bug.cgi?id=144907
Reviewed by Darin Adler.
* wtf/Vector.h:
(WTF::Vector::append): Adding not templated append method, forwarding to ValueType templated append method.
2015-06-02 Yusuke Suzuki <utatane.tea@gmail.com>
Heap-use-after-free read of size 4 in JavaScriptCore: WTF::StringImpl::isSymbol() (StringImpl.h:496)
https://bugs.webkit.org/show_bug.cgi?id=145532
Reviewed by Geoffrey Garen.
Return `RefPtr<AtomicStringImpl>` instead of `AtomicStringImpl*`.
* wtf/text/AtomicStringImpl.cpp:
(WTF::AtomicStringImpl::lookUpSlowCase):
(WTF::AtomicStringImpl::lookUpInternal):
* wtf/text/AtomicStringImpl.h:
(WTF::AtomicStringImpl::lookUp):
2015-06-01 Anders Carlsson <andersca@apple.com>
Use xpc_connection_set_oneshot_instance where possible
https://bugs.webkit.org/show_bug.cgi?id=145535
rdar://problem/21109994
Reviewed by Sam Weinig.
Add SPI declaration.
* wtf/spi/darwin/XPCSPI.h:
2015-05-29 Anders Carlsson <andersca@apple.com>
Missing #import of Platform.h in several WTF headers
https://bugs.webkit.org/show_bug.cgi?id=145475
rdar://problem/21161818
Reviewed by Darin Adler.
Add Platform.h #includes.
* wtf/Assertions.h:
* wtf/RetainPtr.h:
2015-05-29 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r184949.
https://bugs.webkit.org/show_bug.cgi?id=145458
Ends up generating worse code for HashTable move constructors
(Requested by zdobersek on #webkit).
Reverted changeset:
"Clean up HashTable constructors"
https://bugs.webkit.org/show_bug.cgi?id=145369
http://trac.webkit.org/changeset/184949
2015-05-28 Gyuyoung Kim <gyuyoung.kim@webkit.org>
Purge PassRefPtr in StringConcatenate.h
https://bugs.webkit.org/show_bug.cgi?id=145376
Reviewed by Darin Adler.
Replace PassRefPtr with RefPtr. Additionally use nullptr instead of 0.
* wtf/text/StringConcatenate.h:
(WTF::tryMakeString):
(WTF::makeString):
2015-05-28 Zan Dobersek <zdobersek@igalia.com>
Clean up HashTable constructors
https://bugs.webkit.org/show_bug.cgi?id=145369
Reviewed by Andreas Kling.
Use nullptr to initialize pointer member variables in the HashTable
default constructor. Copy and move constructors can use constructor
delegation instead of replicating all member initializations. Move
constructor should simply call HashTable::swap() instead of replicating
all the swap operations.
* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):
2015-05-27 Alexey Proskuryakov <ap@apple.com>
[Mac] Fix clang static analyzer build
https://bugs.webkit.org/show_bug.cgi?id=145426
rdar://problem/20947408
Reviewed by Dan Bernstein.
* wtf/spi/darwin/XPCSPI.h: Correct declarations of xpc_retain and xpc_release.
2015-05-27 Dean Jackson <dino@apple.com>
img.currentSrc problem in strict mode with old picturefill
https://bugs.webkit.org/show_bug.cgi?id=144095
<rdar://problem/21087013>
Reviewed by Simon Fraser.
Add a PICTURE_SIZES flag.
* wtf/FeatureDefines.h:
2015-05-26 Andreas Kling <akling@apple.com>
StringView should have find(StringView, start).
<https://webkit.org/b/145351>
Reviewed by Darin Adler.
Move the class agnostic guts of StringImpl's find() implementation from StringImpl
to StringCommon.h and templatize the code into a findCommon() helper.
StringImpl::find() and StringView::find() now both call findCommon().
* wtf/text/StringCommon.h:
(WTF::findInner):
(WTF::find):
(WTF::findCommon):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::find):
(WTF::findInner): Deleted.
* wtf/text/StringImpl.h:
(WTF::find): Deleted.
* wtf/text/StringView.cpp:
(WTF::StringView::find):
* wtf/text/StringView.h:
2015-05-26 Dan Bernstein <mitz@apple.com>
<rdar://problem/21104551> Update build settings
Reviewed by Anders Carlsson.
* Configurations/DebugRelease.xcconfig:
2015-05-23 Dan Bernstein <mitz@apple.com>
Remove unused definitions of WEBKIT_VERSION_MIN_REQUIRED
https://bugs.webkit.org/show_bug.cgi?id=145345
Reviewed by Sam Weinig.
* Configurations/Base.xcconfig: Also changed to use $(inherited).
2015-05-23 Yusuke Suzuki <utatane.tea@gmail.com>
Introduce UniquedStringImpl and SymbolImpl to separate symbolic strings from AtomicStringImpl
https://bugs.webkit.org/show_bug.cgi?id=144848
Reviewed by Darin Adler.
he current AtomicStringImpl accidentally means the symbol OR atomic StringImpl.
t's not correct to its name and it's error prone.
In this patch, we'll introduce/changes classes into WTF.
1. UniquedStringImpl
It's derived class from StringImpl. And it represents symbol || atomic StringImpl.
2. SymbolImpl
It's derived class from UniquedStringImpl. Only symbol strings can become this.
It ensures the given StringImpl is symbol in compile time.
3. AtomicStringImpl
It's derived class from UniquedStringImpl. Only atomic (non-normal && non-symbol) strings can become this.
It ensures the given StringImpl is atomic in compile time.
And, in this time, I just accept UniqueStringImpl in AtomicString. As the result,
1. Now AtomicStringImpl issue is fixed. Its SymbolImpl is separated and UniquedStringImpl is introduced.
2. But AtomicString still have both symbol and atomic strings.
This should be solved in the separated patch.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PrintStream.cpp:
* wtf/PrintStream.h:
(WTF::printInternal):
* wtf/text/AtomicString.h:
(WTF::AtomicString::AtomicString):
* wtf/text/AtomicStringImpl.h:
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createSymbolEmpty):
* wtf/text/StringImpl.h:
* wtf/text/SymbolImpl.h: Copied from Source/JavaScriptCore/runtime/PrivateName.h.
* wtf/text/SymbolRegistry.cpp:
(WTF::SymbolRegistry::symbolForKey):
(WTF::SymbolRegistry::keyForSymbol):
(WTF::SymbolRegistry::remove):
* wtf/text/SymbolRegistry.h:
* wtf/text/UniquedStringImpl.h: Copied from Source/JavaScriptCore/runtime/PrivateName.h.
2015-05-20 Zan Dobersek <zdobersek@igalia.com>
[GTK] Move MainThreadGtk, RunLoopGtk, WorkQueueGtk under Source/WTF/wtf/glib/
https://bugs.webkit.org/show_bug.cgi?id=145117
Reviewed by Csaba Osztrogonác.
Move the MainThreadGtk, RunLoopGtk and WorkQueueGtk implementation files from
Source/WTF/wtf/gtk/ to Source/WTF/wtf/glib/. These implementations are not
GTK-specific and only depend on GLib, so they are renamed as well.
There are other such implementations under Source/WTF/wtf/gobject/ (GObject
is just a subset of GLib) that will be moved under the new directory in
future patches.
* wtf/PlatformGTK.cmake:
* wtf/glib/MainThreadGLib.cpp: Renamed from Source/WTF/wtf/gtk/MainThreadGtk.cpp.
(WTF::initializeMainThreadPlatform):
(WTF::scheduleDispatchFunctionsOnMainThread):
* wtf/glib/RunLoopGLib.cpp: Renamed from Source/WTF/wtf/gtk/RunLoopGtk.cpp.
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::run):
(WTF::RunLoop::stop):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::~TimerBase):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
* wtf/glib/WorkQueueGLib.cpp: Renamed from Source/WTF/wtf/gtk/WorkQueueGtk.cpp.
(WTF::WorkQueue::platformInitialize):
(WTF::WorkQueue::platformInvalidate):
(WTF::WorkQueue::registerSocketEventHandler):
(WTF::WorkQueue::unregisterSocketEventHandler):
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::dispatchAfter):
2015-05-19 Andreas Kling <akling@apple.com>
Give StringView a utf8() API.
<https://webkit.org/b/145201>
Reviewed by Anders Carlsson
Added an LChar version of StringImpl::utf8ForCharacters() and use that to give
StringView a utf8() API just like String has.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::utf8ForCharacters):
* wtf/text/StringImpl.h:
* wtf/text/StringView.cpp:
(WTF::StringView::utf8):
* wtf/text/StringView.h:
2015-05-19 Yusuke Suzuki <utatane.tea@gmail.com>
Move AtomicStringImpl table related operations from AtomicString to AtomicStringImpl
https://bugs.webkit.org/show_bug.cgi?id=145109
Reviewed by Darin Adler.
Now AtomicStringImpl table operations are located in AtomicString.
But they should be under AtomicStringImpl.
This patch simply moves these operations to AtomicStringImpl.
And this patch renames static AtomicString::find to static AtomicStringImpl::lookUp
because it conflicts with AtomicStringImpl's member function name.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.vcxproj/copy-files.cmd:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PlatformMac.cmake:
* wtf/PlatformWin.cmake:
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::lower):
(WTF::AtomicString::convertToASCIILowercase):
(WTF::AtomicString::fromUTF8Internal):
(WTF::AtomicStringTableLocker::AtomicStringTableLocker): Deleted.
(WTF::stringTable): Deleted.
(WTF::addToStringTable): Deleted.
(WTF::CStringTranslator::hash): Deleted.
(WTF::CStringTranslator::equal): Deleted.
(WTF::CStringTranslator::translate): Deleted.
(WTF::AtomicString::add): Deleted.
(WTF::UCharBufferTranslator::hash): Deleted.
(WTF::UCharBufferTranslator::equal): Deleted.
(WTF::UCharBufferTranslator::translate): Deleted.
(WTF::HashAndCharactersTranslator::hash): Deleted.
(WTF::HashAndCharactersTranslator::equal): Deleted.
(WTF::HashAndCharactersTranslator::translate): Deleted.
(WTF::HashAndUTF8CharactersTranslator::hash): Deleted.
(WTF::HashAndUTF8CharactersTranslator::equal): Deleted.
(WTF::HashAndUTF8CharactersTranslator::translate): Deleted.
(WTF::SubstringTranslator::translate): Deleted.
(WTF::SubstringTranslator8::hash): Deleted.
(WTF::SubstringTranslator8::equal): Deleted.
(WTF::SubstringTranslator16::hash): Deleted.
(WTF::SubstringTranslator16::equal): Deleted.
(WTF::LCharBufferTranslator::hash): Deleted.
(WTF::LCharBufferTranslator::equal): Deleted.
(WTF::LCharBufferTranslator::translate): Deleted.
(WTF::CharBufferFromLiteralDataTranslator::hash): Deleted.
(WTF::CharBufferFromLiteralDataTranslator::equal): Deleted.
(WTF::CharBufferFromLiteralDataTranslator::translate): Deleted.
(WTF::AtomicString::addFromLiteralData): Deleted.
(WTF::AtomicString::addSlowCase): Deleted.
(WTF::AtomicString::remove): Deleted.
(WTF::AtomicString::findSlowCase): Deleted.
(WTF::AtomicString::findInternal): Deleted.
(WTF::AtomicString::isInAtomicStringTable): Deleted.
* wtf/text/AtomicString.h:
(WTF::AtomicString::AtomicString):
(WTF::AtomicString::fromUTF8):
(WTF::AtomicString::find): Deleted.
(WTF::AtomicString::add): Deleted.
(WTF::AtomicString::addWithStringTableProvider): Deleted.
* wtf/text/AtomicStringImpl.cpp: Copied from Source/WTF/wtf/text/AtomicString.cpp.
(WTF::AtomicStringTableLocker::AtomicStringTableLocker):
(WTF::stringTable):
(WTF::addToStringTable):
(WTF::CStringTranslator::hash):
(WTF::CStringTranslator::equal):
(WTF::CStringTranslator::translate):
(WTF::AtomicStringImpl::add):
(WTF::UCharBufferTranslator::hash):
(WTF::UCharBufferTranslator::equal):
(WTF::UCharBufferTranslator::translate):
(WTF::HashAndCharactersTranslator::hash):
(WTF::HashAndCharactersTranslator::equal):
(WTF::HashAndCharactersTranslator::translate):
(WTF::HashAndUTF8CharactersTranslator::hash):
(WTF::HashAndUTF8CharactersTranslator::equal):
(WTF::HashAndUTF8CharactersTranslator::translate):
(WTF::SubstringTranslator::translate):
(WTF::SubstringTranslator8::hash):
(WTF::SubstringTranslator8::equal):
(WTF::SubstringTranslator16::hash):
(WTF::SubstringTranslator16::equal):
(WTF::LCharBufferTranslator::hash):
(WTF::LCharBufferTranslator::equal):
(WTF::LCharBufferTranslator::translate):
(WTF::CharBufferFromLiteralDataTranslator::hash):
(WTF::CharBufferFromLiteralDataTranslator::equal):
(WTF::CharBufferFromLiteralDataTranslator::translate):
(WTF::AtomicStringImpl::addLiteral):
(WTF::AtomicStringImpl::addSlowCase):
(WTF::AtomicStringImpl::remove):
(WTF::AtomicStringImpl::lookUpSlowCase):
(WTF::AtomicStringImpl::addUTF8):
(WTF::AtomicStringImpl::lookUpInternal):
(WTF::AtomicStringImpl::isInAtomicStringTable):
* wtf/text/AtomicStringImpl.h:
(WTF::AtomicStringImpl::lookUp):
(WTF::AtomicStringImpl::add):
(WTF::AtomicStringImpl::addWithStringTableProvider):
(WTF::AtomicStringImpl::AtomicStringImpl): Deleted.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
* wtf/text/StringImpl.h:
* wtf/text/WTFString.h:
(WTF::String::String):
* wtf/text/cf/AtomicStringCF.cpp:
(WTF::AtomicString::add): Deleted.
* wtf/text/cf/AtomicStringImplCF.cpp: Renamed from Source/WTF/wtf/text/cf/AtomicStringCF.cpp.
(WTF::AtomicStringImpl::add):
2015-05-19 Ting-Wei Lan <lantw44@gmail.com>
[SOUP] Use st_birthtime to get creation time of files on systems support it
https://bugs.webkit.org/show_bug.cgi?id=144989
Reviewed by Carlos Garcia Campos.
Define HAVE(STAT_BIRTHTIME) as 1 on operating systems supporting
getting creation time of files using st_birthtime in stat.
* wtf/Platform.h:
2015-05-19 Chris Dumez <cdumez@apple.com>
Mark static variables as const when possible
https://bugs.webkit.org/show_bug.cgi?id=145161
Reviewed by Andreas Kling.
* wtf/dtoa.cpp:
(WTF::pow5mult):
2015-05-19 Gyuyoung Kim <gyuyoung.kim@webkit.org>
[EFL] Remove unnecessary PLATFORM(EFL) macro in EFL specific files
https://bugs.webkit.org/show_bug.cgi?id=145160
Reviewed by Csaba Osztrogonác.
* wtf/efl/EflTypedefs.h: Remove PLATFORM(EFL).
* wtf/efl/UniquePtrEfl.h: ditto.
2015-05-18 Michael Catanzaro <mcatanzaro@igalia.com>
[CMake] Ignore warnings in system headers
https://bugs.webkit.org/show_bug.cgi?id=144747
Reviewed by Darin Adler.
Separate include directories into WebKit project includes and system includes. Suppress all
warnings from headers in system include directories using the SYSTEM argument to
the include_directories command.
* wtf/CMakeLists.txt:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
2015-05-18 Myles C. Maxfield <mmaxfield@apple.com>
Addressing post-review comments on r184353
https://bugs.webkit.org/show_bug.cgi?id=145146
Reviewed by Benjamin Poulain.
Create an overload for equalIgnoringASCIICase() for AtomicString and string literals.
* wtf/text/AtomicString.h:
(WTF::equalIgnoringASCIICase):
2015-05-18 Skachkov Alexandr <gskachkov@gmail.com>
[ES6] Arrow function syntax. Feature flag for arrow function
https://bugs.webkit.org/show_bug.cgi?id=145108
Reviewed by Ryosuke Niwa.
Added feature flag ENABLE_ES6_ARROWFUNCTION_SYNTAX for arrow function
* wtf/FeatureDefines.h:
2015-05-17 Benjamin Poulain <benjamin@webkit.org>
Do not use fastMallocGoodSize anywhere
https://bugs.webkit.org/show_bug.cgi?id=145103
Reviewed by Michael Saboff.
It is silly we see fastMallocGoodSize in profiles, it does absolutely nothing.
This patch keeps fastMallocGoodSize() around for older code linking
with newer WebKit, but remove any use of it inside WebKit.
* wtf/FastMalloc.cpp:
(WTF::fastMallocGoodSize):
* wtf/FastMalloc.h:
* wtf/Vector.h:
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
2015-05-15 Dan Bernstein <mitz@apple.com>
Build fix for some versions of clang.
* wtf/SaturatedArithmetic.h:
(signedAddOverflows):
(signedSubtractOverflows):
2015-05-14 Dan Bernstein <mitz@apple.com>
Reverted r177753, now that <rdar://problem/19347133> is fixed.
Rubber-stamped by Benjamin Poulain.
* wtf/SaturatedArithmetic.h:
(signedAddOverflows):
(signedSubtractOverflows):
2015-05-14 Myles C. Maxfield <mmaxfield@apple.com>
Add String literal overloads to equalIgnoringASCIICase()
https://bugs.webkit.org/show_bug.cgi?id=145008
Reviewed by Benjamin Poulain.
Create an overload for equalIgnoringASCIICase for string literals.
* wtf/text/StringImpl.h:
(WTF::equalIgnoringASCIICase): Use a non-templated helper function.
* wtf/text/StringImpl.cpp:
(WTF::equalIgnoringASCIICase): Implement it.
* wtf/text/StringView.h:
(WTF::equalIgnoringASCIICase): Use a non-templated helper function.
* wtf/text/StringView.cpp:
(WTF::equalIgnoringASCIICase): Implement it.
* wtf/text/WTFString.h:
(WTF::equalIgnoringASCIICase): Delegate to StringImpl's implementation.
2015-05-14 Žan Doberšek <zdobersek@igalia.com>
[GTK] RunLoop constructor should properly retrieve or establish the thread-default GMainContext
https://bugs.webkit.org/show_bug.cgi?id=144732
Reviewed by Carlos Garcia Campos.
RunLoop constructor in the GTK implementation should use the
existing thread-default context, create a new one if not on
the main thread, or use the global-default one if on the main
thread.
In RunLoop::run(), the GMainContext should then be pushed as
the thread-default before calling g_main_loop_run(), and popped
off when the main loop stops.
* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::run):
2015-05-13 Oliver Hunt <oliver@apple.com>
Ensure that all the smart pointer types in WTF clear their pointer before deref
https://bugs.webkit.org/show_bug.cgi?id=143789
Reviewed by Ryosuke Niwa.
In order to prevent use after free bugs caused by destructors
that end up trying to access the smart pointer itself, we should
make sure we always clear the m_ptr field before calling deref.
Essentially the UaF path is:
struct Foo : RefCounted<Foo> {
Wibble* m_wibble;
void doSomething();
~Foo() { m_wibble->doSomethingLikeCleanup(); }
};
struct Wibble {
void doSomethingLikeCleanup()
{
if (m_foo) {
/* if this branch is not here we get a null deref */
m_foo->doSomething();
}
}
void replaceFoo(Foo* foo) { m_foo = foo; }
RefPtr<Foo> m_foo;
};
Wibble* someWibble = /* a Wibble with m_foo->m_refCount == 1 */;
/* and m_foo points to someWibble */;
someWibble->replaceFoo(someOtherFoo);
+ someWibble->m_foo->m_ptr->deref();
+ someWibble->m_foo->m_ptr->~Foo()
+ someWibble->m_foo->m_ptr->m_wibble->doSomethingLikeCleanup()
+ someWibble->m_foo->m_ptr->m_wibble /* someWibble */ ->m_foo->m_ptr /*logically dead*/ ->doSomething()
By clearing m_ptr first we either force a null pointer deref or
we force our code down a path that does not use the dead smart
pointer.
* wtf/PassRefPtr.h:
(WTF::PassRefPtr::~PassRefPtr):
* wtf/Ref.h:
(WTF::Ref::~Ref):
(WTF::Ref::operator=):
* wtf/RefPtr.h:
(WTF::RefPtr::~RefPtr):
* wtf/RetainPtr.h:
(WTF::RetainPtr::~RetainPtr):
(WTF::RetainPtr<T>::clear):
2015-05-12 Michael Saboff <msaboff@apple.com>
If JSC cannot get executable memory, it shouldn't call madvise
https://bugs.webkit.org/show_bug.cgi?id=144931
Reviewed by Mark Lam.
Made calling madvise conditional on really getting mmapped memory.
* wtf/OSAllocatorPosix.cpp:
(WTF::OSAllocator::reserveUncommitted):
2015-05-11 Brent Fulgham <bfulgham@apple.com>
[Win] Move Windows build target to Windows 7 (or newer)
https://bugs.webkit.org/show_bug.cgi?id=144890
<rdar://problem/20707307>
Reviewed by Anders Carlsson.
Update linked SDK and minimal Windows level to be compatible with
Windows 7 or newer.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTFGenerated.vcxproj:
* config.h:
2015-05-11 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] WorkQueue objects are not released
https://bugs.webkit.org/show_bug.cgi?id=144824
Reviewed by Žan Doberšek.
Do not keep a reference of the WorkQueue for the entire life of
its worker thread, since every task scheduled on the WorkQueue
already takes a reference. Instead, take a reference of the main
loop to make sure that when the worker thread starts, the main
loop hasn't been released to avoid runtime warnings (see
webkit.org/b/140998). Also removed the g_main_context_pop_thread_default()
from the thread body, since the thread-specific context queue will
be freed anyway when the thread exits.
If the WorkQueue is released early, before the thread has started,
schedule a main loop quit in the context, to make sure it will
be the first thing run by the main loop and the thread will exit.
* wtf/WorkQueue.h: Remove unused event loop mutex.
* wtf/gtk/WorkQueueGtk.cpp:
(WTF::WorkQueue::platformInitialize):
(WTF::WorkQueue::platformInvalidate):
2015-05-09 Yoav Weiss <yoav@yoav.ws>
Remove the PICTURE_SIZES build flag
https://bugs.webkit.org/show_bug.cgi?id=144679
Reviewed by Benjamin Poulain.
Removed the PICTURE_SIZES build time flag.
* wtf/FeatureDefines.h:
2015-05-08 Myles C. Maxfield <mmaxfield@apple.com>
Remove convenience constructors for TextRun
https://bugs.webkit.org/show_bug.cgi?id=144752
Reviewed by Anders Carlsson.
No reason why StringView shouldn't have a StringImpl* constructor.
Test: StringView8Bit in TestWebKitAPI
* wtf/text/StringView.h: Add the constructor.
2015-05-08 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r183996.
https://bugs.webkit.org/show_bug.cgi?id=144806
ASan detected use-after free (Requested by ap on #webkit).
Reverted changeset:
"Remove convenience constructors for TextRun"
https://bugs.webkit.org/show_bug.cgi?id=144752
http://trac.webkit.org/changeset/183996
2015-05-08 Myles C. Maxfield <mmaxfield@apple.com>
Remove convenience constructors for TextRun
https://bugs.webkit.org/show_bug.cgi?id=144752
Reviewed by Anders Carlsson.
No reason why StringView shouldn't have a StringImpl* constructor.
Test: StringView8Bit in TestWebKitAPI
* wtf/text/StringView.h: Add the constructor.
2015-05-08 Andreas Kling <akling@apple.com>
Optimize serialization of quoted JSON strings.
<https://webkit.org/b/144754>
Reviewed by Darin Adler.
Add a StringBuilder API for appending a quoted JSON string. This is used by
JSON.stringify() to implement efficient appending of strings while escaping
quotes, control characters and \uNNNN-style characters.
The main benefit comes from only doing a single buffer expansion up front,
instead of doing it every time we append something. The fudge factor is pretty
large, since the maximum number of output characters per input character is 6.
The first landing of this patch had two bugs in it:
- Made \uNNNN escapes uppercase hexadecimal instead of lowercase.
- Didn't preallocate enough space for 8-bit input strings.
Both were caught by existing tests on our bots, and both were due to last-minute
changes before landing. :/
* wtf/text/StringBuilder.cpp:
(WTF::appendQuotedJSONStringInternal):
(WTF::StringBuilder::appendQuotedJSONString):
* wtf/text/StringBuilder.h:
2015-05-07 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r183961.
https://bugs.webkit.org/show_bug.cgi?id=144784
Broke js/dom/JSON-stringify.html (Requested by kling on
#webkit).
Reverted changeset:
"Optimize serialization of quoted JSON strings."
https://bugs.webkit.org/show_bug.cgi?id=144754
http://trac.webkit.org/changeset/183961
2015-05-07 Andreas Kling <akling@apple.com>
Optimize serialization of quoted JSON strings.
<https://webkit.org/b/144754>
Reviewed by Darin Adler.
Add a StringBuilder API for appending a quoted JSON string. This is used by
JSON.stringify() to implement efficient appending of strings while escaping
quotes, control characters and \uNNNN-style characters.
The main benefit comes from only doing a single buffer expansion up front,
instead of doing it every time we append something. The fudge factor is pretty
large for 16-bit strings, since the maximum number of output characters per
input character is 6.
* wtf/text/StringBuilder.cpp:
(WTF::appendQuotedJSONStringInternal):
(WTF::StringBuilder::appendQuotedJSONString):
* wtf/text/StringBuilder.h:
2015-05-07 Martin Robinson <mrobinson@igalia.com>
[GTK] All spell checking layout tests fail
https://bugs.webkit.org/show_bug.cgi?id=144648
Reviewed by Carlos Garcia Campos.
* wtf/Platform.h: Activate UNIFIED_TEXT_CHECKING for GTK+.
2015-05-07 Dan Bernstein <mitz@apple.com>
<rdar://problem/19317140> [Xcode] Remove usage of AspenFamily.xcconfig in Source/
https://bugs.webkit.org/show_bug.cgi?id=144727
Reviewed by Darin Adler.
* Configurations/Base.xcconfig: Don’t include AspenFamily.xcconfig, and define
INSTALL_PATH_PREFIX and LD_DYLIB_INSTALL_NAME for the iOS 8.x Simulator.
2015-05-07 Žan Doberšek <zdobersek@igalia.com>
[GTK] Clean up RunLoop implementation
https://bugs.webkit.org/show_bug.cgi?id=144729
Reviewed by Carlos Garcia Campos.
Clean up the RunLoop implementation for the GTK port,
removing unnecessary methods and using simpler variable names.
Nested GMainLoops in RunLoop::run() are now created for the
RunLoop's GMainContext, and not for the default context (enforced
through the null argument to g_main_loop_new()).
* wtf/RunLoop.h:
* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::run):
(WTF::RunLoop::stop):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::innermostLoop): Deleted.
(WTF::RunLoop::pushNestedMainLoop): Deleted.
(WTF::RunLoop::popNestedMainLoop): Deleted.
2015-05-05 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Async operations running in the WorkQueue thread should schedule their sources to the WorkQueue main lopp
https://bugs.webkit.org/show_bug.cgi?id=144541
Reviewed by Žan Doberšek.
They are currently sent to the main thread run loop, because we
are not setting the WorkQueue main context as the default one in
the worker thread.
* wtf/gtk/WorkQueueGtk.cpp:
(WTF::WorkQueue::platformInitialize): Call
g_main_context_push_thread_default() to set the WorkQueue main
context as the default of the thread before running the main loop,
and g_main_context_pop_thread_default() when the main loop quits.
2015-05-04 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r183661.
https://bugs.webkit.org/show_bug.cgi?id=144594
Caused ~3.5MB regression on membuster(!) (Requested by kling_
on #webkit).
Reverted changeset:
"Decrease minimum Vector size."
https://bugs.webkit.org/show_bug.cgi?id=144453
http://trac.webkit.org/changeset/183661
2015-05-04 Zan Dobersek <zdobersek@igalia.com>
[WTF] Remove Functional.h inclusions
https://bugs.webkit.org/show_bug.cgi?id=144400
Reviewed by Darin Adler.
Remove most of the Functional.h header inclusions. The header is preserved
since it's still used by older versions of Safari, and for the callOnMainThread()
stub in DeprecatedSymbolsUsedBySafari.mm.
* wtf/MainThread.cpp:
* wtf/RunLoop.h:
* wtf/WorkQueue.cpp:
* wtf/WorkQueue.h:
* wtf/efl/DispatchQueueEfl.h:
* wtf/efl/DispatchQueueWorkItemEfl.h:
2015-05-02 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r183722.
https://bugs.webkit.org/show_bug.cgi?id=144534
Made all the tests assert (Requested by ap on #webkit).
Reverted changeset:
"Generated static StringImpls should have static flag set."
https://bugs.webkit.org/show_bug.cgi?id=144516
http://trac.webkit.org/changeset/183722
2015-05-02 Andreas Kling <akling@apple.com>
Generated static StringImpls should have static flag set.
<https://webkit.org/b/144516>
Reviewed by Darin Adler.
Discovered this while tracking down a string ref leak. Turns out that the strings
generated by StaticString.pm were not getting the static flag set on them.
The only practical difference from this AFAICT is that now the garbage collector
will correctly see that these strings have no extra memory cost to worry about.
* wtf/text/StringImpl.h:
2015-05-01 Martin Robinson <mrobinson@igalia.com>
USE(...) macro should expect unprefixed variables
https://bugs.webkit.org/show_bug.cgi?id=144454
Reviewed by Daniel Bates.
* wtf/Assertions.cpp: Replace all occurrences WTF_USE with USE.
* wtf/Platform.h: Replace all occurrences WTF_USE with USE. Modify the USE
macro to look for unprefixed variables.
* wtf/WTFThreadData.h: Replace all occurrences WTF_USE with USE.
2015-05-01 Joseph Pecoraro <pecoraro@apple.com>
Enable ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX by default on all ports (Windows was missed)
https://bugs.webkit.org/show_bug.cgi?id=144495
Reviewed by Csaba Osztrogonác.
* wtf/FeatureDefines.h:
This covers all ports that haven't defined the flag otherwise.
2015-04-30 Alex Christensen <achristensen@webkit.org>
Decrease minimum Vector size.
https://bugs.webkit.org/show_bug.cgi?id=144453
Reviewed by Andreas Kling.
* wtf/Vector.h:
Make the default min size 4 to save memory on small Vectors.
2015-04-30 Yusuke Suzuki <utatane.tea@gmail.com>
Use the default hash value for Symbolized StringImpl
https://bugs.webkit.org/show_bug.cgi?id=144347
Reviewed by Darin Adler.
Use a default hash value calculation for symbolized StringImpl.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::createSymbol):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::symbolAwareHash):
(WTF::StringImpl::existingSymbolAwareHash):
(WTF::StringImpl::hashForSymbol):
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::nextHashForSymbol):
(WTF::StringImpl::hashAndFlagsForSymbol): Deleted.
2015-04-29 Alexey Proskuryakov <ap@apple.com>
LazyNeverDestroyed is not thread safe in debug builds, causing assertions
https://bugs.webkit.org/show_bug.cgi?id=144378
Reviewed by Darin Adler.
* wtf/NeverDestroyed.h:
2015-04-28 Geoffrey Garen <ggaren@apple.com>
It shouldn't take 1846 lines of code and 5 FIXMEs to sort an array.
https://bugs.webkit.org/show_bug.cgi?id=144013
Reviewed by Mark Lam.
Remove this custom tree implementation because it is unused. (It was
previously used to achieve a stable array sort in certain cases.)
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/AVLTree.h: Removed.
* wtf/CMakeLists.txt:
2015-04-29 Myles C. Maxfield <mmaxfield@apple.com>
[OS X] Use CTFontCreateForCSS instead of doing font search ourselves
https://bugs.webkit.org/show_bug.cgi?id=132159
Reviewed by Darin Adler.
* wtf/Platform.h:
Opt-in using ENABLE(PLATFORM_FONT_LOOKUP)
2015-04-29 Yusuke Suzuki <utatane.tea@gmail.com>
REGRESSION (r183373): ASSERT failed in wtf/SHA1.h
https://bugs.webkit.org/show_bug.cgi?id=144257
Reviewed by Darin Adler.
* wtf/SHA1.h:
(WTF::SHA1::addBytes):
2015-04-29 Martin Robinson <mrobinson@igalia.com>
[CMake] [GTK] Organize and clean up unused CMake variables
https://bugs.webkit.org/show_bug.cgi?id=144364
Reviewed by Gyuyoung Kim.
* wtf/PlatformGTK.cmake: Add variables specific to this project.
2015-04-28 Michael Catanzaro <mcatanzaro@igalia.com>
Fully replace ENABLE_LLINT_C_LOOP with ENABLE_JIT
https://bugs.webkit.org/show_bug.cgi?id=144304
Reviewed by Geoffrey Garen.
No longer check ENABLE_LLINT_C_LOOP to determine the value of ENABLE_JIT.
* wtf/Platform.h:
2015-04-28 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r183514.
https://bugs.webkit.org/show_bug.cgi?id=144359
It broke cloop test bots (Requested by mcatanzaro on #webkit).
Reverted changeset:
"Fully replace ENABLE_LLINT_C_LOOP with ENABLE_JIT"
https://bugs.webkit.org/show_bug.cgi?id=144304
http://trac.webkit.org/changeset/183514
2015-04-28 Michael Catanzaro <mcatanzaro@igalia.com>
Fully replace ENABLE_LLINT_C_LOOP with ENABLE_JIT
https://bugs.webkit.org/show_bug.cgi?id=144304
Reviewed by Geoffrey Garen.
No longer check ENABLE_LLINT_C_LOOP to determine the value of ENABLE_JIT.
* wtf/Platform.h:
2015-04-28 Alex Christensen <achristensen@webkit.org>
Properly reset deleted count when clearing HashTables.
https://bugs.webkit.org/show_bug.cgi?id=144343
Reviewed by Andreas Kling.
* wtf/HashTable.h:
(WTF::KeyTraits>::clear):
Reset m_deletedCount, which appears to have been forgotten.
2015-04-28 Alex Christensen <achristensen@webkit.org>
[Content Extensions] Use less memory for CombinedURLFilters.
https://bugs.webkit.org/show_bug.cgi?id=144290
Reviewed by Andreas Kling.
* wtf/Forward.h:
* wtf/Vector.h:
Added a minCapacity template parameter to allow changing the minimum size of an
allocated buffer. The default minCapacity is kept at 16 unless otherwise specified
to have no change on existing code, but this could be changed later. A smaller
default minCapacity would use less memory with small Vectors but spend more time
copying when expanding to large Vectors.
2015-04-27 Brent Fulgham <bfulgham@apple.com>
[Win] Deactivate WebGL until Windows tests work properly
https://bugs.webkit.org/show_bug.cgi?id=144291
<rdar://problem/20707307>
Reviewed by Zalan Bujtas.
* wtf/FeatureDefines.h: Force WebGL off for Windows builds.
2015-04-27 Michael Catanzaro <mcatanzaro@igalia.com>
Rename WTF_USE_3D_GRAPHICS to ENABLE_GRAPHICS_CONTEXT_3D
https://bugs.webkit.org/show_bug.cgi?id=144193
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
* wtf/Platform.h:
2015-04-22 Martin Robinson <mrobinson@igalia.com>
[CMake] Autogenerate cmakeconfig.h.cmake
https://bugs.webkit.org/show_bug.cgi?id=143997
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h: Move a GTK-specific setting from cmakeconfig.h to here.
2015-04-25 Martin Robinson <mrobinson@igalia.com>
Rename ENABLE_3D_RENDERING to ENABLE_3D_TRANSFORMS
https://bugs.webkit.org/show_bug.cgi?id=144182
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h: Replace all instances of 3D_RENDERING with 3D_TRANSFORMS.
2015-04-24 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r183288.
https://bugs.webkit.org/show_bug.cgi?id=144189
Made js/sort-with-side-effecting-comparisons.html time out in
debug builds (Requested by ap on #webkit).
Reverted changeset:
"It shouldn't take 1846 lines of code and 5 FIXMEs to sort an
array."
https://bugs.webkit.org/show_bug.cgi?id=144013
http://trac.webkit.org/changeset/183288
2015-04-21 Geoffrey Garen <ggaren@apple.com>
It shouldn't take 1846 lines of code and 5 FIXMEs to sort an array.
https://bugs.webkit.org/show_bug.cgi?id=144013
Reviewed by Mark Lam.
Remove this custom tree implementation because it is unused. (It was
previously used to achieve a stable array sort in certain cases.)
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/AVLTree.h: Removed.
* wtf/CMakeLists.txt:
2015-04-24 Darin Adler <darin@apple.com>
Convert OwnPtr and PassOwnPtr uses to std::unique_ptr
https://bugs.webkit.org/show_bug.cgi?id=128007
Reviewed by Anders Carlsson.
* WTF.vcxproj/WTF.vcxproj: Removed OwnPtr source files.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/Forward.h: Removed OwnPtr and PassOwnPtr.
* wtf/HashTraits.h: Ditto.
* wtf/OwnPtr.h: Removed.
* wtf/OwnPtrCommon.h: Removed.
* wtf/PassOwnPtr.h: Removed.
* wtf/SizeLimits.cpp: Removed OwnPtr.
* wtf/VectorTraits.h: Removed OwnPtr specialization.
2015-04-23 Jer Noble <jer.noble@apple.com>
Disable HAVE_AVKIT on AppleTV
https://bugs.webkit.org/show_bug.cgi?id=144142
Reviewed by Dan Bernstein.
* wtf/Platform.h:
2015-04-23 Alexey Proskuryakov <ap@apple.com>
[iOS] WebKit services should inherit environment variables for home
https://bugs.webkit.org/show_bug.cgi?id=144078
rdar://problem/20571678
Reviewed by Dan Bernstein.
* wtf/spi/darwin/XPCSPI.h: Added xpc_copy_bootstrap and xpc_dictionary_apply.
2015-04-23 Alexey Proskuryakov <ap@apple.com>
Undo the WTF part of the previous build fix, we don't use private headers in WTF.
* WTF.xcodeproj/project.pbxproj:
2015-04-23 Alexey Proskuryakov <ap@apple.com>
Build fix.
* WTF.xcodeproj/project.pbxproj: Make RAMSize.h a private header, now that it's used
from outside WTF.
2015-04-23 Andreas Kling <akling@apple.com>
There should only be one way to get the system memory size.
<https://webkit.org/b/144081>
Reviewed by Antti Koivisto.
Merge all the logic from other RAM size fetcher helpers into WTF's.
Darwin ports now use host_info() instead of sysctl(), since that was the more common way
of doing this.
Also bumped the fallback answer from 128 MB to 512 MB to bring it closer to today's hardware.
Finally, the number is rounded up to the next multiple of 128 MB, to avoid misunderstandings
on some systems where the number returned by the kernel is slightly lower than the marketing
number. Removed the "fudging" that was used in some places, since this fixes that cleanly.
* wtf/RAMSize.cpp:
(WTF::computeRAMSize):
2015-04-22 Darin Adler <darin@apple.com>
Eliminate remaining uses of OwnPtr and PassOwnPtr in WebCore outside the editing and platform directories
https://bugs.webkit.org/show_bug.cgi?id=143949
Reviewed by Andreas Kling.
* wtf/MathExtras.h:
(wtf_ceil): Deleted. This was a workaround for a bug that was introduced in Leopard and
fixed in Snow Leopard <rdar://problem/6286405>, so we don't need the workaround any more.
2015-04-22 Alexey Proskuryakov <ap@apple.com>
[Mac] In nightlies and local builds, WebKit services can get terminated under memory pressure
https://bugs.webkit.org/show_bug.cgi?id=144052
rdar://problem/19754404
Build fix. Landing a forward declaration that should have been part of the original patch.
* wtf/spi/darwin/XPCSPI.h:
2015-04-21 Chris Dumez <cdumez@apple.com>
Make Vector(const Vector<T, otherCapacity, otherOverflowBehaviour>&) constructor explicit
https://bugs.webkit.org/show_bug.cgi?id=143970
Reviewed by Darin Adler.
Make Vector(const Vector<T, otherCapacity, otherOverflowBehaviour>&)
constructor explicit as it copies the vector and it is easy to call it
by mistake.
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
* wtf/Vector.h:
2015-04-21 Darin Adler <darin@apple.com>
Remove some stray uses of OwnPtr and PassOwnPtr in WTF (outside of the template definitions and traits)
https://bugs.webkit.org/show_bug.cgi?id=143944
Reviewed by Andreas Kling.
* wtf/FilePrintStream.h: Removed unneeded include.
* wtf/HashTable.h: Fixed class template name in comment.
* wtf/HashTraits.h: Removed unneeded forward declaration.
* wtf/ListHashSet.h: Removed unneeded includes.
* wtf/ThreadingWin.cpp: Removed unneeded includes.
(WTF::wtfThreadEntryPoint): Changed code to use unique_ptr.
(WTF::createThreadInternal): Changed code to use make_unique and release.
* wtf/efl/RunLoopEfl.cpp: Removed unneeded includes.
2015-04-19 Darin Adler <darin@apple.com>
Update RefPtr documentation and deprecation
https://bugs.webkit.org/show_bug.cgi?id=143936
Reviewed by Andreas Kling.
* WTF.vcxproj/WTF.vcxproj: Removed PassRef.h
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
2015-04-17 Alexey Proskuryakov <ap@apple.com>
Use ASan poisoning to taint moved-out-of Refs
https://bugs.webkit.org/show_bug.cgi?id=143894
rdar://problem/19443723
Reviewed by Darin Adler.
* wtf/Ref.h: (WTF::Ref::~Ref):
2015-04-17 Alexey Proskuryakov <ap@apple.com>
Remove unused BoundsCheckedPointer
https://bugs.webkit.org/show_bug.cgi?id=143896
Reviewed by Geoffrey Garen.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/BoundsCheckedPointer.h: Removed.
* wtf/CMakeLists.txt:
2015-04-16 Yusuke Suzuki <utatane.tea@gmail.com>
[ES6] Implement Symbol.for and Symbol.keyFor
https://bugs.webkit.org/show_bug.cgi?id=143404
Reviewed by Geoffrey Garen.
When we register symbolized StringImpl* into SymbolRegistry, symbolized StringImpl* is aware of that.
And when destructing it, it removes its reference from SymbolRegistry as if atomic StringImpl do so with AtomicStringTable.
While AtomicStringTable (in WebCore case) exists in thread local storage,
SymbolRegistry exists per VM and StringImpl* has a reference to the registered SymbolRegistry.
Since StringImpl has isSymbol etc. members, it's class is aware of Symbol use cases.
So introduce SymbolRegistry in WTF layers as if AtomicStringTable.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::addSlowCase):
(WTF::AtomicString::findSlowCase):
(WTF::AtomicString::findInternal):
(WTF::AtomicString::find): Deleted.
* wtf/text/AtomicString.h:
(WTF::AtomicString::find):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createSymbolEmpty):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::extractFoldedStringInSymbol):
(WTF::StringImpl::symbolRegistry):
(WTF::StringImpl::createSymbolEmpty): Deleted.
* wtf/text/SymbolRegistry.cpp: Copied from Source/JavaScriptCore/runtime/SymbolConstructor.h.
(WTF::SymbolRegistry::~SymbolRegistry):
(WTF::SymbolRegistry::symbolForKey):
(WTF::SymbolRegistry::keyForSymbol):
(WTF::SymbolRegistry::remove):
* wtf/text/SymbolRegistry.h: Added.
(WTF::SymbolRegistryKey::hash):
(WTF::SymbolRegistryKey::impl):
(WTF::SymbolRegistryKey::isHashTableDeletedValue):
(WTF::SymbolRegistryKey::hashTableDeletedValue):
(WTF::DefaultHash<SymbolRegistryKey>::Hash::hash):
(WTF::DefaultHash<SymbolRegistryKey>::Hash::equal):
(WTF::HashTraits<SymbolRegistryKey>::isEmptyValue):
(WTF::SymbolRegistryKey::SymbolRegistryKey):
2015-04-16 Antti Koivisto <antti@apple.com>
Use CommonCrypto for SHA1 and MD5
https://bugs.webkit.org/show_bug.cgi?id=143826
Reviewed by Anders Carlsson.
CommonCrypto SHA1 implementation is ~4x faster than the naive WTF one. Use it when available.
These are covered by existing API tests.
* wtf/MD5.cpp:
(WTF::MD5::MD5):
(WTF::MD5::addBytes):
(WTF::MD5::checksum):
* wtf/MD5.h:
* wtf/SHA1.cpp:
(WTF::SHA1::SHA1):
(WTF::SHA1::addBytes):
(WTF::SHA1::computeHash):
Remove the side effect where computeHash resets the state. No one relies on it.
(WTF::SHA1::hexDigest):
(WTF::SHA1::computeHexDigest):
* wtf/SHA1.h:
2015-04-16 Csaba Osztrogonác <ossy@webkit.org>
Remove the unnecessary WTF_CHANGES define
https://bugs.webkit.org/show_bug.cgi?id=143825
Reviewed by Andreas Kling.
* config.h:
2015-04-15 Руслан Ижбулатов <lrn1986@gmail.com>
Harmonize binary semaphore ifdefs
They should be either OS(WINDOWS) (in which case we'd need
BinarySemaphoreWin.cpp, which is not shipped by WebKitGTK)
or PLATFORM(WIN) (in which case Mutex/ThreadCondition-based
implementation is used).
This fixes errors like:
CXX Source/WTF/wtf/threads/libWTF_la-BinarySemaphore.lo
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp: In constructor 'WTF::BinarySemaphore::BinarySemaphore()':
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:34:7: error: class 'WTF::BinarySemaphore' does not have any field named 'm_isSet'
: m_isSet(false)
^
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp: In member function 'void WTF::BinarySemaphore::signal()':
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:44:24: error: 'm_mutex' was not declared in this scope
MutexLocker locker(m_mutex);
^
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:46:5: error: 'm_isSet' was not declared in this scope
m_isSet = true;
^
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:47:5: error: 'm_condition' was not declared in this scope
m_condition.signal();
^
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp: In member function 'bool WTF::BinarySemaphore::wait(double)':
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:52:24: error: 'm_mutex' was not declared in this scope
MutexLocker locker(m_mutex);
^
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:55:13: error: 'm_isSet' was not declared in this scope
while (!m_isSet) {
^
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:56:21: error: 'm_condition' was not declared in this scope
timedOut = !m_condition.timedWait(m_mutex, absoluteTime);
^
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:62:5: error: 'm_isSet' was not declared in this scope
m_isSet = false;
^
GNUmakefile:52762: recipe for target 'Source/WTF/wtf/threads/libWTF_la-BinarySemaphore.lo' failed
[W32] Inconsistent ifdefs in BinarySemaphore.h and BinarySemaphore.cpp
https://bugs.webkit.org/show_bug.cgi?id=143756
Reviewed by Darin Adler.
* wtf/threads/BinarySemaphore.h:
2015-04-12 Michael Catanzaro <mcatanzaro@igalia.com>
Fix -Wparentheses warning with GCC 5 in SaturatedArithmetic.h
https://bugs.webkit.org/show_bug.cgi?id=143457
Reviewed by Benjamin Poulain.
Tested by WTF.SaturatedArithmeticAddition and WTF.SaturatedArithmeticSubtraction.
* wtf/SaturatedArithmetic.h:
(signedAddOverflows): Use && instead of & to avoid triggering -Wparentheses in newer
versions of GCC and Clang, and to improve the clarity of the function.
(signedSubtractOverflows): Changed correspondingly, although there was no warning here.
2015-04-08 Sam Weinig <sam@webkit.org>
Allow LaunchServices to handle URLs on link navigations
<rdar://problem/19446826>
https://bugs.webkit.org/show_bug.cgi?id=143544
Reviewed by Anders Carlsson.
* wtf/Platform.h:
Add HAVE macro for this functionality.
2015-04-09 Andy Estes <aestes@apple.com>
[Cocoa] Add a HAVE(AVKIT) and use it
https://bugs.webkit.org/show_bug.cgi?id=143593
Reviewed by David Kilzer.
* wtf/Platform.h: Defined HAVE(AVKIT) to be true on all Cocoa platforms except Watch OS.
2015-04-09 Andy Estes <aestes@apple.com>
[Content Filtering] Add a HAVE(PARENTAL_CONTROLS) and use it
https://bugs.webkit.org/show_bug.cgi?id=143559
Reviewed by David Kilzer.
Added PLATFORM(WATCHOS). Used PLATFORM() since Watch OS is just a variant of OS(IOS).
Defined HAVE(PARENTAL_CONTROLS) to be true on all Cocoa platforms except Watch OS.
* wtf/Platform.h:
2015-04-08 Alex Christensen <achristensen@webkit.org> and Patrick Gansterer <paroga@webkit.org>
Add CMake build system for WinCairo port.
https://bugs.webkit.org/show_bug.cgi?id=115944
Reviewed by Chris Dumez.
* wtf/FeatureDefines.h:
* wtf/PlatformWin.cmake:
2015-04-05 Antti Koivisto <antti@apple.com>
Bloom filter should support longer hashes
https://bugs.webkit.org/show_bug.cgi?id=143419
Reviewed by Dan Bernstein.
It currently supports 'unsigned' hash only which is inconvenient and doesn't have enough independent bits for larger filters.
Support arbitrarily sized hashes of type std::array<uint8_t, hashSize> (like SHA1::Digest and MD5::Digest).
* wtf/BloomFilter.h:
(WTF::BloomFilter<keyBits>::keysFromHash):
(WTF::BloomFilter<keyBits>::mayContain):
(WTF::BloomFilter<keyBits>::add):
2015-04-03 Antti Koivisto <antti@apple.com>
Add non-counting Bloom filter implementation
https://bugs.webkit.org/show_bug.cgi?id=143366
Reviewed by Sam Weinig.
Add a traditional single-bit-per-bucket Bloom filter in addition to the existing counting implementation.
- rename BloomFilter -> CountingBloomFilter.
- add a new basic BloomFilter type.
- update some terminology to match http://en.wikipedia.org/wiki/Bloom_filter and modernize the code a bit.
- add API tests.
* wtf/BloomFilter.h:
(WTF::BloomFilter::BloomFilter):
(WTF::BloomFilter::add):
Also support merging.
(WTF::BloomFilter::mayContain):
(WTF::BloomFilter::arrayIndex):
(WTF::BloomFilter::bitMask):
(WTF::BloomFilter<keyBits>::mayContain):
(WTF::BloomFilter<keyBits>::add):
(WTF::BloomFilter<keyBits>::isBitSet):
(WTF::BloomFilter<keyBits>::setBit):
(WTF::BloomFilter<keyBits>::clear):
(WTF::CountingBloomFilter::CountingBloomFilter):
(WTF::CountingBloomFilter::mayContain):
(WTF::CountingBloomFilter::firstBucket):
(WTF::CountingBloomFilter::secondBucket):
(WTF::CountingBloomFilter<keyBits>::add):
(WTF::CountingBloomFilter<keyBits>::remove):
(WTF::CountingBloomFilter<keyBits>::clear):
(WTF::CountingBloomFilter<keyBits>::likelyEmpty):
(WTF::CountingBloomFilter<keyBits>::isClear):
(WTF::BloomFilter::maximumCount): Deleted.
(WTF::BloomFilter::firstSlot): Deleted.
(WTF::BloomFilter::secondSlot): Deleted.
(WTF::BloomFilter<keyBits>::remove): Deleted.
(WTF::BloomFilter<keyBits>::likelyEmpty): Deleted.
(WTF::BloomFilter<keyBits>::isClear): Deleted.
015-04-01 Antti Koivisto <antti@apple.com>
Value assignment operator of Optional should be stricter
https://bugs.webkit.org/show_bug.cgi?id=143303
Reviewed by Andreas Kling.
struct Foo { mutable Optional<std::chrono::seconds> s; };
Foo foo, foo2;
foo = foo2;
doesn't build because it tries to use wrong operator=.
* wtf/Optional.h:
Add enable_if test similar to std::experimental::optional.
2015-04-01 Alex Christensen <achristensen@webkit.org>
Progress towards CMake on Windows and Mac.
https://bugs.webkit.org/show_bug.cgi?id=143293
Reviewed by Filip Pizlo.
* wtf/CMakeLists.txt:
Don't use bmalloc on Windows yet.
* wtf/FeatureDefines.h:
Temporarily disabled WebGL on Windows CMake builds.
* wtf/PlatformMac.cmake:
Tell open source builders where to find unicode headers.
2015-03-31 Alexey Proskuryakov <ap@apple.com>
Fix the build after <http://trac.webkit.org/changeset/182205>.
* wtf/text/StringImpl.h: (WTF::StringImpl::extractFoldedStringInSymbol):
A function cannot be both exported and inline.
2015-03-31 Yusuke Suzuki <utatane.tea@gmail.com>
Clean up Identifier factories to clarify the meaning of StringImpl*
https://bugs.webkit.org/show_bug.cgi?id=143146
Reviewed by Filip Pizlo.
Introduce StringKind into `StringImpl`. There's 3 kinds
1. StringNormal (non-atomic, non-symbol)
2. StringAtomic (atomic, non-symbol)
3. StringSymbol (non-atomic, symbol)
They are mutually exclusive.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::addSlowCase):
(WTF::AtomicString::findSlowCase):
When registering a string into AtomicStringTable,
it should not be a symbol string
because symbol and atomic types are mutually exclusive.
When a symbol string comes, we extract an owner string
from a symbol string by using `StringImpl::extractFoldedStringInSymbol()`.
It always succeeds because a symbol (non empty) string
is always BufferSubstring and has an owner string.
Empty symbol string doesn't have an owner string.
This case is filtered by `!string.length()` guard.
* wtf/text/AtomicString.h:
(WTF::AtomicString::add):
(WTF::AtomicString::addWithStringTableProvider):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createUnique): Deleted.
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createSymbolEmpty):
(WTF::StringImpl::flagIsAtomic):
(WTF::StringImpl::flagIsSymbol):
(WTF::StringImpl::maskStringKind):
(WTF::StringImpl::stringKind):
(WTF::StringImpl::isSymbol):
(WTF::StringImpl::isAtomic):
(WTF::StringImpl::setIsAtomic):
(WTF::StringImpl::extractFoldedStringInSymbol):
(WTF::StringImpl::createUniqueEmpty): Deleted.
(WTF::StringImpl::flagIsUnique): Deleted.
(WTF::StringImpl::isUnique): Deleted.
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::hashAndFlagsForSymbol):
(WTF::StringImpl::hashAndFlagsForUnique): Deleted.
2015-03-30 Gyuyoung Kim <gyuyoung.kim@samsung.com>
[CMake][EFL] Remove redundant library link and include path
https://bugs.webkit.org/show_bug.cgi?id=143221
Reviewed by Csaba Osztrogonác.
* wtf/PlatformEfl.cmake: Remove unnecessary library link and include path.
2015-03-27 Myles C. Maxfield <mmaxfield@apple.com>
Support building WTF on Windows without Cygwin
https://bugs.webkit.org/show_bug.cgi?id=143084
Reviewed by Brent Fulgham.
Windows doesn't have "touch".
* WTF.vcxproj/WTFGenerated.make:
2015-03-26 Alex Christensen <achristensen@webkit.org>
Progress towards CMake on Mac.
https://bugs.webkit.org/show_bug.cgi?id=143112
Reviewed by Chris Dumez.
* wtf/PlatformMac.cmake:
2015-03-25 Filip Pizlo <fpizlo@apple.com>
Unreviewed, we have edited this file in 2015.
* wtf/Platform.h:
2015-03-25 Filip Pizlo <fpizlo@apple.com>
Heap variables shouldn't end up in the stack frame
https://bugs.webkit.org/show_bug.cgi?id=141174
Reviewed by Geoffrey Garen.
* wtf/FastBitVector.h:
(WTF::FastBitVector::resize): Small change: don't resize if you don't have to resize.
2015-03-25 Filip Pizlo <fpizlo@apple.com>
Change Atomic methods from using the_wrong_naming_conventions to using theRightNamingConventions. Also make seq_cst the default.
Rubber stamped by Geoffrey Garen.
* wtf/Atomics.h:
(WTF::Atomic::load):
(WTF::Atomic::store):
(WTF::Atomic::compareExchangeWeak):
(WTF::Atomic::compareExchangeStrong):
(WTF::Atomic::compare_exchange_weak): Deleted.
(WTF::Atomic::compare_exchange_strong): Deleted.
* wtf/ByteSpinLock.h:
(WTF::ByteSpinLock::lock):
* wtf/SpinLock.h:
(WTF::SpinLockBase::lock):
2015-03-24 Beth Dakin <bdakin@apple.com>
Add events related to force click gesture
https://bugs.webkit.org/show_bug.cgi?id=142836
-and corresponding-
rdar://problem/20210239
Reviewed by Dean Jackson.
New enable flag for the events.
* wtf/FeatureDefines.h:
2015-03-23 Filip Pizlo <fpizlo@apple.com>
JSC should have a low-cost asynchronous disassembler
https://bugs.webkit.org/show_bug.cgi?id=142997
Reviewed by Mark Lam.
* wtf/StringPrintStream.h:
2015-03-22 Benjamin Poulain <benjamin@webkit.org>
CSS Selectors: fix attribute case-insensitive matching of Contain and List
https://bugs.webkit.org/show_bug.cgi?id=142932
Reviewed by Darin Adler.
Add some utility functions to the string classes to find substrings
using ASCII case-insensitive comparisons.
* wtf/text/AtomicString.h:
(WTF::AtomicString::contains):
Add the light version that only lock one register.
(WTF::AtomicString::containsIgnoringASCIICase):
(WTF::AtomicString::findIgnoringASCIICase):
* wtf/text/StringCommon.h:
(WTF::findIgnoringASCIICase):
This is the common implementation used by StringView and StringImpl.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::findIgnoringASCIICase):
* wtf/text/StringImpl.h:
* wtf/text/StringView.cpp:
(WTF::StringView::containsIgnoringASCIICase):
(WTF::StringView::findIgnoringASCIICase):
* wtf/text/StringView.h:
* wtf/text/WTFString.h:
(WTF::String::findIgnoringASCIICase):
(WTF::String::contains):
(WTF::String::containsIgnoringASCIICase):
2015-03-19 Andreas Kling <akling@apple.com>
DFGAllocator should use bmalloc's aligned allocator.
<https://webkit.org/b/142871>
Reviewed by Geoffrey Garen.
Remove PageAllocationAligned since it has no more clients.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PageAllocationAligned.cpp: Removed.
* wtf/PageAllocationAligned.h: Removed.
2015-03-18 Dhi Aurrahman <diorahman@rockybars.com>
Fix StringView misplaced implementations after r181525 and r181558
https://bugs.webkit.org/show_bug.cgi?id=142772
Reviewed by Darin Adler.
Fix misplaced implementations in StringView::startsWithIgnoringASCIICase and
StringView::endsWith.
Add some tests in [1] to cover the StringView::startsWith,
StringView::startsWithIgnoringASCIICase, StringView::endsWith and
StringView::endsWithIgnoringASCIICase implementations.
[1] Tools/TestWebKitAPI/Tests/WTF/StringView.cpp.
* wtf/text/StringView.cpp:
(WTF::StringView::startsWithIgnoringASCIICase):
(WTF::StringView::endsWith):
(WTF::StringView::endsWithIgnoringASCIICase):
2015-03-17 Michael Saboff <msaboff@apple.com>
Windows X86-64 should use the fixed executable allocator
https://bugs.webkit.org/show_bug.cgi?id=142749
Reviewed by Filip Pizlo.
Set ENABLE_EXECUTABLE_ALLOCATOR_FIXED for Windows.
Needed to export MetaAllocator::currentStatistics() for use in JavaScriptCore.
* wtf/MetaAllocator.h:
* wtf/Platform.h:
2015-03-16 Ryosuke Niwa <rniwa@webkit.org>
Enable ES6 classes by default
https://bugs.webkit.org/show_bug.cgi?id=142774
Reviewed by Gavin Barraclough.
* wtf/FeatureDefines.h:
2015-03-16 Csaba Osztrogonác <ossy@webkit.org>
[ARM] Enable generating idiv instructions if it is supported
https://bugs.webkit.org/show_bug.cgi?id=142725
Reviewed by Michael Saboff.
* wtf/Platform.h: Set HAVE_ARM_IDIV_INSTRUCTIONS based on GCC macro too.
2015-03-16 Benjamin Poulain <benjamin@webkit.org>
Fix StringView after r181525
Unreviewed.
Fix 2 silly mistakes I made in r181525.
* wtf/text/StringView.cpp:
(WTF::StringView::startsWith):
(WTF::StringView::startsWithIgnoringASCIICase):
(WTF::StringView::endsWith):
(WTF::StringView::endsWithIgnoringASCIICase):
The implementation was inside the #ifdef.
* wtf/text/StringView.h:
The symbols were not exported.
2015-03-16 Max Stepin <maxstepin@gmail.com>
Add APNG support
https://bugs.webkit.org/show_bug.cgi?id=17022
Reviewed by Carlos Garcia Campos.
* wtf/FeatureDefines.h:
2015-03-15 Benjamin Poulain <benjamin@webkit.org>
CSS: fix the case-insensitive matching of the attribute selectors Begin, End and Hyphen
https://bugs.webkit.org/show_bug.cgi?id=142715
Reviewed by Brent Fulgham.
Add the necessary infrastructure to test startsWith() and endsWith() with
ASCII case-insentive comparisons.
* wtf/text/AtomicString.h:
(WTF::AtomicString::startsWith):
(WTF::AtomicString::startsWithIgnoringASCIICase):
(WTF::AtomicString::endsWith):
(WTF::AtomicString::endsWithIgnoringASCIICase):
* wtf/text/StringCommon.h:
(WTF::loadUnaligned):
(WTF::equal):
I moved the low level equal() code from StringImpl to StringCommon
since it is used by both StringImpl and StringView.
(WTF::equalCommon):
(WTF::equalIgnoringASCIICaseCommon):
Ideally we should drop the "Common" part of the name but StringView
wants this inline for some reason. I prefered keeping the current behavior
since I don't know how StringView's matching performance was evaluated.
(WTF::startsWith):
(WTF::startsWithIgnoringASCIICase):
(WTF::endsWith):
(WTF::endsWithIgnoringASCIICase):
Make all that code shared between StringView and Stringimpl.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::startsWith):
(WTF::StringImpl::startsWithIgnoringASCIICase):
(WTF::StringImpl::endsWith):
(WTF::StringImpl::endsWithIgnoringASCIICase):
(WTF::equal):
(WTF::stringImplContentEqual): Deleted.
* wtf/text/StringImpl.h:
(WTF::loadUnaligned): Deleted.
(WTF::equal): Deleted.
* wtf/text/StringView.cpp:
(WTF::StringView::startsWith):
(WTF::StringView::startsWithIgnoringASCIICase):
(WTF::StringView::endsWith):
(WTF::StringView::endsWithIgnoringASCIICase):
* wtf/text/StringView.h:
Since those are new, we can safely make them out-of-line and
evaluate the inlining impact as needed.
* wtf/text/WTFString.h:
(WTF::String::startsWithIgnoringASCIICase):
(WTF::String::endsWith):
(WTF::String::endsWithIgnoringASCIICase):
2015-03-15 Benjamin Poulain <bpoulain@apple.com>
Change the exact attribute matching to be ASCII case-insensitive
https://bugs.webkit.org/show_bug.cgi?id=142609
Reviewed by Darin Adler.
Add support for ASCII case insensitive comparisons to all the string
classes.
The new file StringCommon.h has the common algorithm to avoid repeating
the same code with different types.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* wtf/ASCIICType.h:
(WTF::toASCIILower):
* wtf/CMakeLists.txt:
* wtf/text/AtomicString.h:
(WTF::equalIgnoringASCIICase):
* wtf/text/StringCommon.h: Added.
(WTF::equalIgnoringASCIICase):
(WTF::equalIgnoringASCIICaseCommon):
* wtf/text/StringImpl.cpp:
(WTF::equalIgnoringASCIICase):
(WTF::equalIgnoringASCIICaseNonNull):
(WTF::StringImpl::utf8Impl):
(WTF::StringImpl::defaultWritingDirection): Deleted.
(WTF::StringImpl::adopt): Deleted.
(WTF::StringImpl::sizeInBytes): Deleted.
(WTF::putUTF8Triple): Deleted.
(WTF::StringImpl::utf8): Deleted.
* wtf/text/StringImpl.h:
(WTF::StringImpl::isSubString): Deleted.
(WTF::find): Deleted.
2015-03-14 Michael Saboff <msaboff@apple.com>
Disable Yarr JIT for ARMv7k
https://bugs.webkit.org/show_bug.cgi?id=142645
Rubber stamped by Geoffrey Garen.
Changed the setting of ENABLE_YARR_JIT to be predicated on ENABLED_JIT.
* wtf/Platform.h:
2015-03-14 Michael Saboff <msaboff@apple.com>
ES6: Add binary and octal literal support
https://bugs.webkit.org/show_bug.cgi?id=142681
Reviewed by Ryosuke Niwa.
* wtf/ASCIICType.h:
(WTF::isASCIIBinaryDigit): New support function.
(WTF::isASCIIOctalDigit): Updated to use logical and (&&) instead of binary and (&).
2015-03-13 Mark Lam <mark.lam@apple.com>
Replace TCSpinLock with a new WTF::SpinLock based on WTF::Atomic.
<https://webkit.org/b/142674>
Reviewed by Filip Pizlo.
We no longer use TCMalloc in our code, and we now have C++11. This replaces the
TCMalloc_SpinLock with a new WTF::SpinLock based on WTF::Atomic (which is a
wrapper around std::atomic).
Note that there is a StaticSpinLock and a SpinLock:
1. StaticSpinLock is an alias for SpinLockBase, and its initialization relies on
static / global std:atomic being automatically initialized to 0 at compile time.
Hence, StaticSpinLock should only be used for statics / globals (including
static members of classes / structs).
2. SpinLock is derived from SpinLockBase, and adds a default constructor to
initialize its internal atomic value to 0. Because SpinLock has a constructor,
it cannot be used for statics / globals. Objects that want to embed a spin
lock as an instance field should use SpinLock so that it is initialized properly.
std::atomic will not automatically initialize instance fields to 0. Hence,
StaticSpinLock will not work correctly as instance fields of a class / struct.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::~MetaAllocator):
(WTF::MetaAllocator::MetaAllocator):
* wtf/MetaAllocator.h:
* wtf/SpinLock.h: Added.
(WTF::SpinLockBase::lock):
(WTF::SpinLockBase::unlock):
(WTF::SpinLockBase::isLocked):
(WTF::SpinLockBase::slowLock):
(WTF::SpinLock::SpinLock):
* wtf/TCSpinLock.h: Removed.
* wtf/text/AtomicString.cpp:
2015-03-13 Mark Lam <mark.lam@apple.com>
Introduce WTF::Atomic to wrap std::atomic for a friendlier CAS.
<https://webkit.org/b/142661>
Reviewed by Filip Pizlo.
The CAS functions provided by std::atomic takes a reference to the expected
value and modifies it if the CAS fails. However, in a lot of our CAS usage,
we don't want the expected value to change. The solution to this is to
provide a WTF::Atomic struct that wraps std::atomic, and provide CAS
methods that won't alter the expected value if the CAS fails.
The method names in WTF::Atomic are chosen to be identical to those
in std::atomic so that WTF::Atomic can be a simple drop in replacement
for std::atomic.
Also changed ByteSpinLock to use WTF::Atomic instead of std::atomic.
* wtf/Atomics.h:
(WTF::Atomic::load):
(WTF::Atomic::store):
(WTF::Atomic::compare_exchange_weak):
(WTF::Atomic::compare_exchange_strong):
* wtf/ByteSpinLock.h:
(WTF::ByteSpinLock::ByteSpinLock):
(WTF::ByteSpinLock::lock):
2015-03-12 Filip Pizlo <fpizlo@apple.com>
Bytecode liveness analysis should have more lambdas and fewer sets
https://bugs.webkit.org/show_bug.cgi?id=142647
Reviewed by Mark Lam.
Add a method for iterating each set bit in a FastBitVector. Uses a functor as a callback since
this allows for a more efficient algorithm.
* wtf/FastBitVector.h:
(WTF::FastBitVector::forEachSetBit):
2015-03-12 Michael Saboff <msaboff@apple.com>
Disable Yarr JIT for ARMv7k
https://bugs.webkit.org/show_bug.cgi?id=142645
Reviewed by Oliver Hunt.
Make the setting of ENABLE_YARR_JIT match ENABLE_JIT for ARMv7k.
* wtf/Platform.h:
2015-03-12 Mark Lam <mark.lam@apple.com>
Change WTF::ByteSpinLock to use std::atomic.
<https://webkit.org/b/142644>
Reviewed by Filip Pizlo.
* wtf/ByteSpinLock.h:
(WTF::ByteSpinLock::ByteSpinLock):
(WTF::ByteSpinLock::lock):
(WTF::ByteSpinLock::unlock):
(WTF::ByteSpinLock::isHeld):
2015-03-12 Csaba Osztrogonác <ossy@webkit.org>
[ARM][Linux] GC sometimes stuck in an infinite loop if parallel GC is enabled
https://bugs.webkit.org/show_bug.cgi?id=141290
Reviewed by Carlos Garcia Campos.
* wtf/Platform.h: Enable parallel GC after r181319.
2015-03-11 Myles C. Maxfield <mmaxfield@apple.com>
Use out-of-band messaging for RenderBox::firstLineBaseline() and RenderBox::inlineBlockBaseline()
https://bugs.webkit.org/show_bug.cgi?id=142569
Reviewed by David Hyatt.
Provide a callback to Optional::valueOrCompute() which is evaluated only if necessary.
* wtf/Optional.h:
(WTF::Optional::valueOrCompute):
2015-03-10 Brent Fulgham <bfulgham@apple.com>
[Win] 17 different JSC tests started to fail in DST
https://bugs.webkit.org/show_bug.cgi?id=142531
Reviewed by Chris Dumez.
The stock 'GetTimeZoneInformation' call does not always match the actual Daylight
Savings calendar. This results in a period of time when these tests fail.
If available, we should take advantage of the new 'GetTimeZoneInformationForYear',
which accesses a dynamic calendar of DST dates, which is presumbably updated by
Microsoft from year-to-year.
* wtf/DateMath.cpp:
(WTF::timeZoneInformationForYearFunction): New function to conditionally access
some Vista (and newer) functionality.
(WTF::calculateUTCOffset): Call new function (if available) to calculate proper UTC
time offset.
2015-03-10 Alex Christensen <achristensen@webkit.org>
Use unsigned for HashSet size.
https://bugs.webkit.org/show_bug.cgi?id=142518
Reviewed by Benjamin Poulain.
* wtf/HashCountedSet.h:
(WTF::Traits>::size):
(WTF::Traits>::capacity):
* wtf/HashMap.h:
(WTF::X>::size):
(WTF::X>::capacity):
* wtf/HashSet.h:
(WTF::V>::size):
(WTF::V>::capacity):
* wtf/HashTable.h:
(WTF::HashTable::Stats::recordCollisionAtCount):
(WTF::HashTable::Stats::dumpStats):
(WTF::HashTable::size):
(WTF::HashTable::capacity):
(WTF::KeyTraits>::deallocateTable):
(WTF::KeyTraits>::checkTableConsistencyExceptSize):
* wtf/HashTraits.h:
* wtf/ListHashSet.h:
(WTF::U>::size):
(WTF::U>::capacity):
2015-03-10 Said Abou-Hallawa <sabouhallawa@apple.com>
Remove PassRefPtr from svg/properties classes.
https://bugs.webkit.org/show_bug.cgi?id=142063.
Reviewed by Darin Adler.
* wtf/Ref.h:
(WTF::static_reference_cast): Add a stat_cast function to Ref<>.
2015-03-10 Mark Lam <mark.lam@apple.com>
[Win] JSC Build Warnings Need to be Resolved.
<https://webkit.org/b/142366>
Reviewed by Brent Fulgham.
* wtf/Compiler.h:
- MSVC also does not have the CONSIDERS_UNREACHABLE_CODE quirk.
2015-03-10 Geoffrey Garen <ggaren@apple.com>
bmalloc: tryFastMalloc shouldn't crash
https://bugs.webkit.org/show_bug.cgi?id=142443
Reviewed by Sam Weinig.
Rolling back in r181307 with a check for whether bmalloc is enabled, to
avoid crashes when running with ASan and GuardMalloc.
* wtf/FastMalloc.cpp:
(WTF::fastMalloc):
(WTF::fastRealloc):
(WTF::fastAlignedMalloc):
(WTF::tryFastMalloc):
(WTF::tryFastRealloc): Deleted.
* wtf/FastMalloc.h:
2015-03-10 Michael Catanzaro <mcatanzaro@igalia.com>
GCC: CRASH() should be annotated with NORETURN
https://bugs.webkit.org/show_bug.cgi?id=142524
Reviewed by Anders Carlsson.
Add COMPILER(GCC) to #ifdefs that already exist for Clang.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2015-03-09 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r181307.
https://bugs.webkit.org/show_bug.cgi?id=142525
Broke ASan tests (Requested by ap on #webkit).
Reverted changeset:
"bmalloc: tryFastMalloc shouldn't crash"
https://bugs.webkit.org/show_bug.cgi?id=142443
http://trac.webkit.org/changeset/181307
2015-03-09 Geoffrey Garen <ggaren@apple.com>
bmalloc: tryFastMalloc shouldn't crash
https://bugs.webkit.org/show_bug.cgi?id=142443
Reviewed by Darin Adler.
* wtf/FastMalloc.cpp:
(WTF::fastMalloc):
(WTF::fastRealloc):
(WTF::fastAlignedMalloc): Don't check for null. bmalloc automatically
crashes on allocation failure, and we'd rather not pay for an extra check.
(WTF::tryFastMalloc): Added an opt-out API to return null rather than
crashing, since some clients need this.
(WTF::tryFastRealloc): Deleted. Unused.
* wtf/FastMalloc.h:
2015-03-09 Mark Lam <mark.lam@apple.com>
8-bit version of weakCompareAndSwap() can cause an infinite loop.
https://webkit.org/b/142513>
Reviewed by Filip Pizlo.
Presently, Bitmap::concurrentTestAndSet() uses the 8-bit version of
weakCompareAndSwap() (which compares and swaps an uint8_t value).
Bitmap::concurrentTestAndSet() has a loop that checks if a bit in the
byte of interest has been set. If not, it will call the 8-bit CAS
function to set the bit.
Under the covers, for ARM, the 8-bit CAS function actually works with a
32-bit CAS. The 8-bit CAS will first fetch the 32-bit value in memory
that should contain the 8-bit value, and check if it contains the
expected byte. If the value in memory doesn't have the expected byte,
it will return early to its caller. The expectation is that the caller
will reload the byte from memory and call the 8-bit CAS again.
Unfortunately, this code path that returns early does not have a
compiler fence. Without a compiler fence, the C++ compiler can
optimize away the reloading of the expected byte value, leaving it
unchanged. As a result, we'll have a infinite loop here that checks a
value that will never change, and the loop will not terminate until the
value changes.
The fix is to eliminate the early return check in the 8-bit CAS, and
have it always call down to the 32-bit CAS. The 32-bit CAS has a
compiler fence which will prevent this issue.
* wtf/Atomics.h:
(WTF::weakCompareAndSwap):
2015-03-09 Martin Robinson <mrobinson@igalia.com>
[EFL] Move DispatchQueue to WTF
https://bugs.webkit.org/show_bug.cgi?id=142493
Reviewed by Csaba Osztrogonác.
* wtf/PlatformEfl.cmake: Add DispatchQueue to the source list.
* wtf/efl/DispatchQueueEfl.cpp: Renamed from Source/WebKit2/Platform/efl/DispatchQueueEfl.cpp.
* wtf/efl/DispatchQueueEfl.h: Renamed from Source/WebKit2/Platform/efl/DispatchQueueEfl.h.
* wtf/efl/DispatchQueueWorkItemEfl.h: Renamed from Source/WebKit2/Platform/efl/DispatchQueueWorkItemEfl.h.
2015-03-08 Brent Fulgham <bfulgham@apple.com>
[Win] WTF::WorkQueue does not balance ref/deref properly
https://bugs.webkit.org/show_bug.cgi?id=142471
Reviewed by Antti Koivisto.
Make sure we deref the count when we execute a function in the
WorkQueue.
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::performWorkOnRegisteredWorkThread):
2015-03-07 Brent Fulgham <bfulgham@apple.com>
[Win] Revive WTF::WorkQueue on Windows
https://bugs.webkit.org/show_bug.cgi?id=142432
Reviewed by Darin Adler.
Revive the Windows implementation of WTF::WorkQueue.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* wtf/WorkQueue.h:
* wtf/win/WorkItemWin.cpp: Added.
* wtf/win/WorkItemWin.h: Added.
* wtf/win/WorkQueueWin.cpp: Added.
2015-03-06 Geoffrey Garen <ggaren@apple.com>
Fix crashes seen on the the Windows buildbots after my last patch.
Unreviewed.
* wtf/FastMalloc.cpp:
(WTF::fastAlignedMalloc): Let's pass these arguments in the right order.
2015-03-06 Myles C. Maxfield <mmaxfield@apple.com>
Crash in -[WebCascadeList objectAtIndex:] + 195
https://bugs.webkit.org/show_bug.cgi?id=141274
Reviewed by David Kilzer.
* wtf/WeakPtr.h:
(WTF::WeakPtrFactory::createWeakPtr): WebCascadeList uses a const FontCascade,
and it calls createWeakPtr() on it. Therefore, createWeakPtr has to be marked
const.
(WTF::WeakPtrFactory::operator=): Removed because it was broken and had no
callers
2015-03-06 Simon Fraser <simon.fraser@apple.com>
Allow tree dumping functions to be used in release builds by switching a flag
https://bugs.webkit.org/show_bug.cgi?id=142379
Reviewed by Zalan Bujtas.
There are various tree dumping functions that are useful for debugging, and sometimes
you want to be able to use them in release builds. Currently they are surrounded by
#ifndef NDEBUG. Change this to #if ENABLE(TREE_DEBUGGING), which is defined to 0 or 1
in wtf/Platform.h
* wtf/Platform.h:
2015-03-05 Chris Dumez <cdumez@apple.com>
Regression(r173761): ASSERTION FAILED: !is8Bit() in StringImpl::characters16()
https://bugs.webkit.org/show_bug.cgi?id=142350
Reviewed by Michael Saboff and Benjamin Poulain.
Fix ASSERTION FAILED: !is8Bit() in StringImpl::characters16() from
WTF::equalInner() after r173761. The code was incorrectly assuming that
if stringImpl is 16-bit, then matchString is 16-bit too, which is not
correct.
Also rename WTFString::startsWith() / endsWith() taking an offset to
hasInfixStartingAt() / hasInfixEndingAt() for clarity. It seems odd
to call it startsWith even though it won't technically *start* with
the pattern if the input offset is greater than zero.
Also drop the caseSensitive argument as it is never used (always true
at call sites.
* wtf/text/StringImpl.cpp:
(WTF::equalInner):
(WTF::StringImpl::hasInfixStartingAt):
(WTF::StringImpl::hasInfixEndingAt):
(WTF::StringImpl::startsWith): Deleted.
(WTF::StringImpl::endsWith): Deleted.
* wtf/text/StringImpl.h:
* wtf/text/WTFString.h:
(WTF::String::hasInfixStartingAt):
(WTF::String::hasInfixEndingAt):
(WTF::String::startsWith): Deleted.
(WTF::String::endsWith): Deleted.
2015-03-05 Chris Dumez <cdumez@apple.com>
NetworkCache efficacy logging is using too much CPU
https://bugs.webkit.org/show_bug.cgi?id=142186
<rdar://problem/19632080>
Reviewed by Antti Koivisto.
* wtf/HashMap.h:
(WTF::copyToVector):
Add copyToVector() utility function for HashMap that uses an std::pair<key, value>
as element type.
* wtf/text/WTFString.h:
(WTF::StringCapture::StringCapture):
(WTF::StringCapture::operator=):
Add default constructor and assignment operator to StringCapture so that
it can be used in a Vector.
2015-03-05 Antti Koivisto <antti@apple.com>
Support WorkQueue QOS classes on Mavericks
https://bugs.webkit.org/show_bug.cgi?id=142328
Reviewed by Anders Carlsson.
"The priority of a dispatch queue is inherited from its target queue. In order to
change the priority of a queue created with dispatch_queue_create(), use the
dispatch_get_global_queue() function to obtain a target queue of the desired prior-
ity."
* wtf/cocoa/WorkQueueCocoa.cpp:
(WTF::targetQueueForQOSClass):
(WTF::WorkQueue::platformInitialize):
2015-03-03 Anders Carlsson <andersca@apple.com>
Remove unused compression code
https://bugs.webkit.org/show_bug.cgi?id=142237
Reviewed by Geoffrey Garen.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Compression.cpp: Removed.
* wtf/Compression.h: Removed.
2015-03-02 Gyuyoung Kim <gyuyoung.kim@samsung.com>
[WK2] Remove unnecessary create() factory functions.
https://bugs.webkit.org/show_bug.cgi?id=142161
Reviewed by Chris Dumez.
We can replace some create() factory functions with std::make_unique(). Because
it just returns new instance. Even some of those functions have used std::unique_ptr<>
instead of std::make_unique<>. Fixed all.
* wtf/efl/WorkQueueEfl.cpp:
(WorkQueue::dispatch):
2015-03-02 Filip Pizlo <fpizlo@apple.com>
DFG compile time measurements should really report milliseconds
https://bugs.webkit.org/show_bug.cgi?id=142209
Reviewed by Benjamin Poulain.
This bug was introduced because currentTimeMS() calls were converted to
monotonicallyIncreasingTime() calls. Perhaps this bug would be less likely if there was a
monotonicallyIncreasingTimeMS() function available, so this patch adds it.
* wtf/CurrentTime.h:
(WTF::monotonicallyIncreasingTimeMS):
2015-02-27 Darin Adler <darin@apple.com>
Remove unused PossiblyNull
https://bugs.webkit.org/show_bug.cgi?id=142124
Reviewed by Andreas Kling.
* WTF.vcxproj/WTF.vcxproj: Removed the file.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/PossiblyNull.h: Removed.
* wtf/FastMalloc.h: Moved everything to the left.
Moved member functions out of the TryMallocReturnValue class definition.
(WTF::TryMallocReturnValue::operator PossiblyNull<T>): Deleted.
(WTF::TryMallocReturnValue::getValue): Marked inline, changed to work
only with pointer types, not arbitrary non-pointer types.
2015-02-26 Brent Fulgham <bfulgham@apple.com>
[Win] Make build logs more legible by reducing noise
https://bugs.webkit.org/show_bug.cgi?id=142034
Reviewed by Alexey Proskuryakov.
Modify batch files, makefiles, and DOS commands to remove
uninteresting/unhelpful output.
* WTF.vcxproj/WTFGenerated.make:
* WTF.vcxproj/WTFPreBuild.cmd:
* WTF.vcxproj/copy-files.cmd:
2015-02-26 Landry Breuil <landry@openbsd.org>
Revert bug 19975, now that gcc 4.7 is required.
https://bugs.webkit.org/show_bug.cgi?id=129927
Reviewed by Andreas Kling.
isfinite() and signbit() are provided by gcc's cmath header.
* wtf/MathExtras.h:
2015-02-26 Csaba Osztrogonác <ossy@webkit.org>
UNREACHABLE_FOR_PLATFORM() should be release assert
https://bugs.webkit.org/show_bug.cgi?id=141904
Reviewed by Darin Adler.
* wtf/Assertions.h:
(UNREACHABLE_FOR_PLATFORM):
2015-02-25 Filip Pizlo <fpizlo@apple.com>
Enable concurrent JIT on GTK
https://bugs.webkit.org/show_bug.cgi?id=142007
Reviewed by Benjamin Poulain.
Seems weird that GTK keeps it off. No good reason for that as far as I can tell.
* wtf/Platform.h:
2015-02-23 Brent Fulgham <bfulgham@apple.com>
WTF::WeakPtr should rename 'forgot' to 'clear' and support nullptr assignment
https://bugs.webkit.org/show_bug.cgi?id=141935
Reviewed by Myles C. Maxfield.
* wtf/WeakPtr.h:
(WTF::WeakPtr::operator=): Added 'nullptr_t' overload.
(WTF::WeakPtr::clear): Renamed from 'forget'
(WTF::WeakPtr::forget): Deleted.
2015-02-23 Brent Fulgham <bfulgham@apple.com>
WTF::WeakPtr should have a 'forget' method
https://bugs.webkit.org/show_bug.cgi?id=141923
Reviewed by Myles C. Maxfield.
* wtf/WeakPtr.h:
(WTF::WeakPtr::forget): Added.
2015-02-20 Geoffrey Garen <ggaren@apple.com>
Remove TCMalloc
https://bugs.webkit.org/show_bug.cgi?id=141844
Reviewed by Andreas Kling.
It's unused.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FastMalloc.cpp:
(WTF::EntropySource<4>::value): Deleted.
(WTF::EntropySource<8>::value): Deleted.
(WTF::internalEntropyValue): Deleted.
(WTF::freedObjectStartPoison): Deleted.
(WTF::freedObjectEndPoison): Deleted.
(WTF::ClassIndex): Deleted.
(WTF::HardenedSLL::create): Deleted.
(WTF::HardenedSLL::null): Deleted.
(WTF::HardenedSLL::setValue): Deleted.
(WTF::HardenedSLL::value): Deleted.
(WTF::HardenedSLL::operator!): Deleted.
(WTF::HardenedSLL::operator UnspecifiedBoolType): Deleted.
(WTF::HardenedSLL::operator!=): Deleted.
(WTF::HardenedSLL::operator==): Deleted.
(WTF::LgFloor): Deleted.
(WTF::SLL_Next): Deleted.
(WTF::SLL_SetNext): Deleted.
(WTF::SLL_Push): Deleted.
(WTF::SLL_Pop): Deleted.
(WTF::SLL_PopRange): Deleted.
(WTF::SLL_PushRange): Deleted.
(WTF::SizeClass): Deleted.
(WTF::ByteSizeForClass): Deleted.
(WTF::NumMoveSize): Deleted.
(WTF::InitSizeClasses): Deleted.
(WTF::MetaDataAlloc): Deleted.
(WTF::PageHeapAllocator::Init): Deleted.
(WTF::PageHeapAllocator::New): Deleted.
(WTF::PageHeapAllocator::Delete): Deleted.
(WTF::PageHeapAllocator::inuse): Deleted.
(WTF::pages): Deleted.
(WTF::AllocationSize): Deleted.
(WTF::spanInitializerCookie): Deleted.
(WTF::Span::next): Deleted.
(WTF::Span::remoteNext): Deleted.
(WTF::Span::prev): Deleted.
(WTF::Span::setNext): Deleted.
(WTF::Span::setPrev): Deleted.
(WTF::Span::initCookie): Deleted.
(WTF::Span::clearCookie): Deleted.
(WTF::Span::isValid): Deleted.
(WTF::Event): Deleted.
(WTF::NewSpan): Deleted.
(WTF::DeleteSpan): Deleted.
(WTF::DLL_Init): Deleted.
(WTF::DLL_Remove): Deleted.
(WTF::DLL_IsEmpty): Deleted.
(WTF::DLL_Length): Deleted.
(WTF::DLL_Print): Deleted.
(WTF::DLL_Prepend): Deleted.
(WTF::TCMalloc_Central_FreeList::length): Deleted.
(WTF::TCMalloc_Central_FreeList::tc_length): Deleted.
(WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Deleted.
(WTF::TCMalloc_Central_FreeList::entropy): Deleted.
(WTF::FastMallocZone::goodSize): Deleted.
(WTF::FastMallocZone::check): Deleted.
(WTF::FastMallocZone::print): Deleted.
(WTF::FastMallocZone::log): Deleted.
(WTF::FastMallocZone::forceLock): Deleted.
(WTF::FastMallocZone::forceUnlock): Deleted.
(WTF::FastMallocZone::statistics): Deleted.
(WTF::FastMallocZone::zoneValloc): Deleted.
(WTF::FastMallocZone::zoneDestroy): Deleted.
(WTF::MallocHook::record): Deleted.
(WTF::MallocHook::recordAllocation): Deleted.
(WTF::MallocHook::recordDeallocation): Deleted.
(WTF::MallocHook::init): Deleted.
(WTF::MallocHook::InvokeNewHook): Deleted.
(WTF::MallocHook::InvokeDeleteHook): Deleted.
(WTF::KernelSupportsTLS): Deleted.
(WTF::CheckIfKernelSupportsTLS): Deleted.
(WTF::TCMalloc_PageHeap::GetDescriptor): Deleted.
(WTF::TCMalloc_PageHeap::GetDescriptorEnsureSafe): Deleted.
(WTF::TCMalloc_PageHeap::SystemBytes): Deleted.
(WTF::TCMalloc_PageHeap::FreeBytes): Deleted.
(WTF::TCMalloc_PageHeap::GetSizeClassIfCached): Deleted.
(WTF::TCMalloc_PageHeap::CacheSizeClass): Deleted.
(WTF::TCMalloc_PageHeap::RecordSpan): Deleted.
(WTF::TCMalloc_PageHeap::init): Deleted.
(WTF::TCMalloc_PageHeap::initializeScavenger): Deleted.
(WTF::TCMalloc_PageHeap::isScavengerSuspended): Deleted.
(WTF::TCMalloc_PageHeap::scheduleScavenger): Deleted.
(WTF::TCMalloc_PageHeap::rescheduleScavenger): Deleted.
(WTF::TCMalloc_PageHeap::suspendScavenger): Deleted.
(WTF::TCMalloc_PageHeap::scavengerTimerFired): Deleted.
(WTF::TCMalloc_PageHeap::runScavengerThread): Deleted.
(WTF::TCMalloc_PageHeap::signalScavenger): Deleted.
(WTF::TCMalloc_PageHeap::scavenge): Deleted.
(WTF::TCMalloc_PageHeap::shouldScavenge): Deleted.
(WTF::TCMalloc_PageHeap::New): Deleted.
(WTF::TCMalloc_PageHeap::AllocLarge): Deleted.
(WTF::TCMalloc_PageHeap::Split): Deleted.
(WTF::TCMalloc_PageHeap::Carve): Deleted.
(WTF::mergeDecommittedStates): Deleted.
(WTF::TCMalloc_PageHeap::Delete): Deleted.
(WTF::TCMalloc_PageHeap::IncrementalScavenge): Deleted.
(WTF::TCMalloc_PageHeap::RegisterSizeClass): Deleted.
(WTF::TCMalloc_PageHeap::ReturnedBytes): Deleted.
(WTF::PagesToMB): Deleted.
(WTF::TCMalloc_PageHeap::Dump): Deleted.
(WTF::TCMalloc_PageHeap::GrowHeap): Deleted.
(WTF::TCMalloc_PageHeap::Check): Deleted.
(WTF::TCMalloc_PageHeap::CheckList): Deleted.
(WTF::TCMalloc_PageHeap::ReleaseFreeList): Deleted.
(WTF::TCMalloc_PageHeap::ReleaseFreePages): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::Init): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::length): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::empty): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::lowwatermark): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::clear_lowwatermark): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::Push): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::PushRange): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::PopRange): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::Pop): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::Validate): Deleted.
(WTF::TCMalloc_ThreadCache_FreeList::enumerateFreeObjects): Deleted.
(WTF::TCMalloc_ThreadCache::freelist_length): Deleted.
(WTF::TCMalloc_ThreadCache::Size): Deleted.
(WTF::TCMalloc_ThreadCache::enumerateFreeObjects): Deleted.
(WTF::getPageHeap): Deleted.
(WTF::fastMallocGoodSize): Deleted.
(WTF::TCMalloc_PageHeap::periodicScavenge): Deleted.
(WTF::TCMalloc_PageHeap::scavengerThread): Deleted.
(WTF::setThreadHeap): Deleted.
(WTF::TCMalloc_Central_FreeList::Init): Deleted.
(WTF::TCMalloc_Central_FreeList::ReleaseListToSpans): Deleted.
(WTF::TCMalloc_Central_FreeList::ReleaseToSpans): Deleted.
(WTF::TCMalloc_Central_FreeList::EvictRandomSizeClass): Deleted.
(WTF::TCMalloc_Central_FreeList::MakeCacheSpace): Deleted.
(WTF::TCMalloc_Central_FreeList::ShrinkCache): Deleted.
(WTF::TCMalloc_Central_FreeList::InsertRange): Deleted.
(WTF::TCMalloc_Central_FreeList::RemoveRange): Deleted.
(WTF::TCMalloc_Central_FreeList::FetchFromSpansSafe): Deleted.
(WTF::TCMalloc_Central_FreeList::FetchFromSpans): Deleted.
(WTF::TCMalloc_Central_FreeList::Populate): Deleted.
(WTF::TCMalloc_ThreadCache::SampleAllocation): Deleted.
(WTF::TCMalloc_ThreadCache::Init): Deleted.
(WTF::TCMalloc_ThreadCache::Cleanup): Deleted.
(WTF::TCMalloc_ThreadCache::Allocate): Deleted.
(WTF::TCMalloc_ThreadCache::Deallocate): Deleted.
(WTF::TCMalloc_ThreadCache::FetchFromCentralCache): Deleted.
(WTF::TCMalloc_ThreadCache::ReleaseToCentralCache): Deleted.
(WTF::TCMalloc_ThreadCache::Scavenge): Deleted.
(WTF::TCMalloc_ThreadCache::PickNextSample): Deleted.
(WTF::TCMalloc_ThreadCache::InitModule): Deleted.
(WTF::TCMalloc_ThreadCache::NewHeap): Deleted.
(WTF::TCMalloc_ThreadCache::GetThreadHeap): Deleted.
(WTF::TCMalloc_ThreadCache::GetCache): Deleted.
(WTF::TCMalloc_ThreadCache::GetCacheIfPresent): Deleted.
(WTF::TCMalloc_ThreadCache::InitTSD): Deleted.
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary): Deleted.
* wtf/TCPackedCache.h: Removed.
* wtf/TCPageMap.h: Removed.
* wtf/TCSystemAlloc.cpp: Removed.
* wtf/TCSystemAlloc.h: Removed.
2015-02-20 Alexey Proskuryakov <ap@apple.com>
Remove svn:keywords property.
As far as I can tell, the property had no effect on any of these files, but also,
when it has effect it's likely harmful.
* wtf/DecimalNumber.cpp: Removed property svn:keywords.
* wtf/spi/darwin/XPCSPI.h: Removed property svn:keywords.
2015-02-20 Csaba Osztrogonác <ossy@webkit.org>
EFL URTBF
* wtf/PlatformEfl.cmake:
2015-02-20 Simon Fraser <simon.fraser@apple.com>
RunLoop::dispatch() should drop the mutex before calling wakeUp().
https://bugs.webkit.org/show_bug.cgi?id=141820
Reviewed by Alexey Proskuryakov.
RunLoop::wakeUp() calls into CoreFoundation which could take time,
so scope the mutex just to protect m_functionQueue.
* wtf/RunLoop.cpp:
(WTF::RunLoop::dispatch):
2015-02-20 Gyuyoung Kim <gyuyoung.kim@samsung.com>
Unreviewed, EFL build fix since r180410.
* wtf/PlatformEfl.cmake: Add WEBKIT2/Platform/efl path in order to include DispatchQueueEfl.h.
2015-02-20 Antti Koivisto <antti@apple.com>
Move WorkQueue from WK2 to WTF
https://bugs.webkit.org/show_bug.cgi?id=141797
Reviewed by Anders Carlsson.
It may be useful in WebCore.
Windows implementation is still missing.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PlatformGTK.cmake:
* wtf/WorkQueue.cpp: Copied from Source/WebKit2/Platform/WorkQueue.cpp.
* wtf/WorkQueue.h: Copied from Source/WebKit2/Platform/WorkQueue.h.
* wtf/cocoa: Added.
* wtf/cocoa/WorkQueueCocoa.cpp: Copied from Source/WebKit2/Platform/mac/WorkQueueMac.cpp.
* wtf/efl/WorkQueueEfl.cpp: Copied from Source/WebKit2/Platform/efl/WorkQueueEfl.cpp.
* wtf/gtk/WorkQueueGtk.cpp: Copied from Source/WebKit2/Platform/gtk/WorkQueueGtk.cpp.
2015-02-13 Gyuyoung Kim <gyuyoung.kim@samsung.com>
[EFL] Enable bmalloc for EFL port
https://bugs.webkit.org/show_bug.cgi?id=141459
Reviewed by Csaba Osztrogonác.
* wtf/CMakeLists.txt: Remove TCSystemAlloc.cpp/h.
* wtf/FastMalloc.cpp: Enable BMALLOC for EFL port.
2015-02-13 Anders Carlsson <andersca@apple.com>
Add a move constructor and move assignment operator to Deque
https://bugs.webkit.org/show_bug.cgi?id=141571
Reviewed by Andreas Kling.
* wtf/Deque.h:
(WTF::inlineCapacity>::Deque):
(WTF::=): Deleted.
2015-02-13 Anders Carlsson <andersca@apple.com>
Add an initializer list constructor to Deque
https://bugs.webkit.org/show_bug.cgi?id=141565
Reviewed by Andreas Kling.
* wtf/Deque.h:
(WTF::inlineCapacity>::Deque):
2015-02-13 Anders Carlsson <andersca@apple.com>
Re-indent Deque.h
Rubber-stamped by Antti Koivisto.
* wtf/Deque.h:
2015-02-11 Brent Fulgham <bfulgham@apple.com>
[Win] [64-bit] Work around MSVC2013 Runtime Bug
https://bugs.webkit.org/show_bug.cgi?id=141498
<rdar://problem/19803642>
Reviewed by Anders Carlsson.
Disable FMA3 instruction use in the MSVC math library to
work around a VS2013 runtime crash. We can remove this
workaround when we switch to VS2015.
* WTF.vcxproj/WTF.vcxproj: Add new files.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* wtf/win/WTFDLL.cpp: Added.
2015-02-11 Gyuyoung Kim <gyuyoung.kim@samsung.com>
[EFL][GTK] Use bmalloc instead of tcmalloc
https://bugs.webkit.org/show_bug.cgi?id=140162
Reviewed by Carlos Garcia Campos.
* wtf/CMakeLists.txt:
* wtf/FastMalloc.cpp:
Enable bmalloc on GTK ports, but EFL port will enable it when bmalloc supports
memory statistics.
2015-02-10 Darin Adler <darin@apple.com>
Add the crash-on-failure behavior to bmalloc-based fastMalloc
https://bugs.webkit.org/show_bug.cgi?id=141434
Reviewed by Alexey Proskuryakov.
* wtf/FastMalloc.cpp: Removed unneeded includes.
(WTF::fastMalloc): Added null check and CRASH.
(WTF::fastCalloc): Added overflow checking, null check, and CRASH.
(WTF::fastRealloc): Added null check and CRASH.
(WTF::fastMallocSize): Added FIXME comment.
(WTF::fastMallocGoodSize): Added FIXME comment.
(WTF::fastAlignedMalloc): Added null check and CRASH.
(WTF::tryFastMalloc): Changed to call bmalloc directly instead of
calling fastMalloc, since fastMalloc will now crash on failure.
(WTF::tryFastRealloc): Changed to call bmalloc directly instead of
calling fastRealloc, since fastRealloc will now crash on failure.
(WTF::tryFastCalloc): Added overflow checking.
(WTF::fastMallocStatistics): Added FIXME comment.
2015-02-10 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] GMutexLocker build issue
https://bugs.webkit.org/show_bug.cgi?id=141381
Reviewed by Žan Doberšek.
Remove using WTF::GMutexLocker from the header, since newer glib
versions have a GMutexLocker in the public API.
* wtf/gobject/GMutexLocker.h:
2015-02-09 Alexey Proskuryakov <ap@apple.com>
REGRESSION: tryFastCalloc is no longer "try"
https://bugs.webkit.org/show_bug.cgi?id=141406
Reviewed by Darin Adler.
This causes crashes on some WebKit regression test bots.
* wtf/FastMalloc.cpp: (WTF::tryFastCalloc): Fix what looks like a copy/paste mistake.
2015-02-07 Csaba Osztrogonác <ossy@webkit.org>
[ARM] GC sometimes stuck in an infinite loop if parallel GC is enabled
https://bugs.webkit.org/show_bug.cgi?id=141290
Reviewed by Anders Carlsson.
* wtf/Platform.h:
2015-02-07 Chris Dumez <cdumez@apple.com>
Add Vector::removeFirstMatching() / removeAllMatching() methods taking lambda functions
https://bugs.webkit.org/show_bug.cgi?id=141321
Reviewed by Darin Adler.
Add Vector::removeFirstMatching() / removeAllMatching() methods taking
lambda functions to match the element(s) to remove. This simplifies the
code a bit. Vector::removeAllMatching() is also more efficient than the
manual removal alternative.
* wtf/Vector.h:
2015-02-06 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r179743.
https://bugs.webkit.org/show_bug.cgi?id=141335
caused missing symbols in non-WebKit clients of WTF::Vector
(Requested by kling on #webkit).
Reverted changeset:
"Remove WTF::fastMallocGoodSize()."
https://bugs.webkit.org/show_bug.cgi?id=141020
http://trac.webkit.org/changeset/179743
2015-02-06 Andreas Kling <akling@apple.com>
Remove WTF::fastMallocGoodSize().
<https://webkit.org/b/141020>
Reviewed by Anders Carlsson.
bmalloc's good-size API just returns exactly whatever you pass it,
so it's of no utility to us anymore.
This gets rid of a bunch of pointless out-of-line calls in Vector
construction and growth.
* wtf/Compression.cpp:
(WTF::GenericCompressedData::create):
* wtf/FastMalloc.cpp:
(WTF::fastMallocGoodSize): Deleted.
* wtf/FastMalloc.h:
* wtf/Vector.h:
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
2015-02-05 Youenn Fablet <youenn.fablet@crf.canon.fr> and Xabier Rodriguez Calvar <calvaris@igalia.com>
[Streams API] Implement a barebone ReadableStream interface
https://bugs.webkit.org/show_bug.cgi?id=141045
Reviewed by Benjamin Poulain.
* wtf/FeatureDefines.h:
2015-02-04 Alexey Proskuryakov <ap@apple.com>
Optimized equal() functions in StringImpl.h are not ASan compatible
https://bugs.webkit.org/show_bug.cgi?id=141258
Reviewed by Daniel Bates.
* wtf/text/StringImpl.h: (WTF::equal): Add custom implementations for ASan.
2015-02-04 Chris Dumez <cdumez@apple.com>
Add removeFirst(value) / removeAll(value) methods to WTF::Vector
https://bugs.webkit.org/show_bug.cgi?id=141192
Reviewed by Benjamin Poulain.
Add removeFirst(value) / removeAll(value) convenience methods to
WTF::Vector to reduce complexity a bit at call sites.
I am planning to add overloads for these taking a lambda function for
matching in a follow-up patch as well. I have seen quite a few
Vector::remove(index) call sites that would benefit from it.
* wtf/Vector.h:
(WTF::OverflowHandler>::removeFirst):
(WTF::OverflowHandler>::removeAll):
2015-02-02 Dhi Aurrahman <diorahman@rockybars.com>
Optimize matchesLangPseudoClass() of :lang()
https://bugs.webkit.org/show_bug.cgi?id=140873
Reviewed by Darin Adler.
Add some basic equality comparison operators.
* wtf/text/StringView.h:
(WTF::operator==):
(WTF::operator!=):
(WTF::equal):
(WTF::equalIgnoringASCIICase):
2015-02-02 Geoffrey Garen <ggaren@apple.com>
Use FastMalloc (bmalloc) instead of BlockAllocator for GC pages
https://bugs.webkit.org/show_bug.cgi?id=140900
Reviewed by Mark Hahnenberg.
Re-landing just the HandleBlock piece of this patch.
* wtf/FastMalloc.cpp:
(WTF::fastAlignedMalloc):
(WTF::fastAlignedFree):
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
* wtf/FastMalloc.h:
2015-02-02 Daniel Bates <dabates@apple.com>
[iOS] ASSERTION FAILED: m_scriptExecutionContext->isContextThread() in ContextDestructionObserver::observeContext
https://bugs.webkit.org/show_bug.cgi?id=141057
<rdar://problem/19068790>
Reviewed by Alexey Proskuryakov.
* wtf/MainThread.h:
* wtf/mac/MainThreadMac.mm:
(WTF::callOnWebThreadOrDispatchAsyncOnMainThread): Added.
2015-01-31 Sam Weinig <sam@webkit.org>
Remove even more Mountain Lion support
https://bugs.webkit.org/show_bug.cgi?id=141124
Reviewed by Alexey Proskuryakov.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* wtf/Assertions.cpp:
* wtf/FeatureDefines.h:
* wtf/Platform.h:
2015-01-31 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r179426.
https://bugs.webkit.org/show_bug.cgi?id=141119
"caused a memory use regression" (Requested by Guest45 on
#webkit).
Reverted changeset:
"Use FastMalloc (bmalloc) instead of BlockAllocator for GC
pages"
https://bugs.webkit.org/show_bug.cgi?id=140900
http://trac.webkit.org/changeset/179426
2015-01-31 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r179408.
https://bugs.webkit.org/show_bug.cgi?id=141117
This didn't fully fix the issue (Requested by anttik on
#webkit).
Reverted changeset:
"OSObjectPtr does not work with dispatch_data_t on Maverics"
https://bugs.webkit.org/show_bug.cgi?id=141081
http://trac.webkit.org/changeset/179408
2015-01-30 Yusuke Suzuki <utatane.tea@gmail.com>
Implement ES6 Symbol
https://bugs.webkit.org/show_bug.cgi?id=140435
Reviewed by Geoffrey Garen.
Introduce new unique string mechanizm into StringImpl.
It is used for implementing Symbol which holds a [[Description]] value.
* wtf/text/AtomicString.h:
(WTF::AtomicString::add):
(WTF::AtomicString::addWithStringTableProvider):
Previously, we checked `isAtomic()` or `!length()`. This guard can filter out EmptyUnique.
But now, we introduced new unique StringImpl. Since it has an actual string value, we need to check `isUnique()`.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::createUnique):
In createUnique, we leverage Substring mechanizm to produce a new unique
string from an existing string.
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createUniqueEmpty):
(WTF::StringImpl::flagIsUnique):
(WTF::StringImpl::isUnique):
(WTF::StringImpl::setIsAtomic):
(WTF::StringImpl::createEmptyUnique): Deleted.
(WTF::StringImpl::isEmptyUnique): Deleted.
Instead of EmptyUnique, we introduced new flag to StringImpl, `isUnique`.
While EmptyUnique cannot hold any string values except for empty string,
the unique StringImpl can hold any String values.
We fold the Symbol's descriptiveString value here.
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::hashAndFlagsForUnique):
(WTF::StringImpl::hashAndFlagsForEmptyUnique): Deleted.
2015-01-30 Geoffrey Garen <ggaren@apple.com>
Use FastMalloc (bmalloc) instead of BlockAllocator for GC pages
https://bugs.webkit.org/show_bug.cgi?id=140900
Reviewed by Mark Hahnenberg.
Re-landing just the HandleBlock piece of this patch.
* wtf/FastMalloc.cpp:
(WTF::fastAlignedMalloc):
(WTF::fastAlignedFree):
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
* wtf/FastMalloc.h:
2015-01-30 Namhoon Kim <yanhkim@gmail.com>
Call vsnprintf instead of _vsnprintf in vprintf_stderr_common
https://bugs.webkit.org/show_bug.cgi?id=141078
In windows _vsnprintf api does not place null character
automatically. Simply replace it with vsnprintf. Which is
polyfill to call wtf_vsnprintf in windows.
Reviewed by Brent Fulgham.
* wtf/Assertions.cpp:
2015-01-30 Brian J. Burg <burg@cs.washington.edu>
Web Inspector: ASSERT in InspectorTimelineAgent::internalStop
https://bugs.webkit.org/show_bug.cgi?id=141039
Reviewed by Timothy Hatcher.
Add messages to Stopwatch assertions, and clean up constructor.
* wtf/Stopwatch.h:
(WTF::Stopwatch::Stopwatch):
(WTF::Stopwatch::start):
(WTF::Stopwatch::stop):
2015-01-30 Chris Dumez <cdumez@apple.com>
Add match_constness<Reference, T> helper struct
https://bugs.webkit.org/show_bug.cgi?id=140905
Reviewed by Benjamin Poulain.
Add match_constness<Reference, T> helper struct to simplify downcast<>()
a bit. The purpose of this helper is to update T's constness to match
Reference's.
* wtf/TypeCasts.h:
(WTF::downcast):
2015-01-30 Chris Dumez <cdumez@apple.com>
Add assertion in RefPtr's operator*() to make sure we don't dereference nullptr
https://bugs.webkit.org/show_bug.cgi?id=141092
Reviewed by Anders Carlsson.
Add assertion in RefPtr's operator*() to make sure we don't dereference
nullptr.
* wtf/RefPtr.h:
(WTF::RefPtr::operator*):
2015-01-30 Geoffrey Garen <ggaren@apple.com>
GC marking threads should clear malloc caches
https://bugs.webkit.org/show_bug.cgi?id=141097
Reviewed by Andreas Kling.
Split the scavenging API into per-thread vs global, so that you can
request to scavenge your own thread without scavenging the whole heap.
* wtf/FastMalloc.cpp:
(WTF::releaseFastMallocFreeMemoryForThisThread):
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
* wtf/FastMalloc.h:
2015-01-30 Antti Koivisto <antti@apple.com>
OSObjectPtr does not work with dispatch_data_t on Maverics
https://bugs.webkit.org/show_bug.cgi?id=141081
Reviewed by Pratik Solanki.
Trying to use OSObjectPtr<dispatch_data_t> throws
-[OS_dispatch_data _xref_dispose]: unrecognized selector sent to instance 0
* wtf/OSObjectPtr.h:
(WTF::retainOSObject<dispatch_data_t>):
(WTF::releaseOSObject<dispatch_data_t>):
Add specialization for dispatch_data_t on Maverics.
2015-01-29 Santosh Mahto <santoshbit2007@gmail.com>
Refactor String::format to handle unreached va_end.
https://bugs.webkit.org/show_bug.cgi?id=140938
Reviewed by Alexey Proskuryakov.
Now va_end is called for all platform after getting length
of formatted string and again va_start/va_end is called to write
formatted string in buffer. This way it ensure va_end is always
reached for each va_start.
* wtf/text/WTFString.cpp:
2015-01-29 Csaba Osztrogonác <ossy@webkit.org>
Move HAVE_DTRACE definition back to Platform.h
https://bugs.webkit.org/show_bug.cgi?id=141033
Reviewed by Dan Bernstein.
* wtf/Platform.h:
2015-01-28 Namhoon Kim <namkim@ea.com>
Windows return -1 when calling vsnprintf with arguments that exceed target buffer size
https://bugs.webkit.org/show_bug.cgi?id=140917
Reviewed by Brent Fulgham.
Fix return value of vsnprintf when windows API return -1 to denote
requested buffer exceeded. Replace return value by calling vscprintf.
* wtf/StringExtras.h:
(snprintf): Fix return value by calling vscprintf when buffer exceeded.
(wtf_vsnprintf): Ditto.
2015-01-28 Geoffrey Garen <ggaren@apple.com>
Removed fastMallocForbid / fastMallocAllow
https://bugs.webkit.org/show_bug.cgi?id=141012
Reviewed by Mark Hahnenberg.
Removed the forbid / allow API because it is no longer used.
* wtf/FastMalloc.cpp:
(WTF::tryFastMalloc):
(WTF::fastMalloc):
(WTF::tryFastCalloc):
(WTF::fastCalloc):
(WTF::fastFree):
(WTF::tryFastRealloc):
(WTF::fastRealloc):
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
(WTF::isForbidden): Deleted.
(WTF::fastMallocForbid): Deleted.
(WTF::fastMallocAllow): Deleted.
(WTF::initializeIsForbiddenKey): Deleted.
* wtf/FastMalloc.h:
2015-01-28 Dana Burkart <dburkart@apple.com>
Move ASan flag settings from DebugRelease.xcconfig to Base.xcconfig
https://bugs.webkit.org/show_bug.cgi?id=136765
Reviewed by Alexey Proskuryakov.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
2015-01-28 Darin Adler <darin@apple.com>
Fix small leak in Collator
https://bugs.webkit.org/show_bug.cgi?id=140990
Reviewed by Andreas Kling.
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::Collator::Collator): Use fastStrDup instead of strdup.
(WTF::Collator::~Collator): Use fastFree on the collator locale that we
are abandoning. The old code instead just called free on a null pointer.
2015-01-27 Geoffrey Garen <ggaren@apple.com>
Removed WTF_MALLOC_VALIDATION
https://bugs.webkit.org/show_bug.cgi?id=140958
Reviewed by Anders Carlsson.
I don't think anyone has been using this, and the #ifdefs were driving
me crazy.
We have other options for validation -- like MallocGuardEdges,
MallocCheckHeapEach, MallocScribble, and GuardMalloc.
* wtf/FastMalloc.cpp:
(WTF::tryFastMalloc):
(WTF::fastMalloc):
(WTF::tryFastCalloc):
(WTF::fastCalloc):
(WTF::fastFree):
(WTF::tryFastRealloc):
(WTF::fastRealloc):
(WTF::fastMallocSize):
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
(WTF::Internal::fastMallocMatchFailed): Deleted.
* wtf/FastMalloc.h:
(WTF::Internal::fastMallocValidationHeader): Deleted.
(WTF::Internal::fastMallocValidationSuffix): Deleted.
(WTF::Internal::fastMallocMatchValidationType): Deleted.
(WTF::Internal::setFastMallocMatchValidationType): Deleted.
(WTF::fastMallocMatchValidateMalloc): Deleted.
(WTF::fastMallocMatchValidateFree): Deleted.
(WTF::fastMallocValidate): Deleted.
2015-01-27 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r179192.
https://bugs.webkit.org/show_bug.cgi?id=140953
Caused numerous layout test failures (Requested by mattbaker_
on #webkit).
Reverted changeset:
"Use FastMalloc (bmalloc) instead of BlockAllocator for GC
pages"
https://bugs.webkit.org/show_bug.cgi?id=140900
http://trac.webkit.org/changeset/179192
2015-01-26 Geoffrey Garen <ggaren@apple.com>
Use FastMalloc (bmalloc) instead of BlockAllocator for GC pages
https://bugs.webkit.org/show_bug.cgi?id=140900
Reviewed by Mark Hahnenberg.
New interface for aligned allocation: fastAlignedMalloc / fastAlignedFree.
We require a special function call on free because Windows.
* wtf/FastMalloc.cpp:
(WTF::fastAlignedMalloc):
(WTF::fastAlignedFree): Do it.
(WTF::do_memalign): Un-ifdef this, since we use it now.
* wtf/FastMalloc.h: Make our new function names visible like the rest
of fastMalloc.
2015-01-26 Brent Fulgham <bfulgham@apple.com>
[Win] ASSERTION FAILED !m_ptr under AccessibilityController::winAddNotificationListener
https://bugs.webkit.org/show_bug.cgi?id=87426
<rdar://problem/11527899>
Reviewed by Darin Adler.
Revise internal containers to use std::addressof in preference to
to using the '&' operator.
* wtf/Deque.h:
(WTF::inlineCapacity>::append):
(WTF::inlineCapacity>::prepend):
(WTF::inlineCapacity>::removeFirst):
(WTF::inlineCapacity>::removeLast):
(WTF::inlineCapacity>::remove):
(WTF::inlineCapacity>::after):
(WTF::inlineCapacity>::before):
* wtf/GetPtr.h:
* wtf/HashTable.h:
(WTF::HashTableBucketInitializer<false>::initialize):
* wtf/HashTraits.h:
(WTF::SimpleClassHashTraits::constructDeletedValue):
(WTF::CustomHashTraits::constructDeletedValue):
* wtf/ListHashSet.h:
(WTF::ListHashSetConstIterator::get):
* wtf/Vector.h:
(WTF::Vector::swap):
(WTF::OverflowHandler>::append):
(WTF::OverflowHandler>::tryAppend):
(WTF::OverflowHandler>::insert):
2015-01-24 Chris Dumez <cdumez@apple.com>
Provide implementation for WTF::DefaultHash<bool>
https://bugs.webkit.org/show_bug.cgi?id=140848
Reviewed by Anders Carlsson.
Provide implementation for WTF::DefaultHash<bool> so that we can use
HashMap<std::pair<XXX, bool>> in the code base. Right now, we need to
use some integer type to work around the issue.
* wtf/HashFunctions.h:
2015-01-23 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add missing null check in some derefGPtr implementations
https://bugs.webkit.org/show_bug.cgi?id=140822
Reviewed by Sergio Villar Senin.
It's missing in GHashTable and GVariant implementations.
* wtf/gobject/GRefPtr.cpp:
(WTF::derefGPtr):
2015-01-23 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add initial database process support
https://bugs.webkit.org/show_bug.cgi?id=139491
Reviewed by Sergio Villar Senin.
Add support for using GRefPtr with GVariantBuilder.
* wtf/gobject/GRefPtr.cpp:
(WTF::refGPtr):
(WTF::derefGPtr):
* wtf/gobject/GRefPtr.h:
* wtf/gobject/GTypedefs.h:
2015-01-22 Ryosuke Niwa <rniwa@webkit.org>
Add a build flag for ES6 class syntax
https://bugs.webkit.org/show_bug.cgi?id=140760
Reviewed by Michael Saboff.
* wtf/FeatureDefines.h:
2015-01-21 Csaba Osztrogonác <ossy@webkit.org>
Remove ENABLE(INSPECTOR) ifdef guards
https://bugs.webkit.org/show_bug.cgi?id=140668
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
2015-01-20 YunQiang Su <wzssyqa@gmail.com>
Fix failed to build for Linux/MIPS64EL
https://bugs.webkit.org/show_bug.cgi?id=124370
Reviewed by Darin Adler.
Add MIPS64EL support.
* wtf/Platform.h:
* wtf/dtoa/utils.h:
2015-01-19 Alexey Proskuryakov <ap@apple.com>
Make ASan do bounds checks for WTF::Vector
https://bugs.webkit.org/show_bug.cgi?id=140631
rdar://problem/19437718
Reviewed by Darin Adler.
* wtf/SizeLimits.cpp: Disable Vector object size checks for ASan enabled builds.
* wtf/Vector.h:
(WTF::VectorBuffer::endOfBuffer):
(WTF::Vector::Vector):
(WTF::Vector::~Vector):
(WTF::Vector::swap):
(WTF::OverflowHandler>::Vector):
(WTF::=):
(WTF::OverflowHandler>::fill):
(WTF::OverflowHandler>::resize):
(WTF::OverflowHandler>::shrink):
(WTF::OverflowHandler>::grow):
(WTF::OverflowHandler>::asanSetInitialBufferSizeTo):
(WTF::OverflowHandler>::asanSetBufferSizeToFullCapacity):
(WTF::OverflowHandler>::asanBufferSizeWillChangeTo):
(WTF::OverflowHandler>::reserveCapacity):
(WTF::OverflowHandler>::tryReserveCapacity):
(WTF::OverflowHandler>::shrinkCapacity):
(WTF::OverflowHandler>::append):
(WTF::OverflowHandler>::tryAppend):
(WTF::OverflowHandler>::appendSlowCase):
(WTF::OverflowHandler>::uncheckedAppend):
(WTF::OverflowHandler>::insert):
(WTF::OverflowHandler>::remove):
(WTF::OverflowHandler>::releaseBuffer):
* wtf/Compiler.h: Changed ASAN_ENABLED macro fallback value from false to 0,
MSVC was not happy with false.
2015-01-20 Csaba Osztrogonác <ossy@webkit.org>
Remove non-Windows cruft from WebKit/win/Plugins
https://bugs.webkit.org/show_bug.cgi?id=140675
Reviewed by Anders Carlsson.
* wtf/FeatureDefines.h:
2015-01-16 Myles C. Maxfield <mmaxfield@apple.com>
WeakPtr functions crash when created with default constructor
https://bugs.webkit.org/show_bug.cgi?id=140479
Reviewed by Andreas Kling.
This patch rearranges how WeakPtr works, and has the following ideas behind it:
1. WeakPtr should use Ref internally. This solves the crash by always having a
valid WeakReference.
2. Clients should not be able to construct WeakReferences directly. Instead,
only WeakPtrFactory (and WeakPtr's default constructor) should be able to
construct them. They are considered an implementation detail of WeakPtr.
3. Except for the default constructor, clients should not be able to construct
WeakPtrs directly. Instead, the WeakPtrFactory must construct them. This
guarantees that the WeakPtrs all reference the same WeakReference.
4. Clients can construct a WeakPtr using its default constructor, and then
use the assignment operator to make it non-null. (Or they could use
WeakPtrFactory to make it non-null at creation-time.)
5. No one was using WeakReference::bindTo(), and it doesn't seem useful, so I
removed it.
Tests: WTF_WeakPtr API tests
* wtf/Ref.h:
(WTF::Ref::Ref): Added extra ASSERT()s, and explicitly deleted copy
constructors with a comment.
(WTF::Ref::operator=): Added extra ASSERT()s, and explicitly deleted copy
assignment operators with a comment.
* wtf/WeakPtr.h:
(WTF::WeakReference::clear): Used nullptr.
(WTF::WeakReference::create): Moved to private:
(WTF::WeakPtr::WeakPtr): For the default constructor, initialized the Ref with
a new WeakReference. For the other constructor, moved it to private:. Also added
copy constructors and copy assignment operators (since Ref doesn't have them but
RefPtr does). These constructors/operators are relied upon in various places
throughout WebCore.
(WTF::WeakPtr::operator bool): Made non-explicit.
(WTF::WeakReference::createUnbound): Deleted.
(WTF::WeakReference::bindTo): Deleted.
(WTF::WeakReference::WeakReference): Deleted.
(WTF::WeakPtrFactory::WeakPtrFactory): Deleted.
2015-01-16 Yusuke Suzuki <utatane.tea@gmail.com>
std::all_of requires complete C++ iterators in GCC 4.8
https://bugs.webkit.org/show_bug.cgi?id=140530
Reviewed by Darin Adler.
In the WebKit2/UIProcess/WebProcessLifetimeObserver.cpp, std::all_of
is used for HashIterators. However, std::all_of requires the complete
C++ iterator interface including iterator_category typedef member and
it raises compile error in GCC 4.8 (and libstdc++) environment.
This patch inherits std::iterator with appropriate type parameters.
It automatically defines required typedefs including iterator_category.
* wtf/HashIterators.h:
2015-01-15 Csaba Osztrogonác <ossy@webkit.org>
Remove ENABLE(SQL_DATABASE) guards
https://bugs.webkit.org/show_bug.cgi?id=140434
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
2015-01-14 Csaba Osztrogonác <ossy@webkit.org>
Unreviewed fix after r163330.
* wtf/Platform.h: Use C style comment.
2015-01-14 Marc Juul <juul@sudomesh.org>
C++ style comment was preventing compile if CPU(ARM_NEON)
https://bugs.webkit.org/show_bug.cgi?id=133827
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2015-01-13 Chris Dumez <cdumez@apple.com>
Make WTF::Optional work with msvc 2013
https://bugs.webkit.org/show_bug.cgi?id=140401
Reviewed by Anders Carlsson.
Update the WTF::Optional implementation to use std::aligned_memory and
placement new instead of an unrestricted union because msvc 2013 still
doesn't support unrestricted unions.
This change is a pre-requirement to fix Bug 140347 as this change uses
WTF::Optional with types that have non-trivial copy constructors.
This change is covered by the existing Optional WTF test.
* wtf/Optional.h:
2015-01-11 Sam Weinig <sam@webkit.org>
Remove support for SharedWorkers
https://bugs.webkit.org/show_bug.cgi?id=140344
Reviewed by Anders Carlsson.
* wtf/FeatureDefines.h:
2015-01-12 Darin Adler <darin@apple.com>
Modernize and streamline HTMLTokenizer
https://bugs.webkit.org/show_bug.cgi?id=140166
Reviewed by Sam Weinig.
* wtf/Forward.h: Removed PassRef, added OrdinalNumber and TextPosition.
2015-01-09 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r178154, r178163, and r178164.
https://bugs.webkit.org/show_bug.cgi?id=140292
Still multiple assertion failures on tests (Requested by ap on
#webkit).
Reverted changesets:
"Modernize and streamline HTMLTokenizer"
https://bugs.webkit.org/show_bug.cgi?id=140166
http://trac.webkit.org/changeset/178154
"Unreviewed speculative buildfix after r178154."
http://trac.webkit.org/changeset/178163
"One more unreviewed speculative buildfix after r178154."
http://trac.webkit.org/changeset/178164
2015-01-08 Darin Adler <darin@apple.com>
Modernize and streamline HTMLTokenizer
https://bugs.webkit.org/show_bug.cgi?id=140166
Reviewed by Sam Weinig.
* wtf/Forward.h: Removed PassRef, added OrdinalNumber and TextPosition.
2015-01-08 Benjamin Poulain <benjamin@webkit.org>
[WK2] Start a prototype for declarative site specific extensions
https://bugs.webkit.org/show_bug.cgi?id=140160
Reviewed by Andreas Kling.
* wtf/FeatureDefines.h:
2015-01-07 Daniel Bates <dabates@apple.com>
[iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
https://bugs.webkit.org/show_bug.cgi?id=137371
As pointed out by Tim Horton, use C-style comment instead of C++-style comment as
wtf/Compiler.h is included in the sandbox profile and the sandbox profile compiler
doesn't understand C++-style comments.
* wtf/Compiler.h:
2015-01-07 Daniel Bates <dabates@apple.com>
[iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
https://bugs.webkit.org/show_bug.cgi?id=137371
Reviewed by David Kilzer.
Move EXTERN_C_BEGIN and EXTERN_C_END macros from file WebKit2/config.h to here and
rename them to WTF_EXTERN_C_BEGIN and WTF_EXTERN_C_END, respectively, so that we
can make use of these macros in SPI wrapper headers (e.g. UIKitSPI.h).
I'll look to transition existing code to WTF_EXTERN_C_BEGIN/WTF_EXTERN_C_END and
remove EXTERN_C in a subsequent commit(s).
* wtf/Compiler.h:
2015-01-07 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r178068.
https://bugs.webkit.org/show_bug.cgi?id=140235
Breaks the iOS build (Requested by enrica on #webkit).
Reverted changeset:
"[iOS] Make WebKit2 build with public iOS SDK and more build
fixes for DRT"
https://bugs.webkit.org/show_bug.cgi?id=137371
http://trac.webkit.org/changeset/178068
2015-01-07 Daniel Bates <dabates@apple.com>
[iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
https://bugs.webkit.org/show_bug.cgi?id=137371
Reviewed by David Kilzer.
Move EXTERN_C_BEGIN and EXTERN_C_END macros from file WebKit2/config.h to here and
rename them to WTF_EXTERN_C_BEGIN and WTF_EXTERN_C_END, respectively, so that we
can make use of these macros in SPI wrapper headers (e.g. UIKitSPI.h).
I'll look to transition existing code to WTF_EXTERN_C_BEGIN/WTF_EXTERN_C_END and
remove EXTERN_C in a subsequent commit(s).
* wtf/Compiler.h:
2015-01-07 Brian J. Burg <burg@cs.washington.edu>
Web Inspector: purge PassRefPtr from Inspector code and use Ref for typed and untyped protocol objects
https://bugs.webkit.org/show_bug.cgi?id=140053
Reviewed by Andreas Kling.
* wtf/Stopwatch.h:
(WTF::Stopwatch::create): Return a Ref.
2015-01-07 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r178039.
https://bugs.webkit.org/show_bug.cgi?id=140187
Breaks ObjC Inspector Protocol (Requested by JoePeck on
#webkit).
Reverted changeset:
"Web Inspector: purge PassRefPtr from Inspector code and use
Ref for typed and untyped protocol objects"
https://bugs.webkit.org/show_bug.cgi?id=140053
http://trac.webkit.org/changeset/178039
2015-01-06 Brian J. Burg <burg@cs.washington.edu>
Web Inspector: purge PassRefPtr from Inspector code and use Ref for typed and untyped protocol objects
https://bugs.webkit.org/show_bug.cgi?id=140053
Reviewed by Andreas Kling.
* wtf/Stopwatch.h:
(WTF::Stopwatch::create): Return a Ref.
2015-01-06 Alexey Proskuryakov <ap@apple.com>
ADDRESS_SANITIZER macro is overloaded
https://bugs.webkit.org/show_bug.cgi?id=140130
Reviewed by Anders Carlsson.
* wtf/Compiler.h: Added an ASAN_ENABLED macro. The abbreviation should become well
known - we already use it in tools.
* wtf/Assertions.h:
* wtf/RefCounted.h:
* wtf/SizeLimits.cpp:
Change the conditional to ENABLE(SECURITY_ASSERTIONS). These checks will be used
in debug builds, and also when one explicitly passes -DENABLE_SECURITY_ASSERTIONS.
2015-01-05 Andreas Kling <akling@apple.com>
Purge PassRefPtr from Page.
<https://webkit.org/b/140089>
Reviewed by Anders Carlsson.
Make SchedulePair::create() return Ref since it never fails.
* wtf/SchedulePair.h:
(WTF::SchedulePair::create):
2015-01-01 Darin Adler <darin@apple.com>
Rework code that hides characters in password fields to streamline a little
https://bugs.webkit.org/show_bug.cgi?id=140035
Reviewed by Sam Weinig.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::fill): Deleted.
* wtf/text/StringImpl.h: Deleted StringImpl::fill.
* wtf/text/WTFString.h:
(WTF::String::fill): Deleted.
2014-12-26 Dan Bernstein <mitz@apple.com>
Build fix.
Removed use of __builtin_s{add,sub}_overflow introduced in r177729 that was causing a compiler used at Apple to crash because of <rdar://problem/19347133>.
* wtf/SaturatedArithmetic.h:
(signedAddOverflows):
(signedSubtractOverflows):
2014-12-26 Dan Bernstein <mitz@apple.com>
<rdar://problem/19348208> REGRESSION (r177027): iOS builds use the wrong toolchain
https://bugs.webkit.org/show_bug.cgi?id=139950
Reviewed by David Kilzer.
* Configurations/Base.xcconfig: Only define TOOLCHAINS when building for OS X, doing so
in a manner that works with Xcode 5.1.1.
2014-12-25 Dan Bernstein <mitz@apple.com>
Try to fix the Windows build after r177733.
* wtf/Ref.h:
2014-12-25 Alexey Proskuryakov <ap@apple.com>
Simplify saturated integer add/sub
https://bugs.webkit.org/show_bug.cgi?id=139854
Address Darin's post-commit feedback to fix API tests.
* wtf/SaturatedArithmetic.h: (saturatedSubtraction):
2014-12-24 Benjamin Poulain <benjamin@webkit.org>
Simplify saturated integer add/sub
https://bugs.webkit.org/show_bug.cgi?id=139854
Reviewed by Darin Adler.
* wtf/Compiler.h:
Make a wrapper for __has_builtin for compilers that do not support it.
* wtf/SaturatedArithmetic.h:
(saturatedAddition):
(saturatedSubtraction):
Use the builtins when possible instead of reinventing the wheel.
On ARMv7, use the saturated math instructions.
2014-12-23 Anders Carlsson <andersca@apple.com>
Move dynamic_objc_cast to RetainPtr.h
https://bugs.webkit.org/show_bug.cgi?id=139915
Reviewed by Sam Weinig.
* wtf/RetainPtr.h:
(WTF::dynamic_objc_cast):
2014-12-23 Anders Carlsson <andersca@apple.com>
Re-indent RefPtr.h and RetainPtr.h.
Rubber-stamped by Sam Weinig.
* wtf/RefPtr.h:
* wtf/RetainPtr.h:
2014-12-20 Eric Carlson <eric.carlson@apple.com>
[iOS] add optimized fullscreen API
https://bugs.webkit.org/show_bug.cgi?id=139833
<rdar://problem/18844486>
Reviewed by Simon Fraser.
* wtf/Platform.h: Define ENABLE_VIDEO_PRESENTATION_MODE.
2014-12-18 Gyuyoung Kim <gyuyoung.kim@samsung.com>
Fix build break on EFL and GTK since r177523
https://bugs.webkit.org/show_bug.cgi?id=139805
Reviewed by Csaba Osztrogonác.
* wtf/Ref.h: Include <wtf/StdLibExtras.h> to use std::exchange().
2014-12-18 Gavin Barraclough <barraclough@apple.com>
Add strong typing to RefCounter interface, return value as a bool.
https://bugs.webkit.org/show_bug.cgi?id=139776
Unreviewed style fixes.
* wtf/RefCounter.h:
(WTF::=):
2014-12-18 Brent Fulgham <bfulgham@apple.com>
[Win] Build correction after r177541.
* wtf/RefCounter.h:
(WTF::RefCounter::Token<T>::Token): Revise constructor inlines to correct
syntax error.
2014-12-18 Gavin Barraclough <barraclough@apple.com>
Add strong typing to RefCounter interface, return value as a bool.
https://bugs.webkit.org/show_bug.cgi?id=139776
Reviewed by Geoff Garen.
Currently all token vended by a RefCounter have the same type - Ref<RefCounter::Count>.
This means there is no compile time type checking to prevent mistakes. Update the count()
method to token<>(), templated on type used to identify the token being returned.
Calls to token<T>() will return a result of type RefCounter::Token<T>.
There are a few problems with the fact the counter will return you an exact count of the
number of outstanding tokens:
- It is desirable to only fire the callback on zero-edge changes; it is more consistent
to do so if the value is only readable as a boolean.
- It is desirable to provide the value as an argument to the callback, however to make
this useful for integer values it is also necessary to indicate the direction of change
(0->1 is often interesting where 2->1 is not).
- There is a mismatch between the precision of returning a count, and the inherent
imprecision of a token based mechanism, where it may be difficult to guarantee
absolutely no unnecessary refcount churn, and thus unintentional counter values.
* wtf/RefCounter.cpp:
(WTF::RefCounter::Count::ref):
(WTF::RefCounter::Count::deref):
- only call the callback on zero-edge changes; provide the value.
(WTF::RefCounter::RefCounter):
- callback now takes a bool argument.
* wtf/RefCounter.h:
(WTF::RefCounter::Token::Token):
- New opaque type to reference the RefCounter::Count.
(WTF::RefCounter::Token::operator!):
- ! operator checks for null / anasigned Tokens.
(WTF::RefCounter::RefCounter):
- callback now takes a bool argument.
(WTF::RefCounter::token):
- renamed from count(), templated on type of token returned.
(WTF::RefCounter::value):
- now returns a bool.
(WTF::RefCounter::Token<T>::Token):
(WTF::=):
- Tokens can be copied & assigned.
(WTF::RefCounter::count): Deleted.
- renamed to token<>().
2014-12-18 Anders Carlsson <andersca@apple.com>
Simplify smart pointer classes by using std::exchange
https://bugs.webkit.org/show_bug.cgi?id=139790
Reviewed by Andreas Kling.
* wtf/MallocPtr.h:
* wtf/OSObjectPtr.h:
* wtf/OwnPtr.h:
(WTF::OwnPtr<T>::clear):
(WTF::OwnPtr<T>::release):
(WTF::OwnPtr<T>::leakPtr):
(WTF::=):
* wtf/PassOwnPtr.h:
(WTF::PassOwnPtr<T>::leakPtr):
* wtf/PassRefPtr.h:
(WTF::PassRefPtr<T>::leakRef):
* wtf/Ref.h:
* wtf/RefPtr.h:
(WTF::RefPtr<T>::clear):
(WTF::RefPtr<T>::leakRef):
* wtf/RetainPtr.h:
(WTF::RetainPtr<T>::leakRef):
2014-12-18 Anders Carlsson <andersca@apple.com>
Clean up MachSendRight and add a copySendRight member function
https://bugs.webkit.org/show_bug.cgi?id=139788
Reviewed by Tim Horton.
* wtf/StdLibExtras.h:
(std::exchange):
Add an implementation of std::exchange.
2014-12-17 Chris Dumez <cdumez@apple.com>
[iOS] Make it possible to toggle FeatureCounter support at runtime
https://bugs.webkit.org/show_bug.cgi?id=139688
<rdar://problem/19266254>
Reviewed by Andreas Kling.
Remove FeatureCounter API from WTF and move it to WebCore/platform
instead so that it can log conditionally based on a WebCore setting.
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
2014-12-17 Brent Fulgham <bfulgham@apple.com>
[Win] Correct DebugSuffix builds under MSBuild
https://bugs.webkit.org/show_bug.cgi?id=139733
<rdar://problem/19276880>
Reviewed by Simon Fraser.
* WTF.vcxproj/WTF.proj: Make sure to use the '_debug' suffix
when building the DebugSuffix target.
2014-12-17 Anders Carlsson <andersca@apple.com>
Make Ref::copyRef const and ref-qualified
https://bugs.webkit.org/show_bug.cgi?id=139730
Reviewed by Andreas Kling.
* wtf/Ref.h:
2014-12-16 Daniel Bates <dabates@apple.com>
[iOS] WTF fails to build with public SDK due to missing header CPAggregateDictionary.h
https://bugs.webkit.org/show_bug.cgi?id=139695
Reviewed by Chris Dumez.
Add USE(APPLE_INTERNAL_SDK)-guard around iOS-specific feature counter implementation
as we are only interested in counting features in builds of iOS WebKit that were built
with the Apple Internal SDK.
* wtf/FeatureCounter.cpp:
* wtf/ios/FeatureCounter.mm:
2014-12-16 Geoffrey Garen <ggaren@apple.com>
Enable FastMalloc in debug builds
https://bugs.webkit.org/show_bug.cgi?id=139692
Reviewed by Alexey Proskuryakov.
This will give debug builds greater fidelity to the real thing.
FastMalloc now transparently supports all the malloc debugging APIs I
know of by disabling itself at runtime -- and it should be easy to add
support for any APIs I missed -- so there's no need to turn it off in
debug builds.
* wtf/FastMalloc.cpp:
2014-12-16 Anders Carlsson <andersca@apple.com>
RefPtr::copyRef should be const
https://bugs.webkit.org/show_bug.cgi?id=139689
Reviewed by Andreas Kling.
copyRef() doesn't modify the original object so it should be const.
Also, add a && qualified overload and mark it deleted so that calls to copyRef() where
the object is an rvalue will fail to compile.
* wtf/RefPtr.h:
2014-12-15 Chris Dumez <cdumez@apple.com>
[iOS] Add feature counting support
https://bugs.webkit.org/show_bug.cgi?id=139652
<rdar://problem/19255690>
Reviewed by Gavin Barraclough.
Add a FeatureCounter API for to log / count when a feature
is used. For now, this is only implementated on iOS.
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FeatureCounter.cpp: Added.
(WTF::incrementFeatureCounterKey):
(WTF::setFeatureCounterKey):
* wtf/FeatureCounter.h: Added.
* wtf/ios/FeatureCounter.mm: Added.
(WTF::incrementFeatureCounterKey):
(WTF::setFeatureCounterKey):
2014-12-12 Anders Carlsson <andersca@apple.com>
Get rid of the DONT_FINALIZE_ON_MAIN_THREAD #define
https://bugs.webkit.org/show_bug.cgi?id=139613
Reviewed by Sam Weinig.
* wtf/Platform.h:
Remove the #define.
2014-12-15 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r177284.
https://bugs.webkit.org/show_bug.cgi?id=139658
"Breaks API tests and LayoutTests on Yosemite Debug"
(Requested by msaboff on #webkit).
Reverted changeset:
"Make sure range based iteration of Vector<> still receives
bounds checking"
https://bugs.webkit.org/show_bug.cgi?id=138821
http://trac.webkit.org/changeset/177284
2014-12-15 Andreas Kling <akling@apple.com>
Purge PassRefPtr from FocusEvent code.
<https://webkit.org/b/139647>
Reviewed by Anders Carlsson.
Add a RefPtr::copyRef() to use when passing a RefPtr to a RefPtr&& without
transferring the ownership.
* wtf/RefPtr.h:
2014-12-15 Oliver Hunt <oliver@apple.com>
Make sure range based iteration of Vector<> still receives bounds checking
https://bugs.webkit.org/show_bug.cgi?id=138821
Reviewed by Mark Lam.
Add a new IndexedIterator struct to WTF that wraps a
Vector type and index to provide pointer like semantics
while still performing runtime bounds checking, even in
release builds. We store a simple index into the vector
which means that this iterator allows vector resizing
during iteration. If the vector is resized such that the
iterator is out of bounds, then any attempt to dereference
the iterator will crash safely.
For the purpose of retaining semantically equivalent
behaviour, the iterator can be moved to m_index == size()
as that is the standard "end" terminator for these types.
Attempting to dereference at that point will still crash
rather than perform an unsafe memory operation.
By necessity there are many overrides for operator + and - as
we otherwise hit many different type promotion ambiguities when
performing arithmetic with iterators. These ambiguities are also
different for 32- vs. 64-bit, so duplicating the functions
and then forwarding to the core implementations that performed
the bounds checking and mutation seemed like the right call.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/IndexedIterator.h: Added.
(WTF::IndexedIterator::IndexedIterator):
(WTF::IndexedIterator::operator->):
(WTF::IndexedIterator::operator*):
(WTF::IndexedIterator::get):
(WTF::IndexedIterator::operator++):
(WTF::IndexedIterator::operator--):
(WTF::IndexedIterator::operator UnspecifiedBoolType):
(WTF::IndexedIterator::operator-):
(WTF::IndexedIterator::operator=):
(WTF::IndexedIterator::operator==):
(WTF::IndexedIterator::operator!=):
(WTF::IndexedIterator::operator<):
(WTF::IndexedIterator::operator<=):
(WTF::IndexedIterator::operator>):
(WTF::IndexedIterator::operator>=):
(WTF::IndexedIterator::operator const_iterator):
(WTF::IndexedIterator::unsafeGet):
(WTF::getPtr):
(WTF::operator-):
(WTF::operator==):
(WTF::operator!=):
(WTF::operator<=):
(WTF::operator>=):
(WTF::operator<):
(WTF::operator>):
(WTF::IndexedIteratorSelector::makeIterator):
(WTF::IndexedIteratorSelector::makeConstIterator):
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
* wtf/Vector.h:
(WTF::Vector::Vector):
(WTF::Vector::begin):
(WTF::Vector::end):
(WTF::OverflowHandler>::Vector):
(WTF::=):
(WTF::OverflowHandler>::fill):
(WTF::OverflowHandler>::expandCapacity):
(WTF::OverflowHandler>::tryExpandCapacity):
(WTF::OverflowHandler>::resize):
(WTF::OverflowHandler>::shrink):
(WTF::OverflowHandler>::grow):
(WTF::OverflowHandler>::reserveCapacity):
(WTF::OverflowHandler>::tryReserveCapacity):
(WTF::OverflowHandler>::shrinkCapacity):
(WTF::OverflowHandler>::append):
(WTF::OverflowHandler>::tryAppend):
(WTF::OverflowHandler>::appendSlowCase):
(WTF::OverflowHandler>::uncheckedAppend):
(WTF::OverflowHandler>::appendVector):
(WTF::OverflowHandler>::insert):
(WTF::OverflowHandler>::insertVector):
(WTF::OverflowHandler>::remove):
2014-12-14 Andreas Kling <akling@apple.com>
Minor follow-up tweaks suggested by Darin on bug 139587.
* wtf/text/WTFString.h:
(WTF::String::String):
2014-12-14 Andreas Kling <akling@apple.com>
Replace PassRef with Ref/Ref&& across the board.
<https://webkit.org/b/139587>
Reviewed by Darin Adler.
Kill the PassRef class and replace it by Ref/Ref&&.
Usage is simple:
- For locals and members, keep using Ref<T>.
- For return types, use Ref<T>.
- For (ownership-transferring) arguments, use Ref<T>&&.
When passing to a Ref&&, use WTF::move() to mobilize the value
at the call site, e.g:
void myFunction(Ref<Foo>&&);
Ref<Foo> myFoo(Foo::create());
myFunction(WTF::move(myFoo));
// 'myFoo' is invalid from this point forward.
As you can see, it works a lot like PassRefPtr, but unlike PassRefPtr
it won't surprise you by becoming null *unless* you WTF::move it.
I've also added a Ref::copyRef() for instances where you want to
return a Ref *without* transferring ownership, e.g code like:
Ref<Foo> foo() { return m_foo; }
... now becomes ...
Ref<Foo> foo() { return m_foo.copyRef(); }
This makes it explicit that a refcount bump will occur.
Finally, do note that unlike last year's PassRef, Ref&& does not
require you to move it to avoid leaking; it will clean itself up.
* wtf/PassRef.h:
(WTF::adopted): Deleted.
(WTF::PassRef<T>::PassRef): Deleted.
(WTF::PassRef<T>::~PassRef): Deleted.
(WTF::PassRef<T>::get): Deleted.
(WTF::PassRef<T>::ptr): Deleted.
(WTF::PassRef<T>::leakRef): Deleted.
(WTF::adoptRef): Deleted.
(WTF::createRefCounted): Deleted.
* wtf/PassRefPtr.h:
(WTF::PassRefPtr::PassRefPtr):
* wtf/Ref.h:
(WTF::adopted):
(WTF::Ref::~Ref):
(WTF::Ref::Ref):
(WTF::Ref::operator=):
(WTF::Ref::operator->):
(WTF::Ref::ptr):
(WTF::Ref::get):
(WTF::Ref::operator T&):
(WTF::Ref::operator const T&):
(WTF::Ref<T>::replace):
(WTF::adoptRef):
* wtf/RefCounter.h:
(WTF::RefCounter::count):
* wtf/RefPtr.h:
(WTF::RefPtr::releaseNonNull):
(WTF::RefPtr<T>::RefPtr):
(WTF::=):
* wtf/text/AtomicString.cpp:
(WTF::addToStringTable):
(WTF::AtomicString::add):
(WTF::AtomicString::addFromLiteralData):
(WTF::AtomicString::addSlowCase):
* wtf/text/AtomicString.h:
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::createFromLiteral):
(WTF::StringImpl::createWithoutCopying):
(WTF::StringImpl::createUninitializedInternal):
(WTF::StringImpl::createUninitializedInternalNonEmpty):
(WTF::StringImpl::createUninitialized):
(WTF::StringImpl::reallocateInternal):
(WTF::StringImpl::reallocate):
(WTF::StringImpl::createInternal):
(WTF::StringImpl::create):
(WTF::StringImpl::create8BitIfPossible):
(WTF::StringImpl::substring):
(WTF::StringImpl::lower):
(WTF::StringImpl::upper):
(WTF::StringImpl::fill):
(WTF::StringImpl::foldCase):
(WTF::StringImpl::convertToASCIILowercase):
(WTF::StringImpl::stripMatchedCharacters):
(WTF::StringImpl::stripWhiteSpace):
(WTF::StringImpl::removeCharacters):
(WTF::StringImpl::simplifyMatchedCharactersToSpace):
(WTF::StringImpl::simplifyWhiteSpace):
(WTF::StringImpl::replace):
(WTF::StringImpl::adopt):
* wtf/text/StringImpl.h:
(WTF::StringImpl::create8BitIfPossible):
(WTF::StringImpl::create):
(WTF::StringImpl::createSubstringSharingImpl8):
(WTF::StringImpl::createSubstringSharingImpl):
(WTF::StringImpl::createFromLiteral):
(WTF::StringImpl::createEmptyUnique):
(WTF::StringImpl::adopt):
(WTF::StringImpl::replace):
(WTF::StringImpl::constructInternal<LChar>):
(WTF::StringImpl::constructInternal<UChar>):
(WTF::StringImpl::isolatedCopy):
* wtf/text/WTFString.h:
(WTF::String::String):
2014-12-10 Geoffrey Garen <ggaren@apple.com>
Please disable the webkitFirstVersionWithInitConstructorSupport check on Apple TV
https://bugs.webkit.org/show_bug.cgi?id=139501
Reviewed by Gavin Barraclough.
Added a platform definition for APPLETV.
(It's not an OS because it's not mutually exclusive with other OS definitions.)
* wtf/Platform.h:
2014-12-10 Martin Robinson <mrobinson@igalia.com>
[GTK] Add support for text-decoration-skip
https://bugs.webkit.org/show_bug.cgi?id=131540
Reviewed by Gustavo Noronha Silva.
* wtf/Platform.h: Enable text decoration skip by default.
2014-12-09 David Kilzer <ddkilzer@apple.com>
Switch from using PLATFORM_NAME to SDK selectors in ANGLE, bmalloc, gtest, JavaScriptCore, WTF
<http://webkit.org/b/139212>
Reviewed by Joseph Pecoraro.
* Configurations/Base.xcconfig:
- Only set GCC_ENABLE_OBJC_GC, GCC_MODEL_TUNING and TOOLCHAINS
on OS X.
* Configurations/DebugRelease.xcconfig:
- Only set MACOSX_DEPLOYMENT_TARGET and SDKROOT on OS X.
2014-12-09 Dean Jackson <dino@apple.com>
[Apple] Use Accelerate framework to speed-up FEGaussianBlur
https://bugs.webkit.org/show_bug.cgi?id=139310
Unreviewed followup, after comments by Andreas Kling.
It was pointed out that we already have a USE(ACCELERATE), so
we don't need a HAVE(ACCELERATE) :)
* wtf/Platform.h:
2014-12-09 Alberto Garcia <berto@igalia.com>
Undefined Symbol build error "_objc_registerThreadWithCollector" when building WebKit GTK Mac OS X on Snow Leopard
https://bugs.webkit.org/show_bug.cgi?id=58737
Reviewed by Darin Adler.
Replace OS(MAC_OS_X) with PLATFORM(MAC) to prevent using
osx-specific code in WebKitGTK+ builds.
* wtf/ThreadingPthreads.cpp:
(WTF::initializeCurrentThreadInternal):
2014-12-08 Dean Jackson <dino@apple.com>
[Apple] Use Accelerate framework to speed-up FEGaussianBlur
https://bugs.webkit.org/show_bug.cgi?id=139310
<rdar://problem/18434594>
Reviewed by Simon Fraser.
Add a HAVE_ACCELERATE flag, true on Apple platforms.
* wtf/Platform.h:
2014-12-08 Myles C. Maxfield <mmaxfield@apple.com>
Fix iOS build after r176971.
I had previously modified the WTF forwarding header instead of modifying the real source.
* wtf/unicode/CharacterNames.h:
2014-12-08 Anders Carlsson <andersca@apple.com>
Change WTF::currentCPUTime to return std::chrono::microseconds and get rid of currentCPUTimeMS
https://bugs.webkit.org/show_bug.cgi?id=139410
Reviewed by Andreas Kling.
* wtf/CurrentTime.cpp:
(WTF::currentCPUTime):
(WTF::currentCPUTimeMS): Deleted.
* wtf/CurrentTime.h:
2014-12-08 Chris Dumez <cdumez@apple.com>
Revert r176293 & r176275
Unreviewed, revert r176293 & r176275 changing the Vector API to use unsigned type
instead of size_t. There is some disagreement regarding the long-term direction
of the API and we shouldn’t leave the API partly transitioned to unsigned type
while making a decision.
* wtf/Forward.h:
* wtf/Vector.h:
(WTF::VectorTypeOperations::compare):
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::shouldReallocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
(WTF::VectorBufferBase::capacity):
(WTF::VectorBufferBase::VectorBufferBase):
(WTF::VectorBuffer::VectorBuffer):
(WTF::VectorBuffer::allocateBuffer):
(WTF::VectorBuffer::tryAllocateBuffer):
(WTF::VectorBuffer::shouldReallocateBuffer):
(WTF::VectorBuffer::reallocateBuffer):
(WTF::VectorBuffer::swap):
(WTF::VectorBuffer::swapInlineBuffer):
(WTF::VectorBuffer::swapInlineBuffers):
(WTF::Vector::Vector):
(WTF::Vector::capacity):
(WTF::Vector::at):
(WTF::Vector::operator[]):
(WTF::OverflowHandler>::find):
(WTF::OverflowHandler>::reverseFind):
(WTF::OverflowHandler>::fill):
(WTF::OverflowHandler>::expandCapacity):
(WTF::OverflowHandler>::tryExpandCapacity):
(WTF::OverflowHandler>::resize):
(WTF::OverflowHandler>::resizeToFit):
(WTF::OverflowHandler>::shrink):
(WTF::OverflowHandler>::grow):
(WTF::OverflowHandler>::reserveCapacity):
(WTF::OverflowHandler>::tryReserveCapacity):
(WTF::OverflowHandler>::reserveInitialCapacity):
(WTF::OverflowHandler>::shrinkCapacity):
(WTF::OverflowHandler>::append):
(WTF::OverflowHandler>::tryAppend):
(WTF::OverflowHandler>::insert):
(WTF::OverflowHandler>::insertVector):
(WTF::OverflowHandler>::remove):
(WTF::OverflowHandler>::reverse):
(WTF::OverflowHandler>::checkConsistency):
* wtf/text/AtomicString.h:
* wtf/text/StringImpl.h:
(WTF::StringImpl::adopt):
(WTF::equalIgnoringNullity):
* wtf/text/StringView.h:
(WTF::append):
* wtf/text/WTFString.h:
2014-12-07 Andreas Kling <akling@apple.com>
Use more PassRef in AtomicString.
<https://webkit.org/b/139319>
Reviewed by Antti Koivisto.
Make a pass over AtomicString and convert functions that return PassRefPtr
into returning RefPtr (where it may be null) and PassRef otherwise.
This allows the compiler to skip null checks in many places.
* wtf/text/AtomicString.cpp:
(WTF::addToStringTable):
(WTF::AtomicString::add):
(WTF::AtomicString::addFromLiteralData):
(WTF::AtomicString::addSlowCase):
* wtf/text/AtomicString.h:
(WTF::AtomicString::add):
(WTF::AtomicString::addWithStringTableProvider):
* wtf/text/cf/AtomicStringCF.cpp:
(WTF::AtomicString::add):
2014-12-05 Roger Fong <roger_fong@apple.com>
[Win] proj files copying over too many resources..
https://bugs.webkit.org/show_bug.cgi?id=139315.
<rdar://problem/19148278>
Reviewed by Brent Fulgham.
* WTF.vcxproj/WTF.proj: Only copy WTF.dll.
2014-12-05 Andreas Kling <akling@apple.com>
PassRef should deref on destruction if pointee was not moved.
<https://webkit.org/b/139309>
Reviewed by Antti Koivisto.
Let PassRef become nullptr internally after having WTF::move()'d the pointee.
This means that PassRef is now essentially a PassRefPtr that can only be
constructed with a non-null pointee.
This should make it possible for all ::create()-style construction helpers to
return PassRef, removing a branch in each case.
* wtf/PassRef.h:
(WTF::PassRef<T>::PassRef):
(WTF::PassRef<T>::~PassRef):
(WTF::PassRef<T>::get):
(WTF::PassRef<T>::ptr):
(WTF::PassRef<T>::leakRef):
(WTF::PassRef<T>::dropRef): Deleted.
2014-12-05 Jer Noble <jer.noble@apple.com>
[WTF] MediaTime should support round-tripping from and to doubles.
https://bugs.webkit.org/show_bug.cgi?id=139248
Reviewed by Eric Carlson.
MediaTimes should be able to return precisely the same double value as was used
when the MediaTime was created, so long as that MediaTime was not modified in a
non-destructive way. This will allow API which accepts floating-point values to
return the exact same value when asked, but still be able to store that value
as a MediaTime.
* wtf/MediaTime.cpp:
(WTF::MediaTime::createWithFloat): Added; store the floating-point value in a union.
(WTF::MediaTime::createWithDouble): Ditto.
(WTF::MediaTime::toFloat): If the value is a double, just return it.
(WTF::MediaTime::toDouble): Ditto.
(WTF::MediaTime::operator+): Special case when one or both sides are doubles.
(WTF::MediaTime::operator-): Ditto.
(WTF::MediaTime::operator*): Ditto.
(WTF::MediaTime::compare): Ditto.
(WTF::abs): Ditto.
(WTF::MediaTime::setTimeScale): Convert the MediaTime from a double.
2014-12-05 peavo@outlook.com <peavo@outlook.com>
[WinCairo] WTF project is missing a GStreamer source file.
https://bugs.webkit.org/show_bug.cgi?id=139296
Reviewed by Philippe Normand.
The WTF project file is missing a GStreamer source file,
causing a link error when compiling with GStreamer enabled.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
2014-12-04 David Kilzer <ddkilzer@apple.com>
REGRESSION (r176683): RefCounter.h is installed outside SDKROOT
* WTF.xcodeproj/project.pbxproj: Don't mark RefCounter.h as a
private header. WTF headers use a special build phase script to
be installed.
2014-12-04 Anders Carlsson <andersca@apple.com>
Make API::String copy the underlying strings if needed, for thread safety
https://bugs.webkit.org/show_bug.cgi?id=139261
Reviewed by Sam Weinig.
* wtf/RefPtr.h:
(WTF::RefPtr<T>::leakRef):
Add a leakRef() to RefPtr so we don't have to go through PassRefPtr.
* wtf/text/WTFString.cpp:
(WTF::String::isSafeToSendToAnotherThread):
Check if the string is empty before checking whether it's in an atomic string table.
It's safe to send empty strings to other threads even if they're in the atomic string table
since they will never be deallocated.
2014-12-04 Csaba Osztrogonác <ossy@webkit.org>
Fix cast-align warning in StringImpl.h
https://bugs.webkit.org/show_bug.cgi?id=139222
Reviewed by Anders Carlsson.
* wtf/text/StringImpl.h:
(WTF::StringImpl::tailPointer):
2014-12-02 Mark Lam <mark.lam@apple.com>
Rolling out r176592, r176603, r176616, and r176705 until build and perf issues are resolved.
https://bugs.webkit.org/show_bug.cgi?id=138821
Not reviewed.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/IndexedIterator.h: Removed.
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
* wtf/Vector.h:
(WTF::Vector::Vector):
(WTF::Vector::begin):
(WTF::Vector::end):
(WTF::OverflowHandler>::Vector):
(WTF::=):
(WTF::OverflowHandler>::fill):
(WTF::OverflowHandler>::expandCapacity):
(WTF::OverflowHandler>::tryExpandCapacity):
(WTF::OverflowHandler>::resize):
(WTF::OverflowHandler>::shrink):
(WTF::OverflowHandler>::grow):
(WTF::OverflowHandler>::reserveCapacity):
(WTF::OverflowHandler>::tryReserveCapacity):
(WTF::OverflowHandler>::shrinkCapacity):
(WTF::OverflowHandler>::append):
(WTF::OverflowHandler>::tryAppend):
(WTF::OverflowHandler>::appendSlowCase):
(WTF::OverflowHandler>::uncheckedAppend):
(WTF::OverflowHandler>::appendVector):
(WTF::OverflowHandler>::insert):
(WTF::OverflowHandler>::insertVector):
(WTF::OverflowHandler>::remove):
2014-12-02 Oliver Hunt <oliver@apple.com>
Fix IOS builds.
* wtf/IndexedIterator.h:
2014-12-02 Gavin Barraclough <barraclough@apple.com>
Generalize PageActivityAssertionToken
https://bugs.webkit.org/show_bug.cgi?id=139106
Reviewed by Sam Weinig.
PageActivityAssertionToken is a RAII mechanism implementing a counter, used by PageThrottler
to count user visible activity in progress on the page (currently page load and media playback).
Use of an RAII type is prevents a number of possible errors, including double counting a single
media element, or failing to decrement the count after a media element has been deallocated.
The current implementation has a number of drawbacks that have been addressed by this refactoring:
- specific to single use in PageThrottler class - not reusable.
- incomplete encapsulation - the counter and WeakPtrFactory that comprise the current implementation
are not encapsulated (are in the client type, PageThrottler).
- tokens are not shared - PageActivityAssertionToken instances are managed by std::unique, every
increment requires an object allocation.
- redundancy - the current implementation uses a WeakPtr to safely reference the PageThrottler, this
is internally implemented using a reference counted type, resulting in two counters being
incremented (one in the PageActivityAssertionToken, one in the PageThrottler).
In the reimplementation:
- a callback is provided via a lambda function, which allows for easy reuse without a lot of
boilerplate code.
- the counter, callback and ownership of the otherwise weakly-owned token is encapsulated within the
RefCounter type.
- a single count within RefCounter::Count stores the counter value, and also manage the lifetime
of this object.
- standard RefPtrs are used to manage references to the RefCounter::Count.
* WTF.xcodeproj/project.pbxproj:
- added RefCounter.cpp/.h
* wtf/RefCounter.cpp: Added.
(WTF::RefCounter::Count::ref):
- increment the counter.
(WTF::RefCounter::Count::deref):
- decrement the counter, and delete as necessary.
(WTF::RefCounter::RefCounter):
- create a RefCounter::Count.
(WTF::RefCounter::~RefCounter):
- eagerly delete the Counter if it has no references, otherwise let it be deleted on last deref.
* wtf/RefCounter.h: Added.
(WTF::RefCounter::Count::Count):
- initialize count to 0.
(WTF::RefCounter::RefCounter):
- takes a lambda to be called when the value changes.
(WTF::RefCounter::count):
- reference the counter (and in doing so increment the count).
(WTF::RefCounter::value):
- access the current value of the counter.
2014-12-01 Andreas Kling <akling@apple.com>
Optimize constructing JSC::Identifier from AtomicString.
<https://webkit.org/b/139157>
Reviewed by Michael Saboff.
Make AtomicString::isInAtomicStringTable() public so it can be used
in some Identifier assertions.
* wtf/text/AtomicString.h:
2014-12-01 Oliver Hunt <oliver@apple.com>
Fix non-mac builds.
* wtf/IndexedIterator.h:
2014-12-01 Oliver Hunt <oliver@apple.com>
Fix 32-bit build.
* wtf/IndexedIterator.h:
2014-11-17 Oliver Hunt <oliver@apple.com>
Make sure range based iteration of Vector<> still receives bounds checking
https://bugs.webkit.org/show_bug.cgi?id=138821
Reviewed by Mark Lam.
Add a new IndexedIterator struct to WTF that wraps a
Vector type and index to provide pointer like semantics
while still performing runtime bounds checking, even in
release builds. We store a simple index into the vector
which means that this iterator allows vector resizing
during iteration. If the vector is resized such that the
iterator is out of bounds, then any attempt to dereference
the iterator will crash safely. Any other errors, including
overflows, and over extending the iterator will likewise
crash.
For the purpose of retaining semantically equivalent
behaviour, the iterator can be moved to m_index == size()
as that is the standard "end" terminator for these types.
Attempting to dereference at that point will still crash
rather than perform an unsafe memory operation.
In order to maintain the validity of all the bounds checking,
we perform full integer range checking prior to any mutation
of the iterator location. If we detect an arithmetic overflow
we will crash rather than attempting to carry on.
By necessity there are many overrides for operator + and - as
we otherwise hit many different type promotion ambiguities when
performing arithmetic with iterators. These ambiguities are also
different for 32- vs. 64-bit, so duplicating the functions
and then forwarding to the core implementations that performed
the bounds checking and mutation seemed like the right call.
* WTF.xcodeproj/project.pbxproj:
* wtf/IndexedIterator.h: Added.
(WTF::IndexedIterator::IndexedIterator):
(WTF::IndexedIterator::operator->):
(WTF::IndexedIterator::operator*):
(WTF::IndexedIterator::get):
(WTF::IndexedIterator::operator++):
(WTF::IndexedIterator::operator--):
(WTF::IndexedIterator::operator UnspecifiedBoolType):
(WTF::IndexedIterator::operator+=):
(WTF::IndexedIterator::operator-=):
(WTF::IndexedIterator::operator+):
(WTF::IndexedIterator::operator-):
(WTF::IndexedIterator::operator=):
(WTF::IndexedIterator::operator==):
(WTF::IndexedIterator::operator!=):
(WTF::IndexedIterator::operator<):
(WTF::IndexedIterator::operator<=):
(WTF::IndexedIterator::operator>):
(WTF::IndexedIterator::operator>=):
(WTF::IndexedIterator::operator const_iterator):
(WTF::IndexedIterator::isSafeToCompare):
(WTF::IndexedIterator::unsafeGet):
(WTF::getPtr):
(WTF::operator-):
(WTF::operator==):
(WTF::operator!=):
(WTF::operator<=):
(WTF::operator>=):
(WTF::operator<):
(WTF::operator>):
(WTF::IndexedIteratorSelector::makeIterator):
(WTF::IndexedIteratorSelector::makeConstIterator):
* wtf/RefCountedArray.h:
(WTF::RefCountedArray::RefCountedArray):
* wtf/Vector.h:
(WTF::Vector::Vector):
(WTF::Vector::begin):
(WTF::Vector::end):
(WTF::OverflowHandler>::Vector):
(WTF::=):
(WTF::OverflowHandler>::fill):
(WTF::OverflowHandler>::expandCapacity):
(WTF::OverflowHandler>::tryExpandCapacity):
(WTF::OverflowHandler>::resize):
(WTF::OverflowHandler>::shrink):
(WTF::OverflowHandler>::grow):
(WTF::OverflowHandler>::reserveCapacity):
(WTF::OverflowHandler>::tryReserveCapacity):
(WTF::OverflowHandler>::shrinkCapacity):
(WTF::OverflowHandler>::append):
(WTF::OverflowHandler>::tryAppend):
(WTF::OverflowHandler>::appendSlowCase):
(WTF::OverflowHandler>::uncheckedAppend):
(WTF::OverflowHandler>::appendVector):
(WTF::OverflowHandler>::insert):
(WTF::OverflowHandler>::insertVector):
(WTF::OverflowHandler>::remove):
2014-11-30 Ryuan Choi <ryuan.choi@navercorp.com>
[EFL] Drop support for the EFL 1.7
https://bugs.webkit.org/show_bug.cgi?id=139114
Reviewed by Gyuyoung Kim.
* wtf/efl/EflTypedefs.h: Removed old definitions which EFL 1.7 used.
2014-11-21 Anders Carlsson <andersca@apple.com>
Remove the Timer parameters from timer callbacks
https://bugs.webkit.org/show_bug.cgi?id=138974
Reviewed by Antti Koivisto.
* wtf/RunLoopTimer.h:
(WTF::RunLoopTimer::RunLoopTimer):
(WTF::RunLoopTimer::fired):
2014-11-18 Chris Dumez <cdumez@apple.com>
Have Vector::capacity() return an unsigned instead of a size_t
https://bugs.webkit.org/show_bug.cgi?id=138842
Reviewed by Andreas Kling.
Have Vector::capacity() return an unsigned instead of a size_t as
capacity is stored as an unsigned internally.
* wtf/Vector.h:
(WTF::Vector::capacity):
(WTF::OverflowHandler>::expandCapacity):
(WTF::OverflowHandler>::tryExpandCapacity):
2014-11-18 Geoffrey Garen <ggaren@apple.com>
Removed the custom allocator for ListHashSet nodes
https://bugs.webkit.org/show_bug.cgi?id=138841
Reviewed by Andreas Kling.
bmalloc is fast, so we don't need a custom allocator.
The MallocBench test for linked list node allocation (list_allocate) is
4.09X faster in bmalloc than TCMalloc. Also, I wrote a stress test to
add/remove link elements, which modify a ListHashSet on insertion and
removal, and it was 1% faster / in the noise with bmalloc enabled.
* wtf/ListHashSet.h:
(WTF::ListHashSetNode::ListHashSetNode):
(WTF::ListHashSetTranslator::translate):
(WTF::U>::ListHashSet):
(WTF::=):
(WTF::U>::swap):
(WTF::U>::~ListHashSet):
(WTF::U>::size):
(WTF::U>::capacity):
(WTF::U>::isEmpty):
(WTF::U>::first):
(WTF::U>::removeFirst):
(WTF::U>::takeFirst):
(WTF::U>::last):
(WTF::U>::removeLast):
(WTF::U>::takeLast):
(WTF::U>::contains):
(WTF::U>::remove):
(WTF::U>::clear):
(WTF::U>::unlink):
(WTF::U>::unlinkAndDelete):
(WTF::U>::appendNode):
(WTF::U>::prependNode):
(WTF::U>::insertNodeBefore):
(WTF::U>::deleteAllNodes):
(WTF::ListHashSetNodeAllocator::ListHashSetNodeAllocator): Deleted.
(WTF::ListHashSetNodeAllocator::allocate): Deleted.
(WTF::ListHashSetNodeAllocator::deallocate): Deleted.
(WTF::ListHashSetNodeAllocator::pool): Deleted.
(WTF::ListHashSetNodeAllocator::pastPool): Deleted.
(WTF::ListHashSetNodeAllocator::inPool): Deleted.
(WTF::ListHashSetNode::operator new): Deleted.
(WTF::ListHashSetNode::destroy): Deleted.
2014-11-18 Chris Dumez <cdumez@apple.com>
Update the Vector API to deal with unsigned types instead of size_t
https://bugs.webkit.org/show_bug.cgi?id=138824
Reviewed by Andreas Kling.
Update part of the Vector API to deal with unsigned types instead of
size_t. The Vector class is already using unsigned type for its
capacity and size data members. However, the Vector API was never
updated accordingly.
The rest of the Vector API will be ported in follow-up patches to
make the change smaller and more easily reviewable.
* wtf/Forward.h:
* wtf/Vector.h:
(WTF::VectorTypeOperations::compare):
(WTF::VectorBufferBase::allocateBuffer):
(WTF::VectorBufferBase::tryAllocateBuffer):
(WTF::VectorBufferBase::shouldReallocateBuffer):
(WTF::VectorBufferBase::reallocateBuffer):
(WTF::VectorBufferBase::capacity):
(WTF::VectorBufferBase::VectorBufferBase):
(WTF::VectorBuffer::VectorBuffer):
(WTF::VectorBuffer::allocateBuffer):
(WTF::VectorBuffer::tryAllocateBuffer):
(WTF::VectorBuffer::shouldReallocateBuffer):
(WTF::VectorBuffer::reallocateBuffer):
(WTF::VectorBuffer::swap):
(WTF::VectorBuffer::swapInlineBuffer):
(WTF::VectorBuffer::swapInlineBuffers):
(WTF::Vector::Vector):
(WTF::Vector::at):
(WTF::Vector::operator[]):
(WTF::OverflowHandler>::find):
(WTF::OverflowHandler>::reverseFind):
(WTF::OverflowHandler>::fill):
(WTF::OverflowHandler>::expandCapacity):
(WTF::OverflowHandler>::tryExpandCapacity):
(WTF::OverflowHandler>::resize):
(WTF::OverflowHandler>::resizeToFit):
(WTF::OverflowHandler>::shrink):
(WTF::OverflowHandler>::grow):
(WTF::OverflowHandler>::reserveCapacity):
(WTF::OverflowHandler>::tryReserveCapacity):
(WTF::OverflowHandler>::reserveInitialCapacity):
(WTF::OverflowHandler>::shrinkCapacity):
(WTF::OverflowHandler>::append):
(WTF::OverflowHandler>::tryAppend):
(WTF::OverflowHandler>::insert):
(WTF::OverflowHandler>::insertVector):
(WTF::OverflowHandler>::remove):
(WTF::OverflowHandler>::reverse):
(WTF::OverflowHandler>::checkConsistency):
* wtf/text/AtomicString.h:
* wtf/text/StringImpl.h:
(WTF::StringImpl::adopt):
(WTF::equalIgnoringNullity):
* wtf/text/StringView.h:
(WTF::append):
* wtf/text/WTFString.h:
2014-11-18 peavo@outlook.com <peavo@outlook.com>
[WinCairo] Compile errors when GStreamer is enabled.
https://bugs.webkit.org/show_bug.cgi?id=137000
Reviewed by Philippe Normand.
MSVC does not allow the keyword default on move constructors and move assignment operators.
* wtf/gobject/GMainLoopSource.cpp:
(WTF::GMainLoopSource::cancel):
(WTF::GMainLoopSource::socketCallback):
* wtf/gobject/GMainLoopSource.h:
(WTF::GMainLoopSource::Context::operator=):
2014-11-17 Anders Carlsson <andersca@apple.com>
Fix WTF build with newer versions of clang.
<rdar://problem/18978705>
* wtf/HashTable.h:
(WTF::removeIterator):
* wtf/dtoa/utils.h:
(WTF::double_conversion::BitCast):
2014-11-13 Myles C. Maxfield <mmaxfield@apple.com>
Allow constructing a base PassRef with a derived Ref
https://bugs.webkit.org/show_bug.cgi?id=138701
Reviewed by Andreas Kling
* wtf/PassRef.h:
(WTF::PassRef<T>::PassRef):
2014-11-12 Ryuan Choi <ryuan.choi@navercorp.com>
[EFL] Fix the build with EFL 1.12
https://bugs.webkit.org/show_bug.cgi?id=138245
Reviewed by Gyuyoung Kim.
* wtf/efl/UniquePtrEfl.h:
Removed Evas_GL.h from UniquePtrEfl.h, which is commonly included, because
it should not be included with official GL headers.
2014-11-12 Mark Lam <mark.lam@apple.com>
Rename USE(MASM_PROBE) to ENABLE(MASM_PROBE).
<https://webkit.org/b/138661>
Reviewed by Michael Saboff.
Also move the switch for enabling the use of MASM_PROBE from JavaScriptCore's
config.h to WTF's Platform.h. This ensures that the setting is consistently
applied even when building WebCore parts as well.
* wtf/Platform.h:
2014-11-09 Antti Koivisto <antti@apple.com>
Remove BloomFilter size limit
https://bugs.webkit.org/show_bug.cgi?id=138549
Reviewed by Andreas Kling.
* wtf/BloomFilter.h: Remove the static_assert, the code works fine with somewhat larger sizes.
2014-11-09 Chris Dumez <cdumez@apple.com>
Add a more correct way to compare floating point numbers and use it
https://bugs.webkit.org/show_bug.cgi?id=138527
Reviewed by Darin Adler.
To compare floating point numbers in the code base, we would often rely
on the following check:
std::abs(a - b) <= std::numeric_limits<T>::epsilon()
However, this is not correct for arbitrary floating point values, and
will fail for values that are not close to zero.
This patch introduces a WTF::areEssentiallyEqual() templated function
that can only be called with floating point types and relies on the
following formula from [1][2] that defines u as being "essentially
equal" to v if: | u - v | / |u| <= e and | u - v | / |v| <= e
[1] Knuth, D. E. "Accuracy of Floating Point Arithmetic." The Art of
Computer Programming. 3rd ed. Vol. 2. Boston: Addison-Wesley, 1998.
229-45.
[2] http://www.boost.org/doc/libs/1_34_0/libs/test/doc/components/test_tools/floating_point_comparison.html
* wtf/MathExtras.h:
(WTF::safeFPDivision):
(WTF::areEssentiallyEqual):
(WTF::withinEpsilon): Deleted.
2014-11-08 Darin Adler <darin@apple.com>
Replace FileThread class with a single function
https://bugs.webkit.org/show_bug.cgi?id=138282
Reviewed by Alexey Proskuryakov.
* wtf/MessageQueue.h: Made queue work on any type and not require wrapping
everything in a unique_ptr.
* wtf/Threading.cpp:
(WTF::threadEntryPoint): Changed to use a std::function instead of a function pointer.
(WTF::createThread): Add a version that takes a std::function. Reimplemented the
old version using lambdas. Removed the obsolete versions that were there just to support
binary compatibility with very old versions of Safari.
* wtf/Threading.h: Removed an incorrect license header that covers code that was long ago
moved to a different file. Changed createThread to take a std::function instead of a function
pointer and data pointer. Moved internal functions after public functions.
2014-11-05 Chris Dumez <cdumez@apple.com>
Assertion hit DOMTimer::updateTimerIntervalIfNecessary()
https://bugs.webkit.org/show_bug.cgi?id=138440
Reviewed by Geoffrey Garen.
Move the withinEpsilon() function to WTF to avoid code duplication.
* wtf/MathExtras.h:
(WTF::withinEpsilon):
2014-11-05 Chris Dumez <cdumez@apple.com>
Allow constructing a PassRef from a Ref
https://bugs.webkit.org/show_bug.cgi?id=138389
Reviewed by Andreas Kling.
Allow constructing a PassRef from a Ref, similarly to PassRefPtr that
can be constructed from a RefPtr already. This avoids having to call
Ref::get() and simplifies the code a bit.
* wtf/PassRef.h:
(WTF::PassRef<T>::PassRef):
2014-11-05 Dan Bernstein <mitz@apple.com>
Remove the unused deletion UI feature
https://bugs.webkit.org/show_bug.cgi?id=138442
Rubber-stamped by Alexey Proskuryakov.
* wtf/FeatureDefines.h: Removed definition of ENABLE_DELETION_UI.
2014-11-03 Dean Jackson <dino@apple.com>
Add ENABLE_FILTERS_LEVEL_2 feature guard.
https://bugs.webkit.org/show_bug.cgi?id=138362
Reviewed by Tim Horton.
Add a new feature define for Level 2 of CSS Filters.
http://dev.w3.org/fxtf/filters-2/
* wtf/FeatureDefines.h:
2014-11-05 Csaba Osztrogonác <ossy@webkit.org>
Enable ARMv7 disassembler for all platforms
https://bugs.webkit.org/show_bug.cgi?id=138415
Reviewed by Darin Adler.
* wtf/Platform.h:
2014-11-04 Chris Dumez <cdumez@apple.com>
Add ptr() method to Ref class
https://bugs.webkit.org/show_bug.cgi?id=138361
Reviewed by Darin Adler.
It is a very common pattern in our code base to get a pointer from a
Ref object. Previously, we have to call Ref.get() and take its address
which is not very nice. This patch adds a ptr() method to Ref class
to simplify the code a bit.
* wtf/PassRef.h:
(WTF::PassRef<T>::ptr):
* wtf/Ref.h:
(WTF::Ref::ptr):
(WTF::GetPtrHelper<Ref<T>>::getPtr):
2014-11-04 Dániel Bátyai <dbatyai.u-szeged@partner.samsung.com>
ATTR_USED incorrectly applying to Clang
https://bugs.webkit.org/show_bug.cgi?id=138313
Reviewed by Csaba Osztrogonác.
ATTR_USED was only intended for GCC. Also limit it to ENABLE(FTL_NATIVE_CALL_INLINING)
since that's the only thing it's needed for.
* wtf/Platform.h:
2014-11-03 Chris Dumez <cdumez@apple.com>
Allow implicit conversion from Ref<T> to T&
https://bugs.webkit.org/show_bug.cgi?id=138331
Reviewed by Andreas Kling.
Allow implicit conversion from Ref<T> to T& to reduce the amount of
Ref<>::get() calls in the code and increase readability. Unlike for
RefPtr, doing this for Ref should not be error prone.
* wtf/Ref.h:
(WTF::Ref::operator T&):
(WTF::Ref::operator const T&):
* wtf/RunLoop.cpp:
(WTF::RunLoop::Holder::runLoop):
2014-10-31 Jeffrey Pfau <jpfau@apple.com>
Unreviewed, fix ASan build after r175382
* wtf/SizeLimits.cpp:
2014-10-31 Geoffrey Garen <ggaren@apple.com>
Rolled in r175389.
WebKit was failing to build 32bit on some Apple internal systems because
those systems were configured to build bmalloc 64-bit-only. Those systems
have been updated to build bmalloc as a universal binary, so everything
should work fine now.
The relevant setting is controlled by an environment variable on the
build system, and not by the project file in the source tree, so there's
no new code change here.
Enable bmalloc in 32bit builds
https://bugs.webkit.org/show_bug.cgi?id=138232
Reviewed by Andreas Kling.
* wtf/FastMalloc.cpp:
2014-10-31 Lucas Forschler <lforschler@apple.com>
Unreviewed rollout r175389.
2014-10-30 Dana Burkart <dburkart@apple.com>
<rdar://problem/18821260> Prepare for the mysterious future
Reviewed by Lucas Forschler.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
2014-10-30 Geoffrey Garen <ggaren@apple.com>
Enable bmalloc in 32bit builds
https://bugs.webkit.org/show_bug.cgi?id=138232
Reviewed by Andreas Kling.
Seems to work fine.
* wtf/FastMalloc.cpp:
2014-10-30 Jeffrey Pfau <jpfau@apple.com>
ASSERT(!m_deletionHasBegun) in RefCounted.h should be ASSERT_WITH_SECURITY_IMPLICATION
https://bugs.webkit.org/show_bug.cgi?id=138141
Reviewed by Alexey Proskuryakov.
* wtf/RefCounted.h:
(WTF::RefCountedBase::ref):
(WTF::RefCountedBase::relaxAdoptionRequirement):
(WTF::RefCountedBase::derefBase):
(WTF::adopted):
2014-10-28 Milan Crha <mcrha@redhat.com>
Use constants from wtf/MathExtras.h
https://bugs.webkit.org/show_bug.cgi?id=137967
Reviewed by Darin Adler.
* wtf/MathExtras.h:
2014-10-28 Tibor Meszaros <tmeszaros.u-szeged@partner.samsung.com>
[EFL] Remove unnecessary defines from OptionsEfl.cmake
https://bugs.webkit.org/show_bug.cgi?id=138132
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2014-10-27 Chris Dumez <cdumez@apple.com>
Use separate HashMaps for common and uncommon headers in HTTPHeaderMap
https://bugs.webkit.org/show_bug.cgi?id=138079
Reviewed by Anders Carlsson.
Add HashTraits for C++11 strong enum types. Using integer HashTraits for
strong enums would be inconvenient as it would require casting between
integer and strong enum types.
* wtf/HashTraits.h:
(WTF::StrongEnumHashTraits::emptyValue):
(WTF::StrongEnumHashTraits::constructDeletedValue):
(WTF::StrongEnumHashTraits::isDeletedValue):
2014-10-25 Brian J. Burg <burg@cs.washington.edu>
Web Inspector: timelines should not count time elapsed while paused in the debugger
https://bugs.webkit.org/show_bug.cgi?id=136351
Unreviewed, follow-up fix after r175203. The debugger agent should not assume
that the inspector environment's stopwatch has already been started.
* wtf/Stopwatch.h:
(WTF::Stopwatch::isActive): Added. Allow peeking at the stopwatch state.
2014-10-18 Brian J. Burg <burg@cs.washington.edu>
Web Inspector: timelines should not count time elapsed while paused in the debugger
https://bugs.webkit.org/show_bug.cgi?id=136351
Reviewed by Timothy Hatcher.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Stopwatch.h: Added. This implements a refcounted monotonic stopwatch.
(WTF::Stopwatch::create):
(WTF::Stopwatch::Stopwatch):
(WTF::Stopwatch::reset):
(WTF::Stopwatch::start):
(WTF::Stopwatch::stop):
(WTF::Stopwatch::elapsedTime):
2014-10-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Provide a way to have alternate inspector agents
https://bugs.webkit.org/show_bug.cgi?id=137901
Reviewed by Brian Burg.
* wtf/FeatureDefines.h:
2014-10-23 Alberto Garcia <berto@igalia.com>
[GTK] Fix build on Hurd
https://bugs.webkit.org/show_bug.cgi?id=138003
Reviewed by Carlos Garcia Campos.
* wtf/InlineASM.h:
* wtf/Platform.h:
2014-10-22 Byungseon Shin <sun.shin@lge.com>
String(new Date(Mar 30 2014 01:00:00)) is wrong in CET
https://bugs.webkit.org/show_bug.cgi?id=130967
Reviewed by Mark Lam.
By definition of calculateLocalTimeOffset, input time should be UTC time.
But there are many cases when input time is based on local time.
So, it gives erroneous results while calculating offset of DST boundary time.
By adding a argument to distinguish UTC and local time, we can get the correct offset.
* wtf/DateMath.cpp:
(WTF::calculateLocalTimeOffset):
(WTF::parseDateFromNullTerminatedCharacters):
Compensate time offset depends on UTC time or local time.
* wtf/DateMath.h:
Add argument to differenciate UTC or local time.
2014-10-21 Dániel Bátyai <dbatyai.u-szeged@partner.samsung.com>
Fix FTL Native Inlining for EFL
https://bugs.webkit.org/show_bug.cgi?id=137774
Reviewed by Michael Saboff.
Updated guard definition for Native Inlining, and added an attribute define for marking functions
that should not be left out of the symbol table.
* wtf/Platform.h:
2014-10-20 Chris Dumez <cdumez@apple.com>
Use is<>() / downcast<>() for Accessibility objects
https://bugs.webkit.org/show_bug.cgi?id=137286
Reviewed by Darin Adler.
Remove the legacy TYPE_CASTS_BASE() macro now that it is no longer
used.
* wtf/Assertions.h:
2014-10-18 Dan Bernstein <mitz@apple.com>
WorkQueue dispatches functions but isn’t a FunctionDispatcher
https://bugs.webkit.org/show_bug.cgi?id=137853
Reviewed by Anders Carlsson.
* wtf/FunctionDispatcher.h: Added header guards.
2014-10-17 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Add API to GMainLoopSource to schedule sources after a delay in microseconds
https://bugs.webkit.org/show_bug.cgi?id=137782
Reviewed by Sergio Villar Senin.
In some cases when we have a double with the time in seconds, the
conversion to milliseconds ends up truncating the value to 0, and
the source scheduled immediately.
* wtf/gobject/GMainLoopSource.cpp:
(WTF::createMicrosecondsTimeoutSource): Use a custom timeout
source that handles the interval in microseconds instead of milliseconds.
(WTF::GMainLoopSource::scheduleAfterDelay): Use MicrosecondsTimeoutSource.
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy): Ditto.
* wtf/gobject/GMainLoopSource.h:
2014-10-17 Dan Bernstein <mitz@apple.com>
Reverted incorrect build fix attempt.
* wtf/Threading.cpp:
2014-10-17 Dan Bernstein <mitz@apple.com>
Tried to fix the Yosemite build.
* wtf/Threading.cpp:
2014-10-16 Dan Bernstein <mitz@apple.com>
OSObjectPtr is missing leakRef()
https://bugs.webkit.org/show_bug.cgi?id=137798
Reviewed by Sam Weinig.
* wtf/OSObjectPtr.h:
2014-10-14 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed gardening. Ignore Visual Studio *.sdf files.
* WTF.vcxproj: Modified property svn:ignore.
2014-10-13 Antti Koivisto <antti@apple.com>
Add StringCapture helper for thread-safe lambda capture
https://bugs.webkit.org/show_bug.cgi?id=137664
Reviewed by Anders Carlsson.
There is currently no clean way to capture a String in a thread-safe manner. This will now work:
StringCapture stringCapture(string);
auto lambdaThatRunsInAnotherThread = [stringCapture] { String string = stringCapture.string(); ... }
This type won't be necessary with C++14 initialized lambda capture: [string = string.isolatedCopy()].
* wtf/text/WTFString.h:
(WTF::StringCapture::StringCapture): Create isolated copy in copy-constructor.
(WTF::StringCapture::string):
2014-10-11 KwangHyuk Kim <hyuki.kim@samsung.com>
[EFL] Enable WebP support.
https://bugs.webkit.org/show_bug.cgi?id=136156
Reviewed by Gyuyoung Kim.
Enable WTF_USE_WEBP macro for WK2 Efl.
* wtf/Platform.h:
2014-10-11 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Split GMainLoopSource moving thread safe implementation to its own class GThreadSafeMainLoopSource
https://bugs.webkit.org/show_bug.cgi?id=137485
Reviewed by Sergio Villar Senin.
We made GMainLoopSource thread safe, but in most of the cases we
know the sources are used by a single thread, which has an impact
in the performance (mutex, GCancellable, etc.). The new class
GThreadSafeMainLoopSource inherits from GMainLoopSource overriding
the new virtual methods and calling the parent for the common code.
GMutexLocker now supports recursive mutexes, it's a template that
can wrap a GMutex or a GRecMutex. GThreadSafeMainLoopSource uses a
recursive mutex using the new GMutexLocker API.
* wtf/PlatformEfl.cmake: Add new file to compilation.
* wtf/PlatformGTK.cmake: Ditto.
* wtf/gobject/GMainLoopSource.cpp:
(WTF::GMainLoopSource::GMainLoopSource):
(WTF::GMainLoopSource::~GMainLoopSource):
(WTF::GMainLoopSource::cancel):
(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::GMainLoopSource::prepareVoidCallback):
(WTF::GMainLoopSource::finishVoidCallback):
(WTF::GMainLoopSource::voidCallback):
(WTF::GMainLoopSource::prepareBoolCallback):
(WTF::GMainLoopSource::finishBoolCallback):
(WTF::GMainLoopSource::boolCallback):
(WTF::GMainLoopSource::socketCallback):
(WTF::GMainLoopSource::cancelWithoutLocking): Deleted.
* wtf/gobject/GMainLoopSource.h:
* wtf/gobject/GMutexLocker.h:
(WTF::MutexWrapper<GMutex>::lock):
(WTF::MutexWrapper<GMutex>::unlock):
(WTF::MutexWrapper<GRecMutex>::lock):
(WTF::MutexWrapper<GRecMutex>::unlock):
(WTF::GMutexLocker::GMutexLocker):
(WTF::GMutexLocker::lock):
(WTF::GMutexLocker::unlock):
* wtf/gobject/GThreadSafeMainLoopSource.cpp: Added.
(WTF::GThreadSafeMainLoopSource::GThreadSafeMainLoopSource):
(WTF::GThreadSafeMainLoopSource::~GThreadSafeMainLoopSource):
(WTF::GThreadSafeMainLoopSource::cancel):
(WTF::GThreadSafeMainLoopSource::schedule):
(WTF::GThreadSafeMainLoopSource::scheduleAfterDelay):
(WTF::GThreadSafeMainLoopSource::prepareVoidCallback):
(WTF::GThreadSafeMainLoopSource::finishVoidCallback):
(WTF::GThreadSafeMainLoopSource::voidCallback):
(WTF::GThreadSafeMainLoopSource::prepareBoolCallback):
(WTF::GThreadSafeMainLoopSource::finishBoolCallback):
(WTF::GThreadSafeMainLoopSource::boolCallback):
* wtf/gobject/GThreadSafeMainLoopSource.h: Added.
2014-10-09 Dean Jackson <dino@apple.com>
Remove ENABLE_CSS3_CONDITIONAL_RULES
https://bugs.webkit.org/show_bug.cgi?id=137571
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h:
2014-10-09 Akos Kiss <akiss@inf.u-szeged.hu>
Enable ARM64 disassembler for all platforms
https://bugs.webkit.org/show_bug.cgi?id=137560
Reviewed by Michael Saboff.
Remove PLATFORM conditions from around WTF_USE_ARM64_DISASSEMBLER since
the ARM64 disassembler has no platform dependencies anymore.
* wtf/Platform.h:
2014-10-08 peavo@outlook.com <peavo@outlook.com>
[WinCairo] Enable JIT on 32-bit.
https://bugs.webkit.org/show_bug.cgi?id=137521
Reviewed by Mark Lam.
Enable JIT on Windows 32-bit, but disable it at runtime if SSE2 is not present.
* wtf/Platform.h:
2014-10-08 Brent Fulgham <bfulgham@apple.com>
[Win] Resolve warnings about missing __has_include macro under MSVC
https://bugs.webkit.org/show_bug.cgi?id=137524
Reviewed by Anders Carlsson.
* wtf/Compiler.h: Provide a dummy implementation of __has_include that
avoids the warning without changing compile behavior.
2014-10-07 Brent Fulgham <bfulgham@apple.com>
[Win] Resolve some MSVC static analyzer warnings
https://bugs.webkit.org/show_bug.cgi?id=137504
Reviewed by Dean Jackson.
* wtf/GregorianDateTime.cpp:
(WTF::GregorianDateTime::setToCurrentLocalTime): Properly handle
possible timezone error case.
* wtf/OSAllocatorWin.cpp:
(WTF::OSAllocator::decommit): Silence a spurious warning about using
MEM_DECOMMIT instead of MEM_RELEASE.
* wtf/ThreadingWin.cpp: Silence a spurious warning about how the
tryLock method is implemented.
2014-10-07 Christophe Dumez <cdumez@apple.com>
[WK2] Use is<>() / downcast<>() for DrawingAreaProxy subclasses
https://bugs.webkit.org/show_bug.cgi?id=137477
Reviewed by Andreas Kling.
Rename wtf/cf/TypeCasts.h to wtf/cf/TypeCastsCF.h to avoid conflict
with wtf/TypeCasts.h. They were using the same #ifndef guard and it
was causing problems when both were included in the same context.
* WTF.xcodeproj/project.pbxproj:
* wtf/cf/TypeCastsCF.h: Renamed from Source/WTF/wtf/cf/TypeCasts.h.
(WTF::dynamic_cf_cast):
(WTF::checked_cf_cast):
2014-10-07 Anders Carlsson <andersca@apple.com>
Try to fix the Mountain Lion build.
* wtf/text/StringView.h:
(WTF::StringView::underlyingStringIsValid):
(WTF::StringView::setUnderlyingString):
(WTF::StringView::invalidate):
2014-10-07 Anders Carlsson <andersca@apple.com>
Use "1", not "true".
* wtf/text/StringView.h:
2014-10-07 Anders Carlsson <andersca@apple.com>
Temporarily disable the StringView lifetime checking.
* wtf/text/StringView.h:
2014-10-07 Anders Carlsson <andersca@apple.com>
Another build fix attempt.
* wtf/text/StringView.cpp:
(WTF::StringView::UnderlyingString::UnderlyingString):
2014-10-07 Anders Carlsson <andersca@apple.com>
Try to fix the Windows build.
* wtf/text/StringView.cpp:
(WTF::StringView::UnderlyingString::UnderlyingString):
2014-10-06 Darin Adler <darin@apple.com>
Make StringView check the lifetime of the StringImpl it's created from
https://bugs.webkit.org/show_bug.cgi?id=137202
Reviewed by Anders Carlsson.
* WTF.vcxproj/WTF.vcxproj: Added StringView.cpp.
* WTF.vcxproj/WTF.vcxproj.filters: Added StringView.cpp.
* WTF.xcodeproj/project.pbxproj: Added StringView.cpp.
* wtf/CMakeLists.txt: Added StringView.cpp.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl): Call StringView::invalidate.
* wtf/text/StringView.cpp: Added.
(WTF::underlyingStrings): Returns map from StringImpl to the underlying
string object used by StringView to track validity.
(WTF::StringView::invalidate): Mark the underlying string object invalid,
and remove it from the map, so any future StringImpl will get a new one,
even if it has the same pointer.
(WTF::StringView::underlyingStringIsValid): Return true only if the
underlying string is still valid.
(WTF::StringView::setUnderlyingString): Create and manage reference counts
of underlying string objects as needed.
* wtf/text/StringView.h: Moved function bodies out of the class definition,
so we can now read a clean class definition to see the class design and what
functions it offers.
(WTF::StringView::StringView): Added a comment to the default constructor.
Also added copy and move constructors so they can call setUnderlyingString
and assert the underlying string is valid as needed, replacing the
compiler-generated ones.
(WTF::StringView::~StringView): Added a call to setUnderlyingString.
(WTF::StringView::operator=): Added these assignment operators with the same
job as the constructors above.
(WTF::StringView::initialize): Added a comment.
(WTF::StringView::characters8): Added an assertion that the underlying
string is valid.
(WTF::StringView::characters16): Ditto.
(WTF::StringView::substring): Added code to propagate the underlying string
from the original string to the substring.
(WTF::StringView::invalidate): Inline empty version of this function for
non-debug builds.
(WTF::StringView::underlyingStringIsValid): Ditto.
(WTF::StringView::setUnderlyingString): Ditto.
2014-10-06 Brent Fulgham <bfulgham@apple.com>
[Win] DateMath's calculateUTFOffset does not account for DST.
https://bugs.webkit.org/show_bug.cgi?id=137458
<rdar://problem/18559172>
Reviewed by Geoffrey Garen.
Check the return value of GetTimeZoneInformation and use the
proper bias against UTC (depending on whether we are in daylight
savings time, or standard time).
Also, handle possible error cases in the FileTimeToSystemTime
and SystemTimeToTzSpecificLocalTime, rather than using potentially
uninitialized values.
* wtf/DateMath.cpp:
(WTF::calculateUTCOffset): Use proper daylight-savings-time state.
(WTF::calculateDSTOffset): Avoid uninitialized data due to failing
API calls.
2014-10-06 Christophe Dumez <cdumez@apple.com>
Add is<>() / downcast<>() support for RenderObject subclasses
https://bugs.webkit.org/show_bug.cgi?id=137424
Reviewed by Benjamin Poulain.
Handle correctly calling TypeCastTraits<ExpectedType, ArgType>::isOfType(ArgType&)
with ExpectedType being a base class of ArgType (or the same as ArgType). The
previous template specialization was only meant to support the case where
ExpectedType is the same as ArgType but even that wasn't working as the compiler
would complain about ambiguous partial specializations. Since this is needed by
RenderTraversal functions, this patch adds an extra isBaseType template parameter
to TypeCastTraits to resolve the ambiguity and relies on std::is_base_of for the
detection.
* wtf/TypeCasts.h:
2014-10-06 Brent Fulgham <bfulgham@apple.com>
[Win] Project file gardening.
* WTF.vcxproj/WTF.vcxproj.filters: Move HashMethod.h and
FastBitVector.cpp to proper places in hierarchy.
2014-10-04 Brian J. Burg <burg@cs.washington.edu>
Unreviewed, rolling out r174319.
Causes assertions in fast/profiler tests. Needs nontrivial
investigation, will take offline.
Reverted changeset:
"Web Inspector: timelines should not count time elapsed while
paused in the debugger"
https://bugs.webkit.org/show_bug.cgi?id=136351
http://trac.webkit.org/changeset/174319
2014-10-04 Brian J. Burg <burg@cs.washington.edu>
Web Inspector: timelines should not count time elapsed while paused in the debugger
https://bugs.webkit.org/show_bug.cgi?id=136351
Reviewed by Timothy Hatcher.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Stopwatch.h: Added. This implements a refcounted monotonic stopwatch.
(WTF::Stopwatch::reset):
(WTF::Stopwatch::start):
(WTF::Stopwatch::stop):
2014-10-04 Filip Pizlo <fpizlo@apple.com>
FTL should sink PutLocals
https://bugs.webkit.org/show_bug.cgi?id=137168
Reviewed by Oliver Hunt.
Make the set bits of a BitVector iterable.
* wtf/BitVector.h:
(WTF::BitVector::SetBitsIterable::SetBitsIterable):
(WTF::BitVector::SetBitsIterable::iterator::iterator):
(WTF::BitVector::SetBitsIterable::iterator::operator*):
(WTF::BitVector::SetBitsIterable::iterator::operator++):
(WTF::BitVector::SetBitsIterable::iterator::operator==):
(WTF::BitVector::SetBitsIterable::iterator::operator!=):
(WTF::BitVector::SetBitsIterable::begin):
(WTF::BitVector::SetBitsIterable::end):
(WTF::BitVector::setBits):
2014-10-03 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r174275.
https://bugs.webkit.org/show_bug.cgi?id=137408
Build failures on the internal bots. (Requested by dethbakin
on #webkit).
Reverted changeset:
"FTL should sink PutLocals"
https://bugs.webkit.org/show_bug.cgi?id=137168
http://trac.webkit.org/changeset/174275
2014-10-03 Christophe Dumez <cdumez@apple.com>
Add TypeCasts.h to xcodeproject
https://bugs.webkit.org/show_bug.cgi?id=137403
Reviewed by Benjamin Poulain.
Add TypeCasts.h to xcodeproject.
* WTF.xcodeproj/project.pbxproj:
2014-09-28 Filip Pizlo <fpizlo@apple.com>
FTL should sink PutLocals
https://bugs.webkit.org/show_bug.cgi?id=137168
Reviewed by Oliver Hunt.
Make the set bits of a BitVector iterable.
* wtf/BitVector.h:
(WTF::BitVector::SetBitsIterable::SetBitsIterable):
(WTF::BitVector::SetBitsIterable::iterator::iterator):
(WTF::BitVector::SetBitsIterable::iterator::operator*):
(WTF::BitVector::SetBitsIterable::iterator::operator++):
(WTF::BitVector::SetBitsIterable::iterator::operator==):
(WTF::BitVector::SetBitsIterable::iterator::operator!=):
(WTF::BitVector::SetBitsIterable::begin):
(WTF::BitVector::SetBitsIterable::end):
(WTF::BitVector::setBits):
2014-10-03 Myles C. Maxfield <mmaxfield@apple.com>
Support modern for loops over StringViews
https://bugs.webkit.org/show_bug.cgi?id=137165
Reviewed by Darin Adler.
This patch adds two functions, codePoints() and codeUnits(), on StringView.
These two functions return small objects which have begin() and end() functions,
which means it can be used by the modern for loop style. This small class also
has an inner iterator class which can be incremented, dereferenced, and
compared.
Using these new objects looks like this:
for (UChar codeunit : stringView.codeUnits()) { } and
for (UChar32 codepoint : stringView.codePoints()) { }.
* wtf/text/StringView.h:
(WTF::StringView::codepoints):
(WTF::StringView::codeunits):
(WTF::StringViewCodePointIterator::StringViewCodePointIterator):
(WTF::StringViewCodePointIterator::Iterator::Iterator):
(WTF::StringViewCodePointIterator::Iterator::operator*):
(WTF::StringViewCodePointIterator::Iterator::operator!=):
(WTF::StringViewCodeUnitIterator::StringViewCodeUnitIterator):
(WTF::StringViewCodeUnitIterator::Iterator::Iterator):
(WTF::StringViewCodeUnitIterator::Iterator::operator*):
(WTF::StringViewCodeUnitIterator::Iterator::operator!=):
2014-09-28 Sam Weinig <sam@webkit.org>
Remove RefPtrHashMap
https://bugs.webkit.org/show_bug.cgi?id=137200
Reviewed by Darin Adler.
HashMap now has all the features of the RefPtr specialization of HashMap
(which lived in RefPtrHashMap.h) and is in fact more efficient when moving
items into it. For instance:
For HashMap<RefPtr<Foo>, Bar> map:
RefPtr<Foo> foo = ...;
map.add(WTF::move(foo), Bar());
will now not cause a ref() / deref(), but will successfully move the item in
without churn. The same is true if foo.release() was used.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
Remove references to RefPtrHashMap.h.
* wtf/RefPtrHashMap.h: Removed.
* wtf/HashMap.h:
Remove #include of RefPtrHashMap.h and add inlineGet to match the interface
exposed by the RefPtrHashMap specialization.
2014-10-02 Anders Carlsson <andersca@apple.com>
Add back debugging/testing code that I accidentally removed.
* wtf/text/StringConcatenate.h:
(WTF::StringTypeAdapter<String>::writeTo):
2014-10-02 Anders Carlsson <andersca@apple.com>
Simplify StringTypeAdapter templates
https://bugs.webkit.org/show_bug.cgi?id=137356
Reviewed by Andreas Kling.
* wtf/text/StringConcatenate.h:
Use StringView for copying characters. Use inheritance for char* vs const char* etc. Make all StringAdapter member functions const.
* wtf/text/StringView.h:
Move enough functions out of line so we can include WTFString.h after the StringView class definition.
2014-10-01 Christophe Dumez <cdumez@apple.com>
Have is<>(T*) function do a null check on the pointer argument
https://bugs.webkit.org/show_bug.cgi?id=137333
Reviewed by Gavin Barraclough.
Have is<>(T*) function do a null check on the argument instead of a
simple assertion. This makes sense for 2 reasons:
1. It is more consistent with downcast<>(T*), which will succeed even
if the argument is a nullptr.
2. It simplifies the code a bit as it gets rid of a lot of explicit
null checks.
* wtf/TypeCasts.h:
(WTF::is):
2014-10-02 Daniel Bates <dabates@apple.com>
Clean up: Move XPC forward declarations in JavaScriptCore to WTF SPI wrapper header
https://bugs.webkit.org/show_bug.cgi?id=137277
Reviewed by Alexey Proskuryakov.
Towards centralizing the declarations of XPC functions used in JavaScriptCore
and WebKit2, add a header that wraps these function declarations called XPCSPI.h
and use it instead of including the corresponding XPC API/SPI headers/forward
declaring XPC functions. This will also aid in the effort to make WebKit2 build
for iOS with the public iOS SDK.
* WTF.xcodeproj/project.pbxproj:
* wtf/spi/darwin/XPCSPI.h: Added.
2014-10-01 Christophe Dumez <cdumez@apple.com>
Unreviewed build fix after r174193.
Adding a return statement as that function is returning a boolean.
* wtf/TypeCasts.h:
(WTF::TypeCastTraits::isOfType):
2014-10-01 Christophe Dumez <cdumez@apple.com>
Fail better when is<>() / downcast<>() is used for an unsupported type
https://bugs.webkit.org/show_bug.cgi?id=137323
Reviewed by Benjamin Poulain.
We should fail better when is<>() / downcast<>() is used for an
unsupported type (i.e. a type that doesn't have the needed
TypeCastTraits template specialization). Previously, we would get an
obscure linking error, which was sub-optimal.
With this patch, you would now hit a static_assert() at build time if
you tried to use is<>() / downcast<>() for a type that did not have the
needed template specialization. There is also a helpful comment above
the assertion letting the developer know how to add the needed template
specialization.
* wtf/TypeCasts.h:
(WTF::TypeCastTraits::isOfType):
2014-10-01 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r174180, r174183, and r174186.
https://bugs.webkit.org/show_bug.cgi?id=137320
Broke the Mac MountainLion build. Will investigate offline.
(Requested by dydz on #webkit).
Reverted changesets:
"Clean up: Move XPC forward declarations in JavaScriptCore to
WTF SPI wrapper header"
https://bugs.webkit.org/show_bug.cgi?id=137277
http://trac.webkit.org/changeset/174180
"Attempt to fix the build after
<https://trac.webkit.org/changeset/174180>"
https://bugs.webkit.org/show_bug.cgi?id=137277
http://trac.webkit.org/changeset/174183
"Another attempt to fix the Mac build after
<https://trac.webkit.org/changeset/174180>"
https://bugs.webkit.org/show_bug.cgi?id=137277
http://trac.webkit.org/changeset/174186
2014-10-01 Daniel Bates <dabates@apple.com>
Another attempt to fix the Mac build after <https://trac.webkit.org/changeset/174180>
(https://bugs.webkit.org/show_bug.cgi?id=137277)
Include header AvailabilityMacros.h instead of Availability.h, which actually defines the
macro __MAC_OS_X_VERSION_MIN_REQUIRED.
* wtf/spi/darwin/XPCSPI.h:
2014-10-01 Daniel Bates <dabates@apple.com>
Attempt to fix the build after <https://trac.webkit.org/changeset/174180>
(https://bugs.webkit.org/show_bug.cgi?id=137277)
Include header <Availability.h> for the definition of __MAC_OS_X_VERSION_MIN_REQUIRED.
Also, we want to define CONST_ON_OR_AFTER_MAC_OS_X_VERSION_1090 to be const when building
on iOS.
* wtf/spi/darwin/XPCSPI.h:
2014-10-01 Daniel Bates <dabates@apple.com>
Clean up: Move XPC forward declarations in JavaScriptCore to WTF SPI wrapper header
https://bugs.webkit.org/show_bug.cgi?id=137277
Reviewed by Alexey Proskuryakov.
Towards centralizing the declarations of XPC functions used in JavaScriptCore
and WebKit2, add a header that wraps these function declarations called XPCSPI.h
and use it instead of including the corresponding XPC API/SPI headers/forward
declaring XPC functions. This will also aid in the effort to make WebKit2 build
for iOS with the public iOS SDK.
* WTF.xcodeproj/project.pbxproj:
* wtf/spi/darwin/XPCSPI.h: Added.
2014-10-01 Brent Fulgham <bfulgham@apple.com>
[Win] 32-bit JavaScriptCore should limit itself to the C loop
https://bugs.webkit.org/show_bug.cgi?id=137304
<rdar://problem/18375370>
Reviewed by Michael Saboff.
* wtf/Platform.h: Force the C loop when building for 32-bit Windows.
2014-09-30 Christophe Dumez <cdumez@apple.com>
Generalize is<>() / downcast<>() support to all types
https://bugs.webkit.org/show_bug.cgi?id=137243
Reviewed by Benjamin Poulain.
Generalize is<>() / downcast<>() support to all types, not just Nodes.
* wtf/Assertions.h:
* wtf/TypeCasts.h: Added.
(WTF::is):
(WTF::downcast):
2014-09-30 Anders Carlsson <andersca@apple.com>
Get the STRING_STATS codepath compiling again, and add calls to ref/deref
https://bugs.webkit.org/show_bug.cgi?id=137259
Reviewed by Andreas Kling.
* wtf/text/StringImpl.cpp:
(WTF::StringStats::removeString):
(WTF::StringStats::printStats):
(WTF::StringImpl::~StringImpl):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::isSubString):
(WTF::StringImpl::ref):
(WTF::StringImpl::deref):
(WTF::StringStats::addUpconvertedString): Deleted.
2014-09-30 Daniel Bates <dabates@apple.com>
REGRESSION (r172532): JSBase.h declares NSMapTable functions that are SPI
https://bugs.webkit.org/show_bug.cgi?id=137170
<rdar://problem/18477384>
Reviewed by Geoffrey Garen.
Add SPI wrapper header, NSMapTableSPI.h.
Additionally, define convenience macro EXTERN_C that can be used to specify the C linkage
convention for a declaration. For example, the declaration "EXTERN_C const int x;" will
expand to:
extern const int x;
and
extern "C" const int x;
when used in a C and C++ file, respectively.
* WTF.xcodeproj/project.pbxproj:
* wtf/Compiler.h:
* wtf/spi/cocoa/NSMapTableSPI.h: Added.
2014-09-29 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r174045.
https://bugs.webkit.org/show_bug.cgi?id=137231
Introduced a crash during page loading tests on Mac (Requested
by rniwa on #webkit).
Reverted changeset:
"Replace OSObjectPtr with RetainPtr/adoptOS"
https://bugs.webkit.org/show_bug.cgi?id=137158
http://trac.webkit.org/changeset/174045
2014-09-26 Sam Weinig <sam@webkit.org>
Replace OSObjectPtr with RetainPtr/adoptOS
https://bugs.webkit.org/show_bug.cgi?id=137158
Reviewed by Dan Bernstein.
* WTF.xcodeproj/project.pbxproj:
* wtf/OSObjectPtr.h: Removed.
* wtf/RetainPtr.h:
(WTF::adoptOS):
Added. This adopt function is slightly different than both adoptCF and adoptNS,
in that unlike adoptCF(), it can be passed an Objective-C type (since OS objects
are sometimes Objective-C objects, but not always), and unlike adoptNS() it doesn't
require us to jump through hoops to appease GC (since OS objects are not Objective-C
objects if GC is enabled).
2014-09-24 Filip Pizlo <fpizlo@apple.com>
FTL should sink object allocations
https://bugs.webkit.org/show_bug.cgi?id=136330
Reviewed by Oliver Hunt.
Make it possible to reset a Bag.
* wtf/Bag.h:
(WTF::Bag::Bag):
(WTF::Bag::~Bag):
(WTF::Bag::clear):
2014-09-25 Roger Fong <roger_fong@apple.com>
[Windows] Unreviewed build fix. Ensure that python2.7 is used for Windows builds.
* WTF.vcxproj/WTFGenerated.make:
2014-09-25 Csaba Osztrogonác <ossy@webkit.org>
Remove WinCE port from trunk
https://bugs.webkit.org/show_bug.cgi?id=136951
Reviewed by Alex Christensen.
* config.h:
* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Atomics.h:
(WTF::weakCompareAndSwap):
* wtf/CurrentTime.cpp:
(WTF::lowResUTCTime):
* wtf/DataLog.cpp:
* wtf/DateMath.cpp:
(WTF::getLocalTime):
(WTF::calculateDSTOffset):
* wtf/FastMalloc.cpp:
* wtf/FeatureDefines.h:
* wtf/OSAllocator.h:
(WTF::OSAllocator::decommitAndRelease):
* wtf/Platform.h:
* wtf/PlatformWin.cmake:
* wtf/RAMSize.cpp:
(WTF::computeRAMSize):
* wtf/RandomNumberSeed.h:
(WTF::initializeRandomNumberGenerator):
* wtf/StackBounds.cpp:
(WTF::StackBounds::initialize):
* wtf/StackBounds.h:
(WTF::StackBounds::isGrowingDownward):
* wtf/StdLibExtras.h:
(wtf_bsearch): Deleted.
* wtf/StringExtras.h:
(strnicmp): Deleted.
(stricmp): Deleted.
(strdup): Deleted.
* wtf/ThreadSpecific.h:
* wtf/ThreadingWin.cpp:
(WTF::createThreadInternal):
* wtf/WindowsExtras.h:
(WTF::getRegistryValue):
(WTF::getWindowPointer):
(WTF::setWindowPointer):
* wtf/dtoa/utils.h:
* wtf/text/WTFString.cpp:
(WTF::String::format):
2014-09-24 Geoffrey Garen <ggaren@apple.com>
Do the bmalloc.
https://bugs.webkit.org/show_bug.cgi?id=132629
Reviewed by Gavin Barraclough.
64-bit only for now, just to try it out.
* wtf/FastMalloc.cpp:
2014-09-23 Geoffrey Garen <ggaren@apple.com>
Rolled out r173346.
bmalloc should honor the FastMalloc statistics API
https://bugs.webkit.org/show_bug.cgi?id=136592
This didn't really work. Because we allow ranges with and without
physical pages to merge, and we allow double-committing and
double-decommitting, we can't rely on commit actions to track memory
footprint.
* wtf/FastMalloc.cpp:
(WTF::fastMallocStatistics):
2014-09-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Should be able to attach a debugger to a JSContext before anything is executed
https://bugs.webkit.org/show_bug.cgi?id=136893
Reviewed by Timothy Hatcher.
Currently automatic inspection only happens in processes that have a
debugger attached. That condition may change in the future, but this
function can stand on its own in WTF. It may be useful in the future
to perhaps continue though ASSERTs if you have a debugger attached.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2014-09-22 Sam Weinig <sam@webkit.org>
Eliminate redundant PtrHash specializations
https://bugs.webkit.org/show_bug.cgi?id=136990
Reviewed by Darin Adler.
Now that we have IsSmartPtr, we can eliminate all the specializations
of PtrHash that we had (for RefPtr, OwnPtr, RetainPtr, and std::unique_ptr)
and instead just have one that uses GetPtrHelper.
No changes of behavior intended.
* wtf/GetPtr.h:
Remove unnecessary const_cast that Darin noticed.
* wtf/HashFunctions.h:
(WTF::PtrHash::hash): Deleted.
(WTF::PtrHash::equal): Deleted.
(WTF::PtrHash<RefPtr<P>>::hash): Deleted.
(WTF::PtrHash<RefPtr<P>>::equal): Deleted.
Specialize PtrHash based on whether the type is a smart pointer, and use GetPtrHelper
to implement the smart pointer specialized variant.
* wtf/HashMap.h:
Remove include of GetPtr.h that is now included by HashFunctions.h
* wtf/OwnPtr.h:
(WTF::PtrHash<OwnPtr<P>>::hash): Deleted.
(WTF::PtrHash<OwnPtr<P>>::equal): Deleted.
Remove unnecessary specialization of PtrHash.
* wtf/RetainPtr.h:
(WTF::PtrHash<RetainPtr<P>>::hash): Deleted.
(WTF::PtrHash<RetainPtr<P>>::equal): Deleted.
Specialize IsSmartPointer for RetainPtr and remove the then unnecessary specialization of PtrHash.
(This is already tested in the API test WTF/cf/RetainPtrHashing).
2014-09-20 Sam Weinig <sam@webkit.org>
Make possible HashSet<std::unique_ptr<>>
https://bugs.webkit.org/show_bug.cgi?id=136166
Reviewed by Darin Adler.
* wtf/GetPtr.h:
(WTF::getPtr):
(WTF::GetPtrHelper<std::unique_ptr<T>>::getPtr):
Make specializing GetPtrHelper a bit cleaner (you don't have to put
IsSmartPtr<T>::value everywhere any more) and add specializations for
std::unique_ptr.
* wtf/HashFunctions.h:
(WTF::PtrHash<std::unique_ptr<P>>):
Add specialization for PtrHash for std::unique_ptr and set it as the DefaultHash
for it as well.
* wtf/HashMap.h:
* wtf/HashSet.h:
Add overloads of find(), contains(), remove(), take() (and get() for HashMap) for "smart pointers" that
take the raw pointer type as the parameter. These use SFINAE to make themselves only available
when the IsSmartPtr<KeyType>::value is true.
* wtf/HashTraits.h:
Override constructDeletedValue() and isDeletedValue() in the std::unique_ptr specialization
since the default implementation depends on the type having a constructor that takes a HashTableDeletedValue
and function named isHashTableDeletedValue().
* wtf/OwnPtr.h:
(WTF::OwnPtr::OwnPtr):
(WTF::OwnPtr::isHashTableDeletedValue):
(WTF::OwnPtr::hashTableDeletedValue):
Add HashTableDeletedValue constructor/functions to allow the constructDeletedValue() and isDeletedValue()
hash traits to work.
(WTF::PtrHash<OwnPtr<P>>::hash):
(WTF::PtrHash<OwnPtr<P>>::equal):
Add specialization for PtrHash for OwnPtr and set it as the DefaultHash
for it as well.
* wtf/Ref.h:
Update for the less verbose GetPtrHelper specialization.
2014-09-19 Chris Dumez <cdumez@apple.com>
Allow DOM methods to return references instead of pointers
https://bugs.webkit.org/show_bug.cgi?id=136931
Add support for having WTF::getPtr() transform reference arguments
into raw pointers so that DOM methods can now return references when
appropriate and so that the generated bindings code can handle this
via WTF::getPtr().
This patch had to alter the way getPtr() was overloaded for smart
pointer types so that we don't call &p on smart pointers but p.get().
This was needed because the new WTF::getPtr(T&) was being called for
RefPtr<T> arguments instead of the getPtr(const RefPtr<T>&) overload.
This was addressed using traits and template specialization to
distinguish WTF smart pointers from other types.
Reviewed by Sam Weinig.
* wtf/GetPtr.h:
(WTF::getPtr):
* wtf/OwnPtr.h:
(WTF::getPtr): Deleted.
* wtf/PassOwnPtr.h:
(WTF::getPtr): Deleted.
* wtf/PassRefPtr.h:
(WTF::getPtr): Deleted.
* wtf/Ref.h:
* wtf/RefPtr.h:
(WTF::getPtr): Deleted.
* wtf/gobject/GRefPtr.h:
(WTF::getPtr): Deleted.
2014-09-19 Daniel Bates <dabates@apple.com>
Always assume internal SDK when building configuration Production
https://bugs.webkit.org/show_bug.cgi?id=136925
<rdar://problem/18362399>
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
2014-09-19 Diego Pino Garcia <dpino@igalia.com>
Simple ES6 feature:String prototype additions
https://bugs.webkit.org/show_bug.cgi?id=131704
Reviewed by Darin Adler.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::find):
(WTF::equalInner): Added.
(WTF::StringImpl::startsWith): Add implementation that supports
'startOffset' parameter.
(WTF::StringImpl::endsWith): Add implementation that supports
'endOffset' parameter.
* wtf/text/StringImpl.h:
* wtf/text/WTFString.h:
(WTF::String::contains): Modify current implementation to allow
setting a startOffset, 0 by default.
(WTF::String::startsWith):
(WTF::String::endsWith):
2014-09-18 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Dot not allow to create delete-on-destroy GMainLoopSources
https://bugs.webkit.org/show_bug.cgi?id=136923
Reviewed by Gustavo Noronha Silva.
We have several asserts to ensure that delete-on-destroy sources
are not misused, like not scheduling socket sources on a
delete-on-destroy GMainLoopSource or not allowing to cancel them
before they have been dispatched. It's better to ensure all those
things at compile time, using static methods to schedule sources
creating a delete-on-destroy GMainLoopSource that is not returned
to the user.
* wtf/gobject/GMainLoopSource.cpp:
(WTF::GMainLoopSource::create): Private static method to create a
delete-on-destroy GMainLoopSource.
(WTF::GMainLoopSource::cancelWithoutLocking): Return early in case
of delete-on-destroy source, since they can't be cancelled.
(WTF::GMainLoopSource::schedule): Remove assertion to ensure
socket sources are not scheduled on a delete-on-destroy GMainLoopSource.
(WTF::GMainLoopSource::scheduleAndDeleteOnDestroy):
(WTF::GMainLoopSource::scheduleAfterDelayAndDeleteOnDestroy):
(WTF::GMainLoopSource::createAndDeleteOnDestroy): Deleted.
* wtf/gobject/GMainLoopSource.h:
* wtf/gtk/MainThreadGtk.cpp:
(WTF::scheduleDispatchFunctionsOnMainThread): Use GMainLoopSource::scheduleAndDeleteOnDestroy()
* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::wakeUp): Ditto.
2014-09-18 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed rollout r173731. Broke multiple builds.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2014-09-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Should be able to attach a debugger to a JSContext before anything is executed
https://bugs.webkit.org/show_bug.cgi?id=136893
Reviewed by Timothy Hatcher.
Currently automatic inspection only happens in processes that have a
debugger attached. That condition may change in the future, but this
function can stand on its own in WTF. It may be useful in the future
to perhaps continue though ASSERTs if you have a debugger attached.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2014-09-18 Zan Dobersek <zdobersek@igalia.com>
GMainLoopSource is exposed to race conditions
https://bugs.webkit.org/show_bug.cgi?id=135800
Reviewed by Carlos Garcia Campos.
GMainLoopSource objects can be dispatching tasks on one thread
while having a new task scheduled on a different thread. This
can for instance occur in WebKitVideoSink, where the timeout
callback can be called on main thread while at the same time
it is being rescheduled on a different thread (created through
GStreamer).
The initial solution is to use GMutex to prevent parallel data
access from different threads. In the future I plan to look at
the possibility of creating thread-specific GMainLoopSource
objects that wouldn't require the use of GMutex.
GSource, GCancellable and std::function<> objects are now packed
into an internal Context structure. Using the C++11 move semantics
it's simple to, at the time of dispatch, move the current context
out of the GMainLoopSource object in case the dispatch causes a
rescheduling on that same object.
Also added in the Context struct is a new GCancellable. The pointer
of that object is shared with the GMainLoopSource before the Context
is moved out for the callback dispatch. This makes it safe to cancel
or even delete the GMainLoopSource during the dispatch and prevents
use-after-delete on GMainLoopSource once the dispatch is done in
the GMainLoopSource::*Callback() methods.
All the schedule*() methods and the cancelWithoutLocking() method
callers now lock the GMutex to ensure no one else is accessing the
data at that moment. Similar goes for the dispatch methods, but those
do the dispatch and possible destruction duties with the mutex unlocked.
The dispatch can cause rescheduling on the same GMainLoopSource object,
which must not be done with a locked mutex.
* wtf/gobject/GMainLoopSource.cpp:
(WTF::GMainLoopSource::GMainLoopSource):
(WTF::GMainLoopSource::~GMainLoopSource):
(WTF::GMainLoopSource::cancel):
(WTF::GMainLoopSource::cancelWithoutLocking):
(WTF::GMainLoopSource::scheduleIdleSource):
(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleTimeoutSource):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::GMainLoopSource::voidCallback):
(WTF::GMainLoopSource::boolCallback):
(WTF::GMainLoopSource::socketCallback):
(WTF::GMainLoopSource::socketSourceCallback):
(WTF::GMainLoopSource::Context::destroySource):
(WTF::GMainLoopSource::reset): Deleted.
(WTF::GMainLoopSource::destroy): Deleted.
* wtf/gobject/GMainLoopSource.h:
2014-09-17 Daniel Bates <dabates@apple.com>
Unreviewed, rolling out r173695.
Broke building third-party Legacy WebKit apps; will
investigate offline
Reverted changeset:
"[iOS] Make WebCore build with public iOS SDK"
https://bugs.webkit.org/show_bug.cgi?id=136487
http://trac.webkit.org/changeset/173695
2014-09-17 Benjamin Poulain <bpoulain@apple.com>
CSS value in whitespace-separated list attribute selector (~=) mishandles tab/newline/etc.
https://bugs.webkit.org/show_bug.cgi?id=136807
Reviewed by Antti Koivisto.
* wtf/text/AtomicString.h:
(WTF::AtomicString::find):
2014-09-17 Daniel Bates <dabates@apple.com>
[iOS] Make WebCore build with public iOS SDK
https://bugs.webkit.org/show_bug.cgi?id=136487
Reviewed by David Kilzer.
Define convenience macro EXTERN_C that can be used to specify the C linkage convention
for a declaration. For example, the declaration "EXTERN_C const int x;" will expand to:
extern const int x;
and
extern "C" const int x;
when used in a C and C++ file, respectively.
* wtf/Compiler.h:
2014-09-16 Filip Pizlo <fpizlo@apple.com>
Unreviewed, disable native inlining because it causes build failures.
* wtf/Platform.h:
2014-09-15 Jer Noble <jer.noble@apple.com>
[Mac] Support audioSourceProvider() in MediaPlayerPrivateAVFoundationObjC
https://bugs.webkit.org/show_bug.cgi?id=135042
Reviewed by Eric Carlson.
* wtf/Platform.h: Add WTF_USE_MEDIATOOLBOX.
2014-09-15 peavo@outlook.com <peavo@outlook.com>
[WinCairo] Make it easier to enable/disable GStreamer.
https://bugs.webkit.org/show_bug.cgi?id=135766
Reviewed by Brent Fulgham.
Make it possible to enable/disable GStreamer by editing the new user macro ENABLE_GSTREAMER_WINCAIRO.
* WTF.vcxproj/WTFDebugWinCairo.props: Import GStreamer property file.
* WTF.vcxproj/WTFReleaseWinCairo.props: Ditto.
* wtf/Platform.h: Enable GStreamer if ENABLE(GSTREAMER_WINCAIRO) is true, otherwise use Media Foundation.
2014-09-10 Jon Honeycutt <jhoneycutt@apple.com>
Re-add the request autocomplete feature
<https://bugs.webkit.org/show_bug.cgi?id=136730>
This feature was rolled out in r148731 because it was only used by
Chromium. As we consider supporting this feature, roll it back in, but
leave it disabled.
This rolls out r148731 (which removed the feature) with small changes
needed to make the code build in ToT, to make the tests run, and to
remove unused code.
Reviewed by Andy Estes.
* wtf/FeatureDefines.h:
2014-09-12 Tim Horton <timothy_horton@apple.com>
Swiping back from a Twitter image to Twitter flashes to the wrong position
https://bugs.webkit.org/show_bug.cgi?id=136798
<rdar://problem/18324338>
Reviewed by Darin Adler and Sam Weinig.
* wtf/RunLoop.h:
(WTF::RunLoop::TimerBase::startRepeating):
Add a std::chrono veresion of RunLoop::TimerBase::startRepeating.
2014-09-12 Geoffrey Garen <ggaren@apple.com>
Rolled out r173540.
It broke the Membuster performance bot, and it's still slightly profligate
with memory.
Do the bmalloc.
https://bugs.webkit.org/show_bug.cgi?id=132629
* wtf/FastMalloc.cpp:
2014-09-11 Geoffrey Garen <ggaren@apple.com>
Do the bmalloc.
https://bugs.webkit.org/show_bug.cgi?id=132629
Reviewed by Michael Saboff.
64-bit only for now, just to try it out.
* wtf/FastMalloc.cpp:
2014-09-09 Benjamin Poulain <bpoulain@apple.com>
Disable the "unreachable-code" warning
https://bugs.webkit.org/show_bug.cgi?id=136677
Reviewed by Darin Adler.
The warning causes various build errors depending on which Clang you are using.
For example, with recent clangs, it breaks all the ARCHS dependent code like this:
if (sizeof(uintptr_t) == 4)
// Something for 32 bits.
else
// Somethign for 64 bits.
* Configurations/Base.xcconfig:
2014-09-07 Filip Pizlo <fpizlo@apple.com>
DFG should have a reusable SSA builder
https://bugs.webkit.org/show_bug.cgi?id=136331
Reviewed by Oliver Hunt.
Update the alloc() method to use variadic templates. This makes it more natural to use.
* wtf/SegmentedVector.h:
(WTF::SegmentedVector::alloc):
2014-09-08 Eva Balazsfalvi <evab.u-szeged@partner.samsung.com>
Remove FILTERS flag
https://bugs.webkit.org/show_bug.cgi?id=136571
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
2014-09-08 Dan Bernstein <mitz@apple.com>
HAVE(VOUCHERS) is not available outside of WebKit2
https://bugs.webkit.org/show_bug.cgi?id=136637
Reviewed by Tim Horton.
* wtf/Platform.h: Moved the definition of HAVE_VOUCHERS from WebKit2’s config.h here.
2014-09-08 Tim Horton <timothy_horton@apple.com>
Try to fix the build after r173383, part 2.
* wtf/OSObjectPtr.h:
2014-09-08 Tim Horton <timothy_horton@apple.com>
Try to fix the build after r173383.
* wtf/OSObjectPtr.h:
2014-09-07 Sam Weinig <sam@webkit.org>
Make OSObjectPtr a bit more like RefPtr
https://bugs.webkit.org/show_bug.cgi?id=136613
Reviewed by Darin Adler.
Address some of Darin's feedback by:
- Making the adopting constructor private and friending adoptOSObject().
- Implementing the assignment operator using swap.
- Adding a move assignment operator.
* wtf/OSObjectPtr.h:
(WTF::OSObjectPtr::operator=):
(WTF::OSObjectPtr::swap):
(WTF::OSObjectPtr::OSObjectPtr):
2014-09-08 Jessie Berlin <jberlin@apple.com>
More build fixes after r173374.
* wtf/dtoa/strtod.cc:
2014-09-08 Jessie Berlin <jberlin@apple.com>
Build fix after r173374.
* wtf/dtoa/strtod.cc:
2014-09-08 Jessie Berlin <jberlin@apple.com>
Speculative build fix after r173364.
* wtf/dtoa/strtod.cc:
2014-09-07 Maciej Stachowiak <mjs@apple.com>
Introduce COMPILER_QUIRK(CONSIDERS_UNREACHABLE_CODE) and use it
https://bugs.webkit.org/show_bug.cgi?id=136616
Reviewed by Darin Adler.
* wtf/Compiler.h: Define the quirk for all compilers but clang.
2014-09-06 Sam Weinig <sam@webkit.org>
XPCPtr should be converted into an all purpose smart pointer for os_objects
https://bugs.webkit.org/show_bug.cgi?id=136602
Reviewed by Darin Adler.
* WTF.xcodeproj/project.pbxproj:
* wtf/OSObjectPtr.h: Copied from Source/WebKit2/Platform/IPC/mac/XPCPtr.h.
(WTF::retainOSObject):
(WTF::releaseOSObject):
(WTF::OSObjectPtr::OSObjectPtr):
(WTF::OSObjectPtr::~OSObjectPtr):
(WTF::OSObjectPtr::operator=):
(WTF::adoptOSObject):
(IPC::XPCPtr::XPCPtr): Deleted.
(IPC::XPCPtr::~XPCPtr): Deleted.
(IPC::XPCPtr::operator=): Deleted.
(IPC::adoptXPC): Deleted.
Rename/move XPCPtr to OSObjectPtr and make it work with any os_object.
2014-09-06 Darin Adler <darin@apple.com>
Make updates suggested by new version of Xcode
https://bugs.webkit.org/show_bug.cgi?id=136603
Reviewed by Mark Rowe.
* Configurations/Base.xcconfig: Added CLANG_WARN_UNREACHABLE_CODE,
COMBINE_HIDPI_IMAGES, and ENABLE_STRICT_OBJC_MSGSEND as suggested by
Xcode upgrade check.
* WTF.xcodeproj/project.pbxproj: Updated LastUpgradeCheck.
2014-09-05 Geoffrey Garen <ggaren@apple.com>
bmalloc should honor the FastMalloc statistics API
https://bugs.webkit.org/show_bug.cgi?id=136592
Reviewed by Gavin Barraclough.
* wtf/FastMalloc.cpp:
(WTF::fastMallocStatistics):
2014-09-05 Geoffrey Garen <ggaren@apple.com>
bmalloc should honor the FastMalloc scavenging API
https://bugs.webkit.org/show_bug.cgi?id=136588
Reviewed by Andreas Kling.
* wtf/FastMalloc.cpp:
(WTF::releaseFastMallocFreeMemory):
2014-09-05 Geoffrey Garen <ggaren@apple.com>
Rolled out <http://trac.webkit.org/changeset/173313>.
It seems to have broken the PLT bot.
Do the bmalloc.
https://bugs.webkit.org/show_bug.cgi?id=132629
* wtf/FastMalloc.cpp:
2014-06-06 Jer Noble <jer.noble@apple.com>
Refactoring: make MediaTime the primary time type for audiovisual times.
https://bugs.webkit.org/show_bug.cgi?id=133579
Reviewed by Eric Carlson.
Add a unary minus operator, and add unimplemented private casting operators, to make
unintentional double->MediaTime and MediaTime->double casts hard errors.
* wtf/MediaTime.cpp:
(WTF::MediaTime::operator-):
* wtf/MediaTime.h:
2014-09-04 Geoffrey Garen <ggaren@apple.com>
Do the bmalloc.
https://bugs.webkit.org/show_bug.cgi?id=132629
Reviewed by Michael Saboff.
64-bit only for now, just to try it out.
* wtf/FastMalloc.cpp:
2014-09-05 Dániel Bátyai <dbatyai.u-szeged@partner.samsung.com>
Enable GenGC on ARM Traditional
https://bugs.webkit.org/show_bug.cgi?id=136567
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2014-09-04 Filip Pizlo <fpizlo@apple.com>
Beef up the DFG's CFG analyses to include iterated dominance frontiers and more user-friendly BlockSets
https://bugs.webkit.org/show_bug.cgi?id=136520
Fix bug found in Geoff's review but not landed in previous commit.
* wtf/BitVector.cpp:
(WTF::BitVector::equalsSlowCaseFast): return true.
2014-09-03 Filip Pizlo <fpizlo@apple.com>
Beef up the DFG's CFG analyses to include iterated dominance frontiers and more user-friendly BlockSets
https://bugs.webkit.org/show_bug.cgi?id=136520
Reviewed by Geoffrey Garen.
Give BitVector a way to quickly find the next set (or unset) bit. Make BitVector equality
faster. Fix a minor closure goof in Spectrum.
* wtf/BitVector.cpp:
(WTF::BitVector::equalsSlowCase):
(WTF::BitVector::equalsSlowCaseFast):
(WTF::BitVector::equalsSlowCaseSimple):
* wtf/BitVector.h:
(WTF::BitVector::findBit):
(WTF::BitVector::findBitFast):
(WTF::BitVector::findBitSimple):
(WTF::BitVector::findBitInWord):
* wtf/Spectrum.h:
(WTF::Spectrum::removeIf):
2014-09-04 Anders Carlsson <andersca@apple.com>
Make hash table classes final
https://bugs.webkit.org/show_bug.cgi?id=136540
Reviewed by Antti Koivisto.
We don't want anybody inheriting from these classes, so make them final.
* wtf/HashCountedSet.h:
* wtf/HashMap.h:
* wtf/HashSet.h:
2014-09-04 Eva Balazsfalvi <evab.u-szeged@partner.samsung.com>
Remove CSS_FILTERS flag
https://bugs.webkit.org/show_bug.cgi?id=136529
Reviewed by Dirk Schulze.
* wtf/FeatureDefines.h:
2014-09-04 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r173201.
https://bugs.webkit.org/show_bug.cgi?id=136538
Improves the situation but also introduces additional crashes.
(Requested by zdobersek on #webkit).
Reverted changeset:
"GMainLoopSource is exposed to race conditions"
https://bugs.webkit.org/show_bug.cgi?id=135800
http://trac.webkit.org/changeset/173201
2014-09-04 Pratik Solanki <psolanki@apple.com>
Remove iOS specific disk image cache
https://bugs.webkit.org/show_bug.cgi?id=136517
Reviewed by Antti Koivisto.
Disk image cache code unnecessarily complicates SharedBuffer implementation. We can remove
this now since we don't enable it in WebKit2 on iOS.
* wtf/FeatureDefines.h:
2014-09-03 Dan Bernstein <mitz@apple.com>
Get rid of HIGH_DPI_CANVAS leftovers
https://bugs.webkit.org/show_bug.cgi?id=136491
Reviewed by Benjamin Poulain.
* wtf/FeatureDefines.h: Removed definition of ENABLE_HIGH_DPI_CANVAS.
2014-09-03 Zan Dobersek <zdobersek@igalia.com>
GMainLoopSource is exposed to race conditions
https://bugs.webkit.org/show_bug.cgi?id=135800
Reviewed by Carlos Garcia Campos.
GMainLoopSource objects can be dispatching tasks on one thread
while having a new task scheduled on a different thread. This
can for instance occur in WebKitVideoSink, where the timeout
callback can be called on main thread while at the same time
it is being rescheduled on a different thread (created through
GStreamer).
The initial solution is to use GMutex to prevent parallel data
access from different threads. In the future I plan to add better
assertions, some meaningful comments and look at the possibility
of creating thread-specific GMainLoopSource objects that wouldn't
require the use of GMutex.
GSource, GCancellable and std::function<> objects are now packed
into an internal Context structure. Using the C++11 move semantics
it's simple to, at the time of dispatch, move the current context
out of the GMainLoopSource object in case the dispatch causes a
rescheduling on that same object.
All the schedule*() methods and the cancelInternal() method callers
now lock the GMutex to ensure no one else is accessing the data at
that moment. Similar goes for the dispatch methods, but those do
the dispatch and possible destruction duties with the mutex unlocked.
The dispatch can cause rescheduling on the same GMainLoopSource object,
which must not be done with a locked mutex.
* wtf/gobject/GMainLoopSource.cpp:
(WTF::GMainLoopSource::GMainLoopSource):
(WTF::GMainLoopSource::~GMainLoopSource):
(WTF::GMainLoopSource::cancel):
(WTF::GMainLoopSource::cancelInternal):
(WTF::GMainLoopSource::scheduleIdleSource):
(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleTimeoutSource):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::GMainLoopSource::voidCallback):
(WTF::GMainLoopSource::boolCallback):
(WTF::GMainLoopSource::socketCallback):
(WTF::GMainLoopSource::destroy):
(WTF::GMainLoopSource::reset): Deleted.
* wtf/gobject/GMainLoopSource.h:
2014-09-02 Daniel Bates <dabates@apple.com>
[iOS] Support using Foundation networking code
https://bugs.webkit.org/show_bug.cgi?id=136467
Reviewed by Pratik Solanki.
Disable USE(CFNETWORK) and use the Foundation networking code by default when building
iOS WebKit without the Apple Internal SDK.
* wtf/Platform.h:
2014-08-26 Maciej Stachowiak <mjs@apple.com>
Use RetainPtr::autorelease in some places where it seems appropriate
https://bugs.webkit.org/show_bug.cgi?id=136280
Reviewed by Darin Adler.
* wtf/text/mac/StringImplMac.mm:
(WTF::StringImpl::operator NSString *): Use autorelease() instead of
CFBridgingRelease(leakRef())
2014-08-29 Joseph Pecoraro <pecoraro@apple.com>
JavaScriptCore: Use ASCIILiteral where possible
https://bugs.webkit.org/show_bug.cgi?id=136179
Reviewed by Michael Saboff.
* wtf/text/WTFString.cpp:
(asciiDebug):
2014-08-27 Filip Pizlo <fpizlo@apple.com>
DFG should compute immediate dominators using the O(n log n) form of Lengauer and Tarjan's "A Fast Algorithm for Finding Dominators in a Flowgraph"
https://bugs.webkit.org/show_bug.cgi?id=93361
Reviewed by Mark Hahnenberg.
Make BitVector operations return the previous value of the bit you're changing. This is
useful for the kinds of set operations that are commonplace in compiler graph searches.
* wtf/BitVector.h:
(WTF::BitVector::quickSet):
(WTF::BitVector::quickClear):
(WTF::BitVector::set):
(WTF::BitVector::ensureSizeAndSet):
(WTF::BitVector::clear):
2014-08-27 Filip Pizlo <fpizlo@apple.com>
FTL should be able to do polymorphic call inlining
https://bugs.webkit.org/show_bug.cgi?id=135145
Reviewed by Geoffrey Garen.
Add some power that I need for call edge profiling.
* wtf/OwnPtr.h:
(WTF::OwnPtr<T>::createTransactionally):
* wtf/Spectrum.h:
(WTF::Spectrum::add):
(WTF::Spectrum::addAll):
(WTF::Spectrum::get):
(WTF::Spectrum::size):
(WTF::Spectrum::KeyAndCount::KeyAndCount):
(WTF::Spectrum::clear):
(WTF::Spectrum::removeIf):
2014-08-27 Nico Weber <thakis@chromium.org>
Delete a MSVS2010 workaround.
https://bugs.webkit.org/show_bug.cgi?id=136321
Reviewed by Benjamin Poulain.
Ports https://codereview.chromium.org/512923004/ by the talented
Nico Weber from Blink. No intended behavior change.
* wtf/Vector.h:
(WTF::=):
2014-08-27 Mark Rowe <mrowe@apple.com>
JavaScriptCore is missing debug info for WTF because libWTF.a is stripped.
<https://webkit.org/b/136320> / <rdar://problem/18148776>
Reviewed by Dan Bernstein.
* Configurations/WTF.xcconfig: Set STRIP_INSTALLED_PRODUCT = NO for the target
that produces libWTF.a so that the debug symbols will be linked into JavaScriptCore
and end up in its dSYM file.
2014-08-26 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r172940.
https://bugs.webkit.org/show_bug.cgi?id=136256
Caused assertions on fast/storage/serialized-script-
value.html, and possibly flakiness on more tests (Requested by
ap on #webkit).
Reverted changeset:
"FTL should be able to do polymorphic call inlining"
https://bugs.webkit.org/show_bug.cgi?id=135145
http://trac.webkit.org/changeset/172940
2014-08-23 Filip Pizlo <fpizlo@apple.com>
FTL should be able to do polymorphic call inlining
https://bugs.webkit.org/show_bug.cgi?id=135145
Reviewed by Geoffrey Garen.
Add some power that I need for call edge profiling.
* wtf/OwnPtr.h:
(WTF::OwnPtr<T>::createTransactionally):
* wtf/Spectrum.h:
(WTF::Spectrum::add):
(WTF::Spectrum::addAll):
(WTF::Spectrum::get):
(WTF::Spectrum::size):
(WTF::Spectrum::KeyAndCount::KeyAndCount):
(WTF::Spectrum::clear):
(WTF::Spectrum::removeIf):
2014-08-25 Tomas Popela <tpopela@redhat.com>
Add support for little-endian PowerPC64
https://bugs.webkit.org/show_bug.cgi?id=135647
Reviewed by Oliver Hunt.
* wtf/Platform.h:
* wtf/dtoa/utils.h:
2014-08-24 Zan Dobersek <zdobersek@igalia.com>
GenericHashTraits::peek() is producing copies of passed-in temporary values
https://bugs.webkit.org/show_bug.cgi?id=131461
Reviewed by Darin Adler.
* wtf/HashTraits.h:
(WTF::GenericHashTraits::peek): Make this method a template that passes through
the passed-in value without copying, achieved by using universal references and
std::forward<>().
2014-08-22 Daniel Bates <dabates@apple.com>
[iOS] Disable ENABLE_IOS_{GESTURE, TOUCH}_EVENTS, and temporarily disable ENABLE_TOUCH_EVENTS
and ENABLE_XSLT when building with the iOS public SDK
https://bugs.webkit.org/show_bug.cgi?id=135945
Reviewed by Andy Estes.
* wtf/FeatureDefines.h:
2014-08-22 Akos Kiss <akiss@inf.u-szeged.hu>
Enable fixed executable allocator for any ARM64 target.
https://bugs.webkit.org/show_bug.cgi?id=136162
Reviewed by Michael Saboff.
The ARM64 macro assembler relies on near calls being implemented by BL
instructions, which have only 128MB offset range from PC. The
on-demand executable allocator cannot ensure that any two locations in
memory allocated for the JIT-compiled code are within this range.
However, the fixed executable allocator has a fixed 16MB memory pool for
ARM64.
* wtf/Platform.h:
Define ENABLE_EXECUTABLE_ALLOCATOR_FIXED if CPU(ARM64), and update
attached comment.
2014-08-22 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r172844.
https://bugs.webkit.org/show_bug.cgi?id=136164
re-applying WEBCORE_EXPORTS patch (Requested by
alexchristensen on #webkit).
Reverted changeset:
"Revert r172831, it broke the Windows build."
http://trac.webkit.org/changeset/172844
2014-08-22 Jon Lee <jonlee@apple.com>
Fix iOS build due to r172832 and move RUBBER_BANDING out of FeatureDefines.h
https://bugs.webkit.org/show_bug.cgi?id=136157
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h: Remove ENABLE(RUBBER_BANDING) logic for Mac platform.
2014-08-21 Tim Horton <timothy_horton@apple.com>
Revert r172831, it broke the Windows build.
* wtf/ExportMacros.h:
2014-08-21 Zalan Bujtas <zalan@apple.com>
Enable SATURATED_LAYOUT_ARITHMETIC.
https://bugs.webkit.org/show_bug.cgi?id=136106
Reviewed by Simon Fraser.
SATURATED_LAYOUT_ARITHMETIC protects LayoutUnit against arithmetic overflow.
(No measurable performance regression on Mac.)
* wtf/FeatureDefines.h:
2014-08-21 Alex Christensen <achristensen@webkit.org>
More WEBCORE_EXPORT macros.
https://bugs.webkit.org/show_bug.cgi?id=136129
Reviewed by Tim Horton.
* wtf/ExportMacros.h:
Removed WTF_TESTING which isn't used.
2014-08-20 Akos Kiss <akiss@inf.u-szeged.hu>
Enable ARM64 disassembler on EFL
https://bugs.webkit.org/show_bug.cgi?id=136089
Reviewed by Filip Pizlo.
* wtf/Platform.h:
Enable WTF_USE_ARM64_DISASSEMBLER for EFL as well.
2014-08-19 Pratik Solanki <psolanki@apple.com>
Remove PurgeableBuffer since it is not very useful any more
https://bugs.webkit.org/show_bug.cgi?id=135939
Reviewed by Andreas Kling.
* wtf/Platform.h: Remove ENABLE_PURGEABLE_MEMORY define.
* wtf/VMTags.h: Remove VM tags used by WebCore for cached resource purgeable memory.
2014-08-19 Magnus Granberg <zorry@gentoo.org>
TEXTREL in libjavascriptcoregtk-1.0.so.0.11.0 on x86 (or i586)
https://bugs.webkit.org/show_bug.cgi?id=70610
Reviewed by Darin Adler.
Add PLT if we're building with PIC.
* wtf/InlineASM.h:
2014-08-19 Zalan Bujtas <zalan@apple.com>
Remove ENABLE(SUBPIXEL_LAYOUT).
https://bugs.webkit.org/show_bug.cgi?id=136077
Reviewed by Simon Fraser.
Remove compile time flag SUBPIXEL_LAYOUT. All ports have it enabled for a while now.
* wtf/FeatureDefines.h:
2014-08-18 Maciej Stachowiak <mjs@apple.com>
Use NSURLFileTypeMappings directly instead of depending on WebKitSystemInterface wrappers for it
https://bugs.webkit.org/show_bug.cgi?id=136035
Reviewed by Dan Bernstein.
* wtf/Platform.h: Define USE(APPLE_INTERNAL_SDK) by default on platforms that have it.
2014-08-18 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r172736.
https://bugs.webkit.org/show_bug.cgi?id=136060
Caused 14% PLT regressions (Requested by rniwa on #webkit).
Reverted changeset:
"Remove PurgeableBuffer since it is not very useful any more"
https://bugs.webkit.org/show_bug.cgi?id=135939
http://trac.webkit.org/changeset/172736
2014-08-18 Pratik Solanki <psolanki@apple.com>
Remove PurgeableBuffer since it is not very useful any more
https://bugs.webkit.org/show_bug.cgi?id=135939
Reviewed by Geoffrey Garen.
* wtf/Platform.h: Remove ENABLE_PURGEABLE_MEMORY define.
* wtf/VMTags.h: Remove VM tags used by WebCore for cached resource purgeable memory.
2014-08-14 Benjamin Poulain <benjamin@webkit.org>
CSS JIT: compile the :empty pseudo class
https://bugs.webkit.org/show_bug.cgi?id=135958
Reviewed by Andreas Kling.
* wtf/text/StringImpl.h:
(WTF::StringImpl::lengthMemoryOffset):
2014-08-12 Myles C. Maxfield <mmaxfield@apple.com>
Elements whose contents start with an astral Unicode symbol disappear when CSS `::first-letter` is applied to them
https://bugs.webkit.org/show_bug.cgi?id=135756
Reviewed by Darin Adler.
Add a method to StringView which passes through contains() to find().
* wtf/text/StringView.h:
(WTF::StringView::contains):
2014-08-12 Pratik Solanki <psolanki@apple.com>
Enable didReceiveDataArray callback on Mac
https://bugs.webkit.org/show_bug.cgi?id=135554
<rdar://problem/9170731>
Reviewed by Andreas Kling.
Enable WTF_USE_NETWORK_CFDATA_ARRAY_CALLBACK for all Cocoa platforms so that we use the same
code path for Mac and iOS.
* wtf/Platform.h:
2014-08-12 Alex Christensen <achristensen@webkit.org>
Generate header detection headers for CMake on Windows.
https://bugs.webkit.org/show_bug.cgi?id=135807
Reviewed by Brent Fulgham.
* wtf/CMakeLists.txt:
* wtf/PlatformWin.cmake:
Generate and include a stub WTFHeaderDetection.h.
2014-08-11 Andy Estes <aestes@apple.com>
[iOS] Get rid of iOS.xcconfig
https://bugs.webkit.org/show_bug.cgi?id=135809
Reviewed by Joseph Pecoraro.
All iOS.xcconfig did was include AspenFamily.xcconfig, so there's no need for the indirection.
* Configurations/Base.xcconfig:
* Configurations/iOS.xcconfig: Removed.
* WTF.xcodeproj/project.pbxproj:
2014-08-12 Zan Dobersek <zdobersek@igalia.com>
Clean up GMutexLocker
https://bugs.webkit.org/show_bug.cgi?id=135833
Reviewed by Carlos Garcia Campos.
Place the GMutexLocker into the WTF namespace. There's no need for this
class to use FastMalloc since it's always allocated on the stack. The
constructor and class now operate on a GMutex reference. There's little
need for an additional inline specifier for methods defined in the header.
The mutex() method is removed as it was not used. m_val is renamed to a
more descriptive m_locked and is made a boolean.
* wtf/gobject/GMutexLocker.h:
(WTF::GMutexLocker::GMutexLocker):
(WTF::GMutexLocker::~GMutexLocker):
(WTF::GMutexLocker::lock):
(WTF::GMutexLocker::unlock):
(WebCore::GMutexLocker::GMutexLocker): Deleted.
(WebCore::GMutexLocker::~GMutexLocker): Deleted.
(WebCore::GMutexLocker::lock): Deleted.
(WebCore::GMutexLocker::unlock): Deleted.
(WebCore::GMutexLocker::mutex): Deleted.
2014-08-12 Zan Dobersek <zdobersek@igalia.com>
Make GRefPtr move-able
https://bugs.webkit.org/show_bug.cgi?id=135801
Reviewed by Carlos Garcia Campos.
Add move constructor and move assignment operator for GRefPtr.
* wtf/gobject/GRefPtr.h:
(WTF::GRefPtr::GRefPtr):
(WTF::=):
2014-08-10 Benjamin Poulain <benjamin@webkit.org>
Update HashTable's operator= after r172167 per review comments
* wtf/HashTable.h:
Update the type as suggested by Darin.
2014-08-07 Benjamin Poulain <bpoulain@apple.com>
Get rid of SCRIPTED_SPEECH
https://bugs.webkit.org/show_bug.cgi?id=135729
Reviewed by Brent Fulgham.
* wtf/FeatureDefines.h:
2014-08-07 Benjamin Poulain <bpoulain@apple.com>
Get rid of INPUT_SPEECH
https://bugs.webkit.org/show_bug.cgi?id=135672
Reviewed by Andreas Kling.
* wtf/FeatureDefines.h:
2014-08-06 Dean Jackson <dino@apple.com>
ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED is not used anywhere. Remove it.
https://bugs.webkit.org/show_bug.cgi?id=135675
Reviewed by Sam Weinig.
* wtf/FeatureDefines.h:
2014-08-06 Benjamin Poulain <benjamin@webkit.org>
HashTable based classes leak a lot
https://bugs.webkit.org/show_bug.cgi?id=135638
Reviewed by Darin Adler.
* wtf/HashTable.h:
The operator= taking a rvalue reference was never freeing the memory allocated
for the table of the left hand side object.
This patch fixes the leaks by doing an alloc+swap with a new object.
The object temp gets the reference to m_table, and destroys it in the regular destructor
when going out of scope.
Kudos to Pratik Solanki for finding the leaks.
2014-08-06 Dániel Bátyai <dbatyai.u-szeged@partner.samsung.com>
[JSC] Build fix for FTL on EFL after ftlopt merge
https://bugs.webkit.org/show_bug.cgi?id=135565
Reviewed by Mark Lam.
Added ENABLE(FTL_NATIVE_CALL_INLINING).
* wtf/Platform.h:
2014-08-04 Alex Christensen <achristensen@webkit.org>
Progress towards CMake on Mac.
https://bugs.webkit.org/show_bug.cgi?id=135528
Reviewed by Gyuyoung Kim.
* wtf/CMakeLists.txt:
Include text directory.
* wtf/PlatformMac.cmake: Added.
2014-07-31 Alex Christensen <achristensen@webkit.org>
Progress towards cmake on Windows.
https://bugs.webkit.org/show_bug.cgi?id=135484
Reviewed by Martin Robinson.
* wtf/CMakeLists.txt:
Added WTF_LIBRARY_TYPE because Windows needs WTF to be a shared library.
2014-07-30 Andreas Kling <akling@apple.com>
PropertyName's internal string is always atomic.
<https://webkit.org/b/135451>
Remove AtomicString::findStringWithHash() since nobody uses it anymore.
Reviewed by Benjamin Poulain.
* wtf/text/AtomicString.cpp:
(WTF::findString): Deleted.
(WTF::AtomicString::findStringWithHash): Deleted.
* wtf/text/AtomicString.h:
2014-07-30 Andy Estes <aestes@apple.com>
USE(CONTENT_FILTERING) should be ENABLE(CONTENT_FILTERING)
https://bugs.webkit.org/show_bug.cgi?id=135439
Reviewed by Tim Horton.
We now support two different platform content filters, and will soon support a mock content filter (as part of
webkit.org/b/128858). This makes content filtering a feature of WebKit, not just an adoption of a third-party
library. ENABLE() is the correct macro to use for such a feature.
* wtf/Platform.h:
2014-07-29 Brent Fulgham <bfulgham@apple.com>
[Win] Modify version numbering scheme to support 5-tuple versions
https://bugs.webkit.org/show_bug.cgi?id=135400
<rdar://problem/17849033>
Reviewed by David Kilzer.
* WTF.vcxproj/WTFPostBuild.cmd: Use new version-stamp.pl script
to version WTF.dll.
* WTF.vcxproj/WTFPreBuild.cmd: Make sure we have created the
appropriate version resource during builds.
2014-07-29 Daniel Bates <dabates@apple.com>
Use WTF::move() instead of std::move() to help ensure move semantics
https://bugs.webkit.org/show_bug.cgi?id=135351
Reviewed by Alexey Proskuryakov.
* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):
2014-07-28 Brian J. Burg <burg@cs.washington.edu>
Should not export symbols for base64Encode inline adapter methods
https://bugs.webkit.org/show_bug.cgi?id=135355
Unreviewed build fix.
Fixes the build break introduced by r171682, where a base64Encode
inline adapter method was used in another header, thus creating
multiple definitions of it (and problems with with weak symbols).
* wtf/text/Base64.h: Remove WTF_EXPORT_PRIVATE for inlined methods.
2014-07-27 Filip Pizlo <fpizlo@apple.com>
Merge r170090, r170092, r170129, r170141, r170161, r170215, r170275, r170375, r170376, r170382, r170383, r170399, r170436, r170489, r170490, r170556 from ftlopt.
* wtf/text/WTFString.h:
2014-07-26 Filip Pizlo <fpizlo@apple.com>
Unreviewed, roll out r171641-r171644. It broke some tests; will investigate and
reland later.
* wtf/text/WTFString.h:
2014-07-25 Filip Pizlo <fpizlo@apple.com>
Attempt to fix Windows.
* wtf/text/WTFString.h:
2014-07-25 Gavin Barraclough <baraclough@apple.com>
Yosemite version number is 101000
https://bugs.webkit.org/show_bug.cgi?id=135301
Reviewed by Sam Weinig.
* wtf/FeatureDefines.h:
* wtf/Platform.h:
2014-07-23 Brent Fulgham <bfulgham@apple.com>
[Win] Use NO_RETURN_DUE_TO_CRASH on Windows.
https://bugs.webkit.org/show_bug.cgi?id=13519
Reviewed by Mark Lam.
* wtf/Assertions.h: Add MSVC to list of compilers supporting this macro.
* wtf/FastMalloc.cpp: Correct function declaration for NO_RETURN_DUE_TO_CRASH.
2014-07-22 Filip Pizlo <fpizlo@apple.com>
Merge r169148, r169185, r169188, r169578, r169582, r169584, r169588, r169753 from ftlopt.
2014-06-04 Filip Pizlo <fpizlo@apple.com>
[ftlopt] AI should be able track structure sets larger than 1
https://bugs.webkit.org/show_bug.cgi?id=128073
Reviewed by Oliver Hunt.
* wtf/Bag.h:
(WTF::Bag::Node::Node):
(WTF::Bag::add):
2014-07-22 Filip Pizlo <fpizlo@apple.com>
Merge r168635, r168780, r169005, r169014, and r169143 from ftlopt.
2014-05-20 Filip Pizlo <fpizlo@apple.com>
[ftlopt] DFG bytecode parser should turn GetById with nothing but a Getter stub as stuff+handleCall, and handleCall should be allowed to inline if it wants to
https://bugs.webkit.org/show_bug.cgi?id=133105
Reviewed by Michael Saboff.
* wtf/Bag.h:
(WTF::Bag::iterator::operator!=):
2014-07-19 Zan Dobersek <zdobersek@igalia.com>
[WTF] Add the move constructor, move assignment operator for HashTable
https://bugs.webkit.org/show_bug.cgi?id=130772
Reviewed by Darin Adler.
HashTable has both copy constructor and copy assignment operator, meaning that the move constructor
and move assignment operator are implicitly deleted. This patch defines both to avoid unnecessary
copies when moves can be performed.
* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):
2014-07-15 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r171107.
https://bugs.webkit.org/show_bug.cgi?id=134959
This was not the problem! (Requested by kling on #webkit).
Reverted changeset:
"Revert: Run the FastMalloc scavenger thread on iOS as well."
https://bugs.webkit.org/show_bug.cgi?id=134927
http://trac.webkit.org/changeset/171107
2014-07-15 Andreas Kling <akling@apple.com>
Revert: Run the FastMalloc scavenger thread on iOS as well.
<https://webkit.org/b/134927>
<rdar://problem/17485079>
This appears to be the cause of some elusive crashes, and since I don't
have a way to reproduce them, let's just go back to not running the
scavenger thread on iOS.
Reviewed by Antti Koivisto.
* wtf/FastMalloc.cpp:
2014-07-13 Filip Pizlo <fpizlo@apple.com>
HashMap should have removeIf()
https://bugs.webkit.org/show_bug.cgi?id=134870
Reviewed by Sam Weinig.
Expose a new HashMap method, called removeIf(), which allows you to do an efficient
pass over the map and remove a bunch of things at once. This is used by DFG GCSE as
part of https://bugs.webkit.org/show_bug.cgi?id=134677.
* wtf/HashMap.h:
(WTF::X>::removeIf):
* wtf/HashTable.h:
(WTF::KeyTraits>::removeIf):
2014-07-11 peavo@outlook.com <peavo@outlook.com>
[Win] Enable DFG JIT.
https://bugs.webkit.org/show_bug.cgi?id=123615
Reviewed by Mark Lam.
* wtf/Platform.h:
2014-07-11 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r170995.
https://bugs.webkit.org/show_bug.cgi?id=134831
Causing odd crashes in debug builds (Requested by zdobersek on
#webkit).
Reverted changeset:
"[WTF] Add the move constructor, move assignment operator for
HashTable"
https://bugs.webkit.org/show_bug.cgi?id=130772
http://trac.webkit.org/changeset/170995
2014-07-09 Zan Dobersek <zdobersek@igalia.com>
[WTF] Add the move constructor, move assignment operator for HashTable
https://bugs.webkit.org/show_bug.cgi?id=130772
Reviewed by Darin Adler.
HashTable has both copy constructor and copy assignment operator, meaning that the move constructor
and move assignment operator are implicitly deleted. This patch defines both to avoid unnecessary
copies when moves can be performed.
* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):
2014-07-10 Alex Christensen <achristensen@webkit.org>
Enable same features on all Windows ports.
https://bugs.webkit.org/show_bug.cgi?id=134715
Reviewed by Brent Fulgham.
* wtf/Platform.h:
Use REQUEST_ANIMATION_FRAME_TIMER on WinCairo.
2014-07-09 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed build fix after r170930.
* WTF.vcxproj/copy-files.cmd: Include cf files in
post-build copy operation.
2014-07-09 Brent Fulgham <bfulgham@apple.com>
[Win] Remove uses of 'bash' in build system
https://bugs.webkit.org/show_bug.cgi?id=134782
<rdar://problem/17615533>
Reviewed by Dean Jackson.
Remove uses of 'bash' by replacing Windows-specific bash scripts
with Perl equivalents.
* WTF.vcxproj/WTFGenerated.make:
* WTF.vcxproj/WTFGenerated.vcxproj:
* WTF.vcxproj/WTFGenerated.vcxproj.filters:
* WTF.vcxproj/WTFPreBuild.cmd:
* WTF.vcxproj/build-generated-files.pl: Copied from Source/WTF/WTF.vcxproj/build-generated-files.sh.
* WTF.vcxproj/build-generated-files.sh: Removed.
2014-07-09 Brent Fulgham <bfulgham@apple.com>
[Win] Remove use of 'grep' in build steps
https://bugs.webkit.org/show_bug.cgi?id=134770
<rdar://problem/17608783>
Reviewed by Tim Horton.
Replace uses of the grep command in Windows builds with the equivalent
Perl program.
* WTF.vcxproj/WTFPreBuild.cmd:
2014-07-07 Zan Dobersek <zdobersek@igalia.com>
Enable ARMv7 disassembler for the GTK port
https://bugs.webkit.org/show_bug.cgi?id=134676
Reviewed by Benjamin Poulain.
* wtf/Platform.h: Enable the ARMv7 disassembler for the GTK port when
targeting the ARMv7 architecture.
2014-07-06 Yoav Weiss <yoav@yoav.ws>
Turn on img@sizes compile flag
https://bugs.webkit.org/show_bug.cgi?id=134634
Reviewed by Benjamin Poulain.
* wtf/FeatureDefines.h: Added compile flag definition.
2014-07-03 Gyuyoung Kim <gyuyoung.kim@samsung.com>
Unreivewed, fix build break on EFL and GTK since r170767.
* wtf/CMakeLists.txt: Exclude Decoder.h and Encoder.h because those files were removed.
2014-07-03 Daniel Bates <dabates@apple.com>
Add WTF::move()
https://bugs.webkit.org/show_bug.cgi?id=134500
Reviewed by Darin Adler.
Substitution of WTF::move() for std::move() rubber-stamped by Anders Carlsson.
Implement WTF::move(), a replacement for std::move(). WTF::move() is less error
prone than std::move() as it compile asserts that its argument is a non-const
lvalue reference before ultimately casting it to a rvalue reference (via std::move).
* wtf/Deque.h: Substitute WTF::move() for std::move().
* wtf/HashMap.h: Ditto.
* wtf/HashSet.h: Ditto.
* wtf/HashTable.h: Ditto.
* wtf/IteratorAdaptors.h: Ditto.
* wtf/IteratorRange.h: Ditto.
* wtf/ListHashSet.h: Ditto.
* wtf/MainThread.cpp: Ditto.
[...]
* wtf/StdLibExtras.h:
(WTF::move): Added.
[...]
2014-07-03 Anders Carlsson <andersca@apple.com>
Get rid of Encoder.h and Decoder.h from WTF
https://bugs.webkit.org/show_bug.cgi?id=134600
Reviewed by Darin Adler.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/Decoder.h: Removed.
* wtf/Encoder.h: Removed.
2014-07-03 Ryuan Choi <ryuan.choi@samsung.com>
Broken build with build-webkit --no-video
https://bugs.webkit.org/show_bug.cgi?id=134587
Reviewed by Darin Adler.
MEDIA_CONTROLS_SCRIPT requires VIDEO enabled.
* wtf/FeatureDefines.h: Added error message for dependency failure.
2014-07-02 Enrica Casucci <enrica@apple.com>
iOS build fix after http://trac.webkit.org/changeset/170697.
Unreviewed.
* wtf/Deque.h:
2014-07-02 Dan Bernstein <mitz@apple.com>
Remove some code only needed for versions of Safari that are no longer supported
https://bugs.webkit.org/show_bug.cgi?id=134537
Reviewed by Anders Carlsson.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2014-07-01 Alex Christensen <achristensen@webkit.org>
Reduce dynamic memory allocation in css jit.
https://bugs.webkit.org/show_bug.cgi?id=134416
Reviewed by Benjamin Poulain.
* wtf/Deque.h:
Added inlineCapacity optional template parameter.
2014-06-30 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r170605.
https://bugs.webkit.org/show_bug.cgi?id=134484
The changes cause crashes on ARM64 (Requested by benjaminp on
#webkit).
Reverted changeset:
"Reduce dynamic memory allocation in css jit."
https://bugs.webkit.org/show_bug.cgi?id=134416
http://trac.webkit.org/changeset/170605
2014-06-30 Daniel Bates <dabates@apple.com>
Make TransformIterator::TransformIterator() take rvalue references
https://bugs.webkit.org/show_bug.cgi?id=134468
Reviewed by Darin Adler.
It's unnecessary to support TransformIterator::TransformIterator() taking const lvalue references
as we only call it with rvalues. As a side benefit, we can use move semantics to initialize the
members of TransformIterator.
* wtf/IteratorAdaptors.h:
(WTF::TransformIterator::TransformIterator): Make constructor take arguments as rvalue references.
(WTF::makeTransformIterator): Substitute std::move() for std::forward().
2014-06-30 Alex Christensen <achristensen@webkit.org>
Reduce dynamic memory allocation in css jit.
https://bugs.webkit.org/show_bug.cgi?id=134416
Reviewed by Benjamin Poulain.
* wtf/Deque.h:
Added inlineCapacity optional template parameter.
2014-06-30 Anders Carlsson <andersca@apple.com>
Add code for encoding legacy session history entries
https://bugs.webkit.org/show_bug.cgi?id=134452
Reviewed by Andreas Kling.
* wtf/MallocPtr.h:
(WTF::MallocPtr::malloc):
(WTF::MallocPtr::realloc):
2014-06-27 Andreas Kling <akling@apple.com>
[ARMv7] Skip one particularly expensive fastFree() alignment check.
<https://webkit.org/b/134402>
The size class alignment check in fastFree() was crazy expensive on ARMv7
due to its use of modulo. Disabling it shaves 470ms off of PLT main thread
time in the web process.
Note that this was very hard to identify in profiles due to TCO.
Reviewed by Gavin Barraclough.
* wtf/FastMalloc.cpp:
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
2014-06-26 Andreas Kling <akling@apple.com>
Bump FastMalloc thread cache max size to 1MB on iOS.
<https://webkit.org/b/134365>
The previous limit (512kB) comes from the old days of very-low-memory
devices, and we can now afford to spend another 512kB here.
Note that we already have a mechanism to purge FastMalloc caches on
system memory pressure.
Looks like a ~400ms progression on PLT.
Reviewed by Geoff Garen.
* wtf/FastMalloc.cpp:
2014-06-26 Laszlo Gombos <l.gombos@samsung.com>
Define TARGET_OS_IPHONE to 0 for non-darwin ports
https://bugs.webkit.org/show_bug.cgi?id=134347
Reviewed by Darin Adler.
A follow-up to r169880 to make it easier to reason about
the code. The purpose of this change to allow
"#if TARGET_OS_IPHONE" in public header files.
* wtf/Platform.h:
2014-06-26 Chris Fleizach <cfleizach@apple.com>
Add an undo group for each dictated utterance in WebKit
https://bugs.webkit.org/show_bug.cgi?id=134086
Applied review comments from Sam Weinig.
Move the associated USE #define into Platform.h.
* wtf/Platform.h:
2014-06-25 Geoffrey Garen <ggaren@apple.com>
Unreviewed, rolling out r166876.
Caused some ECMA test262 failures
Reverted changeset:
"Date object needs to check for ES5 15.9.1.14 TimeClip limit."
https://bugs.webkit.org/show_bug.cgi?id=131248
http://trac.webkit.org/changeset/166876
2014-06-25 peavo@outlook.com <peavo@outlook.com>
[Win64] ASM LLINT is not enabled.
https://bugs.webkit.org/show_bug.cgi?id=130638
Reviewed by Mark Lam.
* wtf/Platform.h: Enable LLINT and JIT for Win64.
2014-06-25 Laszlo Gombos <l.gombos@samsung.com>
Remove build guard for progress element
https://bugs.webkit.org/show_bug.cgi?id=134292
Reviewed by Benjamin Poulain.
The build flag is no longer needed as it is always on.
* wtf/FeatureDefines.h:
2014-06-24 Andreas Kling <akling@apple.com>
Run the FastMalloc scavenger thread on iOS as well.
<https://webkit.org/b/134287>
<rdar://problem/17446198>
Reviewed by Gavin Barraclough.
* wtf/FastMalloc.cpp:
2014-06-24 Anders Carlsson <andersca@apple.com>
Add PageState to HistoryItem conversion code
https://bugs.webkit.org/show_bug.cgi?id=134259
Reviewed by Andreas Kling.
* wtf/Optional.h:
(WTF::Optional::valueOr):
2014-06-24 László Langó <llango.u-szeged@partner.samsung.com>
[JavaScriptCore] Enable concurrent JIT on EFL.
https://bugs.webkit.org/show_bug.cgi?id=134242
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2014-06-23 Ryuan Choi <ryuan.choi@samsung.com>
[EFL] Replace RefPtr<Evas_Object> with UniquePtrEfl
https://bugs.webkit.org/show_bug.cgi?id=134236
Reviewed by Gyuyoung Kim.
Although there are ref/unref for Evas_Object, it's bit odd so we should call evas_object_del to destroy it.
So, this patch replaced RefPtr<Evas_Object> with UniquePtrEfl for the simplicity.
* wtf/PlatformEfl.cmake: Removed RefPtrEfl.cpp from source list.
* wtf/efl/RefPtrEfl.cpp: Removed.
* wtf/efl/RefPtrEfl.h: Removed.
2014-06-21 Brady Eidson <beidson@apple.com>
Gamepad API - Deprecate the existing implementation
https://bugs.webkit.org/show_bug.cgi?id=134108
Reviewed by Timothy Hatcher.
-Add new "GAMEPAD_DEPRECATED" build flag, moving the existing implementation to use it
-Move some implementation files into a "deprecated" subdirectory.
* wtf/FeatureDefines.h:
2014-06-21 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r170244.
https://bugs.webkit.org/show_bug.cgi?id=134157
GTK/EFL bindings generator works differently, making this
patch not work there. Will fix entire patch after a rollout.
(Requested by bradee-oh on #webkit).
Reverted changeset:
"Gamepad API - Deprecate the existing implementation"
https://bugs.webkit.org/show_bug.cgi?id=134108
http://trac.webkit.org/changeset/170244
2014-06-21 Brady Eidson <beidson@apple.com>
Gamepad API - Deprecate the existing implementation
https://bugs.webkit.org/show_bug.cgi?id=134108
Reviewed by Timothy Hatcher.
-Add new "GAMEPAD_DEPRECATED" build flag, moving the existing implementation to use it
-Add the "Deprecated" suffix to some implementation files
* wtf/FeatureDefines.h:
2014-06-21 Eva Balazsfalvi <evab.u-szeged@partner.samsung.com>
Removing PAGE_VISIBILITY_API compile guard.
https://bugs.webkit.org/show_bug.cgi?id=133844
Reviewed by Gavin Barraclough.
* wtf/FeatureDefines.h:
2014-06-20 Anders Carlsson <andersca@apple.com>
Add encoding and decoding support for WTF::Optional
https://bugs.webkit.org/show_bug.cgi?id=134125
Reviewed by Andreas Kling.
* wtf/Optional.h:
(WTF::Optional::operator=):
2014-06-20 Anders Carlsson <andersca@apple.com>
Add copy/move constructors and assignment operators to WTF::Optional
https://bugs.webkit.org/show_bug.cgi?id=134119
Reviewed by Andreas Kling.
* wtf/Optional.h:
(WTF::Optional::Optional):
(WTF::Optional::operator=):
2014-06-19 Anders Carlsson <andersca@apple.com>
Add WTF::Optional class
https://bugs.webkit.org/show_bug.cgi?id=134083
Reviewed by Andreas Kling.
* WTF.xcodeproj/project.pbxproj:
* wtf/Optional.h: Added.
(WTF::Optional::Optional):
(WTF::Optional::~Optional):
(WTF::Optional::operator bool):
(WTF::Optional::value):
2014-06-19 Dániel Bátyai <dbatyai.u-szeged@partner.samsung.com>
Remove ENABLE(LLINT) and ENABLE(LLINT_C_LOOP) guards
https://bugs.webkit.org/show_bug.cgi?id=130389
Reviewed by Mark Lam.
Removed ENABLE(LLINT) since we always build with it, and changed ENABLE(LLINT_C_LOOP)
into !ENABLE(JIT) since they are mutually exclusive.
* wtf/OSAllocatorPosix.cpp:
(WTF::OSAllocator::reserveAndCommit):
* wtf/Platform.h:
2014-06-18 Anders Carlsson <andersca@apple.com>
Add CF type cast function templates and use them in KeyedDecoder in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=134033
Reviewed by Sam Weinig.
* WTF.xcodeproj/project.pbxproj:
* wtf/cf/TypeCasts.h: Added.
(WTF::dynamic_cf_cast):
Returns null if the given CFTypeRef object doesn't have the right type.
(WTF::checked_cf_cast):
ASSERTs (with security implication) if the given CFTypeRef object is null or doesn't have the right type.
2014-06-17 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
Misused PLATFORM(MIDDLE_ENDIAN) and PLATFORM(BIG_ENDIAN).
https://bugs.webkit.org/show_bug.cgi?id=128301
Reviewed by Daniel Bates.
Endianness is a CPU attribute, not a PLATFORM. PLATFORM() macro is replaced to CPU().
* wtf/text/ASCIIFastPath.h:
(WTF::copyLCharsFromUCharSource):
2014-06-17 Andreas Kling <akling@apple.com>
Web process main thread priority is lower than some network process threads.
<https://webkit.org/b/133987>
<rdar://problem/17330300>
Bring all of our threads to the appropriate priority level by opting in to the
threading QoS APIs. By marking them "user initiated", they still yield to UI
interaction, but take priority over background tasks.
Reviewed by Maciej Stachowiak.
* wtf/Platform.h:
* wtf/Threading.cpp:
(WTF::setCurrentThreadIsUserInitiated):
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::createThreadInternal):
2014-06-17 Alex Christensen <achristensen@webkit.org>
Enable css jit for armv7 on iOS.
https://bugs.webkit.org/show_bug.cgi?id=133961
<rdar://problem/17310631>
Reviewed by Andreas Kling.
* wtf/Platform.h:
Enable css jit for ARM thumb on iOS.
2014-06-17 Dan Bernstein <mitz@apple.com>
String::isolatedCopy doesn’t return an isolated copy when used on an rvalue reference
https://bugs.webkit.org/show_bug.cgi?id=133968
Reviewed by Anders Carlsson.
Made the rvalue reference overload of isolatedCopy() non-const, so that std::move(*this) is
an rvalue reference that can be moved, rather than copied, into the returned String.
* wtf/text/WTFString.cpp:
(WTF::String::isolatedCopy):
* wtf/text/WTFString.h:
2014-06-15 Dan Bernstein <mitz@apple.com>
iOS build fix after r169995.
* wtf/RetainPtr.h:
2014-06-15 Anders Carlsson <andersca@apple.com>
Add an autorelease() member function to RetainPtr
https://bugs.webkit.org/show_bug.cgi?id=133929
Reviewed by Dan Bernstein.
* wtf/RetainPtr.h:
2014-06-13 Alex Christensen <achristensen@webkit.org>
Unreviewed disabling css jit on armv7. It's not quite ready yet.
* wtf/Platform.h:
Disable css jit on armv7.
2014-06-13 Alex Christensen <achristensen@webkit.org>
Enable css jit for armv7 on iOS.
https://bugs.webkit.org/show_bug.cgi?id=133890
<rdar://problem/17310631>
Reviewed by Andreas Kling.
* wtf/Platform.h:
Enable css jit for ARM thumb on iOS.
2014-06-13 Mark Hahnenberg <mhahnenberg@apple.com>
OSR exit should barrier the Executables for all InlineCallFrames, not just those on the stack at the time of exit
https://bugs.webkit.org/show_bug.cgi?id=133880
Reviewed by Filip Pizlo.
* wtf/Bag.h:
(WTF::Bag::iterator::operator!=): Add != to the Bag iterator so we can use it in range-based iteration.
2014-06-12 Gavin Barraclough <barraclough@apple.com>
Add support for thread/WorkQueue QoS
https://bugs.webkit.org/show_bug.cgi?id=130688
Reviewed by Anders Carlson & Simon Fraser.
Add the ability to mark threads as UserInteractive.
* wtf/Threading.cpp:
(WTF::setCurrentThreadIsUserInteractive):
- added method to set QoS of current thread to UserInteractive.
* wtf/Threading.h:
- added declaration.
2014-06-12 Alexey Proskuryakov <ap@apple.com>
Fix Mac after r169880.
This revision added a C++ comment to Platform.h, which breaks sandbox profile
preprocessing.
Also, I do not believe that this comment was entirely accurate - we've always used
this technique with GCC, so there has to be more to it. So, I just removed the comment.
* wtf/Platform.h:
2014-06-11 Csaba Osztrogonác <ossy@webkit.org>
[EFL][GTK] Ultimate fix not to have build failures
in the future because of "#if TARGET_OS_IPHONE" guards.
Unreviewed buildfix.
* wtf/Platform.h: Define TARGET_OS_IPHONE to 0 on EFL and GTK.
2014-06-11 Ryosuke Niwa <rniwa@webkit.org>
Turning on DUMP_PROPERTYMAP_STATS causes a build failure
https://bugs.webkit.org/show_bug.cgi?id=133673
Reviewed by Andreas Kling.
Added DEFINE_GLOBAL_FOR_LOGGING to allow running a destructor in logging code
that needs to be enabled in release builds (e.g. for JavaScriptCore).
* wtf/StdLibExtras.h:
2014-06-09 Benjamin Poulain <bpoulain@apple.com>
Improve CSSPrimitiveValue::customCSSText for ARMv7
https://bugs.webkit.org/show_bug.cgi?id=133597
Reviewed by Andreas Kling.
* wtf/RefPtr.h:
(WTF::RefPtr<T>::RefPtr):
* wtf/text/WTFString.h:
(WTF::String::String):
2014-06-05 Yoav Weiss <yoav@yoav.ws>
Align srcset parser with recent spec changes
https://bugs.webkit.org/show_bug.cgi?id=133504
Reviewed by Darin Adler.
I've added toInt and toFloat methods to StringView, and exposed
charactersToInt so that they can be used by
HTMLSrcsetParser.cpp.
* wtf/text/WTFString.h:
* wtf/text/StringView.h:
(WTF::StringView::toInt):
(WTF::StringView::toFloat):
2014-06-04 Alex Christensen <achristensen@webkit.org>
Enable WebGL on Windows.
https://bugs.webkit.org/show_bug.cgi?id=133503
Reviewed by Brent Fulgham.
* wtf/FeatureDefines.h:
Enable WebGL for AppleWin and WinCairo ports.
2014-06-01 Jer Noble <jer.noble@apple.com>
[MSE] Appends of overlapping sample data do not clear existing samples properly.
https://bugs.webkit.org/show_bug.cgi?id=133435
Reviewed by Darin Adler.
Add a dump method to MediaTime, so that MediaTimes can be easily converted to strings (for logging purposes).
* wtf/MediaTime.cpp:
(WTF::MediaTime::dump):
* wtf/MediaTime.h:
2014-05-31 Anders Carlsson <andersca@apple.com>
Add a LazyNeverDestroyed class template and use it
https://bugs.webkit.org/show_bug.cgi?id=133425
Reviewed by Darin Adler.
LazyNeverDestroyed is similar to NeverDestroyed, except it's lazily constructed
by calling construct(). This makes it useful for using inside std::call_once functions.
* wtf/Forward.h:
* wtf/NeverDestroyed.h:
(WTF::LazyNeverDestroyed::construct):
(WTF::LazyNeverDestroyed::operator T&):
(WTF::LazyNeverDestroyed::get):
(WTF::LazyNeverDestroyed::asPtr):
(WTF::LazyNeverDestroyed::MaybeRelax::MaybeRelax):
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
(WTF::atomicallyInitializedStaticMutex):
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::cachedCollatorMutex):
2014-05-29 Alex Christensen <achristensen@webkit.org>
Enable css jit by default on arm64.
https://bugs.webkit.org/show_bug.cgi?id=133246
<rdar://problem/17073407>
Reviewed by Benjamin Poulain.
* wtf/Platform.h:
Added arm64 to list of supported architectures.
2014-05-28 Filip Pizlo <fpizlo@apple.com>
DFG::DCEPhase inserts into an insertion set in reverse, causing hilarious basic block corruption if you kill a lot of NewArrays
https://bugs.webkit.org/show_bug.cgi?id=133368
Reviewed by Mark Lam.
* wtf/Insertion.h:
(WTF::executeInsertions): This algorithm is only correct if insertions are added in the right order. Assert that the order is right.
2014-05-27 Jon Lee <jonlee@apple.com>
Update ENABLE(MEDIA_SOURCE) on Mac
https://bugs.webkit.org/show_bug.cgi?id=133141
Reviewed by Darin Adler.
* wtf/FeatureDefines.h: #ifdef unneeded for Mac since it's covered in the .xcconfigs.
2014-05-27 Tibor Meszaros <tmeszaros.u-szeged@partner.samsung.com>
Remove BLOB guards
https://bugs.webkit.org/show_bug.cgi?id=132863
Reviewed by Csaba Osztrogonác.
* wtf/FeatureDefines.h:
2014-05-27 Gwang Yoon Hwang <yoon@igalia.com>
[GLIB] RunLoop::dispatch always executes the function on the main thread instead of the target thread.
https://bugs.webkit.org/show_bug.cgi?id=133291
Reviewed by Carlos Garcia Campos.
GMainLoopSource::schedule[AfterDelay] must be used with the appropriate
GMainContext. Because current implementations in RunLoopGtk passes nullptr
instead of its runLoopContext when using GMainLoopSource, all of dispatched
functions are executed on the main thread regardless of which runloops is used.
This patch fixes the issue by passing the m_runLoopContext instead the default
parameter to the GMainLoopSource::schedule[AfterDelay].
* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::start):
2014-05-26 Darin Adler <darin@apple.com>
Class name matching should use ASCII case-insensitive matching, not Unicode case folding
https://bugs.webkit.org/show_bug.cgi?id=133292
Reviewed by Anders Carlsson.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::addSlowCase): Change to take references instead of pointers since these
arguments can never be null.
(WTF::AtomicString::lower): Rearranged slightly to use PassRef in a more efficient but
slightly uglier way.
(WTF::AtomicString::convertToASCIILowercase): Added.
* wtf/text/AtomicString.h: Updated for above changes.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::convertToASCIILowercase): Added.
* wtf/text/StringImpl.h: Updated for above.
* wtf/text/WTFString.cpp:
(WTF::String::convertToASCIILowercase): Added.
* wtf/text/WTFString.h: Updated for above.
2014-05-22 Zan Dobersek <zdobersek@igalia.com>
Add the partial specialization for VectorTraits<std::unique_ptr<P>>
https://bugs.webkit.org/show_bug.cgi?id=133083
Reviewed by Andreas Kling.
* wtf/VectorTraits.h: Like for RefPtr<P>, OwnPtr<P> and Ref<P>, the partial
specialization for VectorTraits<std::unique_ptr<P>> should exist and should
inherit from SimpleClassVector.
2014-05-20 Geoffrey Garen <ggaren@apple.com>
Rolled out <http://trac.webkit.org/changeset/166184>
https://bugs.webkit.org/show_bug.cgi?id=133144
Reviewed by Gavin Barraclough.
It caused a performance regression.
* wtf/FastMalloc.cpp:
(WTF::TCMalloc_PageHeap::runScavengerThread):
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::createThreadInternal):
(WTF::setCurrentThreadQOSUtility): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::setCurrentThreadQOSUtility): Deleted.
2014-05-20 Jer Noble <jer.noble@apple.com>
[Mac] AVAssets are never destroyed; lack of an autorelease pool when calling callOnMainThread.
https://bugs.webkit.org/show_bug.cgi?id=133130
Reviewed by Geoff Garen.
Wrap the function to be called in an autorelease pool, so that autoreleased objects are cleaned
up immediately after the end of the function.
* wtf/mac/MainThreadMac.mm:
(WTF::timerFired):
2014-05-18 Rik Cabanier <cabanier@adobe.com>
support for navigator.hardwareConcurrency
https://bugs.webkit.org/show_bug.cgi?id=132588
Reviewed by Filip Pizlo.
* wtf/FeatureDefines.h:
2014-05-14 Tibor Meszaros <tmeszaros.u-szeged@partner.samsung.com>
Remove CSS_STICKY_POSITION guards
https://bugs.webkit.org/show_bug.cgi?id=132676
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h:
2014-05-13 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] background-attachment:fixed behaves very poorly
https://bugs.webkit.org/show_bug.cgi?id=132881
<rdar://problem/16789526>
Reviewed by Beth Dakin.
Remove ENABLE_FAST_MOBILE_SCROLLING. Ports can use the fixedBackgroundsPaintRelativeToDocument
setting now.
* wtf/FeatureDefines.h:
2014-05-08 Alexey Proskuryakov <ap@apple.com>
Automatically zip document bundles used via File API
https://bugs.webkit.org/show_bug.cgi?id=132713
<rdar://problem/13397892>
Reviewed by Anders Carlsson.
* wtf/FeatureDefines.h: Added ENABLE_FILE_REPLACEMENT for Mac.
2014-05-07 Filip Pizlo <fpizlo@apple.com>
UNREACHABLE_FOR_PLATFORM() is meant to be a release crash.
Rubber stamped by Mark Hahnenberg..
* wtf/Assertions.h:
(UNREACHABLE_FOR_PLATFORM):
2014-05-06 Alberto Garcia <berto@igalia.com>
There is no HW_AVAILCPU on FreeBSD, NetBSD, and OpenBSD
https://bugs.webkit.org/show_bug.cgi?id=132542
Reviewed by Michael Saboff.
Use sysconf() to get the number of processor cores.
* wtf/NumberOfCores.cpp:
(WTF::numberOfProcessorCores):
2014-05-04 Darin Adler <darin@apple.com>
RetainPtr: Use adoptCF function instead of AdoptCF constructor argument
https://bugs.webkit.org/show_bug.cgi?id=80222
Reviewed by Alexey Proskuryakov.
All the clients are gone, so we can now remove AdoptCF and AdoptNS.
* wtf/RetainPtr.h: Removed the public constructors that let you specify AdoptCF
and AdoptNS. Instead, made the adoptCF and adoptNS functions be friends and use
a private constructor that takes an Adopt argument.
(WTF::adoptCF): Moved the Objective-C class check in here.
(WTF::adoptNS): Moved the code to deal with the CFRetain for garbage collection
in here; it used to be spread across the constructor and adoptNSReference.
2014-05-04 Andreas Kling <akling@apple.com>
Optimize JSRopeString for resolving directly to AtomicString.
<https://webkit.org/b/132548>
Add AtomicString::find([LU]Char*, unsigned length) helpers for finding
an existing AtomicString without a StringImpl on hand.
Reviewed by Filip Pizlo.
* wtf/text/AtomicString.h:
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::find):
2014-05-01 Brent Fulgham <bfulgham@apple.com>
Fix handling of attributes prior to compiling shader
https://bugs.webkit.org/show_bug.cgi?id=132430
Reviewed by Dean Jackson.
WebGL programs that called bindAttribLocations prior to compiling shader sources
would perform the bind using the non-hashed symbol name, but would later create
the attributes as hashed names. Consequently, the program would refer to
attributes that were never actually part of any shader, resulting in some amazing
display artifacts.
This patch adds a dictionary of hashed symbol names so that we can tell the WebGL
program the proper name that will be used when the shader is eventually compiled,
allowing the WebGL program to link against the proper symbol after compiling and
linking completes.
* wtf/HexNumber.h:
(WTF::appendUnsigned64AsHex): Add uint64_t-compatible hex->string converter.
2014-04-30 Geoffrey Garen <ggaren@apple.com>
Link against bmalloc in production builds
https://bugs.webkit.org/show_bug.cgi?id=132413
Reviewed by Sam Weinig.
Production builders have been configured to handle this, so let's build
it.
* Configurations/WTF.xcconfig:
2014-05-01 Ryuan Choi <ryuan.choi@samsung.com>
[EFL] There are many warnings with software backend
https://bugs.webkit.org/show_bug.cgi?id=132422
Reviewed by Gyuyoung Kim.
* wtf/efl/EflTypedefs.h: Added Ecore_X_Window typedef
2014-04-30 Simon Fraser <simon.fraser@apple.com>
Remove ENABLE_PLUGIN_PROXY_FOR_VIDEO
https://bugs.webkit.org/show_bug.cgi?id=132396
Reviewed by Eric Carlson.
Remove ENABLE_PLUGIN_PROXY_FOR_VIDEO and related code.
* wtf/FeatureDefines.h:
2014-04-30 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
[GTK][GStreamer] Remove unnecessary GLIB_CHECK_VERSION #ifdefs
https://bugs.webkit.org/show_bug.cgi?id=132390
Reviewed by Philippe Normand.
Since EFL port use GLib 2.38 and GTK+, 2.33.2, I assume it is OK
remove, in GTK+ and GST, the existing glib version guards.
This code was rollback from r149879 because Qt MIPS used it. But since
Qt is gone, it is safe to remove now.
* wtf/gobject/GRefPtr.cpp:
(WTF::refGPtr): Deleted.
(WTF::derefGPtr): Deleted.
2014-04-29 Alex Christensen <achristensen@webkit.org>
[WinCairo] Switch video from GStreamer to Media Foundation.
https://bugs.webkit.org/show_bug.cgi?id=132358
Reviewed by Brent Fulgham.
* WTF.vcxproj/WTF.vcxproj:
Removed dependencies on GStreamer.
* wtf/Platform.h:
Use Media Foundation instead of GStreamer and GLib.
2014-04-29 Filip Pizlo <fpizlo@apple.com>
Unreviewed, fix cloop build.
* wtf/Platform.h:
2014-04-29 Michael Saboff <msaboff@apple.com>
For DARWIN platforms, use system temporary directory for DataLog output
https://bugs.webkit.org/show_bug.cgi?id=132346
Reviewed by Geoffrey Garen.
Added code to call confstr() to access the process's temporary directory to use that
location instead of /tmp/. Put the code behind #ifdef DATA_LOG_TO_DARWIN_TEMP_DIR.
* wtf/DataLog.cpp:
(WTF::initializeLogFileOnce):
2014-04-25 Filip Pizlo <fpizlo@apple.com>
Figure out how many cores are available for realsies.
Rubber stamped by Andreas Kling.
HW_AVAILCPU is more canonical than HW_NCPU. For example if you use hacks to tell Darwin
to make it seem like there are fewer CPUs, HW_AVAILCPU will change but HW_NCPU won't.
HW_NCPU doesn't reflect how much actual paralellism you'll get; it's merely reporting
facts about the machine you're running on. HW_AVAILCPU is almost always what WebKit
wants since it uses this information to decide how many threads to launch for various
things.
* wtf/NumberOfCores.cpp:
(WTF::numberOfProcessorCores):
2014-04-22 Brent Fulgham <bfulgham@apple.com>
[Win] Support Python 2.7 in Cygwin
https://bugs.webkit.org/show_bug.cgi?id=132023
Reviewed by Michael Saboff.
* WTF.vcxproj/WTFGenerated.make: Use proper path to Python.
2014-04-21 Eric Carlson <eric.carlson@apple.com>
[Mac] implement WebKitDataCue
https://bugs.webkit.org/show_bug.cgi?id=131799
Reviewed by Dean Jackson.
* wtf/FeatureDefines.h: Define ENABLE_DATACUE_VALUE.
2014-04-21 Darin Adler <darin@apple.com>
Add HashSet::takeAny
https://bugs.webkit.org/show_bug.cgi?id=131928
Reviewed by Benjamin Poulain.
* wtf/HashSet.h: Added an overload of take that takes an iterator,
and used it to implement both the existing take and new takeAny functions.
2014-04-20 Andreas Kling <akling@apple.com>
Speed up jsStringWithCache() through WeakGCMap inlining.
<https://webkit.org/b/131923>
Add HashMap::fastAdd(), which is the same as add() except we'll tell
the compiler to aggressively inline it.
Reviewed by Darin Adler.
* wtf/HashMap.h:
* wtf/HashTable.h:
2014-04-19 Filip Pizlo <fpizlo@apple.com>
Make it easier to check if an integer sum would overflow
https://bugs.webkit.org/show_bug.cgi?id=131900
Reviewed by Darin Adler.
* wtf/CheckedArithmetic.h:
(WTF::checkedSum):
(WTF::sumOverflows):
2014-04-18 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r167527.
https://bugs.webkit.org/show_bug.cgi?id=131883
Broke 32-bit build (Requested by ap on #webkit).
Reverted changeset:
"[Mac] implement WebKitDataCue"
https://bugs.webkit.org/show_bug.cgi?id=131799
http://trac.webkit.org/changeset/167527
2014-04-18 Eric Carlson <eric.carlson@apple.com>
[Mac] implement WebKitDataCue
https://bugs.webkit.org/show_bug.cgi?id=131799
Reviewed by Dean Jackson.
* wtf/FeatureDefines.h: Define ENABLE_DATACUE_VALUE.
2014-04-18 Martin Robinson <mrobinson@igalia.com>
Remove DynamicAnnotations.h?
https://bugs.webkit.org/show_bug.cgi?id=131754
Reviewed by Simon Fraser.
This file, which helped support tools like Valgrind was unused.
* WTF.vcxproj/WTF.vcxproj: Remove references to the files.
* WTF.vcxproj/WTF.vcxproj.filters: Remove references to the files.
* WTF.xcodeproj/project.pbxproj: Remove references to the files.
* wtf/CMakeLists.txt: Remove references to the files.
* wtf/DynamicAnnotations.cpp: Removed.
* wtf/DynamicAnnotations.h: Removed.
* wtf/ThreadSafeRefCounted.h: Remove references to the files.
* wtf/text/StringStatics.cpp: Remove references to the files.
2014-04-18 Philippe Normand <pnormand@igalia.com>
Remove NETWORK_INFO support
https://bugs.webkit.org/show_bug.cgi?id=131841
Reviewed by Gyuyoung Kim.
* wtf/FeatureDefines.h:
2014-04-17 Filip Pizlo <fpizlo@apple.com>
Don't include CompilationThread.h from StringImpl.h
https://bugs.webkit.org/show_bug.cgi?id=131817
Reviewed by Simon Fraser.
* wtf/CompilationThread.h:
* wtf/StdLibExtras.h:
* wtf/text/StringImpl.h:
2014-04-17 Darin Adler <darin@apple.com>
Use HashMap<unique_ptr> and Vector<unique_ptr> instead of deprecatedDeleteAllValues
https://bugs.webkit.org/show_bug.cgi?id=73757
Reviewed by Brent Fulgham.
* wtf/Vector.h:
(WTF::deprecatedDeleteAllValues): Deleted.
2014-04-17 Darin Adler <darin@apple.com>
Add separate flag for IndexedDatabase in workers since the current implementation is not threadsafe
https://bugs.webkit.org/show_bug.cgi?id=131785
rdar://problem/16003108
Reviewed by Brady Eidson.
* wtf/FeatureDefines.h: Added INDEXED_DATABASE_IN_WORKERS.
2014-04-16 Simon Fraser <simon.fraser@apple.com>
Don't include CryptographicallyRandomNumber.h in StringImpl.h
https://bugs.webkit.org/show_bug.cgi?id=131772
Reviewed by Sam Weinig.
* wtf/text/StringImpl.h:
2014-04-16 Gavin Barraclough <barraclough@apple.com>
Update to pthread QoS SPI
https://bugs.webkit.org/show_bug.cgi?id=131753
Rubber stamped by Benjamin Poulain
* wtf/ThreadingPthreads.cpp:
(WTF::setCurrentThreadQOSUtility):
2014-04-14 Geoffrey Garen <ggaren@apple.com>
WTF should have an optional mbmalloc target so we can benchmark FastMalloc
https://bugs.webkit.org/show_bug.cgi?id=131662
Reviewed by Darin Adler.
* WTF.xcodeproj/project.pbxproj: Added the target.
* wtf/mbmalloc.cpp: Added. Implements the libmbmalloc.dylib API required
by MallocBench.
2014-04-16 Darin Adler <darin@apple.com>
Make Vector::takeLast work with move-only types (and optimize for types where move is faster)
https://bugs.webkit.org/show_bug.cgi?id=131735
Reviewed by Alexey Proskuryakov.
* wtf/Vector.h:
(WTF::Vector::takeLast): Added a missing std::move. All the other take functions have it.
2014-04-14 Mark Lam <mark.lam@apple.com>
monotonicallyIncreasingTime() should only initialize its static timebaseInfo once.
<https://webkit.org/b/131630>
Reviewed by Filip Pizlo.
The current initialization of the static field is not thread safe.
* wtf/CurrentTime.cpp:
(WTF::monotonicallyIncreasingTime):
2014-04-14 Benjamin Poulain <benjamin@webkit.org>
[JSC] Improve the call site of string comparison in some hot path
https://bugs.webkit.org/show_bug.cgi?id=131605
Reviewed by Darin Adler.
* wtf/text/StringImpl.cpp:
(WTF::stringImplContentEqual):
Inline that function to reduce the call overhead for JSC.
This is only inlined twice, it is not catastrophic for our binary.
2014-04-13 Andy Estes <aestes@apple.com>
Relax adoption requirements of RefCounted objects that are NeverDestroyed
https://bugs.webkit.org/show_bug.cgi?id=131593
Reviewed by Dan Bernstein.
RefCounted objects that are created by NeverDestroyed<> won't have a
RefPtr adopting them, so call relaxAdoptionRequirements().
* wtf/NeverDestroyed.h:
(WTF::NeverDestroyed::NeverDestroyed):
(WTF::NeverDestroyed::MaybeRelax::MaybeRelax):
2014-04-10 Brent Fulgham <bfulgham@apple.com>
[Win] Clean up some 64-bit warnings from Visual Studio analyzer
https://bugs.webkit.org/show_bug.cgi?id=131514
Reviewed by Tim Horton.
* WTF.vcxproj/WTF.vcxproj: Use correct platform settings for
64-bit build.
* config.h: Ditto.
* wtf/CurrentTime.cpp:
(WTF::highResUpTime): Resolve warning about deprecated API.
* wtf/StackBounds.cpp:
(WTF::StackBounds::initialize): Silence warning about
an uninitialized variable.
2014-04-09 Geoffrey Garen <ggaren@apple.com>
Rolled back in r166972.
This time, we conditionally exclude linking against bmalloc in Production
builds. Production builds will not be able to link against bmalloc
until the Production build system has been updated to build bmalloc.
WTF should link against bmalloc
https://bugs.webkit.org/show_bug.cgi?id=131403
Reviewed by Mark Rowe.
* Configurations/WTF.xcconfig:
* WTF.xcodeproj/project.pbxproj:
2014-04-09 Geoffrey Garen <ggaren@apple.com>
Put bmalloc headers in the right place
https://bugs.webkit.org/show_bug.cgi?id=131464
Reviewed by Mark Rowe.
* wtf/FastMalloc.cpp: Use "<bmalloc/...>" syntax so we can find our
headers in <header-root>/usr/local/include/bmalloc/.
2014-04-09 Geoffrey Garen <ggaren@apple.com>
Rolled back out r166972.
The production buildbots are still broken because the build-root script
doesn't build bmalloc.
* WTF.xcodeproj/project.pbxproj:
2014-04-09 Geoffrey Garen <ggaren@apple.com>
Rolled back in r166972.
The iOS buildbot's scripts have been updated to build bmalloc, so the
build should now succeed on the bot.
Also renamed "Frameworks" to "Libraries" as suggested in a review comment.
WTF should link against bmalloc
https://bugs.webkit.org/show_bug.cgi?id=131403
Reviewed by Michael Saboff.
This is required to build successfullly with bmalloc enabled.
* WTF.xcodeproj/project.pbxproj:
2014-04-08 Geoffrey Garen <ggaren@apple.com>
Stop linking WTF against bmalloc.
Reviewed by Enrica Casucci.
This seems to have broken an iOS buildbot script. Disable it for now
until we can fix the script.
* WTF.xcodeproj/project.pbxproj:
2014-04-08 Geoffrey Garen <ggaren@apple.com>
WTF should link against bmalloc
https://bugs.webkit.org/show_bug.cgi?id=131403
Reviewed by Michael Saboff.
This is required to build successfullly with bmalloc enabled.
* WTF.xcodeproj/project.pbxproj:
2014-04-08 Geoffrey Garen <ggaren@apple.com>
Added a bmalloc back-end for FastMalloc
https://bugs.webkit.org/show_bug.cgi?id=131387
Reviewed by Andreas Kling.
We'll need to rethink some things if we adopt this back-end. For example,
fastMallocSize() and fastMallocGoodSize() are no longer real things. But,
this is enough to test for now.
* wtf/FastMalloc.cpp:
(WTF::fastMalloc):
(WTF::fastCalloc):
(WTF::fastRealloc):
(WTF::fastFree):
(WTF::fastMallocSize):
(WTF::fastMallocGoodSize):
(WTF::tryFastMalloc):
(WTF::tryFastRealloc):
(WTF::tryFastCalloc):
(WTF::releaseFastMallocFreeMemory):
(WTF::fastMallocStatistics):
2014-04-08 Andres Gomez <agomez@igalia.com>
[GTK] [EFL] Build fails with GCC < 4.8.x
https://bugs.webkit.org/show_bug.cgi?id=130585
Reviewed by Martin Robinson.
The behavior in lower versions of GCC seem to be related to
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#2132.
Provided explicit casts for the failing ambiguous overloads.
* wtf/gtk/MainThreadGtk.cpp:
(WTF::scheduleDispatchFunctionsOnMainThread):
* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::wakeUp): Provided lambda with a RefPtr instead of
ref and de-referring.
2014-04-04 Mark Lam <mark.lam@apple.com>
Date object needs to check for ES5 15.9.1.14 TimeClip limit.
<https://webkit.org/b/131248>
Reviewed by Mark Hahnenberg.
* wtf/DateMath.cpp:
- Moved the definition of maxECMAScriptTime to the .h file so that we
can use it in other files as well.
(WTF::msToYear):
- Removed a stale comment for parseDateFromNullTerminatedCharacters().
* wtf/DateMath.h:
2014-04-04 Mark Hahnenberg <mhahnenberg@apple.com>
Enhanced GC logging
https://bugs.webkit.org/show_bug.cgi?id=131246
Reviewed by Geoff Garen.
Remove OBJECT_MARK_LOGGING
* wtf/FeatureDefines.h:
* wtf/Platform.h:
2014-04-03 Zsolt Borbely <zsborbely.u-szeged@partner.samsung.com>
[EFL] Enable CSS JIT again, it works fine after r166666.
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2014-04-03 Javier Fernandez <jfernandez@igalia.com>
[GTK][Cmake] Enable CSS JIT
https://bugs.webkit.org/show_bug.cgi?id=131022
Reviewed by Martin Robinson.
* wtf/Platform.h: Enable CSS JIT for GTK port.
2014-04-02 Frédéric Wang <fred.wang@free.fr>
Operator stretching: read the Open Type MATH table
https://bugs.webkit.org/show_bug.cgi?id=130324
Reviewed by Chris Fleizach.
* wtf/Platform.h: enable OPENTYPE_MATH on platforms that can read OpenType tables.
2014-04-02 Alex Christensen <achristensen@webkit.org>
[WinCairo] Build fix with GMainLoopSource.
https://bugs.webkit.org/show_bug.cgi?id=131089
Reviewed by Carlos Garcia Campos.
* wtf/gobject/GMainLoopSource.cpp:
Only compile if glib is used, which fixes compile errors with video disabled in WinCairo.
* wtf/gobject/GMainLoopSource.h:
Export the GMainLoopSource functions to WTF.dll to link with where they are called in the GStreamer code.
Also removed spaces to appease style bot.
2014-04-01 Zsolt Borbely <zsborbely.u-szeged@partner.samsung.com>
[EFL] REGRESSION(166569): It made DoYouEvenBench/Full.html, CSS/QuerySelector.html and Dromaeo performance tests crash
https://bugs.webkit.org/show_bug.cgi?id=131039
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h: Disable CSS JIT on EFL until proper fix.
2014-04-01 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r166583.
https://bugs.webkit.org/show_bug.cgi?id=131040
It's causing frequent crashes when running Layout Tests
(Requested by svillar on #webkit).
Reverted changeset:
"[GTK][Cmake] Enable CSS JIT"
https://bugs.webkit.org/show_bug.cgi?id=131022
http://trac.webkit.org/changeset/166583
2014-04-01 Javier Fernandez <jfernandez@igalia.com>
[GTK][Cmake] Enable CSS JIT
https://bugs.webkit.org/show_bug.cgi?id=131022
Reviewed by Martin Robinson.
* wtf/Platform.h: Enable CSS JIT for GTK port.
2014-04-01 Gyuyoung Kim <gyuyoung.kim@samsung.com>
[CMake][EFL] Enable CSS JIT
https://bugs.webkit.org/show_bug.cgi?id=131010
Reviewed by Benjamin Poulain.
* wtf/Platform.h: Enable CSS JIT for EFL port.
2014-03-31 Dean Jackson <dino@apple.com>
Remove WEB_ANIMATIONS
https://bugs.webkit.org/show_bug.cgi?id=130989
Reviewed by Simon Fraser.
Remove this feature flag until we plan to implement.
* wtf/FeatureDefines.h:
2014-03-31 Alex Christensen <achristensen@webkit.org>
Preparation for using Soup on Windows.
https://bugs.webkit.org/show_bug.cgi?id=130615
Reviewed by Carlos Garcia Campos.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
Add all gobject source files in WinCairo build.
* wtf/gobject/GRefPtr.h:
Export refGPtr and derefGPtr overloads in WTF.dll to fix linker errors with WebKit.dll when using soup.
2014-03-31 Zan Dobersek <zdobersek@igalia.com>
Use std::unique_ptr in WTF::CompressedVector, WTF::GenericCompressedData
https://bugs.webkit.org/show_bug.cgi?id=130737
Switch to using std::unique_ptr instead of OwnPtr and PassOwnPtr
for the CompressedVector and GenericCompressedData classes.
* wtf/Compression.cpp:
(WTF::GenericCompressedData::create):
* wtf/Compression.h:
(WTF::CompressedVector::create):
(WTF::CompressibleVector::decompressIfNecessary):
2014-03-28 Alexey Proskuryakov <ap@apple.com>
[Mac] Enable async text input implementation
https://bugs.webkit.org/show_bug.cgi?id=130856
Reviewed by Sam Weinig.
* wtf/Platform.h: Added a USE macro definition.
2014-03-28 peavo@outlook.com <peavo@outlook.com>
Null pointer crash in String::append(UChar).
https://bugs.webkit.org/show_bug.cgi?id=130900
Reviewed by Michael Saboff.
* wtf/text/WTFString.cpp:
(WTF::String::append): Check and initialize m_impl member first, to avoid null pointer crash.
2014-03-27 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r166360.
https://bugs.webkit.org/show_bug.cgi?id=130869
Seems to have broken PLT (Requested by ap on #webkit).
Reverted changeset:
"Connection::dispatchOneMessage() can be re-entered while
handling Cmd-key menu"
https://bugs.webkit.org/show_bug.cgi?id=130767
http://trac.webkit.org/changeset/166360
2014-03-27 Alexey Proskuryakov <ap@apple.com>
Connection::dispatchOneMessage() can be re-entered while handling Cmd-key menu
equivalents, ASSERT(!_data->_keyDownEventBeingResent)
https://bugs.webkit.org/show_bug.cgi?id=130767
<rdar://problem/16307487>
Reviewed by Darin Adler.
Changed RunLoop to wake up and fire timers only in default run loop mode by default,
and added an ability to add more modes (can't use AppKit symbols in WTF).
In addition to this bug, the change also blocks modal alerts from appearing under
menus during menu tracking.
* wtf/RunLoop.h:
* wtf/cf/RunLoopCF.cpp:
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::addModeForWakeUpAndTimers):
(WTF::RunLoop::TimerBase::start):
2014-03-26 Zan Dobersek <zdobersek@igalia.com>
Unreviewed. Removing the remaining Automake cruft.
* GNUmakefile.list.am: Removed.
2014-03-25 Martin Robinson <mrobinson@igalia.com>
[GTK] Remove the autotools build
https://bugs.webkit.org/show_bug.cgi?id=130717
Reviewed by Anders Carlsson.
* GNUmakefile.am: Removed.
* config.h: Removed references to the autotools configure file.
2014-03-25 Gabor Rapcsanyi <rgabor@webkit.org>
[ARM64] GCC generates wrong code with -O2 flag in WTF::weakCompareAndSwap
https://bugs.webkit.org/show_bug.cgi?id=130500
Reviewed by Filip Pizlo.
Set the first operand to the exact register in the inline assembly with GCC.
* wtf/Atomics.h:
(WTF::weakCompareAndSwap):
2014-03-25 Gabor Rapcsanyi <rgabor@webkit.org>
[EFL] Add ARM64 build support
https://bugs.webkit.org/show_bug.cgi?id=130506
Rubber stamped by Gyuyoung Kim.
* wtf/Platform.h: Set WTF_CPU_ARM64 when __aarch64__ is defined.
2014-03-24 Andy Estes <aestes@apple.com>
Fix the iOS build.
* wtf/ThreadingPthreads.cpp:
(WTF::createThreadInternal):
(WTF::setCurrentThreadQOSUtility):
2014-03-24 Gavin Barraclough <barraclough@apple.com>
Add support for thread QoS
https://bugs.webkit.org/show_bug.cgi?id=130688
Speculative EFL build fix.
* wtf/ThreadingPthreads.cpp:
(WTF::setCurrentThreadQOSUtility):
2014-03-24 Gavin Barraclough <barraclough@apple.com>
Add support for thread QoS
https://bugs.webkit.org/show_bug.cgi?id=130688
Reviewed by Andreas Kling.
* wtf/FastMalloc.cpp:
(WTF::TCMalloc_PageHeap::runScavengerThread):
- block freeing is a utility activity.
* wtf/Threading.h:
- declaration.
* wtf/ThreadingPthreads.cpp:
(WTF::createThreadInternal):
- default to interactive.
(WTF::setCurrentThreadQOSUtility):
- implementation.
* wtf/ThreadingWin.cpp:
(WTF::setCurrentThreadQOSUtility):
- no-op implementation.
2014-03-23 Hyowon Kim <hw1008.kim@samsung.com>
Move all EFL typedefs into EflTypedefs.h.
https://bugs.webkit.org/show_bug.cgi?id=130511
Reviewed by Gyuyoung Kim.
* wtf/Platform.h: include EflTypedefs.h.
* wtf/efl/EflTypedefs.h: Added.
* wtf/efl/RefPtrEfl.h: Remove EFL typedefs.
2014-03-22 Darin Adler <darin@apple.com>
Remove String::deprecatedCharacters
https://bugs.webkit.org/show_bug.cgi?id=126854
Reviewed by Sam Weinig.
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::reifyString): Removed code to update 16-bit shadow.
* wtf/text/StringBuilder.h: Removed deprecatedCharacters.
(WTF::StringBuilder::StringBuilder): Removed m_valid16BitShadowLength.
(WTF::StringBuilder::clear): Removed code to clear m_valid16BitShadowLength.
(WTF::StringBuilder::swap): Removed code to swap m_valid16BitShadowLength.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl): Removed code to free m_copyData16.
(WTF::StringImpl::upper): Use StringView::upconvertedCharacters for slow case.
(WTF::StringImpl::lower): Ditto.
(WTF::StringImpl::find): Use characters8/16 rather than deprecatedCharacters.
Added an 8-bit code path to one of the overloads. Might want to revisit later
to decide whether to use templates instead of copy/paste, or even use StringView
to cut down on duplicate code paths.
(WTF::StringImpl::findIgnoringCase): Ditto.
(WTF::StringImpl::sizeInBytes): Remove code to handle has16BitShadow case.
(WTF::equalIgnoringNullity): Added. To be called by the Vector template in the header.
* wtf/text/StringImpl.h: Removed deprecatedCharacters, has16BitShadow,
upconvertCharacters, getData16SlowCase, s_hashFlagHas16BitShadow, and m_copyData16.
(WTF::equalIgnoringNullity): Changed the template function into an inline that calls
a non-inline helper function. The non-inline function handles both 8-bit and 16-bit
strings.
* wtf/text/StringView.h:
(WTF::StringView::StringView): Added an overload so we can make one of these directly
from a StringImpl without first wrapping it in a string. Added an adapter so we can
use StringView as part of string concatenation. Added an append function so we can
append to a Vector<UChar>.
* wtf/text/WTFString.cpp:
(WTF::String::append): Use StringView::getCharactersWithUpconvert. Also changed
single-character append so it won't always turn an 8-bit string into a 16-bit one.
(WTF::String::insert): Removed one insert overload and changed the other to use
StringView::getCharactersWithUpconvert.
(WTF::String::truncate): Changed to use StringImpl::substring.
(WTF::String::percentage): Added characters8/16 paths instead of using
deprecatedCharacters.
* wtf/text/WTFString.h: Removed deprecatedCharacters, getCharactersWithUpconvert,
insert(UChar*, unsigned, unsigned), and the append overload for Vector<UChar>.
2014-03-20 Darin Adler <darin@apple.com>
Fix a header guard mistake (harmless but clearly wrong)
https://bugs.webkit.org/show_bug.cgi?id=130559
Reviewed by Andreas Kling.
* wtf/text/StringConcatenate.h: Correct the macro name in the header guard.
2014-03-20 Hyowon Kim <hw1008.kim@samsung.com>
Move to using std::unique_ptr for EFL objects.
https://bugs.webkit.org/show_bug.cgi?id=129853
Reviewed by Gyuyoung Kim.
EflUniquePtr is a template alias of std::unique_ptr
with a custom deleter for each Efl Objects, which is motivated by GUniquePtr.
This patch replaces uses of OwnPtr and PassOwnPtr for Efl objects with EflUniquePtr.
* wtf/OwnPtrCommon.h:
* wtf/PlatformEfl.cmake:
* wtf/RunLoop.h:
* wtf/efl/MainThreadEfl.cpp:
(WTF::pipeObject):
(WTF::initializeMainThreadPlatform):
* wtf/efl/OwnPtrEfl.cpp: Removed.
* wtf/efl/RunLoopEfl.cpp:
(WTF::RunLoop::RunLoop):
* wtf/efl/UniquePtrEfl.h: Added.
(WTF::EflPtrDeleter::operator()):
2014-03-20 Gavin Barraclough <barraclough@apple.com>
Remove IdentifierTable typedef, isIdentifier()
https://bugs.webkit.org/show_bug.cgi?id=130533
Rubber stamped by Geoff Garen.
Code should use AtomicStringTable, isAtomic() directly.
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::setCurrentAtomicStringTable):
(WTF::WTFThreadData::resetCurrentAtomicStringTable):
- removed IdentifierTypedef.
* wtf/text/StringImpl.h:
(WTF::StringImpl::flagIsAtomic):
- renamed flagIsIdentfier -> flagIsAtomic.
2014-03-20 Gavin Barraclough <barraclough@apple.com>
Merge AtomicString, Identifier
https://bugs.webkit.org/show_bug.cgi?id=128624
Reviewed by Geoff Garen.
WTF::StringImpl currently supports two uniquing mechanism - AtomicString and
Identifer - that is one too many.
Remove Identifier in favour of AtomicString. Identifier had two interesting
mechanisms that we preserve.
(1) JSC API VMs each get their own string table, switch the string table on
API entry/exit.
(2) JSC caches a pointer to the string table on the VM to avoid a thread
specific access. Adds a new AtomicString::add method to support this.
* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::WTFThreadData):
- remove allocation of IdentifierTable.
(WTF::WTFThreadData::~WTFThreadData):
- remove deletion of IdentifierTable.
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::atomicStringTable):
- table is now switched by JSC API, return the current table.
(WTF::WTFThreadData::currentIdentifierTable):
- now returns the current AtomicStringTable.
(WTF::WTFThreadData::setCurrentIdentifierTable):
- now sets the current AtomicStringTable.
(WTF::WTFThreadData::resetCurrentIdentifierTable):
- now resets the AtomicStringTable.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::addSlowCase):
- add without thread-specific access to access string table.
* wtf/text/AtomicString.h:
(WTF::AtomicString::addWithStringTableProvider):
- add without thread-specific access (used by JSC, string table provided by VM or ExecState).
* wtf/text/AtomicStringTable.cpp:
(WTF::AtomicStringTable::create):
- renamed m_atomicStringTable -> m_defaultAtomicStringTable.
(WTF::AtomicStringTable::~AtomicStringTable):
(WTF::AtomicStringTable::destroy):
- clearing of table moved from AtomicStringTable::destroy to destructor.
* wtf/text/AtomicStringTable.h:
- added destructor.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
- Identifers no longer exist; no need to remove them from IdentifierTable.
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
- removed s_hashFlagIsIdentifier.
(WTF::StringImpl::flagIsIdentifier):
- s_hashFlagIsIdentifier -> s_hashFlagIsAtomic.
(WTF::StringImpl::isIdentifier):
- now synonymous to isAtomic().
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::hashAndFlagsForEmptyUnique):
- removed s_hashFlagIsIdentifier.
2014-03-20 Zan Dobersek <zdobersek@igalia.com>
Unreviewed Clang build fix for the GTK port after r165952.
* wtf/gobject/GMainLoopSource.h: Include the <functional> header for the std::function<> objects.
2014-03-18 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Add GMainLoopSource class to wrap idle and timeout sources
https://bugs.webkit.org/show_bug.cgi?id=130027
Reviewed by Martin Robinson.
GLib main loop sources like idle and timeouts are sometimes
unconvenient to use and it's very common to forget canceling the
source when the object is destroyed or reset the source ID in the
callback when called. GMainLoopSource is a wrapper class to make it
easier to handle sources and also to avoid those typical mistakes.
It forces to create sources with a name and the user doesn't have
to deal with the source ID anymore. The source is cancelled when
the object is deleted or when a new source is scheduled. It uses
std::function for callbacks so that we no longer need to use the
"proxy" static callbacks either. We can use std::bind to use a
function pointer or a member or even lambda functions. It also handles
repeating sources automatically depending on whether the given
function returns a bool or not.
* GNUmakefile.list.am:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/RunLoop.h:
* wtf/gobject/GMainLoopSource.cpp: Added.
(WTF::GMainLoopSource::createAndDeleteOnDestroy):
(WTF::GMainLoopSource::GMainLoopSource):
(WTF::GMainLoopSource::~GMainLoopSource):
(WTF::GMainLoopSource::cancel):
(WTF::GMainLoopSource::reset):
(WTF::GMainLoopSource::scheduleIdleSource):
(WTF::GMainLoopSource::schedule):
(WTF::GMainLoopSource::scheduleTimeoutSource):
(WTF::GMainLoopSource::scheduleAfterDelay):
(WTF::GMainLoopSource::voidCallback):
(WTF::GMainLoopSource::boolCallback):
(WTF::GMainLoopSource::socketCallback):
(WTF::GMainLoopSource::destroy):
(WTF::GMainLoopSource::voidSourceCallback):
(WTF::GMainLoopSource::boolSourceCallback):
(WTF::GMainLoopSource::socketSourceCallback):
* wtf/gobject/GMainLoopSource.h: Added.
(WTF::GMainLoopSource::isScheduled):
* wtf/gtk/MainThreadGtk.cpp:
(WTF::scheduleDispatchFunctionsOnMainThread):
* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
2014-03-19 Gavin Barraclough <barraclough@apple.com>
https://bugs.webkit.org/show_bug.cgi?id=130494
EmptyUnique strings are Identifiers/Atomic
Reviewed by Geoff Garen.
EmptyUnique strings should set the Identifier/Atomic flag.
* wtf/text/AtomicString.h:
(WTF::AtomicString::add):
- Previously we assumed the only StringImpl that was validly allowed to claim to be
Atomic but not be in a table was the canonical empty string. Now that EmptyUniques
are also marked Atomic, all empty strings may pass this condition.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
- EmptyUnique strings are not in the Atomic/Identfiier tabels, so don't need removing.
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
- Change EmptyUnique constructor to call hashAndFlagsForEmptyUnique.
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::hashAndFlagsForEmptyUnique):
- Allocate a sequential hash code (this should be just as good for distribution & better
for debugging than the random value) and set flags, now including Atomic & Identifier.
2014-03-19 Gavin Barraclough <barraclough@apple.com>
Small cleanup of empty string
https://bugs.webkit.org/show_bug.cgi?id=130438
Reviewed by Anders Carlson.
The empty string is weird becuase it is used as the impl for an AtomicString, but isAtomic()
returns false.
Also, we set a valid pointer for the characters pointer due to an old PCRE bug; remove this.
Also, we currently only create one 'static' string, the empty string. Adding more might break
assumtions, inhibit the constructor from being used to create other static strings for now.
* wtf/text/AtomicString.h:
(WTF::AtomicString::add):
- update assert.
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
- Merge ConstructStaticString constructors, only allow the empty static string to be constructed.
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::empty):
- ConstructStaticString -> ConstructEmptyString, remove arguments, DEPRECATED_DEFINE_STATIC_LOCAL -> NeverDestroyed.
2014-03-18 Darin Adler <darin@apple.com>
Reduce use of deprecatedCharacters in WebCore
https://bugs.webkit.org/show_bug.cgi?id=130318
Reviewed by Andreas Kling.
* wtf/text/WTFString.h: Export another overload of charactersToFloat since it's used
in WebCore now.
* wtf/text/cf/StringViewCF.cpp: Change so this can build on Windows.
* WTF.vcxproj/WTF.vcxproj: Added StringViewCF.cpp.
* WTF.vcxproj/WTF.vcxproj.filters: Added StringViewCF.cpp.
2014-03-18 Filip Pizlo <fpizlo@apple.com>
More FTL enabling.
Rubber stamped by Dan Bernstein and Mark Hahnenberg.
* wtf/Platform.h:
2014-03-17 Darin Adler <darin@apple.com>
Remove most uses of deprecatedCharacter in WTF
https://bugs.webkit.org/show_bug.cgi?id=130317
Reviewed by Andreas Kling.
Re-landing after fixing the "80 instead of 0x80" typo in equalLatin1WithUTF8.
* wtf/text/AtomicString.cpp:
(WTF::HashAndUTF8CharactersTranslator::equal): Add an 8-bit code path to the
non-ASCII path.
(WTF::SubstringTranslator8::hash): Added.
(WTF::SubstringTranslator8::equal): Added.
(WTF::SubstringTranslator16::hash): Renamed class.
(WTF::SubstringTranslator16::equal): Ditto.
(WTF::AtomicString::add): Added an 8-bit code path to the substring case.
* wtf/text/Base64.cpp:
(WTF::base64Decode): Added an 8 bit code path.
(WTF::base64URLDecode): Ditto.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::find): Fixed a case that was incorrectly using characters16
without first using is8Bit. Need to return later to remove use of deprecatedCharacters.
* wtf/unicode/UTF8.cpp:
(WTF::Unicode::equalUTF16WithUTF8): Added a case for when the UTF-16 characters
are ASCII. Also removed the aEnd argument, since the caller only calls this when the
lengths are equal.
(WTF::Unicode::equalLatin1WithUTF8): Added.
* wtf/unicode/UTF8.h: Updated as described above.
2014-03-17 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r165721.
https://bugs.webkit.org/show_bug.cgi?id=130367
It makes the debug bots flaky (Requested by benjaminp on
#webkit).
Reverted changeset:
"Remove most uses of deprecatedCharacter in WTF"
https://bugs.webkit.org/show_bug.cgi?id=130317
http://trac.webkit.org/changeset/165721
2014-03-17 Zan Dobersek <zdobersek@igalia.com>
Use RunLoop objects through references instead of pointers
https://bugs.webkit.org/show_bug.cgi?id=130313
Reviewed by Andreas Kling.
Make RunLoop::current() and RunLoop::main() return a RunLoop reference instead
of a pointer. RunLoop::Holder now uses a Ref<RunLoop> member. Timer and TimerBase
constructors take in a RunLoop reference, with TimerBase now storing a RunLoop
reference member instead of a pointer. Platform-specific bits of the RunLoop
class are updated accordingly.
* wtf/RunLoop.cpp:
(WTF::RunLoop::Holder::Holder):
(WTF::RunLoop::Holder::runLoop):
(WTF::RunLoop::initializeMainRunLoop):
(WTF::RunLoop::current):
(WTF::RunLoop::main):
(WTF::RunLoop::isMain):
* wtf/RunLoop.h:
(WTF::RunLoop::Timer::Timer):
* wtf/cf/RunLoopCF.cpp:
(WTF::RunLoop::run):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::start):
* wtf/efl/RunLoopEfl.cpp:
(WTF::RunLoop::TimerBase::TimerBase):
* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::run):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::start):
* wtf/win/RunLoopWin.cpp:
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
2014-03-17 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
One more fix after r165725.
Reviewed by Csaba Osztrogonác.
* wtf/WTFThreadData.h:
2014-03-17 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
Buildfix after r165725 for non Mac platforms.
Reviewed by Csaba Osztrogonác.
* wtf/WTFThreadData.h:
2014-03-17 Andreas Kling <akling@apple.com>
[Mac] WTFThreadData should use _pthread_getspecific_direct().
<https://webkit.org/b/130320>
Hack WTFThreadData to use a direct key for TLS access when available.
This mechanism uses a dedicated segment register and is the same way
we implement the fast path in FastMalloc.
Reviewed by Darin Adler.
* wtf/FastMalloc.cpp:
* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::createAndRegisterForGetspecificDirect):
* wtf/WTFThreadData.h:
(WTF::wtfThreadData):
2014-03-16 Darin Adler <darin@apple.com>
Remove most uses of deprecatedCharacter in WTF
https://bugs.webkit.org/show_bug.cgi?id=130317
Reviewed by Andreas Kling.
* wtf/text/AtomicString.cpp:
(WTF::HashAndUTF8CharactersTranslator::equal): Add an 8-bit code path to the
non-ASCII path.
(WTF::SubstringTranslator8::hash): Added.
(WTF::SubstringTranslator8::equal): Added.
(WTF::SubstringTranslator16::hash): Renamed class.
(WTF::SubstringTranslator16::equal): Ditto.
(WTF::AtomicString::add): Added an 8-bit code path to the substring case.
* wtf/text/Base64.cpp:
(WTF::base64Decode): Added an 8 bit code path.
(WTF::base64URLDecode): Ditto.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::find): Fixed a case that was incorrectly using characters16
without first using is8Bit. Need to return later to remove use of deprecatedCharacters.
* wtf/unicode/UTF8.cpp:
(WTF::Unicode::equalUTF16WithUTF8): Added a case for when the UTF-16 characters
are ASCII. Also removed the aEnd argument, since the caller only calls this when the
lengths are equal.
(WTF::Unicode::equalLatin1WithUTF8): Added.
* wtf/unicode/UTF8.h: Updated as described above.
2014-03-16 David Kilzer <ddkilzer@apple.com>
Follow-up: Fix undefined behavior in WTF::equal() in StringImpl.h for i386/x86_64
<http://webkit.org/b/130283>
<rdar://problem/16281477>
Reviewed by Darin Adler.
* wtf/text/StringImpl.h:
(WTF::loadUnaligned): Restore behavior prior to r165681 for
compilers other than clang.
2014-03-16 Darin Adler <darin@apple.com>
Remove all uses of deprecatedCharacters from JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=130304
Reviewed by Anders Carlsson.
* wtf/dtoa.h:
(WTF::parseDouble): Added an overload that takes a StringView.
2014-03-15 Darin Adler <darin@apple.com>
Remove all uses of deprecatedCharacters from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=130197
Reviewed by Andreas Kling.
* wtf/text/StringView.h: Added new getCharactersWithUpconvert and upconvertedCharacters
functions. These are useful for callers that need UTF-16.
2014-03-15 Darin Adler <darin@apple.com>
Try to fix EFL build.
* wtf/ThreadingPthreads.cpp: (WTF::changeThreadPriority): Code in this function
was setting the priority of the current thread instead of the passed-in thread.
That was triggering an unused variable warning in the compiler used to build for
EFL. Fixed by using the thread handle instead of pthread_self.
2014-03-15 Michael Saboff <msaboff@apple.com>
It should be possible to adjust DFG and FTL compiler thread priorities
https://bugs.webkit.org/show_bug.cgi?id=130288
Reviewed by Filip Pizlo.
Added ability to change thread priorities relative to its current priority.
Created options to adjust the priority of the DFG and FTL compilation work thread
pools. For two core systems, there might be three runnable threads, the main thread,
the DFG compilation thread and the FTL compilation thread. With the same priority,
the scheduler is free to schedule whatever thread it wants. By lowering the
compilation threads, the main thread can run. Further tests may suggest better values
for the new options, priorityDeltaOfDFGCompilerThreads and priorityDeltaOfFTLCompilerThreads.
For a two-core device, this change has a net positive improvement of 1-3% across
SunSpider, Octane, Kraken and AsmBench.
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::changeThreadPriority):
* wtf/ThreadingWin.cpp:
(WTF::changeThreadPriority):
2014-03-15 David Kilzer <ddkilzer@apple.com>
Fix undefined behavior in WTF::equal() in StringImpl.h for i386/x86_64
<http://webkit.org/b/130283>
<rdar://problem/16281477>
Reviewed by Geoff Garen.
* wtf/text/StringImpl.h:
(WTF::loadUnaligned): Add template method.
(WTF::equal): Switch to using loadUnaligned<>().
2014-03-14 Mark Rowe <mrowe@apple.com>
Fix the production build.
Don't rely on USE_INTERNAL_SDK being set for the Production configuration since UseInternalSDK.xcconfig won't
be at the expected relative path when working from installed source.
* Configurations/Base.xcconfig:
2014-03-14 Maciej Stachowiak <mjs@apple.com>
Replace "Apple Computer, Inc." with "Apple Inc." in copyright headers
https://bugs.webkit.org/show_bug.cgi?id=130276
<rdar://problem/16266927>
Reviewed by Simon Fraser.
* wtf/ASCIICType.h:
* wtf/AVLTree.h:
* wtf/Assertions.cpp:
* wtf/Assertions.h:
* wtf/Atomics.cpp:
* wtf/Atomics.h:
* wtf/AutodrainedPool.h:
* wtf/AutodrainedPoolMac.mm:
* wtf/BoundsCheckedPointer.h:
* wtf/CryptographicUtilities.cpp:
* wtf/CryptographicallyRandomNumber.h:
* wtf/CurrentTime.h:
* wtf/Deque.h:
* wtf/DisallowCType.h:
* wtf/ExportMacros.h:
* wtf/FeatureDefines.h:
* wtf/GetPtr.h:
* wtf/HashIterators.h:
* wtf/Locker.h:
* wtf/MainThread.cpp:
* wtf/MainThread.h:
* wtf/MathExtras.h:
* wtf/MediaTime.cpp:
* wtf/MediaTime.h:
* wtf/MessageQueue.h:
* wtf/MetaAllocator.cpp:
* wtf/MetaAllocator.h:
* wtf/MetaAllocatorHandle.h:
* wtf/OSRandomSource.cpp:
* wtf/OSRandomSource.h:
* wtf/Platform.h:
* wtf/RandomNumber.cpp:
* wtf/RandomNumber.h:
* wtf/RandomNumberSeed.h:
* wtf/RedBlackTree.h:
* wtf/RunLoopTimer.h:
* wtf/RunLoopTimerCF.cpp:
* wtf/SchedulePair.h:
* wtf/SchedulePairCF.cpp:
* wtf/SchedulePairMac.mm:
* wtf/SegmentedVector.h:
* wtf/StackBounds.h:
* wtf/StaticConstructors.h:
* wtf/StringExtras.h:
* wtf/ThreadFunctionInvocation.h:
* wtf/ThreadSafeRefCounted.h:
* wtf/ThreadSpecific.h:
* wtf/Threading.h:
* wtf/ThreadingPrimitives.h:
* wtf/ThreadingPthreads.cpp:
* wtf/ThreadingWin.cpp:
* wtf/WTFThreadData.cpp:
* wtf/WTFThreadData.h:
* wtf/efl/OwnPtrEfl.cpp:
* wtf/mac/MainThreadMac.mm:
* wtf/text/AtomicStringHash.h:
* wtf/text/AtomicStringImpl.h:
* wtf/text/Base64.h:
* wtf/text/CString.cpp:
* wtf/text/CString.h:
* wtf/text/LChar.h:
* wtf/text/cf/StringCF.cpp:
* wtf/text/mac/StringMac.mm:
* wtf/unicode/CharacterNames.h:
* wtf/unicode/Collator.h:
* wtf/unicode/CollatorDefault.cpp:
* wtf/unicode/UTF8.cpp:
* wtf/unicode/UTF8.h:
* wtf/unicode/icu/CollatorICU.cpp:
* wtf/win/MainThreadWin.cpp:
2014-03-14 Byungseon Shin <sun.shin@lge.com>
Incorrect Date returned between March 1, 2034 and February 28, 2100.
https://bugs.webkit.org/show_bug.cgi?id=130123
Reviewed by Mark Lam.
Fix logic by using predefined Date APIs.
* wtf/DateMath.cpp:
(WTF::ymdhmsToSeconds):
2014-03-12 Sergio Villar Senin <svillar@igalia.com>
Rename DEFINE_STATIC_LOCAL to DEPRECATED_DEFINE_STATIC_LOCAL
https://bugs.webkit.org/show_bug.cgi?id=129612
Reviewed by Darin Adler.
For new code use static NeverDestroyed<T> instead.
* wtf/RunLoop.cpp:
(WTF::RunLoop::current):
* wtf/StdLibExtras.h:
* wtf/ThreadingPthreads.cpp:
(WTF::threadMapMutex):
(WTF::threadMap):
* wtf/efl/MainThreadEfl.cpp:
(WTF::pipeObject):
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::empty):
2014-03-13 Radu Stavila <stavila@adobe.com>
Webkit not building on XCode 5.1 due to garbage collection no longer being supported
https://bugs.webkit.org/show_bug.cgi?id=130087
Reviewed by Mark Rowe.
Disable garbage collection on macosx when not using internal SDK.
* Configurations/Base.xcconfig:
2014-03-12 Ryuan Choi <ryuan.choi@samsung.com>
[EFL] Enable Parallel GC
https://bugs.webkit.org/show_bug.cgi?id=130177
Reviewed by Geoffrey Garen.
* wtf/Platform.h: Turn on ENABLE_PARALLEL_GC for the EFL build.
2014-03-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Disable REMOTE_INSPECTOR in earlier OS X releases
https://bugs.webkit.org/show_bug.cgi?id=130118
Reviewed by Timothy Hatcher.
* wtf/FeatureDefines.h:
2014-03-11 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed gardening.
* wtf/MathExtras.h: VS2013 provides an lrint implementation. No need to implement
our own.
2014-03-10 Jer Noble <jer.noble@apple.com>
Improve WeakPtr operators.
https://bugs.webkit.org/show_bug.cgi?id=130053
Reviewed by Andreas Kling.
Replace the "operator!()" with an explicit bool operator. Add an "operator->()".
* wtf/WeakPtr.h:
(WTF::WeakPtr::operator bool):
(WTF::WeakPtr::operator->):
2014-03-10 Brent Fulgham <bfulgham@apple.com>
[Win] Pass environment to Pre-Build, Pre-Link, and Post-Build Stages.
https://bugs.webkit.org/show_bug.cgi?id=130023.
Reviewed by Dean Jackson.
* WTF.vcxproj/WTF.proj: Avoid putting trailing slashes in system paths to avoid
escaping during later string substitution.
* WTF.vcxproj/build-generated-files.sh: Accept environment values passed by VS.
2014-03-10 Mark Hahnenberg <mhahnenberg@apple.com>
Turn on GenGC on other 64-bit platforms
https://bugs.webkit.org/show_bug.cgi?id=129258
Reviewed by Oliver Hunt.
* wtf/Platform.h:
2014-03-07 peavo@outlook.com <peavo@outlook.com>
[Win64] Compile error after r165128.
https://bugs.webkit.org/show_bug.cgi?id=129807
Reviewed by Mark Lam.
* wtf/Platform.h: MSVC does not support computed goto.
Also enabled COMPUTED_GOTO_OPCODES when !ENABLE(LLINT_C_LOOP). This is needed because the ASM LLINT operates like COMPUTED_GOTO_OPCODES,
and relies on the related data structures being defined to support this. On Win32, the platform does not HAVE_COMPUTED_GOTO support,
but does want ENABLE_COMPUTED_GOTO_OPCODES because it uses the ASM LLINT.
2014-03-06 Michael Saboff <msaboff@apple.com>
JSC should disable the JIT when building for ARMv7k
https://bugs.webkit.org/show_bug.cgi?id=129829
Reviewed by Oliver Hunt.
Added WTF_CPU_APPLE_ARMV7K CPU define. Disabled the JITs when
that feature define is set.
* wtf/Platform.h:
2014-03-06 Filip Pizlo <fpizlo@apple.com>
Use the LLVM disassembler on ARM64 if we are enabling the FTL
https://bugs.webkit.org/show_bug.cgi?id=129785
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
2014-03-05 peavo@outlook.com <peavo@outlook.com>
[Win32][LLINT] Crash when running JSC stress tests.
https://bugs.webkit.org/show_bug.cgi?id=129429
Reviewed by Geoffrey Garen.
* wtf/Platform.h: Enable LLINT on Win32.
2014-03-04 Zan Dobersek <zdobersek@igalia.com>
[GTK] Build the Udis86 disassembler
https://bugs.webkit.org/show_bug.cgi?id=129679
Reviewed by Michael Saboff.
* wtf/Platform.h: Also enable the Udis86 disassembler for the GTK port on Linux.
2014-03-02 Jaehun Lim <ljaehun.lim@samsung.com>
[EFL] Remove m_initEfl from RunLoop.
https://bugs.webkit.org/show_bug.cgi?id=129568
Reviewed by Gyuyoung Kim.
We don't use m_initEfl except RunLoop constructor.
* wtf/RunLoop.h:
* wtf/efl/RunLoopEfl.cpp:
(WTF::RunLoop::RunLoop):
2014-03-02 Darin Adler <darin@apple.com>
Cut down use of OwnPtr within WTF itself
https://bugs.webkit.org/show_bug.cgi?id=129567
Reviewed by Sam Weinig.
* wtf/RefCounted.h: Removed OwnPtr includes.
* wtf/StreamBuffer.h: Removed OwnPtr includes and switched to use
std::make_unique and std::unique_ptr instead.
* wtf/Threading.cpp: Removed OwnPtr includes.
* wtf/ThreadingPthreads.cpp: Ditto.
* wtf/Vector.h: Ditto.
2014-02-26 Gavin Barraclough <barraclough@apple.com>
FastMalloc should use vm_page_shift intead of PAGE_SHIFT.
https://bugs.webkit.org/show_bug.cgi?id=129370
Reviewed by Mark Rowe.
"Doesn't this lead to the page map using fewer bits than it was before?
It seems like this will cause some page addresses to no longer be
representable in the map when using 4K pages. Am I missing something?"
* wtf/FastMalloc.cpp:
- bdash raises a valid point. This should make the TCMalloc_PageMap
larger than absolutely necessary, rather than potentially too small.
2014-02-25 Gavin Barraclough <barraclough@apple.com>
FastMalloc should use vm_page_shift intead of PAGE_SHIFT.
https://bugs.webkit.org/show_bug.cgi?id=129370
Reviewed by Geoff Garen.
Previously we used PAGE_SHIFT to initialize kPageShift.
Since this was a constant, it could be used to calculate other
contants used in the code. Some of these values are used in the
definition of certain data structures (specifiying the length of
some array members).
Make kPageShift & dependent properties variables setup during
initialization. Add upper bound values (K_PAGE_SHIFT_MAX,
K_NUM_CLASSES_MAX) for use in cases where we need a constant.
* wtf/FastMalloc.cpp:
(WTF::InitSizeClasses):
- initialize kPageShift, kNumClasses, kPageSize, kMaxValidPages.
(WTF::pages):
- added ASSERT.
(WTF::AllocationSize):
- added ASSERT.
(WTF::TCMalloc_PageHeap::FreeBytes):
- added ASSERT.
(WTF::TCMalloc_PageHeap::init):
- COMPILE_ASSERT -> ASSERT
(WTF::TCMalloc_PageHeap::scavenge):
- added ASSERT.
(WTF::TCMalloc_PageHeap::Carve):
- added ASSERT.
(WTF::mergeDecommittedStates):
- added ASSERT.
(WTF::TCMalloc_PageHeap::IncrementalScavenge):
- added ASSERT.
(WTF::TCMalloc_PageHeap::ReturnedBytes):
- added ASSERT.
(WTF::PagesToMB):
- added ASSERT.
(WTF::TCMalloc_PageHeap::GrowHeap):
- added ASSERT.
(WTF::TCMalloc_PageHeap::ReleaseFreeList):
- kNumClasses -> K_NUM_CLASSES_MAX
(WTF::TCMalloc_ThreadCache::enumerateFreeObjects):
- added ASSERT.
(WTF::TCMalloc_Central_FreeList::Init):
- added ASSERT.
(WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
- added ASSERT.
(WTF::TCMalloc_Central_FreeList::EvictRandomSizeClass):
- added ASSERT.
(WTF::TCMalloc_Central_FreeList::MakeCacheSpace):
- added ASSERT.
(WTF::TCMalloc_Central_FreeList::InsertRange):
- added ASSERT.
(WTF::TCMalloc_Central_FreeList::Populate):
- added ASSERT.
(WTF::TCMalloc_ThreadCache::Init):
- added ASSERT.
(WTF::TCMalloc_ThreadCache::Cleanup):
- added ASSERT.
(WTF::TCMalloc_ThreadCache::Scavenge):
- added ASSERT.
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
- added ASSERT.
2014-02-24 Alex Christensen <achristensen@webkit.org>
Disabled WebGL on WinCairo.
Unreviewed.
* wtf/FeatureDefines.h:
Removed ENABLE_WEBGL definition for WinCairo port.
WebGL has not worked on WinCairo since r163079
and it was not compiling with a recent ANGLE update.
2014-02-24 Mark Hahnenberg <mhahnenberg@apple.com>
Turn GenGC on for 32-bit systems
https://bugs.webkit.org/show_bug.cgi?id=128824
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
2014-02-21 Benjamin Poulain <benjamin@webkit.org>
jsDocumentPrototypeFunctionGetElementById should not create an AtomicString for the function argument
https://bugs.webkit.org/show_bug.cgi?id=128893
Reviewed by Darin Adler.
AtomicString::find() is a special case optimized for the JavaScript bindings. The method can only
be called under specific conditions.
The method is renamed to findStringWithHash().
The new AtomicString::find is generic and does not require any propery on the input.
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::findStringWithHash):
(WTF::AtomicString::findSlowCase):
* wtf/text/AtomicString.h:
(WTF::AtomicString::find):
2014-02-20 Csaba Osztrogonác <ossy@webkit.org>
Add StackStats sources to cmake and autotools build files
https://bugs.webkit.org/show_bug.cgi?id=129103
Reviewed by Anders Carlsson.
* GNUmakefile.list.am:
* wtf/CMakeLists.txt:
2014-02-20 Csaba Osztrogonác <ossy@webkit.org>
Get rid of redundant Platform.h includes
https://bugs.webkit.org/show_bug.cgi?id=128817
Reviewed by Brent Fulgham.
* wtf/Assertions.h:
* wtf/Atomics.h:
* wtf/ByteOrder.h:
* wtf/DataLog.h:
* wtf/DisallowCType.h:
* wtf/DynamicAnnotations.h:
* wtf/ExportMacros.h:
* wtf/FastMalloc.h:
* wtf/FlipBytes.h:
* wtf/InlineASM.h:
* wtf/PrintStream.h:
* wtf/ProcessID.h:
* wtf/Threading.h:
* wtf/ThreadingPrimitives.h:
2014-02-19 Jon Honeycutt <jhoneycutt@apple.com>
Crash in WTF::StringBuilder::append()
https://bugs.webkit.org/show_bug.cgi?id=125817
<rdar://problem/15671883>
Reviewed by Oliver Hunt.
* wtf/text/StringBuilder.cpp:
(WTF::expandedCapacity):
Ensure that we return a new capacity of at least 'requiredLength' in
the case where requiredLength is large. Also, use unsigned rather than
size_t for the parameters and the return value, as callers pass
unsigned arguments and treat the result as an unsigned int.
2014-02-19 Anders Carlsson <andersca@apple.com>
Add WTF_MAKE_FAST_ALLOCATED to more classes
https://bugs.webkit.org/show_bug.cgi?id=129064
Reviewed by Andreas Kling.
* wtf/Bitmap.h:
2014-02-19 Zan Dobersek <zdobersek@igalia.com>
Make PrintStream::print() a variadic template
https://bugs.webkit.org/show_bug.cgi?id=126388
Reviewed by Brent Fulgham.
PrintStream::print() can be converted into a variadic template, printing the value
of the first parameter and recursively calling itself until the single parameter version
is used for printing the last value.
* wtf/DataLog.h:
(WTF::dataLog): Convert the function to a variadic template as well.
* wtf/PrintStream.h:
(WTF::PrintStream::print):
* wtf/StringPrintStream.h:
(WTF::toCString): Ditto.
(WTF::toString): Ditto.
2014-02-19 Zan Dobersek <zdobersek@igalia.com>
Use std::swap() in HashTable::swap()
https://bugs.webkit.org/show_bug.cgi?id=128995
Reviewed by Brent Fulgham.
Use std::swap() to swap the member variable values of two HashTable objects in HashTable::swap().
* wtf/HashTable.h:
(WTF::KeyTraits>::swap):
2014-02-19 Zan Dobersek <zdobersek@igalia.com>
SegmentedVector::append() should take in rvalue reference, forward it to Vector::uncheckedAppend()
https://bugs.webkit.org/show_bug.cgi?id=128996
Reviewed by Brent Fulgham.
* wtf/SegmentedVector.h:
(WTF::SegmentedVector::append): Take in an rvalue reference of the object that's to be appended and
then forward it to Vector::uncheckedAppend(). This avoids unnecessary copies in the current situation
where a const lvalue is accepted and passed on.
2014-02-19 Dan Bernstein <mitz@apple.com>
Simplify PLATFORM(MAC) && !PLATFORM(IOS) and similar expressions
https://bugs.webkit.org/show_bug.cgi?id=129029
Reviewed by Mark Rowe.
* wtf/FeatureDefines.h:
* wtf/Platform.h:
* wtf/Threading.cpp:
* wtf/text/cf/StringImplCF.cpp:
(garbageCollectionEnabled):
2014-02-18 Dan Bernstein <mitz@apple.com>
PLATFORM(MAC) is true when building for iOS
https://bugs.webkit.org/show_bug.cgi?id=129025
Reviewed by Mark Rowe.
* wtf/Platform.h: Changed to define WTF_PLATFORM_MAC only on when building for OS X (but
still not when WTF_PLATFORM_GTK or WTF_PLATFORM_EFL are defined).
2014-02-18 Joseph Pecoraro <pecoraro@apple.com>
[iOS] Web Inspector: JSContext inspection crashes in isMainThread, uninitialized WebCoreWebThreadIsLockedOrDisabled
https://bugs.webkit.org/show_bug.cgi?id=128959
Reviewed by David Kilzer.
When JavaScriptCore is used without WebCore on iOS (e.g. JSContext)
the WebCoreWebThread* functions will not be initialized. Avoid
calling the function pointer if it is uninitialized. This was
happening with remote inspection via StringImpl::createCFString
for implicit NSString / WTFString conversion which uses isMainThread.
* wtf/mac/MainThreadMac.mm:
(WTF::webThreadIsUninitializedOrLockedOrDisabled):
(WTF::isMainThread):
(WTF::canAccessThreadLocalDataForThread):
2014-02-17 Filip Pizlo <fpizlo@apple.com>
More ARM FTL glue
https://bugs.webkit.org/show_bug.cgi?id=128948
Reviewed by Sam Weinig.
* wtf/Platform.h:
2014-02-17 Anders Carlsson <andersca@apple.com>
Remove ENABLE_GLOBAL_FASTMALLOC_NEW
https://bugs.webkit.org/show_bug.cgi?id=127067
Reviewed by Geoffrey Garen.
Remove the global operator new/operator delete overrides. Having ALWAYS_INLINE operators
like we do is really undefined behavior according to the C++ standard and we've been lucky enough
to get away with it so far, but any code that calls operator new/operator delete inside from the C++ standard
library (not from headers that are included) will be mismatched and potentially crash. libc++ calls
delete in it's std::thread implementation for example.
The only supported way to override operator new and operator delete globally is to not use inline
functions, but that would mean that any application using WebKit would not be able to provide custom
operator new/operator delete functions so we'll just reuse the already existing infrastructure consisting
of the WTF_MAKE_FAST_ALLOCATED macro.
* wtf/FastMalloc.cpp:
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
* wtf/FastMalloc.h:
* wtf/Platform.h:
2014-02-17 Ryan Lortie <desrt@desrt.ca>
Enable DFG_JIT on FreeBSD
https://bugs.webkit.org/show_bug.cgi?id=128898
Reviewed by Csaba Osztrogonác.
* wtf/Platform.h:
2014-02-15 Filip Pizlo <fpizlo@apple.com>
FTL should inline polymorphic heap accesses
https://bugs.webkit.org/show_bug.cgi?id=128795
Reviewed by Oliver Hunt.
* wtf/PrintStream.h:
(WTF::PointerDumpInContext::PointerDumpInContext):
(WTF::PointerDumpInContext::dump):
(WTF::pointerDumpInContext):
2014-02-16 Zan Dobersek <zdobersek@igalia.com>
Reintroduce const qualifiers for return types of (Filter|Transform)Iterator::operator*()
https://bugs.webkit.org/show_bug.cgi?id=126875
The const qualifiers for the return types of FilterIterator::operator*() and TransformIterator::operator*()
were removed in r161797 and r161802 because of compilation failures when using GCC and having an Iterator
type that already had the const qualifier. std::remove_const is now used to appease GCC and enforce the const
qualifier on the return type, regardless of the Iterator type and its qualifiers.
* wtf/IteratorAdaptors.h:
(WTF::FilterIterator::operator*):
(WTF::TransformIterator::operator*):
2014-02-15 Filip Pizlo <fpizlo@apple.com>
Vector with inline capacity should work with non-PODs
https://bugs.webkit.org/show_bug.cgi?id=128864
Reviewed by Michael Saboff.
Previously, we would copy the inline storage of a vector as if it was a bag of bits.
This presumed that the element type was relocatable. In general this is only true for
PODs.
This patch changes this by introducing a swap operation over inline storage. This swap
operation requires being told about the size that is in use.
Deques would have required some cleverness to make this work, because the swap
operation needs to know which subset of elements are in-use and assumes that a size is
sufficient for this. That's not true for deques. Instead of trying to do very clever
things, I just removed the inline capacity option from Deque. I believe that this is
fine since there are only two users of Deque with inline capacity, and both of them
appear to be allocated rarely enough that inline capacity probably doesn't help much.
* wtf/Deque.h:
(WTF::DequeIterator::DequeIterator):
(WTF::DequeConstIterator::DequeConstIterator):
(WTF::Deque<T>::checkValidity):
(WTF::Deque<T>::checkIndexValidity):
(WTF::Deque<T>::invalidateIterators):
(WTF::Deque<T>::Deque):
(WTF::=):
(WTF::Deque<T>::destroyAll):
(WTF::Deque<T>::~Deque):
(WTF::Deque<T>::swap):
(WTF::Deque<T>::clear):
(WTF::Deque<T>::expandCapacityIfNeeded):
(WTF::Deque<T>::expandCapacity):
(WTF::Deque<T>::append):
(WTF::Deque<T>::prepend):
(WTF::Deque<T>::removeFirst):
(WTF::Deque<T>::removeLast):
(WTF::Deque<T>::remove):
(WTF::DequeIteratorBase<T>::checkValidity):
(WTF::DequeIteratorBase<T>::addToIteratorsList):
(WTF::DequeIteratorBase<T>::removeFromIteratorsList):
(WTF::DequeIteratorBase<T>::DequeIteratorBase):
(WTF::DequeIteratorBase<T>::~DequeIteratorBase):
(WTF::DequeIteratorBase<T>::isEqual):
(WTF::DequeIteratorBase<T>::increment):
(WTF::DequeIteratorBase<T>::decrement):
(WTF::DequeIteratorBase<T>::after):
(WTF::DequeIteratorBase<T>::before):
* wtf/Vector.h:
(WTF::VectorBuffer::swap):
(WTF::VectorBuffer::swapInlineBuffer):
(WTF::VectorBuffer::swapInlineBuffers):
(WTF::Vector::swap):
2014-02-15 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
Remove 'static' specifier from free inline functions in StringImpl.h
https://bugs.webkit.org/show_bug.cgi?id=118554
Reviewed by Darin Adler.
At first 'static' does not bring any use here, secondly static free
inline functions in headers is a bad practice in general as each instance
of function defined as inline is treated as a separate function and each
instance has its own copy of static locals and string literals.
* wtf/text/StringImpl.h:
(WTF::codePointCompare):
(WTF::codePointCompare8):
(WTF::codePointCompare16):
(WTF::codePointCompare8To16):
(WTF::isSpaceOrNewline):
2014-02-14 Benjamin Poulain <bpoulain@apple.com>
Improve the performance on mobile of FTPDirectoryDocument
https://bugs.webkit.org/show_bug.cgi?id=128778
Reviewed by Antti Koivisto.
* wtf/text/WTFString.h:
(WTF::String::endsWith): add a missing overload.
2014-02-14 Wojciech Bielawski <w.bielawski@samsung.com>
(try)append and insert operations don't need new operator for PODs
https://bugs.webkit.org/show_bug.cgi?id=128185
Reviewed by Darin Adler.
Vector's methods use VectorCopier to copy data.
VectorCopier for PODs exteded to be used with different types. For different types placement new copy approach is applied. For the same types memcpy is applied.
* wtf/Vector.h:
(WTF::OverflowHandler>::append): use VectorCopier to copy data.
(WTF::OverflowHandler>::tryAppend): use VectorCopier to copy data.
(WTF::OverflowHandler>::insert): use VectorCopier to copy data.
2014-02-13 Daniel Bates <dabates@apple.com>
Fix the iOS build after <http://trac.webkit.org/changeset/164064
* wtf/Platform.h:
2014-02-13 Daniel Bates <dabates@apple.com>
[iOS] Disable HAVE_ARM_NEON_INTRINSICS
For now, disable HAVE_ARM_NEON_INTRINSICS when building for iOS. We want
to audit the applicable code before we enable this define.
* wtf/Platform.h:
2014-02-11 Filip Pizlo <fpizlo@apple.com>
Hoist and combine array bounds checks
https://bugs.webkit.org/show_bug.cgi?id=125433
Reviewed by Mark Hahnenberg.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/HashMethod.h: Added.
(WTF::HashMethod::operator()):
2014-02-13 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
Code cleanup: remove gcc<4.7 guards.
https://bugs.webkit.org/show_bug.cgi?id=128729
Reviewed by Anders Carlsson.
Remove GCC_VERSION_AT_LEAST guards when it checks for pre-4.7 versions,
as WK does not compile with earlier gcc versions.
* wtf/Assertions.cpp:
* wtf/Platform.h:
2014-02-12 Mark Lam <mark.lam@apple.com>
No need to save reservedZoneSize when dropping the JSLock.
<https://webkit.org/b/128719>
Reviewed by Geoffrey Garen.
* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::WTFThreadData):
* wtf/WTFThreadData.h:
- removed unnneeded m_savedReservedZoneSize.
2014-02-11 Mark Hahnenberg <mhahnenberg@apple.com>
32-bit LLInt writeBarrierOnGlobalObject is wrong
https://bugs.webkit.org/show_bug.cgi?id=128556
Reviewed by Geoffrey Garen.
* wtf/Platform.h: Removed OBJECT_MARK_LOGGING from Platform.h since it already exists in FeatureDefines.h
2014-02-11 peavo@outlook.com <peavo@outlook.com>
[WinCairo] Compile error, deleted file in WTF.
https://bugs.webkit.org/show_bug.cgi?id=128601
Reviewed by Csaba Osztrogonác.
* WTF.vcxproj/WTF.vcxproj: Removed reference to deleted file.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
2014-02-10 Michael Saboff <msaboff@apple.com>
Re-enable ARM Thumb2 disassembler
https://bugs.webkit.org/show_bug.cgi?id=128577
Reviewed by Filip Pizlo.
Added definition of WTF_USE_ARMV7_DISASSEMBLER back to Platform.h
* wtf/Platform.h:
2014-02-10 Benjamin Poulain <benjamin@webkit.org>
Add the basic infrastructure to compile attributes matching in selectors
https://bugs.webkit.org/show_bug.cgi?id=128484
Reviewed by Gavin Barraclough.
* wtf/Vector.h:
(WTF::VectorBufferBase::bufferMemoryOffset):
(WTF::Vector::sizeMemoryOffset):
(WTF::Vector::dataMemoryOffset):
Expose the memory offsets of Vector::size() and the memory buffer pointer for the JIT.
2014-02-10 Enrica Casucci <enrica@apple.com>
copyShortASCIIString crashes on iOS after r163793.
https://bugs.webkit.org/show_bug.cgi?id=128548.
Reviewed by Alexey Proskuryakov.
Adding null check.
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::copyShortASCIIString):
2014-02-10 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Add GUniqueOutPtr and use it instead of GOwnPtr
https://bugs.webkit.org/show_bug.cgi?id=127554
Reviewed by Gustavo Noronha Silva.
GUniqueOutPtr is a simplified version of GOwnPtr for the cases
where we need the address of the contained pointer. GUniqueOutPtr
uses GUniquePtr to free the contained object and to release the
container pointer. The API is very simple to make sure this is
only used when outPtr() is needed. It can't be constructed with a
pointer, and there's not method to set a new pointer. Another
difference with the old GOwnPtr is that outPtr() can be used
multiple times, because it frees any pointer previously set.
* GNUmakefile.list.am:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/gobject/GOwnPtr.cpp: Removed.
* wtf/gobject/GOwnPtr.h: Removed.
* wtf/gobject/GUniquePtr.h:
(WTF::GUniqueOutPtr::GUniqueOutPtr):
(WTF::GUniqueOutPtr::~GUniqueOutPtr):
(WTF::GUniqueOutPtr::outPtr):
(WTF::GUniqueOutPtr::reset):
(WTF::GUniqueOutPtr::release):
(WTF::GUniqueOutPtr::operator*):
(WTF::GUniqueOutPtr::operator->):
(WTF::GUniqueOutPtr::get):
(WTF::GUniqueOutPtr::operator!):
(WTF::GUniqueOutPtr::operator UnspecifiedBoolType):
2014-02-10 Darin Adler <darin@apple.com>
Stop using String::deprecatedCharacters to call WTF::Collator
https://bugs.webkit.org/show_bug.cgi?id=128517
WTF passes ICU’s deprecated ULOC_REQUESTED_LOCALE to ucol_getLocaleByType()
rdar://problem/15183390
Reviewed by Alexey Proskuryakov.
This patch fixes both bugs above by reworking WTF::Collator.
* wtf/unicode/Collator.h: Fixed formatting. Got rid of the Collator::Result type,
since the collator uses the same return value scheme as strcmp and as ICU; an int
will do for the return type. Simplified the support for UCONFIG_NO_COLLATION by
using a separate copy of the class definition. (We should check if anyone needs
UCONFIG_NO_COLLATION support, and remove it if not.) Changed the lower-first flag
from a separate function to a constructor argument. Changed the arguments to
the collate function to StringView. Added a collate UTF8 function. Changed the
m_collate data member to no longer be mutable since we no longer allocate it lazily.
* wtf/unicode/CollatorDefault.cpp:
(WTF::Collator::collate): Rewrote to be simpler.
(WTF::Collator::collateUTF8): Added. Converts from UTF-8 to a String and then calls
the collate function above.
* wtf/unicode/icu/CollatorICU.cpp: Added a FIXME about the fact that this file
has the wrong name and location. Since we always use ICU, there's no need to mention
it in the file name.
(WTF::copyASCIIString): Added.
(WTF::copyDefaultLocale): Added.
(WTF::resolveDefaultLocale): Added. Maps null locale to a default on Mac and iOS,
since on those platforms ICU does not use the correct default locale when passed null.
(WTF::localesMatch): Added.
(WTF::Collator::Collator): Moved most of the code from createCollator here.
Simplified it by storing the collator configuration along with the collator in globals.
(WTF::Collator::~Collator): Moved most of the code from releaseCollator here.
(WTF::getIndexLatin1): Added.
(WTF::moveLatin1): Added.
(WTF::hasNextLatin1): Added.
(WTF::hasPreviousLatin1): Added.
(WTF::currentLatin1): Added.
(WTF::nextLatin1): Added.
(WTF::previousLatin1): Added.
(WTF::getStateLatin1): Added.
(WTF::setStateLatin1): Added.
(WTF::createLatin1Iterator): Added. Uses the functions above to make a UCharIterator
that works for a WTF::StringView-style Latin-1 string.
(WTF::createIterator): Added. Uses either createLatin1Iterator or uiter_setString to
make a UCharIterator that works for a WTF::StringView.
(WTF::Collator::collate): Changed to use ucol_strcollIter.
(WTF::createIteratorUTF8): Added. Uses uiter_setUTF8.
(WTF::Collator::collateUTF8): Added. Like collate, but for null-terminated UTF-8 strings.
2014-02-10 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
Code cleanup: Remove BUILDING_ON / TARGETING definitions.
https://bugs.webkit.org/show_bug.cgi?id=128242
Reviewed by Brent Fulgham.
The BUILDING_ON_* and TARGETING_* macros have not been used for a while.
According to the FIXME: they are removed.
* wtf/Platform.h:
2014-02-09 Anders Carlsson <andersca@apple.com>
Add WTF_MAKE_FAST_ALLOCATED to more classes
https://bugs.webkit.org/show_bug.cgi?id=128506
Reviewed by Andreas Kling.
* wtf/Bag.h:
* wtf/ListHashSet.h:
2014-02-08 Anders Carlsson <andersca@apple.com>
Stop using getCharactersWithUpconvert in JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=128457
Reviewed by Andreas Kling.
* wtf/text/StringBuilder.h:
(WTF::StringBuilder::append):
Add a new overload that takes a StringView.
* wtf/text/StringView.h:
(WTF::StringView::find):
Add new find member function.
2014-02-08 Darin Adler <darin@apple.com>
Change TextIterator to use StringView, preparing to wean it from deprecatedCharacters
https://bugs.webkit.org/show_bug.cgi?id=128233
Reviewed by Anders Carlsson.
* WTF.xcodeproj/project.pbxproj: Added new source files.
* wtf/text/StringView.h: Added operator[], createCFStringWithoutCopying, and
createNSStringWithoutCopying.
* wtf/text/cf/StringViewCF.cpp:
(WTF::StringView::createCFStringWithoutCopying): Added.
* wtf/text/mac/StringViewObjC.mm:
(WTF::StringView::createNSString): Added.
(WTF::StringView::createNSStringWithoutCopying): Added.
2014-02-06 Andreas Kling <akling@apple.com>
Remove unused ENABLE(REPAINT_THROTTLING) flag.
<https://webkit.org/b/128329>
Reviewed by Antti Koivisto.
* wtf/FeatureDefines.h:
2014-02-06 Filip Pizlo <fpizlo@apple.com>
More FTL build scaffolding
https://bugs.webkit.org/show_bug.cgi?id=128330
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
2014-02-06 Anders Carlsson <andersca@apple.com>
Use std::chrono functions in dispatchFunctionsFromMainThread()
https://bugs.webkit.org/show_bug.cgi?id=128308
Reviewed by Antti Koivisto.
* wtf/MainThread.cpp:
(WTF::dispatchFunctionsFromMainThread):
2014-02-05 Zan Dobersek <zdobersek@igalia.com>
Remove the WTF_COMPILER_SUPPORTS_CXX_GENERALIZED_INITIALIZERS macro
https://bugs.webkit.org/show_bug.cgi?id=128267
Reviewed by Andreas Kling.
Remove the WTF_COMPILER_SUPPORTS_CXX_GENERALIZED_INITIALIZERS macro that was manually defined for compilers
that support the C++11 initializer lists. The feature is well supported in Clang, MSVC and also GCC. It
was actually already used unguarded in HashSet.
* wtf/Compiler.h:
* wtf/HashMap.h:
(WTF::HashMap::HashMap):
* wtf/Vector.h:
(WTF::Vector::Vector):
2014-02-05 Andreas Kling <akling@apple.com>
Remove ENABLE(DIRECTORY_UPLOAD).
<https://webkit.org/b/128275>
Rubber-stamped by Ryosuke Niwa.
* wtf/FeatureDefines.h:
2014-02-05 Carlos Garcia Campos <cgarcia@igalia.com>
HashMap can't be used with std::unique_ptr as value when it has a custom deleter
https://bugs.webkit.org/show_bug.cgi?id=128250
Reviewed by Darin Adler.
The problem is that the HashMap is using a unique_ptr with the
default deleter, so that when trying to move the unique_ptr the
deleters don't match.
* wtf/HashTraits.h: Add the deleter also in the template
definitation of the parent class for the HashTraits<std::unique_ptr<T, Deleter>>
2014-02-05 Csaba Osztrogonác <ossy@webkit.org>
Remove ENABLE(SVG) guards
https://bugs.webkit.org/show_bug.cgi?id=127991
Reviewed by Sam Weinig.
* wtf/FeatureDefines.h:
2014-02-04 Mark Lam <mark.lam@apple.com>
The stack limit computation does not work for Windows.
<https://webkit.org/b/128226>
Reviewed by Geoffrey Garen.
The current stack limit computation assumes that the stack is allocated
in high memory. On Windows, the stack seems to be allocated very near
address 0, and is smaller in size than our Options::maxPerThreadStackUsage().
This combination triggers a bug where StackBounds::recursionLimit()
underflows and computes a limit address that is ridiculously high in memory.
The net effect is that the Windows port thinks its out of stack space all
the time.
We now check for potential underflows in StackBounds and return an
appropriate limit address.
* wtf/StackBounds.h:
(WTF::StackBounds::recursionLimit):
2014-02-04 Andreas Kling <akling@apple.com>
Remove <iframe seamless> support.
<https://webkit.org/b/128213>
Rubber-stamped by Antti Koivisto.
* wtf/FeatureDefines.h:
2014-02-04 Anders Carlsson <andersca@apple.com>
Store StringImpl substring backpointers as tail data
https://bugs.webkit.org/show_bug.cgi?id=128220
Reviewed by Geoffrey Garen.
This lets us get rid of m_substringBuffer from the union.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::getData16SlowCase):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createSubstringSharingImpl8):
(WTF::StringImpl::createSubstringSharingImpl):
(WTF::StringImpl::cost):
(WTF::StringImpl::costDuringGC):
(WTF::StringImpl::substringBuffer):
2014-02-04 Anders Carlsson <andersca@apple.com>
Rename the substring sharing StringImpl::create variants to better indicate what they do
https://bugs.webkit.org/show_bug.cgi?id=128214
Reviewed by Geoffrey Garen.
* wtf/text/AtomicString.cpp:
(WTF::SubstringTranslator::translate):
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::reifyString):
(WTF::StringBuilder::resize):
* wtf/text/StringImpl.h:
(WTF::StringImpl::createSubstringSharingImpl8):
(WTF::StringImpl::createSubstringSharingImpl):
* wtf/text/WTFString.cpp:
(WTF::String::substringSharingImpl):
2014-02-04 Alexey Proskuryakov <ap@apple.com>
WebCrypto HMAC verification uses a non-constant-time memcmp
https://bugs.webkit.org/show_bug.cgi?id=128198
<rdar://problem/15976961>
Reviewed by Oliver Hunt.
Added a "constant time" memcmp that doesn't depend on data. The name is somewhat
strange, as the function is of course O(length) and not constant time at all,
but apparently this is how everyone calls such functions.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/CryptographicUtilities.cpp: Added. (WTF::constantTimeMemcmp):
* wtf/CryptographicUtilities.h: Added.
2014-02-04 Anders Carlsson <andersca@apple.com>
Rename StringImpl::getCharacters to StringImpl::characters
https://bugs.webkit.org/show_bug.cgi?id=128205
Reviewed by Antti Koivisto.
This lets us use StringImpl::getCharacters for the upconverting version.
Also, change StringImpl::characters<UChar>() to call characters16() instead of deprecatedCharacters()
and audit all call sites to make sure we weren't relying on upconversion anywhere.
* wtf/text/AtomicString.cpp:
(WTF::findString):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::simplifyMatchedCharactersToSpace):
* wtf/text/StringImpl.h:
(WTF::StringImpl::characters<LChar>):
(WTF::StringImpl::characters<UChar>):
2014-02-04 Anders Carlsson <andersca@apple.com>
Rename equalNonNull to equal and make it take const StringImpl& instead
https://bugs.webkit.org/show_bug.cgi?id=128206
Reviewed by Andreas Kling.
* wtf/text/StringHash.h:
(WTF::StringHash::equal):
* wtf/text/StringImpl.cpp:
(WTF::stringImplContentEqual):
(WTF::equal):
* wtf/text/StringImpl.h:
2014-02-04 Anders Carlsson <andersca@apple.com>
Get rid of StringImpl::m_buffer
https://bugs.webkit.org/show_bug.cgi?id=128200
Reviewed by Michael Saboff.
Trade one lousy hack for another by changing the CreateEmptyUnique StringImpl
constructor to initialize its character buffer to point to m_length instead
since it will always be null.
Also change it to be an 8-bit string because why not.
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
2014-02-04 Anders Carlsson <andersca@apple.com>
Rename String::getCharacters to String::characters
https://bugs.webkit.org/show_bug.cgi?id=128196
Reviewed by Andreas Kling.
This means String::characters() will end up calling either characters8() or characters16() which
makes more logical sense. It also frees up the getCharacters name so we can use it for a new function
that will do upconversion.
* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::appendUninitializedSlow):
* wtf/text/WTFString.h:
(WTF::String::characters<LChar>):
(WTF::String::characters<UChar>):
2014-02-03 Anders Carlsson <andersca@apple.com>
Fix Windows build.
* wtf/text/StringImpl.h:
(WTF::StringImpl::tailOffset):
2014-02-03 Anders Carlsson <andersca@apple.com>
StringImpl::tailOffset() should return the offset right after m_hashAndFlags
https://bugs.webkit.org/show_bug.cgi?id=128141
Reviewed by Andreas Kling.
* wtf/text/StringImpl.h:
(WTF::StringImpl::tailOffset):
2014-02-03 Anders Carlsson <andersca@apple.com>
More tail pointer consolidation
https://bugs.webkit.org/show_bug.cgi?id=128139
Reviewed by Andreas Kling.
Add a new tailOffset() function and reimplement allocationSize() and tailPointer()
in terms of it. Use tailPointer() instead of reinterpret_cast-ing this + 1.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::createUninitializedInternalNonEmpty):
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
(WTF::StringImpl::requiresCopy):
(WTF::StringImpl::allocationSize):
(WTF::StringImpl::tailOffset):
(WTF::StringImpl::tailPointer):
2014-02-03 Gustavo Noronha Silva <gns@gnome.org>
[GTK][CMake] Enable SUBPIXEL_LAYOUT in FeatureDefines.h like EFL does
https://bugs.webkit.org/show_bug.cgi?id=128136
Reviewed by Martin Robinson.
* wtf/FeatureDefines.h: enable SUBPIXEL_LAYOUT if it's not set, for GTK+.
2014-02-03 Mark Hahnenberg <mhahnenberg@apple.com>
Turn GenGC on
https://bugs.webkit.org/show_bug.cgi?id=128109
Reviewed by Oliver Hunt.
* wtf/Platform.h: Initially it will only be enabled for X86-64.
2014-02-03 Anders Carlsson <andersca@apple.com>
Consolidate StringImpl tail handling into two functions
https://bugs.webkit.org/show_bug.cgi?id=128122
Reviewed by Andreas Kling.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::createUninitializedInternalNonEmpty):
(WTF::StringImpl::reallocateInternal):
* wtf/text/StringImpl.h:
(WTF::StringImpl::tryCreateUninitialized):
(WTF::StringImpl::allocationSize):
(WTF::StringImpl::tailPointer):
2014-02-03 Darin Adler <darin@apple.com>
Remove Unicode.h
https://bugs.webkit.org/show_bug.cgi?id=128106
Reviewed by Anders Carlsson.
* GNUmakefile.list.am: Removed files.
* WTF.vcxproj/WTF.vcxproj: Ditto.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/unicode/ScriptCodesFromICU.h: Removed.
* wtf/unicode/Unicode.h: Removed.
* wtf/unicode/UnicodeMacrosFromICU.h: Removed.
* wtf/unicode/icu/UnicodeIcu.h: Removed.
* wtf/unicode/wchar/UnicodeWchar.cpp: Removed.
* wtf/unicode/wchar/UnicodeWchar.h: Removed.
2014-01-25 Darin Adler <darin@apple.com>
Stop using Unicode.h
https://bugs.webkit.org/show_bug.cgi?id=127633
Reviewed by Anders Carlsson.
* wtf/StringHasher.h:
* wtf/dtoa.h:
* wtf/text/ASCIIFastPath.h:
* wtf/text/LChar.h:
* wtf/text/StringBuffer.h:
* wtf/text/StringImpl.h:
* wtf/text/WTFString.cpp:
* wtf/unicode/CharacterNames.h:
* wtf/unicode/Collator.h:
* wtf/unicode/UTF8.h:
Removed includes of <wtf/unicode/Unicode.h>, adding includes of
ICU headers and <wtf/text/LChar.h> as needed to replace it.
2014-02-02 Darin Adler <darin@apple.com>
Obey "delete this" comments, including deleting String::characters and friends
https://bugs.webkit.org/show_bug.cgi?id=126865
Reviewed by Andreas Kling.
* wtf/text/AtomicString.h: Deleted the characters function.
* wtf/text/StringBuilder.h: Deleted the characters function, leaving behind the
deprecatedCharacters function.
* wtf/text/StringImpl.h: Ditto.
* wtf/text/WTFString.h: Ditto. Also added a constructor that takes a StringImpl&,
helpful for later string refactoring.
2014-02-02 Dan Bernstein <mitz@apple.com>
Stop using PLATFORM(MAC) in WTF except where it means “OS X but not iOS”
https://bugs.webkit.org/show_bug.cgi?id=128089
Reviewed by Darin Adler.
Replaced all uses of PLATFORM(MAC) that weren’t accompanied by !PLATFORM(IOS) with
equivalent(*) tests that are more idiomatic and will not change once PLATFORM(MAC) changes to
be false when building for iOS.
* - One exception noted below.
* wtf/AutodrainedPool.h: Changed PLATFORM(MAC) to USE(FOUNDATION), because NSAutoreleasePool
is a Foundation class.
* wtf/CurrentTime.cpp:
(WTF::monotonicallyIncreasingTime): Changed PLATFORM(MAC) to OS(DARWIN), because Mach is
part of the Darwin kernel, but reordered such that the EFL and GLIB implementations continue
to take precedence regardless of the OS.
* wtf/MainThread.cpp: Changed PLATFORM(MAC) to OS(DARWIN) && !PLATFORM(EFL) && !PLATFORM(GTK).
* wtf/MainThread.h: Ditto.
* wtf/Platform.h: Changed USE(CG) and USE(CA) to depend on COCOA, rather than MAC or IOS.
Ditto for USE(CFURLCACHE), HAVE(ACCESSIBILITY), USE(PROTECTION_SPACE_AUTH_CALLBACK),
USE(ACCESSIBILITY_CONTEXT_MENUS), USE(EXPORT_MACROS), USE(AVFOUNDATION),
USE(REQUEST_ANIMATION_FRAME_TIMER), USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR),
USE(CONTENT_FILTERING), USE(UNIFIED_TEXT_CHECKING), USE(MARKER_REMOVAL_UPON_EDITING),
USE(AUDIO_SESSION), USE(IOSURFACE), and ENABLE(CSS3_TEXT_DECORATION_SKIP_INK). Changed
PLATFORM(MAC) to OS(DARWIN) && !PLATFORM(EFL) && !PLATFORM(GTK) in controlling various
JavaScriptCore or JavaScriptCore-dependent behaviors.
* wtf/RunLoop.h: Changed PLATFORM(MAC) to PLATFORM(COCOA).
* wtf/RunLoopTimerCF.cpp: Ditto.
* wtf/SchedulePair.h: Changed PLATFORM(MAC) to USE(FOUNDATION), since it was used to guard
usage of Foundation API.
* wtf/Threading.cpp: Added an explicit !PLATFORM(IOS) in a guard around something needed
only on OS X and Windows.
2014-01-31 Benjamin Poulain <bpoulain@apple.com>
Remove LEGACY_VIEWPORT_ADAPTION
https://bugs.webkit.org/show_bug.cgi?id=128028
Reviewed by Anders Carlsson.
* wtf/FeatureDefines.h:
2014-01-31 Tim Horton <timothy_horton@apple.com>
[wk2] PlatformCALayerRemoteCustom doesn't work on iOS
https://bugs.webkit.org/show_bug.cgi?id=128025
<rdar://problem/15950271>
Reviewed by Simon Fraser.
* wtf/Platform.h:
Rename HAVE_LAYER_HOSTING_IN_WINDOW_SERVER to HAVE_OUT_OF_PROCESS_LAYER_HOSTING
and make it true on iOS.
2014-01-31 Michael Saboff <msaboff@apple.com>
REGRESSION: Crash in sanitizeStackForVMImpl when scrolling @ lifehacker.com.au
https://bugs.webkit.org/show_bug.cgi?id=128017
Reviewed by Filip Pizlo.
Moved the setting and saving of VM::stackPointerAtVMEntry and the corresponding stack limit
to JSLock and JSLock::DropAllLocks. The saved data is now stored in per-thread in
WTFThreadData.
* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::WTFThreadData):
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::savedStackPointerAtVMEntry):
(WTF::WTFThreadData::setSavedStackPointerAtVMEntry):
(WTF::WTFThreadData::savedLastStackTop):
(WTF::WTFThreadData::setSavedLastStackTop):
(WTF::WTFThreadData::savedReservedZoneSize):
(WTF::WTFThreadData::setSavedReservedZoneSize):
2014-01-30 Andrei Bucur <abucur@adobe.com>
Remove the ACCELERATED_COMPOSITING flag
https://bugs.webkit.org/show_bug.cgi?id=127833
Reviewed by Antti Koivisto.
Remove the USE(ACCELERATED_COMPOSITING) conditionals from the code base and make AC
mandatory.
* wtf/OwnPtrCommon.h:
* wtf/Platform.h:
* wtf/efl/OwnPtrEfl.cpp:
(WTF::deleteOwnedPtr):
2014-01-28 Michael Saboff <msaboff@apple.com>
Merge the jsCStack branch
https://bugs.webkit.org/show_bug.cgi?id=127763
Reviewed by Mark Hahnenberg.
Changes from http://svn.webkit.org/repository/webkit/branches/jsCStack
up to changeset 162958.
2014-01-29 Csaba Osztrogonác <ossy@webkit.org>
Remove ENABLE(JAVASCRIPT_DEBUGGER) guards
https://bugs.webkit.org/show_bug.cgi?id=127840
Reviewed by Mark Lam.
* wtf/FeatureDefines.h:
2014-01-28 Anders Carlsson <andersca@apple.com>
Actually turn stack stats back off.
* wtf/StackStats.cpp:
* wtf/StackStats.h:
2014-01-28 Anders Carlsson <andersca@apple.com>
Turn stack stats back off.
* wtf/StackStats.cpp:
2014-01-28 Anders Carlsson <andersca@apple.com>
Use std::mutex instead of WTF::Mutex in WTF
https://bugs.webkit.org/show_bug.cgi?id=127783
Reviewed by Antti Koivisto.
* wtf/CryptographicallyRandomNumber.cpp:
* wtf/MainThread.cpp:
(WTF::mainThreadFunctionQueueMutex):
(WTF::functionQueue):
(WTF::dispatchFunctionsFromMainThread):
(WTF::callOnMainThread):
(WTF::cancelCallOnMainThread):
* wtf/StackStats.cpp:
(WTF::StackStats::initialize):
(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):
* wtf/StackStats.h:
2014-01-27 Joseph Pecoraro <pecoraro@apple.com>
WebCore: Enable -Wimplicit-fallthrough and add FALLTHROUGH annotation where needed
https://bugs.webkit.org/show_bug.cgi?id=127671
Reviewed by Ryosuke Niwa.
* wtf/text/WTFString.h:
(WTF::appendNumber):
2014-01-27 Jer Noble <jer.noble@apple.com>
[WK2] callOnMainThread() from main thread sometimes results in ASSERTs.
https://bugs.webkit.org/show_bug.cgi?id=127370
Reviewed by Alexey Proskuryakov.
When WEB_THREAD is enabled, and callOnMainThread() is called from the main
thread, if the web thread is locked, a timer is set and the passed-in function
is called on the next run-loop. However, by that time the web thread may have
been unlocked, and isMainThread() will no longer return true, resulting in
an assert.
Instead, scheduleDispatchFunctionsOnMainThread() should check isWebThread(),
which is equivalent to isMainThread() when the WEB_THREAD is disabled, but
will do the correct thing when WEB_THREAD is enabled.
* wtf/mac/MainThreadMac.mm:
(WTF::scheduleDispatchFunctionsOnMainThread):
2014-01-27 Dan Bernstein <mitz@apple.com>
Build fix.
* wtf/ThreadSafeRefCounted.h: Added a necessary #include.
2014-01-25 Sam Weinig <sam@webkit.org>
Remove unused support for DRAGGABLE_REGION
https://bugs.webkit.org/show_bug.cgi?id=127642
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h:
2014-01-25 Joseph Pecoraro <pecoraro@apple.com>
Add FALLTHROUGH and -Wimplicit-fallthrough to warn about unannotated implicit fallthroughs in switches
https://bugs.webkit.org/show_bug.cgi?id=127637
Reviewed by Darin Adler.
For information about [[clang::fallthrough]], see:
<http://clang.llvm.org/docs/LanguageExtensions.html#the-clang-fallthrough-attribute>
* Configurations/Base.xcconfig:
Enable -Wimplicit-fallthrough warnings.
* wtf/Compiler.h:
Define FALLTHROUGH on clang and fallback to outputing nothing when unsupported.
* wtf/dtoa/fast-dtoa.cc:
* wtf/unicode/UTF8.cpp:
(WTF::Unicode::convertLatin1ToUTF8):
(WTF::Unicode::convertUTF16ToUTF8):
(WTF::Unicode::isLegalUTF8):
(WTF::Unicode::readUTF8Sequence):
Explicitly annotate implicit fallthroughs with FALLTHROUGH.
2014-01-25 Darin Adler <darin@apple.com>
Call deprecatedCharacters instead of characters at more call sites
https://bugs.webkit.org/show_bug.cgi?id=127631
Reviewed by Sam Weinig.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::replace):
* wtf/text/WTFString.h:
(WTF::String::isAllSpecialCharacters):
Use the new name.
2014-01-25 Darin Adler <darin@apple.com>
Add a new separate LChar.h header file, to be used after we remove Unicode.h
https://bugs.webkit.org/show_bug.cgi?id=127630
Reviewed by Sam Weinig.
* GNUmakefile.list.am: Added the new file
* WTF.vcxproj/WTF.vcxproj: Ditto.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/text/LChar.h: Added.
2014-01-25 Darin Adler <darin@apple.com>
Get rid of ICU_UNICODE and WCHAR_UNICODE remnants
https://bugs.webkit.org/show_bug.cgi?id=127623
Reviewed by Anders Carlsson.
* wtf/CMakeLists.txt: Removed WTF_USE_ICU_UNICODE and
WTF_USE_WCHAR_UNICODE since they are true and false respectively.
* wtf/Platform.h: Removed code to set WTF_USE_ICU_UNICODE.
* wtf/unicode/Collator.h: Removed ifdefs.
* wtf/unicode/CollatorDefault.cpp: Ditto.
* wtf/unicode/Unicode.h: Ditto.
* wtf/unicode/icu/CollatorICU.cpp: Ditto.
2014-01-25 Anders Carlsson <andersca@apple.com>
Remove atomicIncrement/atomicDecrement
https://bugs.webkit.org/show_bug.cgi?id=127625
Reviewed by Andreas Kling.
Replace atomicIncrement/atomicDecrement with std::atomic.
* wtf/Atomics.h:
* wtf/RefCountedLeakCounter.cpp:
(WTF::RefCountedLeakCounter::~RefCountedLeakCounter):
(WTF::RefCountedLeakCounter::increment):
(WTF::RefCountedLeakCounter::decrement):
* wtf/RefCountedLeakCounter.h:
* wtf/ThreadSafeRefCounted.h:
(WTF::ThreadSafeRefCountedBase::ref):
(WTF::ThreadSafeRefCountedBase::refCount):
(WTF::ThreadSafeRefCountedBase::derefBase):
2014-01-25 Anders Carlsson <andersca@apple.com>
Modernize HashTable threading code
https://bugs.webkit.org/show_bug.cgi?id=127621
Reviewed by Darin Adler.
Use std::mutex and std::atomic instead of WTF threading primitives.
* wtf/DynamicAnnotations.h:
Include Platform.h here since this file relies on USE macros.
* wtf/HashTable.cpp:
(WTF::HashTableStats::recordCollisionAtCount):
Change this to take an unsigned.
(WTF::HashTableStats::dumpStats):
* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):
(WTF::KeyTraits>::remove):
(WTF::KeyTraits>::invalidateIterators):
Use a single probe counter.
(WTF::addIterator):
(WTF::removeIterator):
2014-01-25 Darin Adler <darin@apple.com>
Restore alphabetical order in Compiler.h
https://bugs.webkit.org/show_bug.cgi?id=127620
Reviewed by Sam Weinig.
* wtf/Compiler.h: Resorted some things into alphabetical order
2014-01-24 Brent Fulgham <bfulgham@apple.com>
[Win] Convert some NMake files to MSBuild project files
https://bugs.webkit.org/show_bug.cgi?id=127579
Reviewed by Tim Horton.
* WTF.vcxproj/WTF.make: Removed.
* WTF.vcxproj/WTF.proj: Added.
2014-01-24 Anders Carlsson <andersca@apple.com>
Get rid of monotonicallyIncreasingTimeMS and start using std::chrono instead
https://bugs.webkit.org/show_bug.cgi?id=127571
Reviewed by Antti Koivisto.
* wtf/Compiler.h:
Add a CONSTEXPR define so we can still use constexpr on compilers that don't support them (MSVC).
* wtf/CurrentTime.h:
Remove monotonicallyIncreasingTimeMS().
* wtf/StdLibExtras.h:
(std::literals::chrono_literals::operator _s):
(std::literals::chrono_literals::operator _ms):
Add _s and _ms literals. Once we switch over to C++14, we can drop them and just use the built-in ones.
2014-01-24 Anders Carlsson <andersca@apple.com>
The CXX_EXPLICIT_CONVERSIONS COMPILER_SUPPORTS macro has been removed, and all
compilers support explicit conversions now so simply remove the #ifdef.
* wtf/RetainPtr.h:
2014-01-24 Darin Adler <darin@apple.com>
Simplify Compiler.h
https://bugs.webkit.org/show_bug.cgi?id=127491
Reviewed by Anders Carlsson.
* wtf/Assertions.h: Remove COMPILER_SUPPORTS(CXX_STATIC_ASSERT), since
we now have that for all compilers that can build WebKit.
* wtf/Compiler.h: Removed always true feature flags, including:
COMPILER_SUPPORTS(CXX_VARIADIC_TEMPLATES), COMPILER_SUPPORTS(CXX_RVALUE_REFERENCES),
COMPILER_SUPPORTS(CXX_DELETED_FUNCTIONS), COMPILER_SUPPORTS(CXX_NULLPTR),
COMPILER_SUPPORTS(CXX_EXPLICIT_CONVERSIONS), COMPILER_SUPPORTS(CXX_STATIC_ASSERT),
COMPILER_SUPPORTS(CXX_OVERRIDE_CONTROL), COMPILER_SUPPORTS(CXX_STRONG_ENUMS), and
COMPILER_SUPPORTS(CXX_AUTO_TYPE). Sorted sections alphabetically. Separated out
nested #if and #else into separate checks for greater readability. Removed obsolete
check for COMPILER(RVCT). Removed unused COMPILER(GCCE) detection.
* wtf/RefPtr.h: Remove COMPILER_SUPPORTS(CXX_NULLPTR), since we now have
that for all compilers that can build WebKit.
* wtf/RetainPtr.h: Ditto.
2014-01-23 Max Vujovic <mvujovic@adobe.com>
Remove CSS Custom Filters code and tests
https://bugs.webkit.org/show_bug.cgi?id=127382
Reviewed by Simon Fraser.
* wtf/FeatureDefines.h:
2014-01-22 Brent Fulgham <bfulgham@apple.com>
[Win] Update project and solution files for 64-bit builds.
https://bugs.webkit.org/show_bug.cgi?id=127457
Reviewed by Eric Carlson.
* WTF.vcxproj/WTF.submit.sln: Add x64 targets.
* WTF.vcxproj/WTF.vcxproj: Update for VS2013
2014-01-22 Myles C. Maxfield <mmaxfield@apple.com>
Remove CSS3_TEXT_DECORATION define
https://bugs.webkit.org/show_bug.cgi?id=127333
Reviewed by Simon Fraser.
This is required for unprefixing the text-decoration-* CSS properties.
* wtf/Platform.h:
2014-01-22 Jae Hyun Park <jae.park@company100.net>
Remove unnecessary include in Noncopyable.h
https://bugs.webkit.org/show_bug.cgi?id=127406
Reviewed by Anders Carlsson.
* wtf/Noncopyable.h: We don't need Compiler.h as of r162198.
2014-01-22 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add GUniquePtr
https://bugs.webkit.org/show_bug.cgi?id=127170
Reviewed by Gustavo Noronha Silva.
The idea is to replace GOwnPtr with a template alias of
std:unique_ptr. Not everything can be replaced, though, because
GOwnPtr::outPtr() doesn't seem to be possible to implement with
unique_ptr. This smart pointer is more flexible than GOwnPtr and
allows to transfer the ownership of the pointer using
std::move().
* GNUmakefile.list.am: Add new file to compilation.
* wtf/gobject/GUniquePtr.h: Added.
(WTF::GPtrDeleter::operator()):
2014-01-20 Anders Carlsson <andersca@apple.com>
Remove an unused member variable
https://bugs.webkit.org/show_bug.cgi?id=127295
Reviewed by Antti Koivisto.
* wtf/MainThread.cpp:
(WTF::FunctionWithContext::FunctionWithContext):
(WTF::FunctionWithContext::operator == ):
(WTF::dispatchFunctionsFromMainThread):
2014-01-20 Anders Carlsson <andersca@apple.com>
Remove MutexTryLocker
https://bugs.webkit.org/show_bug.cgi?id=127294
Reviewed by Antti Koivisto.
MutexTryLocker has been replaced with std::unique_lock with std::try_to_lock everywhere now.
* wtf/ThreadingPrimitives.h:
2014-01-19 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] GVariant floating references are not correctly handled by GRefPtr
https://bugs.webkit.org/show_bug.cgi?id=127246
Reviewed by Martin Robinson.
GRefPtr should always use g_variant_ref_sink to deal with GVariant
floating references. In case of full references,
g_variant_ref_sink calls g_variant_ref, so it's safe to use it always.
* wtf/gobject/GRefPtr.cpp:
(WTF::refGPtr): Use g_variant_ref_sink().
2014-01-18 Anders Carlsson <andersca@apple.com>
Remove support for the viewsource attribute
https://bugs.webkit.org/show_bug.cgi?id=127232
Reviewed by Andreas Kling.
* wtf/FeatureDefines.h:
2014-01-18 Anders Carlsson <andersca@apple.com>
Remove ENABLE_THREADED_HTML_PARSER defines everywhere
https://bugs.webkit.org/show_bug.cgi?id=127225
Reviewed by Andreas Kling.
This concludes the removal of over 8.8 million lines of threaded parser code.
* wtf/FeatureDefines.h:
2014-01-17 Anders Carlsson <andersca@apple.com>
Add a callOnMainThreadAndWait variant in SocketStreamHandle
https://bugs.webkit.org/show_bug.cgi?id=127180
Reviewed by Geoffrey Garen.
Remove callOnMainThreadAndWait from WTF.
* wtf/MainThread.cpp:
* wtf/MainThread.h:
2014-01-17 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Remove workaround for compilers not supporting deleted functions
https://bugs.webkit.org/show_bug.cgi?id=127166
Reviewed by Andreas Kling.
* wtf/Compiler.h:
* wtf/Noncopyable.h:
* wtf/PassRefPtr.h:
2014-01-16 Benjamin Poulain <bpoulain@apple.com>
Remove Nix from WTF
https://bugs.webkit.org/show_bug.cgi?id=127150
Reviewed by Alexey Proskuryakov.
* wtf/DisallowCType.h:
* wtf/FeatureDefines.h:
* wtf/Platform.h:
* wtf/PlatformNix.cmake: Removed.
* wtf/nix: Removed.
2014-01-16 Anders Carlsson <andersca@apple.com>
Remove FINAL macro
https://bugs.webkit.org/show_bug.cgi?id=127149
Reviewed by Tim Horton.
* wtf/Compiler.h:
2014-01-16 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Remove workaround for compilers not supporting explicit override control
https://bugs.webkit.org/show_bug.cgi?id=127111
Reviewed by Anders Carlsson.
Now all compilers support explicit override control, this workaround can be removed.
* wtf/Compiler.h:
* wtf/FilePrintStream.h:
* wtf/RunLoop.h:
* wtf/StringPrintStream.h:
2014-01-16 Alberto Garcia <berto@igalia.com>
Source/WTF/wtf/Atomics.h:300: Error: bad register name `%bpl'
https://bugs.webkit.org/show_bug.cgi?id=126985
Reviewed by Csaba Osztrogonác.
Use the 'q' constraint to force using a register that allows
access to its lower byte.
* wtf/Atomics.h:
(WTF::weakCompareAndSwap):
2014-01-16 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Fix unnecessary checks for Clang compiler if the compiler is MSVC.
https://bugs.webkit.org/show_bug.cgi?id=127037
Reviewed by Csaba Osztrogonác.
Inside the #if defined(_MSC_VER) there's no need for checking whether the compiler is not Clang.
* wtf/Compiler.h:
2014-01-16 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Require at least GCC version 4.7
https://bugs.webkit.org/show_bug.cgi?id=127049
Reviewed by Csaba Osztrogonác.
r161770 added a template alias, so the minimum GCC version is 4.7 now.
Also fixed a typo in the error message about old MSVC version.
* wtf/Compiler.h:
2014-01-15 Alberto Garcia <berto@igalia.com>
[GTK] v2.3.3 fails to build in Debian / FreeBSD
https://bugs.webkit.org/show_bug.cgi?id=126502
Reviewed by Mark Lam.
* wtf/Platform.h: Add LLINT support to FreeBSD.
2014-01-15 Anders Carlsson <andersca@apple.com>
Get rid of RefCountedCustomAllocated
https://bugs.webkit.org/show_bug.cgi?id=127051
Reviewed by Antti Koivisto.
It's not used anywhere anymore, get rid of it.
* wtf/RefCounted.h:
* wtf/SizeLimits.cpp:
2014-01-14 Anders Carlsson <andersca@apple.com>
And yet another build fix.
* wtf/SizeLimits.cpp:
2014-01-14 Anders Carlsson <andersca@apple.com>
Another build fix.
* wtf/SizeLimits.cpp:
2014-01-14 Daniel Bates <dabates@apple.com>
[iOS] Enable WTF_USE_UIKIT_EDITING
* wtf/Platform.h:
2014-01-14 Daniel Bates <dabates@apple.com>
[iOS] Enable QuickLook
https://bugs.webkit.org/show_bug.cgi?id=126954
Reviewed by David Kilzer.
* wtf/Platform.h:
2014-01-14 Anders Carlsson <andersca@apple.com>
Get rid of ThreadRestrictionVerifier
https://bugs.webkit.org/show_bug.cgi?id=127004
Reviewed by Sam Weinig.
The ThreadRestrictionVerifier mechanism has been turned off for a while
since it doesn't really have a good solution for objects that are passed between threads.
Instead of having dead code in the tree, just get rid of it.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/RefCounted.h:
(WTF::RefCountedBase::ref):
(WTF::RefCountedBase::hasOneRef):
(WTF::RefCountedBase::refCount):
(WTF::RefCountedBase::derefBase):
* wtf/ThreadRestrictionVerifier.h: Removed.
2014-01-14 Benjamin Poulain <benjamin@webkit.org>
Enable the experimental selector code generator by default
https://bugs.webkit.org/show_bug.cgi?id=126953
Reviewed by Gavin Barraclough.
* wtf/Platform.h:
Enable CSS_SELECTOR_JIT on OS X x86_64 by default.
The feature is not ready to ship but it is stable enough to enable
for the bots and nightly.
2014-01-14 Brian J. Burg <burg@cs.washington.edu>
Add ENABLE(WEB_REPLAY) feature flag to the build system
https://bugs.webkit.org/show_bug.cgi?id=126949
Reviewed by Joseph Pecoraro.
* wtf/FeatureDefines.h: for now, disable the flag by default.
2014-01-14 peavo@outlook.com <peavo@outlook.com>
[Win] Application name in user agent string is truncated.
https://bugs.webkit.org/show_bug.cgi?id=126810
Reviewed by Anders Carlsson.
* wtf/text/StringConcatenate.h:
(WTF::tryMakeString): Add missing 8 bit check for last argument.
2014-01-13 Anders Carlsson <andersca@apple.com>
Move another deprecated symbol to DeprecatedSymbolsUsedBySafari.mm
https://bugs.webkit.org/show_bug.cgi?id=126909
Reviewed by Ryosuke Niwa.
* wtf/MainThread.cpp:
* wtf/MainThread.h:
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm:
(WTF::callOnMainThread):
2014-01-13 Anders Carlsson <andersca@apple.com>
Fix Windows build.
* wtf/ThreadingWin.cpp:
(WTF::initializeThreading):
2014-01-13 Anders Carlsson <andersca@apple.com>
Remove AtomicallyInitializedStatic
https://bugs.webkit.org/show_bug.cgi?id=126864
Reviewed by Andreas Kling.
Remove the lockAtomicallyInitializedStaticMutex and unlockAtomicallyInitializedStaticMutex functions
everywhere except on Mac (where they unfortunately were used by Safari).
On Mac, add them to a separate file which will hold functions and symbols that we would like
to remove but that are used by Safari. Reimplement them in terms of std::call_once and std::mutex.
* WTF.xcodeproj/project.pbxproj:
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
* wtf/ThreadingWin.cpp:
(WTF::initializeThreading):
* wtf/mac/DeprecatedSymbolsUsedBySafari.mm: Added.
(WTF::atomicallyInitializedStaticMutex):
(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):
2014-01-13 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r161855.
http://trac.webkit.org/changeset/161855
https://bugs.webkit.org/show_bug.cgi?id=126880
Sister commit of r161852 (Requested by kling on #webkit).
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
2014-01-13 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r161852.
http://trac.webkit.org/changeset/161852
https://bugs.webkit.org/show_bug.cgi?id=126877
Broke ToT with system Safari (Requested by kling on #webkit).
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):
* wtf/ThreadingWin.cpp:
(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):
(WTF::initializeThreading):
2014-01-12 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r161840.
http://trac.webkit.org/changeset/161840
https://bugs.webkit.org/show_bug.cgi?id=126870
Caused jsscore and layout test failures (Requested by smfr on
#webkit).
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::replace):
* wtf/text/WTFString.h:
(WTF::String::isAllSpecialCharacters):
2014-01-12 Dan Bernstein <mitz@apple.com>
Fix an assertion failure in initializeDates() when launching Safari, which was introduced in r161852.
Reviewed by Andy Estes.
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading): Set isInitialized to true.
2014-01-12 Darin Adler <darin@apple.com>
Add PLATFORM(COCOA) and USE(FOUNDATION)
https://bugs.webkit.org/show_bug.cgi?id=126859
Reviewed by Anders Carlsson.
* wtf/Platform.h: Added PLATFORM(COCOA), which for now is set at exactly the same
times that PLATFORM(MAC) is. Added USE(FOUNDATION), which is set at the same times
that PLATFORM(COCOA) is. Re-organize the PLATFORM(MAC) and PLATFORM(IOS) settings
in the header so they are a bit easier to read. Put HAVE_LANGINFO_H in with the
rest of the OS(UNIX) settings and put HAVE_READLINE in with the rest of the
OS(DARWIN) settings. Tweak formatting a bit.
2014-01-12 Anders Carlsson <andersca@apple.com>
Remove AtomicallyInitializedStatic
https://bugs.webkit.org/show_bug.cgi?id=126864
Reviewed by Darin Adler.
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
* wtf/ThreadingWin.cpp:
(WTF::initializeThreading):
2014-01-12 Darin Adler <darin@apple.com>
Add deprecatedCharacters as a synonym for characters and convert most call sites
https://bugs.webkit.org/show_bug.cgi?id=126858
Reviewed by Anders Carlsson.
* wtf/text/AtomicString.cpp:
(WTF::HashAndUTF8CharactersTranslator::equal):
(WTF::SubstringTranslator::hash):
(WTF::SubstringTranslator::equal):
* wtf/text/AtomicString.h:
(WTF::AtomicString::characters):
* wtf/text/Base64.cpp:
(WTF::base64Decode):
(WTF::base64URLDecode):
* wtf/text/StringBuilder.h:
(WTF::StringBuilder::characters):
(WTF::StringBuilder::deprecatedCharacters):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::getData16SlowCase):
(WTF::StringImpl::upper):
(WTF::StringImpl::lower):
(WTF::StringImpl::find):
(WTF::StringImpl::findIgnoringCase):
* wtf/text/StringImpl.h:
(WTF::StringImpl::characters):
(WTF::StringImpl::deprecatedCharacters):
(WTF::StringImpl::getCharacters<UChar>):
(WTF::equalIgnoringNullity):
* wtf/text/WTFString.cpp:
(WTF::String::append):
(WTF::String::appendInternal):
(WTF::String::insert):
(WTF::String::truncate):
(WTF::String::percentage):
* wtf/text/WTFString.h:
(WTF::String::characters):
(WTF::String::deprecatedCharacters):
(WTF::String::getCharactersWithUpconvert<UChar>):
(WTF::append):
Use deprecatedCharacters instead of characters.
2014-01-12 Anders Carlsson <andersca@apple.com>
Remove the last remaining uses of AtomicallyInitializedStatic
https://bugs.webkit.org/show_bug.cgi?id=126863
Reviewed by Darin Adler.
* wtf/HashTable.cpp:
(WTF::hashTableStatsMutex):
(WTF::HashTableStats::recordCollisionAtCount):
(WTF::HashTableStats::dumpStats):
* wtf/unicode/icu/CollatorICU.cpp:
(WTF::cachedCollatorMutex):
(WTF::Collator::createCollator):
(WTF::Collator::releaseCollator):
2014-01-12 Darin Adler <darin@apple.com>
Reduce use of String::characters
https://bugs.webkit.org/show_bug.cgi?id=126854
Reviewed by Sam Weinig.
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::replace): Use characters16 here since is8Bit was already checked.
* wtf/text/WTFString.h:
(WTF::String::isAllSpecialCharacters): Use characters16 here since is8Bit was
already checked. Also renamed "len" to "length".
2014-01-12 Anders Carlsson <andersca@apple.com>
Replace more uses of AtomicallyInitializedStatic with std::call_once
https://bugs.webkit.org/show_bug.cgi?id=126847
Reviewed by Sam Weinig.
* wtf/Forward.h:
Forward declare NeverDestroyed.
2014-01-11 Zan Dobersek <zdobersek@igalia.com>
Unreviewed build fix for ports using GCC after r161770.
* wtf/IteratorAdaptors.h:
(WTF::FilterIterator::operator*): Replicating r161797, the const qualifier for
FilterIterator::operator*() is removed since it clashes with some iterator types
that are also const, causing compilation failures with GCC.
2014-01-11 Anders Carlsson <andersca@apple.com>
Use std::call_once instead of AtomicallyInitializedStatic when creating a HTTP header set
https://bugs.webkit.org/show_bug.cgi?id=126837
Reviewed by Sam Weinig.
* wtf/HashSet.h:
(WTF::HashSet::HashSet):
Add a HashSet constructor that takes an initializer list.
2014-01-11 Sam Weinig <sam@webkit.org>
Fix the EFL build.
* wtf/IteratorAdaptors.h:
(WTF::TransformIterator::operator*):
2014-01-11 Sam Weinig <sam@webkit.org>
Add support for null StringViews
https://bugs.webkit.org/show_bug.cgi?id=126827
Reviewed by Anders Carlsson.
- Do some style cleanup while in the neighborhood.
* wtf/text/StringView.h:
(WTF::StringView::StringView):
Add default constructor to create a null StringView.
(WTF::StringView::isNull):
Add isNull(), matching the semantics of String.
(WTF::StringView::operator bool):
Add an explicit operator bool() to allow use in if-statements.
2014-01-11 Sam Weinig <sam@webkit.org>
Clean up iterator filter / iterator range code
https://bugs.webkit.org/show_bug.cgi?id=126817
Reviewed by Anders Carlsson.
- Renames IteratorPair to IteratorRange.
- Splits FilterIterator into FilterIterator (which now only filters) and
TransformIterator (which does the transform part of the old FilterIterator).
Move both of these to IteratorAdaptors.h
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FilterIterator.h: Removed.
Add/remove files.
* wtf/HashMap.h:
(WTF::HashMap::keys):
(WTF::HashMap::values):
* wtf/RefPtrHashMap.h:
Update for rename to IteratorRange. Simplify by using makeIteratorRange().
* wtf/IteratorAdaptors.h: Copied from wtf/FilterIterator.h.
(WTF::FilterIterator::FilterIterator):
(WTF::FilterIterator::operator*):
(WTF::makeFilterIterator):
(WTF::TransformIterator::TransformIterator):
(WTF::TransformIterator::operator++):
(WTF::TransformIterator::operator*):
(WTF::TransformIterator::operator==):
(WTF::TransformIterator::operator!=):
(WTF::makeTransformIterator):
Split up filtering and transforming. Add makeFilterIterator() and makeTransformIterator()
helpers.
* wtf/IteratorPair.h: Removed.
* wtf/IteratorRange.h: Copied from wtf/IteratorPair.h.
(WTF::IteratorRange::IteratorRange):
(WTF::makeIteratorRange):
Renamed to IteratorRange and adds makeIteratorRange() helper.
2014-01-10 David Kilzer <ddkilzer@apple.com>
Clean up architectures in xcconfig files
<http://webkit.org/b/126794>
Reviewed by Andy Estes.
* Configurations/Base.xcconfig:
- Add new arch.
2014-01-10 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
[EFL][JSC] Enable udis86 disassembler on efl.
https://bugs.webkit.org/show_bug.cgi?id=125502
Reviewed by Michael Saboff.
Enable udis86 disassembler on efl and fix build warnings.
* wtf/Platform.h:
Enable udis86 disassembler on EFL.
2014-01-10 Hunseop Jeong <hs85.jeong@samsung.com>
[EFL] Enable the DFG_JIT on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=126742
Reviewed by Gyuyoung Kim.
Turn on ENABLE_DFG_JIT on ARMv7 for EFL.
* wtf/Platform.h:
2014-01-07 Mark Hahnenberg <mhahnenberg@apple.com>
Marking should be generational
https://bugs.webkit.org/show_bug.cgi?id=126552
Reviewed by Geoffrey Garen.
* wtf/Bitmap.h:
(WTF::WordType>::count): Added a cast that became necessary when Bitmap
is used with smaller types than int32_t.
2014-01-09 Simon Fraser <simon.fraser@apple.com>
Enable async scrolling for iOS
https://bugs.webkit.org/show_bug.cgi?id=126730
Reviewed by Tim Horton.
Turn on ENABLE_ASYNC_SCROLLING for iOS.
* wtf/FeatureDefines.h:
2014-01-09 Anders Carlsson <andersca@apple.com>
Remove Blackberry and QNX bits from WTF
https://bugs.webkit.org/show_bug.cgi?id=126726
Reviewed by Benjamin Poulain.
* wtf/Assertions.cpp:
* wtf/Atomics.h:
* wtf/CurrentTime.cpp:
(WTF::currentCPUTime):
* wtf/DateMath.cpp:
* wtf/DisallowCType.h:
* wtf/FeatureDefines.h:
* wtf/InlineASM.h:
* wtf/MathExtras.h:
* wtf/NumberOfCores.cpp:
(WTF::numberOfProcessorCores):
* wtf/OSAllocatorPosix.cpp:
(WTF::OSAllocator::reserveUncommitted):
(WTF::OSAllocator::commit):
(WTF::OSAllocator::decommit):
* wtf/Platform.h:
* wtf/PlatformBlackBerry.cmake: Removed.
* wtf/RAMSize.cpp:
(WTF::computeRAMSize):
* wtf/StackBounds.cpp:
* wtf/ThreadingPthreads.cpp:
(WTF::initializeThreading):
(WTF::initializeCurrentThreadInternal):
* wtf/blackberry/MainThreadBlackBerry.cpp: Removed.
* wtf/blackberry/RunLoopBlackBerry.cpp: Removed.
* wtf/text/AtomicString.h:
* wtf/text/StringImpl.h:
* wtf/text/WTFString.h:
2014-01-09 Daniel Bates <dabates@apple.com>
[iOS] Upstream WebCore/platform changes
https://bugs.webkit.org/show_bug.cgi?id=126654
Rubber-stamped by David Kilzer.
* wtf/MainThread.cpp:
(WTF::canAccessThreadLocalDataForThread):
* wtf/MainThread.h:
2014-01-09 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r161540.
http://trac.webkit.org/changeset/161540
https://bugs.webkit.org/show_bug.cgi?id=126704
Caused assertion failures on multiple tests (Requested by ap
on #webkit).
* wtf/Bitmap.h:
(WTF::WordType>::count):
2014-01-07 Mark Hahnenberg <mhahnenberg@apple.com>
Marking should be generational
https://bugs.webkit.org/show_bug.cgi?id=126552
Reviewed by Geoffrey Garen.
* wtf/Bitmap.h:
(WTF::WordType>::count): Added a cast that became necessary when Bitmap
is used with smaller types than int32_t.
2014-01-08 Anders Carlsson <andersca@apple.com>
Add WTF::StringView and use it for grammar checking
https://bugs.webkit.org/show_bug.cgi?id=126644
Reviewed by Antti Koivisto.
Add a new StringView class which is an immutable reference to either an 8-bit or a 16-bit string.
This makes it easier to pass substrings around without having to either copy string data
or upconvert and use UChar pointers.
The StringView class is very loosely based on the std::string_view class which is proposed for a future version of C++,
see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3609.html for more details.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Forward.h:
* wtf/text/StringView.h: Added.
(WTF::StringView::StringView):
(WTF::StringView::empty):
(WTF::StringView::characters8):
(WTF::StringView::characters16):
(WTF::StringView::isEmpty):
(WTF::StringView::length):
(WTF::StringView::is8Bit):
(WTF::StringView::substring):
(WTF::StringView::toString):
(WTF::StringView::toStringWithoutCopying):
(WTF::StringView::encodedCharacters):
2014-01-07 David Farler <dfarler@apple.com>
[ASAN] Building with trunk clang corrupts sandbox profile with comment from Compiler.h
https://bugs.webkit.org/show_bug.cgi?id=124532
Reviewed by David Kilzer.
* wtf/Compiler.h:
Remove this quirk - it does nothing.
2014-01-06 Filip Pizlo <fpizlo@apple.com>
Get rid of ENABLE(VALUE_PROFILER). It's on all the time now.
Rubber stamped by Mark Hahnenberg.
* wtf/Platform.h:
2014-01-06 Zan Dobersek <zdobersek@igalia.com>
Remove using directives for the std namespace from WTF
https://bugs.webkit.org/show_bug.cgi?id=126524
Reviewed by Alexey Proskuryakov.
Remove the using directives for the std namespace throughout the WTF code.
The more explicit std:: nested name specifier should be used instead.
* wtf/MediaTime.cpp:
(WTF::MediaTime::createWithFloat):
(WTF::MediaTime::createWithDouble):
* wtf/text/StringImpl.cpp:
(WTF::StringImpl::create):
(WTF::StringImpl::lower):
(WTF::StringImpl::upper):
(WTF::StringImpl::foldCase):
(WTF::StringImpl::find):
(WTF::StringImpl::findIgnoringCase):
(WTF::reverseFindInner):
(WTF::StringImpl::reverseFind):
(WTF::reverseFindIgnoringCaseInner):
(WTF::StringImpl::reverseFindIgnoringCase):
(WTF::StringImpl::replace):
(WTF::StringImpl::utf8ForCharacters):
(WTF::StringImpl::utf8ForRange):
* wtf/text/WTFString.cpp:
(WTF::String::append):
(WTF::String::appendInternal):
(WTF::String::insert):
(WTF::String::substringSharingImpl):
(WTF::String::fromUTF8):
(WTF::toIntegralType):
* wtf/win/RunLoopWin.cpp:
2014-01-03 Mark Hahnenberg <mhahnenberg@apple.com>
DoublyLinkedLists can't be concatenated
https://bugs.webkit.org/show_bug.cgi?id=125976
Reviewed by Filip Pizlo.
* wtf/DoublyLinkedList.h:
(WTF::DoublyLinkedList<T>::append):
2014-01-04 Zan Dobersek <zdobersek@igalia.com>
Explicitly use the std:: nested name specifier when using std::pair, std::make_pair
https://bugs.webkit.org/show_bug.cgi?id=126439
Reviewed by Andreas Kling.
* wtf/VectorTraits.h: Stop bringing std::pair into the current scope.
2014-01-02 Gavin Barraclough <barraclough@apple.com>
Refactor NSActivity handling code from ChildProcess to UserActivity
https://bugs.webkit.org/show_bug.cgi?id=126330
Reviewed by Sam Weinig.
UserActivity is a mechanism to express to the operating system (where appropriate)
that a user initiated activity is taking place, and as such that resources should be
made available to the process accordingly.
Currently we hold a single NSActivity, at the WebKit layer. This refactoring allows us
to hold different activity tokens for different user actions (which simplifies the
handling, and aides debugging since the token can more accurately express the activity
taking place), and also will allow us to avoid the layering difficulty of calling back
up the stack to WebKit to register that an activity is taking place.
* wtf/Platform.h:
- added HAVE_NS_ACTIVITY.
2013-12-30 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r161157, r161158, r161160, r161161,
r161163, and r161165.
http://trac.webkit.org/changeset/161157
http://trac.webkit.org/changeset/161158
http://trac.webkit.org/changeset/161160
http://trac.webkit.org/changeset/161161
http://trac.webkit.org/changeset/161163
http://trac.webkit.org/changeset/161165
https://bugs.webkit.org/show_bug.cgi?id=126332
Broke WebKit2 on Mountain Lion (Requested by ap on #webkit).
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Forward.h:
* wtf/PlatformWin.cmake:
* wtf/threads/BinarySemaphore.cpp: Added.
(WTF::BinarySemaphore::BinarySemaphore):
(WTF::BinarySemaphore::~BinarySemaphore):
(WTF::BinarySemaphore::signal):
(WTF::BinarySemaphore::wait):
* wtf/threads/BinarySemaphore.h: Added.
(WTF::BinarySemaphore::event):
* wtf/threads/win/BinarySemaphoreWin.cpp: Added.
(WTF::BinarySemaphore::BinarySemaphore):
(WTF::BinarySemaphore::~BinarySemaphore):
(WTF::BinarySemaphore::signal):
(WTF::BinarySemaphore::wait):
2013-12-30 Anders Carlsson <andersca@apple.com>
Replace yield() and pauseBriefly() with std::this_thread::yield()
https://bugs.webkit.org/show_bug.cgi?id=126105
Reviewed by Sam Weinig.
* wtf/ByteSpinLock.h:
(WTF::ByteSpinLock::lock):
* wtf/Threading.h:
* wtf/ThreadingPrimitives.h:
* wtf/ThreadingPthreads.cpp:
* wtf/ThreadingWin.cpp:
2013-12-30 Sam Weinig <sam@webkit.org>
Remove unnecessary non-const overload in IteratorPair
https://bugs.webkit.org/show_bug.cgi?id=126314
Reviewed by Anders Carlsson.
* wtf/IteratorPair.h:
2013-12-30 Sam Weinig <sam@webkit.org>
Remove WTF's BinarySemaphore
https://bugs.webkit.org/show_bug.cgi?id=126310
Reviewed by Anders Carlsson.
It's unused. Also remove the now empty wtf/threads directory.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Forward.h:
* wtf/PlatformWin.cmake:
* wtf/threads: Removed.
* wtf/threads/BinarySemaphore.cpp: Removed.
* wtf/threads/BinarySemaphore.h: Removed.
* wtf/threads/win: Removed.
* wtf/threads/win/BinarySemaphoreWin.cpp: Removed.
2013-12-30 Roger Fong <roger_fong@apple.com>
[Windows] Unreviewed build fix following r160959.
* wtf/Platform.h:
2013-12-30 Anders Carlsson <andersca@apple.com>
Replace WTF::ThreadingOnce with std::call_once
https://bugs.webkit.org/show_bug.cgi?id=126215
Reviewed by Sam Weinig.
* GNUmakefile.list.am:
* wtf/CompilationThread.cpp:
(WTF::initializeCompilationThreads):
* wtf/ThreadingOnce.h: Removed.
2013-12-26 Sam Weinig <sam@webkit.org>
Move FilterIterator and IteratorPair to WTF and reimplement HashMap::keys() and HashMap::values() using IteratorPair
https://bugs.webkit.org/show_bug.cgi?id=126253
Reviewed by Anders Carlsson.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
Add new files.
* wtf/HashMap.h:
* wtf/RefPtrHashMap.h:
Remove the old implementation of keys() and values() and replace it with one
that uses IteratorPair.
* wtf/FilterIterator.h: Copied from Source/WebKit2/Shared/FilterIterator.h.
* wtf/IteratorPair.h: Copied from Source/WebKit2/Shared/IteratorPair.h.
2013-12-27 Daniel Bates <dabates@apple.com>
[iOS] Upstream WebCore/page changes
https://bugs.webkit.org/show_bug.cgi?id=126180
Reviewed by Darin Adler.
* wtf/FeatureDefines.h: Define ENABLE_IOS_TOUCH_EVENTS to be enabled by default
when building iOS with ENABLE(TOUCH_EVENTS).
2013-12-25 Thiago de Barros Lacerda <thiago.lacerda@openbossa.org>
[Nix] Building with DRAG_SUPPORT enabled
https://bugs.webkit.org/show_bug.cgi?id=126233
Reviewed by Daniel Bates.
* wtf/nix/FeatureDefinesNix.h:
2013-12-24 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r160959.
http://trac.webkit.org/changeset/160959
https://bugs.webkit.org/show_bug.cgi?id=126222
Caused Windows build to fail (Requested by rfong on #webkit).
* wtf/ByteSpinLock.h:
(WTF::ByteSpinLock::lock):
* wtf/Threading.h:
* wtf/ThreadingPrimitives.h:
(WTF::pauseBriefly):
* wtf/ThreadingPthreads.cpp:
(WTF::yield):
* wtf/ThreadingWin.cpp:
(WTF::yield):
2013-12-23 Benjamin Poulain <bpoulain@apple.com>
Fix the build after r161031
I enabled ENABLE_CSS_SELECTOR_JIT by accident.
* wtf/Platform.h:
2013-12-23 Zan Dobersek <zdobersek@igalia.com>
[GTK] Clean up compiler optimizations flags for libWTF, libJSC
https://bugs.webkit.org/show_bug.cgi?id=126157
Reviewed by Gustavo Noronha Silva.
* GNUmakefile.am: Remove the -fstrict-aliasing and -O3 compiler flags for libWTF.la. -O3 gets
overridden by -O2 that's listed in CXXFLAGS (or -O0 in case of debug builds) and -fstrict-aliasing
is enabled when -O2 is used (and shouldn't be enabled in debug builds anyway).
2013-12-20 Anders Carlsson <andersca@apple.com>
Replace yield() and pauseBriefly() with std::this_thread::yield()
https://bugs.webkit.org/show_bug.cgi?id=126105
Reviewed by Sam Weinig.
* wtf/ByteSpinLock.h:
(WTF::ByteSpinLock::lock):
* wtf/Threading.h:
* wtf/ThreadingPrimitives.h:
* wtf/ThreadingPthreads.cpp:
* wtf/ThreadingWin.cpp:
2013-12-20 Anders Carlsson <andersca@apple.com>
Speed up case folding for 8-bit strings
https://bugs.webkit.org/show_bug.cgi?id=126098
Reviewed by Geoffrey Garen.
Add a case folding lookup table for 8-bit strings and use it instead of calling down to u_foldCase.
On a simple microbenchmark using a lookup table is about 15x faster.
* wtf/text/StringHash.h:
(WTF::CaseFoldingHash::foldCase):
* wtf/text/StringImpl.cpp:
(WTF::equalIgnoringCase):
* wtf/text/StringImpl.h:
2013-12-20 Myles C. Maxfield <mmaxfield@apple.com>
Faster implementation of text-decoration-skip: ink
https://bugs.webkit.org/show_bug.cgi?id=125718
Reviewed by Simon Fraser.
This creates a new preprocessor define, CSS3_TEXT_DECORATION_SKIP_INK,
which enables the use of the text-decoration-skip: ink CSS value.
Creating this new value simplifies the logic about when to enable the
codepath for this CSS value.
* wtf/Platform.h:
2013-12-20 Simon Fraser <simon.fraser@apple.com>
Change "threaded scrolling" terminology to "asynchronous scrolling"
https://bugs.webkit.org/show_bug.cgi?id=126094
Reviewed by Tim Horton.
Rename ENABLE_THREADED_SCROLLING to ENABLE_ASYNC_SCROLLING.
* wtf/FeatureDefines.h:
2013-12-20 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
Build fails in debug mode after r160834.
https://bugs.webkit.org/show_bug.cgi?id=126059
Reviewed by Csaba Osztrogonác.
Debug mode build failed due to comparing signed and unsigned in
ASSERT(). Now both values are unsigned.
* wtf/dtoa/double-conversion.cc:
2013-12-19 Alex Christensen <achristensen@webkit.org>
Final preparations for GStreamer on Windows.
https://bugs.webkit.org/show_bug.cgi?id=125958
Reviewed by Benjamin Poulain.
* WTF.vcxproj/WTFDebugWinCairo.props:
* WTF.vcxproj/WTFReleaseWinCairo.props:
Include WinCairo.props.
* wtf/Platform.h:
Use GLib and GStreamer on WinCairo with video.
2013-12-18 Daniel Bates <dabates@apple.com>
WTF, JavaScriptCore fails to build with trunk clang: operators new, new[],
delete, delete[] cannot be declared inline
https://bugs.webkit.org/show_bug.cgi?id=124186
<rdar://problem/15644039>
Reviewed by Geoffrey Garen and Anders Carlsson.
Following <http://llvm.org/viewvc/llvm-project?view=revision&revision=193044>
(http://llvm.org/bugs/show_bug.cgi?id=17591>), Clang emits warnings when
operator new, delete are inlined. Such definitions cannot be inline per
replacement.functions (17.6.4.6/3) of the C++ standard. For now,
disable these warnings instead of exporting these functions.
* wtf/FastMalloc.h:
2013-12-19 Hugo Parente Lima <hugo.lima@openbossa.org>
WTF fails to compile with gcc 4.8.2 and -Werror=array-bounds
https://bugs.webkit.org/show_bug.cgi?id=125936
Reviewed by Anders Carlsson.
* wtf/dtoa/double-conversion.cc: Use a unsigned instead of int on buffer_pos type.
2013-12-19 Peter Szanka <h868064@stud.u-szeged.hu>
Delete RVCT related code parts.
https://bugs.webkit.org/show_bug.cgi?id=125626
Reviewed by Csaba Osztrogonác.
* wtf/Compiler.h: follow-up fix for r160648, remove an unnecessary comment.
2013-12-18 Alex Christensen <achristensen@webkit.org>
[WinCairo] Preparation for GStreamer on Windows.
https://bugs.webkit.org/show_bug.cgi?id=125946
Reviewed by Brent Fulgham.
* WTF.vcxproj/WTF.vcxproj:
Use new GStreamer property sheets for WinCairo.
2013-12-18 Mark Hahnenberg <mhahnenberg@apple.com>
DFG should have a separate StoreBarrier node
https://bugs.webkit.org/show_bug.cgi?id=125530
Reviewed by Filip Pizlo.
* wtf/Platform.h: Added an #define for ENABLE(GGC) which will be used for landing things related to GenGC.
2013-12-16 Daniel Bates <dabates@apple.com>
[iOS] Upstream WebCore/html changes
https://bugs.webkit.org/show_bug.cgi?id=125765
Reviewed by Darin Adler.
Defined ENABLE_IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, enabled by default on iOS.
* wtf/FeatureDefines.h:
2013-12-17 Alex Christensen <achristensen@webkit.org>
Compile fix for WebGL on Windows without GRAPHICS_SURFACE.
https://bugs.webkit.org/show_bug.cgi?id=125867
Reviewed by Martin Robinson.
* wtf/FeatureDefines.h:
Removed unused ENABLE_GLIB_SUPPORT macro.
* wtf/Platform.h:
Don't use GRAPHICS_SURFACE for WebGL on Windows.
2013-12-17 Alex Christensen <achristensen@webkit.org>
[Win] Fixed linker error with GStreamer.
https://bugs.webkit.org/show_bug.cgi?id=124861
Reviewed by Martin Robinson.
* wtf/gobject/GOwnPtr.cpp:
(WTF::GError):
* wtf/gobject/GOwnPtr.h:
Added WTF_EXPORT_PRIVATE to freeOwnedGPtr<GError> declaration and definition.
2013-12-17 Benjamin Poulain <benjamin@webkit.org>
Add a simple register allocator to WebCore for x86_64
https://bugs.webkit.org/show_bug.cgi?id=125771
Reviewed by Geoffrey Garen.
* wtf/Platform.h: Add a new flag "CSS_SELECTOR_JIT" to guard
an experimental JIT compiler in WebCore.
2013-12-16 Anders Carlsson <andersca@apple.com>
Remove EnumClass.h from WTF
https://bugs.webkit.org/show_bug.cgi?id=125820
Reviewed by Darin Adler.
All compilers we build on now support real strongly typed enums, so we can remove the ENUM_CLASS version.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CheckedArithmetic.h:
* wtf/EnumClass.h: Removed.
2013-12-16 Brent Fulgham <bfulgham@apple.com>
[Win] Remove dead code after conversion to VS2013
https://bugs.webkit.org/show_bug.cgi?id=125795
Reviewed by Darin Adler.
* wtf/Assertions.h: Include <inttypes.h> now that it exists.
* wtf/Compiler.h: Update compiler checks for VS2013, and
enable support for NEVER_INLINE
* wtf/HashFunctions.h:
(WTF::PtrHash::hash): Remove compiler workaround.
* wtf/MathExtras.h: Remove C99 functions that are now supplied
by the MS runtime library.
* wtf/Platform.h: Remove old MSVC support flags.
* wtf/StdLibExtras.h: Remove old MSVC workaround code.
2013-12-16 Alex Christensen <achristensen@webkit.org>
Fixed Win64 build on VS2013.
https://bugs.webkit.org/show_bug.cgi?id=125753
Reviewed by Brent Fulgham.
* WTF.vcxproj/WTF.vcxproj:
Added correct PlatformToolset for 64-bit builds.
2013-12-16 Peter Szanka <h868064@stud.u-szeged.hu>
Delete RVCT related code parts.
https://bugs.webkit.org/show_bug.cgi?id=125626
Reviewed by Darin Adler.
* wtf/Assertions.h:
* wtf/Compiler.h:
* wtf/FastMalloc.h:
* wtf/Platform.h:
2013-12-13 Brent Fulgham <bfulgham@apple.com>
[Win] Remove Pre-VS2013 support code.
https://bugs.webkit.org/show_bug.cgi?id=125693
Reviewed by Darin Adler.
* wtf/StringPrintStream.cpp:
(WTF::StringPrintStream::vprintf): Use va_copy, like a civilized person.
2013-12-12 Darin Adler <darin@apple.com>
Incorrect handling of non-ASCII characters in WTF::base64DecodeInternal
https://bugs.webkit.org/show_bug.cgi?id=125658
Reviewed by Alexey Proskuryakov.
* wtf/text/Base64.cpp:
(WTF::base64EncodeInternal): Use a reference to an array instead of a pointer
for the table argument type so we check the size of the array at the call site.
(WTF::base64DecodeInternal): Ditto. Also added an bounds check before using the
table so we don't load some random value for non-ASCII characters.
2013-12-13 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed build fix after r160548
* WTF.vcxproj/WTFGenerated.vcxproj: Specify that we are using
the vs12_xp target for Makefile-based projects.
2013-12-13 Anders Carlsson <andersca@apple.com>
Require variadic templates to build WebKit
https://bugs.webkit.org/show_bug.cgi?id=125701
Reviewed by Andreas Kling.
* wtf/Compiler.h:
Add an #error if variadic templates are disabled.
* wtf/NeverDestroyed.h:
* wtf/PassRef.h:
* wtf/StdLibExtras.h:
Remove a bunch of COMPILER_SUPPORTS(CXX_VARIADIC_TEMPLATES) #ifdefs.
2013-12-13 Peter Szanka <h868064@stud.u-szeged.hu>
Delete INTEL C compiler related code parts.
https://bugs.webkit.org/show_bug.cgi?id=125625
Reviewed by Darin Adler.
* wtf/Assertions.h:
* wtf/Compiler.h:
2013-12-13 Brent Fulgham <bfulgham@apple.com>
[Win] Switch WebKit solution to Visual Studio 2013
https://bugs.webkit.org/show_bug.cgi?id=125192
Reviewed by Anders Carlsson.
* WTF.vcxproj/WTF.vcxproj: Update for VS2013
* WTF.vcxproj/WTF.vcxproj.filters: Ditto
2013-12-12 Brady Eidson <beidson@apple.com>
DatabaseProcess IndexedDB: Establish a metadata backing store on disk
https://bugs.webkit.org/show_bug.cgi?id=125258
Reviewed by Alexey Proskuryakov, Anders Carlsson, and Tim Horton.
* wtf/text/WTFString.h: Export toUInt64Strict().
2013-12-12 Sam Weinig <sam@webkit.org>
Replace uses of WTF::BitArray with std::bitset
https://bugs.webkit.org/show_bug.cgi?id=125642
Reviewed by Anders Carlsson.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/BitArray.h: Removed.
* wtf/CMakeLists.txt:
2013-12-11 David Kilzer <ddkilzer@apple.com>
Define m_hasBadParent in InlineBox if defined(ADDRESS_SANITIZER)
<http://webkit.org/b/125329>
Reviewed by Darin Adler.
* wtf/Assertions.h: Define macro
ASSERT_WITH_SECURITY_IMPLICATION_DISABLED based on whether
ASSERT_WITH_SECURITY_IMPLICATION() is enabled.
2013-12-11 Brendan Long <b.long@cablelabs.com>
Type punning error in MD5.cpp
https://bugs.webkit.org/show_bug.cgi?id=125412
Reviewed by Darin Adler.
* wtf/MD5.cpp:
(WTF::toLittleEndian): Renamed, and use memcpy instead of casting.
(WTF::MD5::addBytes): Renamed reverseBytes to toLittleEndian.
(WTF::MD5::checksum): Same, and use memcpy instead of casting to prevent type punning error.
2013-12-11 Laszlo Vidacs <lac@inf.u-szeged.hu>
Store SHA1 hash in std::array
https://bugs.webkit.org/show_bug.cgi?id=125446
Reviewed by Darin Adler.
Change Vector to std::array and use typedef.
* wtf/SHA1.cpp:
(WTF::SHA1::computeHash):
(WTF::SHA1::hexDigest):
(WTF::SHA1::computeHexDigest):
* wtf/SHA1.h:
2013-12-11 Oliver Hunt <oliver@apple.com>
Give Unique StringImpls a meaningful data pointer
https://bugs.webkit.org/show_bug.cgi?id=125598
Reviewed by Michael Saboff.
Found by code inspection. If there is a collision in an Identifier
table when comparing to a string literal we attempt to use the data
pointer (essentially this ends up being a null termination check).
Previously unique pointers just used the literal 1 as the data address
but this obviously fails when dereferenced. Instead we now make the
data pointer point to the location of the buffer pointer itself. As
the buffer pointer is initialised to 0, this satisfies the requirement
that the 0-length unique string is null terminated.
* wtf/text/StringImpl.h:
(WTF::StringImpl::StringImpl):
2013-12-10 Anders Carlsson <andersca@apple.com>
Add a HashMap constructor that takes an initializer list
https://bugs.webkit.org/show_bug.cgi?id=125551
Reviewed by Dan Bernstein.
* wtf/HashMap.h:
(WTF::HashMap::HashMap):
2013-12-10 Laszlo Vidacs <lac@inf.u-szeged.hu>
Use std::array when computing MD5 checksum
https://bugs.webkit.org/show_bug.cgi?id=125509
Reviewed by Anders Carlsson.
Added MD5::Digest type and MD5::hashSize for computing MD5 checksum.
* wtf/MD5.cpp:
(WTF::MD5::checksum):
* wtf/MD5.h:
2013-12-10 Martin Robinson <mrobinson@igalia.com>
Various fixes for the CMake GTK+ build
Reviewed by Gustavo Noronha.
* wtf/PlatformGTK.cmake: Add Zlib library to the WTF build.
2013-12-09 Sam Weinig <sam@webkit.org>
Remove FixedArray
https://bugs.webkit.org/show_bug.cgi?id=125478
Reviewed by Anders Carlsson.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FixedArray.h: Removed.
2013-12-09 Sam Weinig <sam@webkit.org>
Replace use of WTF::FixedArray with std::array
https://bugs.webkit.org/show_bug.cgi?id=125475
Reviewed by Anders Carlsson.
* wtf/AVLTree.h:
* wtf/Bitmap.h:
* wtf/SixCharacterHash.cpp:
(WTF::integerToSixCharacterHashString):
* wtf/SixCharacterHash.h:
2013-12-06 Roger Fong <roger_fong@apple.com> and Brent Fulgham <bfulgham@apple.com>
[Win] Support compiling with VS2013
https://bugs.webkit.org/show_bug.cgi?id=125353
Reviewed by Anders Carlsson.
* wtf/Compiler.h: Show proper features for VS2012 and VS2013.
* wtf/MathExtras.h: Don't implement common C99 routines when
they are available through the runtime libraries.
* wtf/RetainPtr.h:
(WTF::RetainPtr::operator bool): Added.
* wtf/StdLibExtras.h: Use Microsoft's version of make_unique
when it exists.
2013-12-06 Laszlo Vidacs <lac@inf.u-szeged.hu>
Define SHA1 hash size in SHA1.h and use it at various places.
https://bugs.webkit.org/show_bug.cgi?id=125345
Reviewed by Darin Adler.
Use SHA1::hashSize instead of local variables.
* wtf/SHA1.h: define SHA1 hash size
2013-12-05 Iain Lane <iain.lane@canonical.com>
Remove USE(LOCKFREE_THREADSAFEREFCOUNTED) from Atomics.cpp since it is
no longer defined.
https://bugs.webkit.org/show_bug.cgi?id=124502
Reviewed by Anders Carlsson.
* wtf/Atomics.cpp:
2013-12-04 Ryosuke Niwa <rniwa@webkit.org>
Enable HTMLTemplateElement by default
https://bugs.webkit.org/show_bug.cgi?id=123851
Reviewed by Antti Koivisto.
* wtf/FeatureDefines.h:
2013-12-04 Dan Bernstein <mitz@apple.com>
Replace USE(SECURITY_FRAMEWORK) with finer-grained defines
https://bugs.webkit.org/show_bug.cgi?id=125242
Reviewed by Sam Weinig.
* wtf/Platform.h: Removed definitions of WTF_USE_SECURITY_FRAMEWORK, and defined
HAVE_SEC_IDENTITY and HAVE_SEC_KEYCHAIN.
2013-12-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Push Remote Inspector debugging connection management into JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=124613
Reviewed by Timothy Hatcher.
* wtf/ios/WebCoreThread.cpp:
* wtf/ios/WebCoreThread.h:
Expose WebThreadRun/WebThreadRunSync iOS methods defined in WebCore through
WTF so that JavaScriptCore can use it. Another such method already existed.
2013-12-03 Mark Lam <mark.lam@apple.com>
testapi test crashes on Windows in WTF::Vector<wchar_t,64,WTF::UnsafeVectorOverflow>::size().
https://bugs.webkit.org/show_bug.cgi?id=121972.
Reviewed by Brent Fulgham.
* wtf/OSAllocatorWin.cpp:
(WTF::OSAllocator::decommit):
(WTF::OSAllocator::releaseDecommitted):
- Added a check to ensure that the bytes to decommit / release is not 0.
On Windows, a 0 length passed to VirtualFree() has a special meaning,
and it's not "decommit / release nothing" as one would expect. Adding
this check makes OSAllocatorWin consistent with OSAllocatorPosix for
these 2 functions.
2013-12-02 Mark Lam <mark.lam@apple.com>
Build failure when disabling JIT, YARR_JIT, and ASSEMBLER.
https://bugs.webkit.org/show_bug.cgi?id=123809.
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
- Ensure that the ASSEMBLER is enabled when the DISASSEMBLER is enabled.
2013-11-30 peavo@outlook.com <peavo@outlook.com>
[Win] Some JavaScript date tests are failing.
https://bugs.webkit.org/show_bug.cgi?id=124946
Reviewed by Brent Fulgham.
Use native Win32 api functions to compute Daylight saving time offset.
* wtf/DateMath.cpp:
(WTF::UnixTimeToFileTime): Added method to calculate Win32 specific struct FILETIME from time_t value.
(WTF::calculateDSTOffset): Use native Win32 api functions to compute Daylight saving time offset.
2013-11-28 Thiago de Barros Lacerda <thiago.lacerda@openbossa.org>
Nix Upstream: Updating Nix WTF files
https://bugs.webkit.org/show_bug.cgi?id=124980
Reviewed by Csaba Osztrogonác.
Just to sync our private repo files and the trunk, as part of the upstream process.
* wtf/DisallowCType.h:
* wtf/PlatformNix.cmake:
* wtf/nix/FeatureDefinesNix.h:
* wtf/nix/PlatformNix.h:
* wtf/nix/RunLoopNix.cpp: Added.
2013-11-28 Antti Koivisto <antti@apple.com>
Remove feature: CSS variables
https://bugs.webkit.org/show_bug.cgi?id=114119
Reviewed by Andreas Kling.
* wtf/FeatureDefines.h:
2013-11-26 Filip Pizlo <fpizlo@apple.com>
Do bytecode validation as part of testing
https://bugs.webkit.org/show_bug.cgi?id=124913
Reviewed by Oliver Hunt.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/FastBitVector.cpp: Added.
(WTF::FastBitVector::dump):
* wtf/FastBitVector.h:
(WTF::FastBitVector::resize):
(WTF::FastBitVector::bitCount):
(WTF::FastBitVector::arrayLength):
2013-11-27 Tamas Gergely <tgergely.u-szeged@partner.samsung.com>
Remove Sparc specific code.
https://bugs.webkit.org/show_bug.cgi?id=124941
Reviewed by Michael Saboff.
Sparc is not supported, remove leftover code.
* wtf/Platform.h:
* wtf/dtoa/utils.h:
2013-11-26 Marcelo Lira <marcelo.lira@openbossa.org>
Nix upstreaming - Adding build files and supporting scripts
https://bugs.webkit.org/show_bug.cgi?id=118367
Reviewed by Ryosuke Niwa.
* wtf/FeatureDefines.h:
* wtf/Platform.h:
* wtf/PlatformNix.cmake: Added.
2013-11-26 Drew Yao <ayao@apple.com>
ASSERT_WITH_SECURITY_IMPLICATION should crash in a distinct way.
https://bugs.webkit.org/show_bug.cgi?id=124757
Change ASSERT_WITH_SECURITY_IMPLICATION to access a different address from CRASH()
in order to help screen fuzzing bugs.
Reviewed by Brent Fulgham.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2013-11-24 Tim Horton <timothy_horton@apple.com>
Upstream USE(IOSURFACE) from the iOS port
https://bugs.webkit.org/show_bug.cgi?id=124814
Reviewed by Sam Weinig.
Some code guarded by USE(IOSURFACE) was recently upstreamed,
but not the definition of WTF_USE_IOSURFACE itself.
* wtf/Platform.h:
2013-11-23 Xabier Rodriguez Calvar <calvaris@igalia.com>
[GStreamer] Remove 0.10 codepath
https://bugs.webkit.org/show_bug.cgi?id=124534
Reviewed by Philippe Normand.
* wtf/Platform.h: Removed macro for GStreamer 1.0 as it is the
only codepath now.
2013-11-21 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Remove ENABLE_WORKERS
https://bugs.webkit.org/show_bug.cgi?id=105784
Reviewed by Darin Adler.
* wtf/FeatureDefines.h:
* wtf/nix/FeatureDefinesNix.h:
2013-11-21 Mark Rowe <mrowe@apple.com>
<https://webkit.org/b/124701> Fix an error in a few Xcode configuration setting files.
Reviewed by Alexey Proskuryakov.
* Configurations/Base.xcconfig:
2013-11-20 Mark Lam <mark.lam@apple.com>
Introducing VMEntryScope to update the VM stack limit.
https://bugs.webkit.org/show_bug.cgi?id=124634.
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
* wtf/StackBounds.h:
(WTF::StackBounds::StackBounds):
2013-11-18 Filip Pizlo <fpizlo@apple.com>
Allow the FTL debug dumps to include the new size field
https://bugs.webkit.org/show_bug.cgi?id=124479
Reviewed by Mark Hahnenberg.
* wtf/PrintStream.cpp:
(WTF::printInternal):
* wtf/PrintStream.h:
2013-11-17 Jer Noble <jer.noble@apple.com>
[WTF] Media time should not have a constructor which accepts a single int or float.
https://bugs.webkit.org/show_bug.cgi?id=124470
Having a constructor taking a single number value, as it's very easy to accidentially mis-
initialize a MediaTime with a double (automatically casted to a int64_t).
Reviewed by Eric Carlson.
* wtf/MediaTime.h:
2013-11-18 Csaba Osztrogonác <ossy@webkit.org>
URTBF after r159432 to make WinCairo build happy.
* wtf/text/WTFString.h:
2013-11-18 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix make distcheck.
* GNUmakefile.list.am: Add missing header file.
2013-11-16 Alexey Proskuryakov <ap@apple.com>
Use uint8_t vectors for WebCrypto data
https://bugs.webkit.org/show_bug.cgi?id=124466
Reviewed by Sam Weinig.
Binary data can be UTF-8, in which case "char*" is idiomatic, or it can be arbitrary
binary data, in which case "uint8_t*" is more common.
Changed encode functions that took "const char *" to "const void*", and decode
functions that took "Vector<char>&" now take an adapter class.
The adapter relies on Vector<char> and Vector<uint8_t> classes having an identical layout.
* wtf/text/Base64.cpp:
(WTF::base64Encode):
(WTF::base64URLEncode):
(WTF::base64DecodeInternal):
(WTF::base64Decode):
(WTF::base64URLDecode):
* wtf/text/Base64.h:
(WTF::SignedOrUnsignedCharVectorAdapter):
(WTF::ConstSignedOrUnsignedCharVectorAdapter):
(WTF::base64Encode):
(WTF::base64URLEncode):
2013-11-15 Alexey Proskuryakov <ap@apple.com>
Support exporting symmetric keys as JWK
https://bugs.webkit.org/show_bug.cgi?id=124442
Reviewed by Sam Weinig.
Base64URL encoding doesn't use '=' padding, and doesn't need any other options.
Added this mode for encode, and removed policy arguments from exposed functions.
* wtf/text/Base64.cpp:
(WTF::base64EncodeInternal):
(WTF::base64URLEncode):
(WTF::base64URLDecode):
* wtf/text/Base64.h:
(WTF::base64URLEncode):
2013-11-15 Mark Hahnenberg <mhahnenberg@apple.com>
Remove VTableSpectrum
https://bugs.webkit.org/show_bug.cgi?id=124427
Reviewed by Filip Pizlo.
* wtf/Platform.h:
2013-11-15 Jer Noble <jer.noble@apple.com>
MediaTime addition and subtraction operators have errors when the rhs is infinite.
https://bugs.webkit.org/show_bug.cgi?id=124413
Reviewed by Eric Carlson.
Correctly account for infinities that can occur on the right-hand side of addition or
subtraction operators.
* wtf/MediaTime.cpp:
(WTF::MediaTime::operator+):
(WTF::MediaTime::operator-):
2013-11-14 Oliver Hunt <oliver@apple.com>
Make CLoop easier to build, and make it work
https://bugs.webkit.org/show_bug.cgi?id=124359
Reviewed by Geoffrey Garen.
Make building with the CLoop forcibly enabled manually
disable the JITs
* wtf/Platform.h:
2013-11-14 Andreas Kling <akling@apple.com>
FontDescription copies should share families list, not duplicate it.
<https://webkit.org/b/124338>
Add RefCountedArray::operator==.
Reviewed by Antti Koivisto.
2013-11-13 Anders Carlsson <andersca@apple.com>
Add a Vector constructor that takes an std::initializer_list
https://bugs.webkit.org/show_bug.cgi?id=124287
Reviewed by Antti Koivisto.
* wtf/Compiler.h:
* wtf/Vector.h:
(WTF::Vector::Vector):
2013-11-12 Brent Fulgham <bfulgham@apple.com>
[Win] Unreviewed gardening.
* WTF.vcxproj/WTF.vcxproj.filters: Tidy up filters so files show up
in their proper directories.
2013-11-12 Alex Christensen <achristensen@webkit.org>
Build GStreamer files on Windows.
https://bugs.webkit.org/show_bug.cgi?id=124180
Reviewed by Brent Fulgham.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.vcxproj/copy-files.cmd:
Include gobject files in WinCairo build.
2013-11-09 Filip Pizlo <fpizlo@apple.com>
Switch FTL GetById/PutById IC's over to using AnyRegCC
https://bugs.webkit.org/show_bug.cgi?id=124094
Reviewed by Sam Weinig.
I needed to add another set operation, namely filter(), which is an in-place set
intersection.
* wtf/BitVector.cpp:
(WTF::BitVector::filterSlow):
* wtf/BitVector.h:
(WTF::BitVector::filter):
2013-11-10 Ryuan Choi <ryuan.choi@samsung.com>
[EFL] Build break on Ubuntu 13.10
https://bugs.webkit.org/show_bug.cgi?id=124131
Reviewed by Gyuyoung Kim.
Turned DisallowCType macros off on EFL port because gtest-internal.h uses isspace().
* wtf/DisallowCType.h: Added !PLATFORM(EFL) guard.
2013-11-09 Patrick Gansterer <paroga@webkit.org>
Move RunLoop from WebCore to WTF
https://bugs.webkit.org/show_bug.cgi?id=116606
Reviewed by Anders Carlsson.
With this change RunLoop can be used in JavaScriptCore too.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PlatformBlackBerry.cmake:
* wtf/PlatformEfl.cmake:
* wtf/PlatformGTK.cmake:
* wtf/PlatformWin.cmake:
* wtf/RunLoop.cpp: Renamed from Source/WebCore/platform/RunLoop.cpp.
(WTF::RunLoop::Holder::Holder):
(WTF::RunLoop::Holder::runLoop):
(WTF::RunLoop::initializeMainRunLoop):
(WTF::RunLoop::current):
(WTF::RunLoop::main):
(WTF::RunLoop::isMain):
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h: Renamed from Source/WebCore/platform/RunLoop.h.
(WTF::RunLoop::TimerBase::startRepeating):
(WTF::RunLoop::TimerBase::startOneShot):
(WTF::RunLoop::TimerBase::isRepeating):
(WTF::RunLoop::Timer::Timer):
(WTF::RunLoop::Timer::fired):
* wtf/blackberry/RunLoopBlackBerry.cpp: Renamed from Source/WebCore/platform/blackberry/RunLoopBlackBerry.cpp.
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::wakeUp):
* wtf/cf/RunLoopCF.cpp: Renamed from Source/WebCore/platform/cf/RunLoopCF.cpp.
(WTF::RunLoop::performWork):
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::runForDuration):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::run):
(WTF::RunLoop::stop):
(WTF::RunLoop::TimerBase::timerFired):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::~TimerBase):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
* wtf/efl/RunLoopEfl.cpp: Renamed from Source/WebCore/platform/efl/RunLoopEfl.cpp.
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::run):
(WTF::RunLoop::stop):
(WTF::RunLoop::wakeUpEvent):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::~TimerBase):
(WTF::RunLoop::TimerBase::timerFired):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
* wtf/gtk/RunLoopGtk.cpp: Renamed from Source/WebCore/platform/gtk/RunLoopGtk.cpp.
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::run):
(WTF::RunLoop::innermostLoop):
(WTF::RunLoop::pushNestedMainLoop):
(WTF::RunLoop::popNestedMainLoop):
(WTF::RunLoop::stop):
(WTF::RunLoop::queueWork):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::~TimerBase):
(WTF::RunLoop::TimerBase::clearTimerSource):
(WTF::RunLoop::TimerBase::timerFiredCallback):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
* wtf/win/RunLoopWin.cpp: Renamed from Source/WebCore/platform/win/RunLoopWin.cpp.
(WTF::RunLoop::RunLoopWndProc):
(WTF::RunLoop::wndProc):
(WTF::RunLoop::run):
(WTF::RunLoop::stop):
(WTF::RunLoop::registerRunLoopMessageWindowClass):
(WTF::RunLoop::RunLoop):
(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::timerFired):
(WTF::generateTimerID):
(WTF::RunLoop::TimerBase::TimerBase):
(WTF::RunLoop::TimerBase::~TimerBase):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive):
2013-11-08 Alexey Proskuryakov <ap@apple.com>
Make base64url decoding actually work
https://bugs.webkit.org/show_bug.cgi?id=124050
Reviewed by Sam Weinig.
* wtf/text/Base64.cpp: (WTF::base64DecodeInternal): Don't hardcode knowledge about
alphabet, put it into the map.
2013-11-07 Denis Nomiyama <d.nomiyama@samsung.com>
[GTK] Glyphs in vertical text tests are rotated 90 degrees clockwise
https://bugs.webkit.org/show_bug.cgi?id=50619
Reviewed by Martin Robinson.
Enabled OPENTYPE_VERTICAL by default on GTK+ and EFL ports, which are
currently using Freetype.
* wtf/Platform.h:
2013-11-06 Daniel Bates <dabates@apple.com>
[iOS] Upstream Letterpress effect
https://bugs.webkit.org/show_bug.cgi?id=123932
Reviewed by Sam Weinig.
Add feature define ENABLE_LETTERPRESS disabled by default. We only enable
letterpress on iOS.
* wtf/FeatureDefines.h:
2013-11-06 Nick Diego Yamane <nick.yamane@openbossa.org>
Disable "unused local typedefs" warning for GCC 4.7
https://bugs.webkit.org/show_bug.cgi?id=123913
Reviewed by Martin Robinson.
That warning was actually introduced in gcc 4.7.0.
See: http://gcc.gnu.org/gcc-4.7/changes.html
* wtf/Compiler.h:
2013-11-06 Daniel Bates <dabates@apple.com>
Add ENABLE(TEXT_SELECTION)
https://bugs.webkit.org/show_bug.cgi?id=123827
Reviewed by Ryosuke Niwa.
Enable selection painting by default on all ports except iOS.
* wtf/FeatureDefines.h:
2013-11-04 Alexey Proskuryakov <ap@apple.com>
Implement base64url encoding from RFC 4648
https://bugs.webkit.org/show_bug.cgi?id=123767
Reviewed by Sam Weinig.
No tests yet, will be covered by JWK tests for WebCrypto.
* wtf/text/Base64.cpp:
(WTF::base64EncodeInternal):
(WTF::base64Encode):
(WTF::base64URLEncode):
(WTF::base64DecodeInternal):
(WTF::base64Decode):
(WTF::base64URLDecode):
* wtf/text/Base64.h:
(WTF::base64URLEncode):
2013-11-04 Brent Fulgham <bfulgham@apple.com>
[Win] User VersionStamper for official builds
https://bugs.webkit.org/show_bug.cgi?id=123758
Reviewed by Tim Horton.
* WTF.vcxproj/WTFPostBuild.cmd: Add missing command to run VersionStamper.exe.
2013-11-01 Jer Noble <jer.noble@apple.com>
[PluginProxy] Add a setting to disable video plugin proxy support in HTMLMediaElement.
https://bugs.webkit.org/show_bug.cgi?id=123621
Reviewed by Eric Carlson.
Enable WTF_USE_AVFOUNDATION and add some HAVE_AVFOUNDATION_* defines
to replace the existing __MAC_OS_X_VERSION_MIN_REQUIRED macros in
MediaPlayerPrivateAVFoundationObjC.mm.
* wtf/Platform.h:
2013-11-02 Patrick Gansterer <paroga@webkit.org>
Fix compilation of DateMath.cpp with MSVC
https://bugs.webkit.org/show_bug.cgi?id=123680
Reviewed by Darin Adler.
* wtf/DateMath.cpp:
(WTF::appendTwoDigitNumber): Help the compiler finding the
correct overload by casting the characters to LChar.
2013-11-02 Filip Pizlo <fpizlo@apple.com>
LLVM assertion failures should funnel into WTF's crash handling
https://bugs.webkit.org/show_bug.cgi?id=123682
Reviewed by Geoffrey Garen.
Give JSC some new toys to play with for crash handling.
* wtf/Assertions.cpp:
* wtf/Assertions.h:
2013-11-02 Patrick Gansterer <paroga@webkit.org>
Fix UnicodeWchar after r157330.
https://bugs.webkit.org/show_bug.cgi?id=123668
Reviewed by Darin Adler.
* wtf/unicode/wchar/UnicodeWchar.cpp:
(unorm_normalize):
(u_strFoldCase):
(u_strToLower):
(u_strToUpper):
* wtf/unicode/wchar/UnicodeWchar.h:
(u_foldCase):
(u_isprint):
(u_isspace):
2013-11-02 Andreas Kling <akling@apple.com>
Make remaining StringImpl functions return PassRef.
<https://webkit.org/b/123683>
Okay, this seems to work well! Let's go all in and convert the
remaining StringImpl functions to return PassRef<StringImpl> instead
of PassRefPtr where we know that null is never returned.
Reviewed by Anders Carlsson.
2013-11-02 Andreas Kling <akling@apple.com>
StringImpl::upper() should return PassRef.
<https://webkit.org/b/123655>
Make upper() return PassRef<StringImpl>. Spotted and removed some
ref churning in implementations.
Reviewed by Darin Adler.
2013-11-01 Alexey Proskuryakov <ap@apple.com>
Add WebCrypto AES-CBC
https://bugs.webkit.org/show_bug.cgi?id=123647
Reviewed by Anders Carlsson.
* wtf/FixedArray.h: (WTF::FixedArray::data): Added a const version of the function.
* wtf/Vector.h: Added a comment to Vector constructor about how it is different
from std::vector.
2013-11-01 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed extended attempt at Windows build fix after r158471.
* wtf/text/cf/AtomicStringCF.cpp:
* wtf/text/cf/StringCF.cpp:
* wtf/text/cf/StringImplCF.cpp:
2013-11-01 Joseph Pecoraro <pecoraro@apple.com>
Unreviewed attempt at Windows build fix after r158471.
* wtf/text/cf/AtomicStringCF.cpp:
* wtf/text/cf/StringCF.cpp:
* wtf/text/cf/StringImplCF.cpp:
2013-11-01 Andreas Kling <akling@apple.com>
Make more StringImpl construction helpers return PassRef.
<https://webkit.org/b/123652>
Tweak another handful of StringImpl constructor functions to return
PassRef<StringImpl> instead of PassRefPtr.
Reviewed by Anders Carlsson.
2013-11-01 Andreas Kling <akling@apple.com>
Neuter WTF_MAKE_FAST_ALLOCATED in GLOBAL_FASTMALLOC_NEW builds.
<https://webkit.org/b/123639>
When building with GLOBAL_FASTMALLOC_NEW, we don't need to expand
operator new/delete overrides in every class.
This change makes allocations group up nicely in Instruments,
instead of being split between "WTF::fastMalloc" and "operator new"
depending on whether the class had WTF_MAKE_FAST_ALLOCATED.
Reviewed by Anders Carlsson.
2013-11-01 Joseph Pecoraro <pecoraro@apple.com>
Move CF/Mac WTF String implementations down into WTF
https://bugs.webkit.org/show_bug.cgi?id=123635
Reviewed by Sam Weinig.
* WTF.vcxproj/WTF.vcxproj:
* WTF.vcxproj/WTF.vcxproj.filters:
* WTF.xcodeproj/project.pbxproj:
* wtf/text/AtomicString.h:
* wtf/text/StringImpl.h:
* wtf/text/WTFString.h:
* wtf/text/cf/AtomicStringCF.cpp: Renamed from Source/WebCore/platform/text/cf/AtomicStringCF.cpp.
(WTF::AtomicString::add):
* wtf/text/cf/StringCF.cpp: Renamed from Source/WebCore/platform/text/cf/StringCF.cpp.
(WTF::String::String):
(WTF::String::createCFString):
* wtf/text/cf/StringImplCF.cpp: Renamed from Source/WebCore/platform/text/cf/StringImplCF.cpp.
(garbageCollectionEnabled):
(WTF::StringWrapperCFAllocator::retain):
(WTF::StringWrapperCFAllocator::release):
(WTF::StringWrapperCFAllocator::copyDescription):
(WTF::StringWrapperCFAllocator::allocate):
(WTF::StringWrapperCFAllocator::reallocate):
(WTF::StringWrapperCFAllocator::deallocateOnMainThread):
(WTF::StringWrapperCFAllocator::deallocate):
(WTF::StringWrapperCFAllocator::preferredSize):
(WTF::StringWrapperCFAllocator::create):
(WTF::StringWrapperCFAllocator::allocator):
(WTF::StringImpl::createCFString):
* wtf/text/mac/StringImplMac.mm: Renamed from Source/WebCore/platform/text/mac/StringImplMac.mm.
(WTF::StringImpl::operator NSString *):
* wtf/text/mac/StringMac.mm: Renamed from Source/WebCore/platform/text/mac/StringMac.mm.
(WTF::String::String):
2013-11-01 Emilio Pozuelo Monfort <pochu27@gmail.com>
HPPA build fixes
https://bugs.webkit.org/show_bug.cgi?id=123625
Original patch from John David Anglin <dave.anglin@bell.net>
Reviewed by Darin Adler.
* wtf/Platform.h:
* wtf/dtoa/utils.h:
2013-11-01 Patrick Gansterer <paroga@webkit.org>
Buildfix for !USE(ICU_UNICODE) after 156968.
* wtf/unicode/CollatorDefault.cpp:
(WTF::Collator::userDefault):
2013-10-30 Oliver Hunt <oliver@apple.com>
Implement basic ES6 Math functions
https://bugs.webkit.org/show_bug.cgi?id=123536
Reviewed by Michael Saboff.
Add basic implementations of necessary methods to MathExtras to
deal with MSVC not supplying them
* wtf/MathExtras.h:
(asinh):
(acosh):
(atanh):
(expm1):
(log1p):
(cbrt):
2013-10-30 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r158299.
http://trac.webkit.org/changeset/158299
https://bugs.webkit.org/show_bug.cgi?id=123558
caused assertion failures in fast/canvas/canvas-color-
serialization.html and fast/forms/input-text-paste-
maxlength.html (Requested by rniwa on #webkit).
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::empty):
2013-10-30 Ryosuke Niwa <rniwa@webkit.org>
Remove code for Mac Lion
https://bugs.webkit.org/show_bug.cgi?id=123542
Reviewed by Anders Carlsson.
* wtf/Platform.h:
2013-10-30 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Remove PCRE workaround.
https://bugs.webkit.org/show_bug.cgi?id=123265
Reviewed by Brent Fulgham.
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::empty):
2013-10-30 peavo@outlook.com <peavo@outlook.com>
[Win] Compile errors when enabling DFG JIT.
https://bugs.webkit.org/show_bug.cgi?id=120998
Reviewed by Brent Fulgham.
* wtf/CompilationThread.cpp: Use new ThreadingOnce class instead of pthread_once.
(WTF::initializeCompilationThreads):
* wtf/ThreadingOnce.h: Added ThreadingOnce class encapsulating pthread_once functionality.
(WTF::ThreadingOnce::ThreadingOnce):
(WTF::ThreadingOnce::~ThreadingOnce):
(WTF::ThreadingOnce::callOnce):
* wtf/text/CString.h: Export needed symbols.
2013-10-30 Alex Christensen <achristensen@webkit.org>
Disabled JIT on Win64.
https://bugs.webkit.org/show_bug.cgi?id=122472
Reviewed by Geoffrey Garen.
* wtf/Platform.h:
Disabled JIT on Win64.
2013-10-29 Andreas Kling <akling@apple.com>
StringImpl::isolatedCopy() should return PassRef.
<https://webkit.org/b/123484>
Make isolatedCopy() return a PassRef<StringImpl>.
Reviewed by Anders Carlsson.
2013-10-29 Jer Noble <jer.noble@apple.com>
[MSE] [Mac] Enable MediaSource on the Mac
https://bugs.webkit.org/show_bug.cgi?id=122484
Reviewed by Darin Adler.
Enable ENABLE_MEDIA_SOURCE.
* wtf/FeatureDefines.h:
* wtf/Platform.h: Force a clean build.
2013-10-29 Andreas Kling <akling@apple.com>
StringImpl::adopt() should return PassRef.
<https://webkit.org/b/123456>
Make the StringImpl::adopt() functions return a PassRef<StringImpl>.
Reviewed by Anders Carlsson.
2013-10-29 Jinwoo Song <jinwoo7.song@samsung.com>
Re-enable simple line layout for EFL
https://bugs.webkit.org/show_bug.cgi?id=123402
Reviewed by Antti Koivisto.
* wtf/FeatureDefines.h: Enable 8-bit TextRun support for EFL port.
2013-10-28 Anders Carlsson <andersca@apple.com>
RunLoop::dispatch should take an std::function
https://bugs.webkit.org/show_bug.cgi?id=123407
Reviewed by Andreas Kling.
* wtf/FunctionDispatcher.h:
2013-10-28 Andreas Kling <akling@apple.com>
RenderElement::m_style should be a Ref.
<https://webkit.org/b/123401>
Added a Ref::replace() so we can Indiana Jones the new style in
RenderElement::setStyle() while keeping a handle on the old style
for a while longer.
Reviewed by Antti Koivisto.
2013-10-28 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix make distcheck.
* GNUmakefile.list.am: Remove unexistent file from compilation.
2013-10-28 Bastien Nocera <hadess@hadess.net>
Replace 0 timeouts g_timeout_add() by g_idle_add()
https://bugs.webkit.org/show_bug.cgi?id=123260
Reviewed by Carlos Garcia Campos.
A zero timeout should be equivalent to using g_idle_add_full(G_PRIORITY_DEFAULT, ...)
without the nagging feeling that the wrong API was used.
* wtf/gtk/MainThreadGtk.cpp: Use g_idle_add() instead
of 0-timer.
(WTF::scheduleDispatchFunctionsOnMainThread):
2013-10-28 Zan Dobersek <zdobersek@igalia.com>
Re-enable simple line layout for GTK
https://bugs.webkit.org/show_bug.cgi?id=123388
Reviewed by Andreas Kling.
* wtf/FeatureDefines.h: Enable the 8-bit TextRun support for the GTK port.
2013-10-25 Joseph Pecoraro <pecoraro@apple.com>
Upstream ENABLE(REMOTE_INSPECTOR) and enable on iOS and Mac
https://bugs.webkit.org/show_bug.cgi?id=123111
Reviewed by Timothy Hatcher.
* wtf/FeatureDefines.h:
2013-10-25 Jer Noble <jer.noble@apple.com>
[WTF] Add a multiplication operator (and a few others) to MediaTime
https://bugs.webkit.org/show_bug.cgi?id=123137
Reviewed by Eric Carlson.
Add a multiplication operator and an inequality operator to the
MediaTime class for use by MSE.
* wtf/MediaTime.cpp:
(WTF::signum): Moved to top of file.
(WTF::MediaTime::operator*): Added.
(WTF::MediaTime::operator!=): Added.
* wtf/MediaTime.h:
(WTF::operator*): Added non-class version of operator*.
2013-10-24 Jer Noble <jer.noble@apple.com>
[Mac] Add helper methods to convert CMTime <--> MediaTime
https://bugs.webkit.org/show_bug.cgi?id=123285
Reviewed by Eric Carlson.
Add a #ifdef header_h protector.
* wtf/MediaTime.h:
2013-10-24 Mark Rowe <mrowe@apple.com>
Remove references to OS X 10.7 from Xcode configuration settings.
Now that we're not building for OS X 10.7 they're no longer needed.
Reviewed by Anders Carlsson.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
2013-10-24 Mark Rowe <mrowe@apple.com>
<rdar://problem/15312643> Prepare for the mysterious future.
Reviewed by David Kilzer.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
2013-10-24 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r157931.
http://trac.webkit.org/changeset/157931
https://bugs.webkit.org/show_bug.cgi?id=123284
Seems to have caused a lot of assertions on debug bots
(Requested by ap on #webkit).
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::empty):
2013-10-24 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Remove PCRE workaround.
https://bugs.webkit.org/show_bug.cgi?id=123265
Reviewed by Darin Adler.
* wtf/text/StringStatics.cpp:
(WTF::StringImpl::empty):
2013-10-24 Peter Molnar <pmolnar.u-szeged@partner.samsung.com>
Remove Clang workaround.
https://bugs.webkit.org/show_bug.cgi?id=123262
Reviewed by Anders Carlsson.
* wtf/CheckedArithmetic.h:
(WTF::Checked::Checked):
2013-10-24 Ryuan Choi <ryuan.choi@samsung.com>
[EFL] Build break with latest EFL 1.8 libraries.
https://bugs.webkit.org/show_bug.cgi?id=123245
Reviewed by Gyuyoung Kim.
After fixed build break on EFL 1.8 at r138326, EFL libraries are changed
Eo typedef and splitted header files which contain version macro.
* wtf/OwnPtrCommon.h: Changed Eo typedef.
* wtf/efl/RefPtrEfl.h: Ditto.
2013-10-24 Carlos Garcia Campos <cgarcia@igalia.com>
[GObject bindings] Make EventTarget interface introspectable
https://bugs.webkit.org/show_bug.cgi?id=77835
Reviewed by Gustavo Noronha Silva.
Add support for use GRefPtr with GClosure.
* wtf/gobject/GRefPtr.cpp:
(WTF::refGPtr):
(WTF::derefGPtr):
* wtf/gobject/GRefPtr.h:
* wtf/gobject/GTypedefs.h:
2013-10-23 Anders Carlsson <andersca@apple.com>
Remove USE(LOCKFREE_THREADSAFEREFCOUNTED)
https://bugs.webkit.org/show_bug.cgi?id=123228
Reviewed by Geoffrey Garen.
All ports support USE(LOCKFREE_THREADSAFEREFCOUNTED) now and taking a lock on every ref/deref seems bad.
* wtf/Atomics.h:
* wtf/ThreadSafeRefCounted.h:
(WTF::ThreadSafeRefCountedBase::ref):
(WTF::ThreadSafeRefCountedBase::refCount):
(WTF::ThreadSafeRefCountedBase::derefBase):
2013-10-23 Anders Carlsson <andersca@apple.com>
Remove HAVE_XPC
https://bugs.webkit.org/show_bug.cgi?id=123226
Reviewed by Dan Bernstein.
HAVE_XPC has been true on Mac since Lion, so remove it.
* wtf/Platform.h:
2013-10-23 Andreas Kling <akling@apple.com>
Make more StringImpl construction functions return PassRef.
<https://webkit.org/b/123203>
Knock out a couple more of the StringImpl construction helpers that
always return a non-null StringImpl.
Reviewed by Antti Koivisto.
2013-10-22 Filip Pizlo <fpizlo@apple.com>
FTL should be able to do some simple inline caches using LLVM patchpoints
https://bugs.webkit.org/show_bug.cgi?id=123164
Reviewed by Mark Hahnenberg.
This needed some better bitvector support, like merging (|=), excluding (&=~),
hashing, and bit counting.
* wtf/BitVector.cpp:
(WTF::BitVector::setSlow):
(WTF::BitVector::excludeSlow):
(WTF::BitVector::bitCountSlow):
(WTF::BitVector::equalsSlowCase):
(WTF::BitVector::hashSlowCase):
(WTF::BitVector::dump):
* wtf/BitVector.h:
(WTF::BitVector::merge):
(WTF::BitVector::exclude):
(WTF::BitVector::bitCount):
(WTF::BitVector::BitVector):
(WTF::BitVector::isEmptyValue):
(WTF::BitVector::isDeletedValue):
(WTF::BitVector::isEmptyOrDeletedValue):
(WTF::BitVector::operator==):
(WTF::BitVector::hash):
(WTF::BitVectorHash::hash):
(WTF::BitVectorHash::equal):
* wtf/HashTraits.h:
(WTF::CustomHashTraits::constructDeletedValue):
(WTF::CustomHashTraits::isDeletedValue):
(WTF::CustomHashTraits::emptyValue):
(WTF::CustomHashTraits::isEmptyValue):
* wtf/StdLibExtras.h:
(WTF::bitCount):
2013-10-23 Allan Sandfeld Jensen <allan.jensen@digia.com>
Clean-up in Atomics.h
https://bugs.webkit.org/show_bug.cgi?id=123207
Reviewed by Anders Carlsson.
Atomics.h has two confusing and bit-rotted ifdefs with comments.
The first about CPU(SPARC64) was rendered obsolete when we switched
from __exchange_and_add to __sync_add_and_fetch.
The second was caused by a wrong definition that apparently only
caused trouble on GCC.
* wtf/Atomics.h:
2013-10-22 Andreas Kling <akling@apple.com>
StringImpl::lower() should return a PassRef.
<https://webkit.org/b/123190>
Test the waters and hack enough of StringImpl to be able to return
a PassRef<StringImpl> from lower().
Also gave String a constructor that takes a PassRef<StringImpl>.
Reviewed by Antti Koivisto.
2013-10-22 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r157835.
http://trac.webkit.org/changeset/157835
https://bugs.webkit.org/show_bug.cgi?id=123192
broke 32-bit builds (Requested by smfr on #webkit).
* wtf/MediaTime.cpp:
(WTF::signum):
* wtf/MediaTime.h:
2013-10-22 Jer Noble <jer.noble@apple.com>
[WTF] Add a multiplication operator (and a few others) to MediaTime
https://bugs.webkit.org/show_bug.cgi?id=123137
Reviewed by Eric Carlson.
Add a multiplication operator and an inequality operator to the
MediaTime class for use by MSE.
* wtf/MediaTime.cpp:
(WTF::signum): Moved to top of file.
(WTF::MediaTime::operator*): Added.
(WTF::MediaTime::operator!=): Added.
* wtf/MediaTime.h:
(WTF::operator*): Added non-class version of operator*.
2013-10-21 Gyuyoung Kim <gyuyoung.kim@samsung.com>
Make TYPE_CASTS_BASE more flexible
https://bugs.webkit.org/show_bug.cgi?id=122951
Reviewed by Andreas Kling.
TYPE_CASTS_BASE is being used by node|element type casts. However, it is difficult
to be used by other type casts. For instance, CSSValue, Accessibility and so on.
This patch modifies TYPE_CASTS_BASE which can support other type casts.
Besides TYPE_CASTS_BASE body is moved from node.h to Assertions.h.
* wtf/Assertions.h:
2013-10-20 Filip Pizlo <fpizlo@apple.com>
StructureStubInfo's usedRegisters set should be able to track all registers, not just the ones that our JIT's view as temporaries
https://bugs.webkit.org/show_bug.cgi?id=123076
Reviewed by Sam Weinig.
Teach BitVector how to efficiently merge (i.e. bitvector |=).
* wtf/BitVector.cpp:
(WTF::BitVector::mergeSlow):
* wtf/BitVector.h:
(WTF::BitVector::merge):
(WTF::BitVector::cleanseInlineBits):
2013-10-19 Jer Noble <jer.noble@apple.com>
Unreviewed roll out of r157695; broke Mac builds.
* wtf/FeatureDefines.h:
2013-10-07 Jer Noble <jer.noble@apple.com>
[MSE] [Mac] Enable MediaSource on the Mac
https://bugs.webkit.org/show_bug.cgi?id=122484
Reviewed by Darin Adler.
Enable ENABLE_MEDIA_SOURCE.
* wtf/FeatureDefines.h:
2013-10-19 Andreas Kling <akling@apple.com>
RefPtr::releaseNonNull() incorrectly increments the refcount.
<https://webkit.org/b/123063>
Make releaseNonNull() use adoptRef(T&), mirroring release().
Reviewed by Anders Carlsson.
2013-10-18 Andreas Kling <akling@apple.com>
Start passing RenderStyle around with PassRef.
<https://webkit.org/b/123051>
Added some new PassRef tricks to make this patch possible.
Reviewed by Darin Adler.
* wtf/PassRef.h:
(WTF::PassRef::get):
Added a get() helper to facilitate writing functions that
construct a new object and call some functions on it before
returning it.
(WTF::PassRef::dropRef):
This will deref() the referenced object and mark the PassRef
as "passed." This is used in code paths where the PassRef is
going to go out of scope with nobody to take it over.
(WTF::PassRef::leakRef):
Renamed takeReference() to leakRef() and made it public so
we don't have to awkwardly sink the PassRef into a Ref for
e.g static locals.
* wtf/RefPtr.h:
(WTF::RefPtr::releaseNonNull):
Added RefPtr::releaseNonNull() for a convenient way of creating
a PassRef<T> from a RefPtr<T>. This function may only be called
if the RefPtr is known to be non-null.
2013-10-18 Filip Pizlo <fpizlo@apple.com>
A CodeBlock's StructureStubInfos shouldn't be in a Vector that we search using code origins and machine code PCs
https://bugs.webkit.org/show_bug.cgi?id=122940
Reviewed by Oliver Hunt.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/BagToHashMap.h: Added.
(WTF::toHashMap):
* wtf/CMakeLists.txt:
2013-10-18 Anders Carlsson <andersca@apple.com>
Remove spaces between template angle brackets
https://bugs.webkit.org/show_bug.cgi?id=123040
Reviewed by Andreas Kling.
* wtf/AVLTree.h:
* wtf/CheckedArithmetic.h:
* wtf/Compression.h:
* wtf/Functional.h:
(WTF::R):
* wtf/HashFunctions.h:
* wtf/HashIterators.h:
* wtf/HashSet.h:
(WTF::::contains):
* wtf/ListHashSet.h:
(WTF::::contains):
* wtf/RefCountedLeakCounter.cpp:
* wtf/RetainPtr.h:
* wtf/SentinelLinkedList.h:
(WTF::::remove):
* wtf/SizeLimits.cpp:
* wtf/StreamBuffer.h:
* wtf/Vector.h:
* wtf/VectorTraits.h:
* wtf/WeakPtr.h:
(WTF::WeakReference::create):
(WTF::WeakReference::createUnbound):
(WTF::WeakPtr::WeakPtr):
(WTF::WeakPtrFactory::WeakPtrFactory):
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::add):
(WTF::findString):
* wtf/text/StringConcatenate.h:
* wtf/text/StringImpl.h:
* wtf/text/StringOperators.h:
(WTF::operator+):
2013-10-18 Brendan Long <b.long@cablelabs.com>
[GStreamer][GTK] Add GRefPtr::outPtr()
https://bugs.webkit.org/show_bug.cgi?id=122996
Reviewed by Philippe Normand.
* wtf/gobject/GRefPtr.h:
(WTF::GRefPtr::outPtr): Added.
2013-10-17 Geoffrey Garen <ggaren@apple.com>
Tidied up the Vector<T> move constructor
https://bugs.webkit.org/show_bug.cgi?id=122998
Reviewed by Anders Carlsson.
* wtf/Vector.h:
(WTF::::Vector): Don't call swap() "weird". It's the way most std types
implement move constructors.
Do inline this function, so the compiler can optimize away a logical
move into a physical no-op.
2013-10-16 Filip Pizlo <fpizlo@apple.com>
Introduce WTF::Bag and start using it for InlineCallFrameSet
https://bugs.webkit.org/show_bug.cgi?id=122941
Reviewed by Geoffrey Garen.
Introduce WTF::Bag, which is basically an allocation pool. No POD restrictions. Does one
malloc per entry. No need to shrink afterwards.
* GNUmakefile.list.am:
* WTF.vcxproj/WTF.vcxproj:
* WTF.xcodeproj/project.pbxproj:
* wtf/Bag.h: Added.
(WTF::Bag::Bag):
(WTF::Bag::~Bag):
(WTF::Bag::add):
(WTF::Bag::iterator::iterator):
(WTF::Bag::iterator::operator!):
(WTF::Bag::iterator::operator*):
(WTF::Bag::iterator::operator++):
(WTF::Bag::iterator::operator==):
(WTF::Bag::begin):
(WTF::Bag::end):
(WTF::Bag::isEmpty):
* wtf/CMakeLists.txt:
2013-10-17 Andreas Kling <akling@apple.com>
Make it possible to assign a PassRef to a RefPtr.
<https://webkit.org/b/122943>
We have to use std::move when constructing a RefPtr from a PassRef
since there is no copy constructor for the latter.
Reviewed by Antti Koivisto.
2013-10-16 Ryuan Choi <ryuan.choi@samsung.com>
Unreviewed build fix attempt on EFL port after r157520 and r157523
* wtf/PassRef.h: includes <utility>
2013-10-16 Darin Adler <darin@apple.com>
Add PassRef and createRefCounted so we can improve creation of RefCounted objects
https://bugs.webkit.org/show_bug.cgi?id=122904
Reviewed by Anders Carlsson.
* GNUmakefile.list.am: Added PassRef.h.
* WTF.vcxproj/WTF.vcxproj: Ditto.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/Forward.h: Added PassRef. Also re-sorted and un-indented to match what
the style-checking script expects.
* wtf/PassRef.h: Added. Includes the createRefCounted function template, which
is analogous to make_unique, but is for reference counted objects, and also
assumes that new will never return null. Also includes an overload of adoptRef
that takes a reference rather than a pointer.
* wtf/PassRefPtr.h: Include "PassRef.h" so we can share the adopted function.
Got rid of declarations that duplicate ones in there.
(WTF::refIfNotNull): Use nullptr.
(WTF::derefIfNotNull): Use nullptr.
(WTF::PassRefPtr::PassRefPtr): Use nullptr. Added an overload that takes a PassRef.
(WTF::PassRefPtr::operator UnspecifiedBoolType): Use nullptr.
(WTF::PassRefPtr::operator=): Made this deleted instead of compile time assertion.
(WTF::PassRefPtr::PassRefPtr): Made adopting constructor use an adopt tag instead
of an unused boolean.
(WTF::PassRefPtr::leakRef): Use nullptr.
(WTF::adoptRef): Use the adopt tag.
* wtf/Ref.h: Use Noncopyable instead of rolling our own.
(WTF::Ref::Ref): Add an overload that takes a PassRef.
(WTF::Ref::operator=): Ditto.
* wtf/RefPtr.h: Removed unneeded forward declaration of PassRefPtr.
(WTF::RefPtr::RefPtr): Use nullptr. Added overload that takes a PassRef.
(WTF::RefPtr::release): Use nullptr.
(WTF::RefPtr::operator UnspecifiedBoolType): Use nullptr.
(WTF::RefPtr::operator=): Added overload that takes a PassRef.
(WTF::RefPtr::clear): Use nullptr.
* wtf/StdLibExtras.h: Added inline keyword to isPointerTypeAlignmentOkay,
reinterpret_cast_ptr, and make_unique. Seems like a simple oversight that these
were missing before.
2013-10-15 Dean Jackson <dino@apple.com>
Add ENABLE_WEB_ANIMATIONS flag
https://bugs.webkit.org/show_bug.cgi?id=122871
Reviewed by Tim Horton.
Eventually might be http://dev.w3.org/fxtf/web-animations/
but this is just engine-internal work at the moment.
* wtf/FeatureDefines.h:
2013-10-15 Daniel Bates <dabates@apple.com>
[iOS] Upstream JavaScriptCore support for ARM64
https://bugs.webkit.org/show_bug.cgi?id=122762
Reviewed by Oliver Hunt.
* Configurations/Base.xcconfig:
* wtf/Atomics.h:
(WTF::weakCompareAndSwap):
(WTF::armV7_dmb):
* wtf/FastMalloc.cpp:
* wtf/Platform.h:
* wtf/dtoa.cpp:
* wtf/dtoa/utils.h:
* wtf/text/ASCIIFastPath.h:
(WTF::copyLCharsFromUCharSource):
* wtf/text/StringImpl.h:
2013-10-14 Zan Dobersek <zdobersek@igalia.com>
Static assertions in WTF::adoptPtr should point to using adoptRef for ref-counted objects
https://bugs.webkit.org/show_bug.cgi?id=122745
Reviewed by Anders Carlsson.
* wtf/PassOwnPtr.h:
(WTF::adoptPtr): When the object's type is convertible to the RefCountedBase or ThreadSafeRefCountedBase type,
the static assertion should note that adoptRef should be used instead.
2013-10-14 Anders Carlsson <andersca@apple.com>
WebKit Nightlies broken by r157374
https://bugs.webkit.org/show_bug.cgi?id=122736
Reviewed by Andreas Kling.
Add back a callOnMainThread overload that Safari is using.
* wtf/MainThread.cpp:
(WTF::callOnMainThread):
* wtf/MainThread.h:
2013-10-13 Darin Adler <darin@apple.com>
Deprecate or remove deleteAllValues functions; there are only a few call sites left
https://bugs.webkit.org/show_bug.cgi?id=122738
Reviewed by Anders Carlsson.
* wtf/Deque.h: Deleted deleteAllValues.
* wtf/HashMap.h: Ditto.
* wtf/HashSet.h: Ditto.
* wtf/ListHashSet.h: Ditto.
* wtf/Vector.h: Renamed deleteAllValues to deprecatedDeleteAllValues.
== Rolled over to ChangeLog-2013-10-13 ==