remove build option to use narrower types in piece_picker (optimize_memory_usage)

This commit is contained in:
arvidn 2016-11-29 00:55:41 -05:00 committed by Arvid Norberg
parent e3c5a639ca
commit 09b5cfd688
4 changed files with 4 additions and 49 deletions

View File

@ -401,9 +401,6 @@ feature iconv : auto on off : composite propagated ;
feature.compose <iconv>on : <define>TORRENT_USE_ICONV=1 ;
feature.compose <iconv>off : <define>TORRENT_USE_ICONV=0 ;
feature memory-optimization : off on : composite propagated link-incompatible ;
feature.compose <memory-optimization>on : <define>TORRENT_OPTIMIZE_MEMORY_USAGE ;
feature asserts : off on production system : composite propagated ;
feature.compose <asserts>on : <define>TORRENT_USE_ASSERTS=1 ;
feature.compose <asserts>production : <define>TORRENT_USE_ASSERTS=1 <define>TORRENT_PRODUCTION_ASSERTS=1 ;

View File

@ -168,12 +168,7 @@ namespace libtorrent
int num_peers() const { return int(m_peers.size()); }
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
using peers_t = std::vector<torrent_peer*>;
#else
using peers_t = std::deque<torrent_peer*>;
#endif
using iterator = peers_t::iterator;
using const_iterator = peers_t::const_iterator;
iterator begin() { return m_peers.begin(); }

View File

@ -457,12 +457,13 @@ namespace libtorrent
{
piece_pos() {}
piece_pos(int peer_count_, int index_)
: peer_count(unsigned(peer_count_))
: peer_count(static_cast<std::uint16_t>(peer_count_))
, download_state(piece_pos::piece_open)
, piece_priority(4)
, index(unsigned(index_))
, index(index_)
{
TORRENT_ASSERT(peer_count_ >= 0);
TORRENT_ASSERT(peer_count_ < std::numeric_limits<std::uint16_t>::max());
TORRENT_ASSERT(index_ >= 0);
}
@ -540,11 +541,7 @@ namespace libtorrent
// the number of peers that has this piece
// (availability)
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
std::uint32_t peer_count : 9;
#else
std::uint32_t peer_count : 16;
#endif
std::uint16_t peer_count = 0;
// one of the enums from state_t. This indicates whether this piece
// is currently being downloaded or not, and what state it's in if
@ -572,11 +569,7 @@ namespace libtorrent
std::uint32_t piece_priority : 3;
// index in to the piece_info vector
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
std::uint32_t index : 17;
#else
std::uint32_t index;
#endif
#ifdef TORRENT_DEBUG_REFCOUNTS
// all the peers that have this piece
@ -588,19 +581,11 @@ namespace libtorrent
// index is set to this to indicate that we have the
// piece. There is no entry for the piece in the
// buckets if this is the case.
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
we_have_index = 0x3ffff,
#else
we_have_index = 0xffffffff,
#endif
// the priority value that means the piece is filtered
filter_priority = 0,
// the max number the peer count can hold
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
max_peer_count = 0x1ff
#else
max_peer_count = 0xffff
#endif
};
bool have() const { return index == we_have_index; }
@ -668,11 +653,7 @@ namespace libtorrent
};
#ifndef TORRENT_DEBUG_REFCOUNTS
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
static_assert(sizeof(piece_pos) == sizeof(char) * 4, "unexpected struct size");
#else
static_assert(sizeof(piece_pos) == sizeof(char) * 8, "unexpected struct size");
#endif
#endif
bool partial_compare_rarest_first(downloading_piece const* lhs
@ -797,11 +778,7 @@ namespace libtorrent
mutable bool m_dirty = false;
public:
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
enum { max_pieces = piece_pos::we_have_index - 1 };
#else
enum { max_pieces = (std::numeric_limits<int>::max)() - 1 };
#endif
};
}

View File

@ -424,20 +424,6 @@ namespace libtorrent
void piece_picker::check_invariant(torrent const* t) const
{
#ifndef TORRENT_DEBUG_REFCOUNTS
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable : 4127 ) /* warning C4127: conditional expression is constant */
#endif // _MSC_VER
#ifdef TORRENT_OPTIMIZE_MEMORY_USAGE
TORRENT_ASSERT(sizeof(piece_pos) == 4);
#else
TORRENT_ASSERT(sizeof(piece_pos) == 8);
#endif
#ifdef _MSC_VER
#pragma warning(pop)
#endif // _MSC_VER
#endif
TORRENT_ASSERT(m_num_have >= 0);
TORRENT_ASSERT(m_num_have_filtered >= 0);
TORRENT_ASSERT(m_num_filtered >= 0);