+2017-09-03 Chris Dumez <cdumez@apple.com>
+
+ Unreviewed, rolling out r221552.
+
+ Broke the build
+
+ Reverted changeset:
+
+ "[WTF] Add C++03 allocator interface for GCC < 6"
+ https://bugs.webkit.org/show_bug.cgi?id=176301
+ http://trac.webkit.org/changeset/221552
+
2017-09-03 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] Add C++03 allocator interface for GCC < 6
// Nodes without remaining unmaterialized fields will be
// materialized first - amongst the remaining unmaterialized
// nodes
- std::list<Allocation, FastAllocator<Allocation>> toMaterialize;
+ std::list<Allocation> toMaterialize;
auto firstPos = toMaterialize.begin();
auto materializeFirst = [&] (Allocation&& allocation) {
materialize(allocation.identifier());
+2017-09-03 Chris Dumez <cdumez@apple.com>
+
+ Unreviewed, rolling out r221552.
+
+ Broke the build
+
+ Reverted changeset:
+
+ "[WTF] Add C++03 allocator interface for GCC < 6"
+ https://bugs.webkit.org/show_bug.cgi?id=176301
+ http://trac.webkit.org/changeset/221552
+
2017-09-03 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] Add C++03 allocator interface for GCC < 6
{
fastFree(pointer);
}
-
-#if COMPILER(GCC) && !GCC_VERSION_AT_LEAST(6, 0, 0)
- // This allocator also supports pre-C++11 STL allocator interface. This is a workaround for GCC < 6, which std::list
- // does not support C++11 allocator.
- // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55409
-
- using pointer = value_type*;
- using const_pointer = typename std::pointer_traits<pointer>::template rebind<value_type const>;
- using void_pointer = typename std::pointer_traits<pointer>::template rebind<void>;
- using const_void_pointer = typename std::pointer_traits<pointer>::template rebind<const void>;
-
- using reference = T&;
- using const_reference = const T&;
-
- using difference_type = typename std::pointer_traits<pointer>::difference_type;
- using size_type = std::make_unsigned_t<difference_type>;
-
- template <class U> struct rebind {
- using other = FastAllocator<U>;
- };
-
- value_type* allocate(std::size_t count, const_void_pointer)
- {
- return allocate(count);
- }
-
- template <class U, class ...Args>
- void construct(U* p, Args&& ...args)
- {
- new (const_cast<void*>(static_cast<const void*>(p))) U(std::forward<Args>(args)...);
- }
-
- template <class U>
- void destroy(U* p)
- {
- p->~U();
- }
-
- std::size_t max_size() const
- {
- return std::numeric_limits<size_type>::max();
- }
-
- FastAllocator<T> select_on_container_copy_construction() const
- {
- return *this;
- }
-
- using propagate_on_container_copy_assignment = std::false_type;
- using propagate_on_container_move_assignment = std::false_type;
- using propagate_on_container_swap = std::false_type;
- using is_always_equal = std::is_empty<FastAllocator>;
-#endif // COMPILER(GCC) && !GCC_VERSION_AT_LEAST(6, 0, 0)
};
template<typename T, typename U> inline bool operator==(const FastAllocator<T>&, const FastAllocator<U>&) { return true; }