| Index: Source/wtf/Deque.h | 
| diff --git a/Source/wtf/Deque.h b/Source/wtf/Deque.h | 
| index 3ce433729a4c86cfc3bd040a3c665cefc1e8ded8..fa6c8945b847eb024e7edd0fa57feeb28a4b2699 100644 | 
| --- a/Source/wtf/Deque.h | 
| +++ b/Source/wtf/Deque.h | 
| @@ -79,10 +79,12 @@ namespace WTF { | 
|  | 
| T& last() { ASSERT(m_start != m_end); return *(--end()); } | 
| const T& last() const { ASSERT(m_start != m_end); return *(--end()); } | 
| +        PassType takeLast(); | 
|  | 
| template<typename U> void append(const U&); | 
| template<typename U> void prepend(const U&); | 
| void removeFirst(); | 
| +        void removeLast(); | 
| void remove(iterator&); | 
| void remove(const_iterator&); | 
|  | 
| @@ -326,6 +328,14 @@ namespace WTF { | 
| return Pass::transfer(oldFirst); | 
| } | 
|  | 
| +    template<typename T, size_t inlineCapacity> | 
| +    inline typename Deque<T, inlineCapacity>::PassType Deque<T, inlineCapacity>::takeLast() | 
| +    { | 
| +        T oldLast = Pass::transfer(last()); | 
| +        removeLast(); | 
| +        return Pass::transfer(oldLast); | 
| +    } | 
| + | 
| template<typename T, size_t inlineCapacity> template<typename U> | 
| inline void Deque<T, inlineCapacity>::append(const U& value) | 
| { | 
| @@ -360,6 +370,17 @@ namespace WTF { | 
| } | 
|  | 
| template<typename T, size_t inlineCapacity> | 
| +    inline void Deque<T, inlineCapacity>::removeLast() | 
| +    { | 
| +        ASSERT(!isEmpty()); | 
| +        if (!m_end) | 
| +            m_end = m_buffer.capacity() - 1; | 
| +        else | 
| +            --m_end; | 
| +        TypeOperations::destruct(&m_buffer.buffer()[m_end], &m_buffer.buffer()[m_end + 1]); | 
| +    } | 
| + | 
| +    template<typename T, size_t inlineCapacity> | 
| inline void Deque<T, inlineCapacity>::remove(iterator& it) | 
| { | 
| remove(it.m_index); | 
|  |