diff --git a/src/mempool.hpp b/src/mempool.hpp index 212a80f4825d460e3caed7d88b91af2a4ff741e8..44f0fd64398509132a1dfef917540a3f8fd6de77 100644 --- a/src/mempool.hpp +++ b/src/mempool.hpp @@ -50,6 +50,12 @@ namespace PYGPU_PACKAGE mp_noncopyable& operator=(const mp_noncopyable&) = delete; }; +#ifdef PYGPU_PYCUDA +#define PYGPU_SHARED_PTR boost::shared_ptr +#else +#define PYGPU_SHARED_PTR std::shared_ptr +#endif + template <class T> inline T signed_left_shift(T x, signed shift_amount) { @@ -339,8 +345,10 @@ namespace PYGPU_PACKAGE bool try_to_free_memory() { // free largest stuff first - for (bin_pair_t &bin_pair: reverse(m_container)) + for (typename container_t::reverse_iterator it = m_container.rbegin(); + it != m_container.rend(); ++it) { + bin_pair_t &bin_pair = *it; bin_t &bin = bin_pair.second; if (bin.size()) @@ -392,14 +400,14 @@ namespace PYGPU_PACKAGE typedef typename Pool::size_type size_type; private: - std::shared_ptr<pool_type> m_pool; + PYGPU_SHARED_PTR<pool_type> m_pool; pointer_type m_ptr; size_type m_size; bool m_valid; public: - pooled_allocation(std::shared_ptr<pool_type> p, size_type size) + pooled_allocation(PYGPU_SHARED_PTR<pool_type> p, size_type size) : m_pool(p), m_ptr(p->allocate(size)), m_size(size), m_valid(true) { }