From 5b6b9c15c24f04e2c9423cfb29d99a569303fb26 Mon Sep 17 00:00:00 2001 From: whh8b <whh8b@git.zephyr-software.com> Date: Mon, 9 Nov 2015 00:05:37 +0000 Subject: [PATCH] Return a range of instructions When the memory space is asked for nearby ranges, it should return a range. --- include/zipr_mem_space.h | 3 ++- src/memory_space.cpp | 12 +++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/include/zipr_mem_space.h b/include/zipr_mem_space.h index 18a7827..8706d63 100644 --- a/include/zipr_mem_space.h +++ b/include/zipr_mem_space.h @@ -46,7 +46,8 @@ class ZiprMemorySpace_t : public MemorySpace_t void MergeFreeRange(RangeAddress_t addr); RangeSet_t::iterator FindFreeRange(RangeAddress_t addr); Range_t GetFreeRange(int size); - Range_t GetNearbyFreeRange(const RangeAddress_t hint); + std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator> + GetNearbyFreeRanges(const RangeAddress_t hint, size_t count = 0); void AddFreeRange(Range_t newRange); void RemoveFreeRange(Range_t newRange); diff --git a/src/memory_space.cpp b/src/memory_space.cpp index 3932ff6..f8ed446 100644 --- a/src/memory_space.cpp +++ b/src/memory_space.cpp @@ -161,18 +161,16 @@ bool ZiprMemorySpace_t::IsValidRange(RangeSet_t::iterator it) return it!=free_ranges.end(); } -Range_t ZiprMemorySpace_t::GetNearbyFreeRange(const RangeAddress_t hint) +std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator> + ZiprMemorySpace_t::GetNearbyFreeRanges(const RangeAddress_t hint,size_t count) { - RangeSet_t::iterator result; Range_t search(hint, hint+1); + RangeSet_t::const_iterator result = free_ranges.upper_bound(search); /* * TODO: Not quite sure what to make of this. */ - if (free_ranges.end() == (result = free_ranges.upper_bound(search))) { - cout << "Oops: GetNearbyFreeRange() is BAD" << endl; - return Range_t(0,0); - } - return *result; + return std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator>( + result, free_ranges.end()); } Range_t ZiprMemorySpace_t::GetFreeRange(int size) -- GitLab