diff --git a/include/zipr_mem_space.h b/include/zipr_mem_space.h
index 493c054a086cc5d84c9ad8fc6a1b4a235fa45c9c..00fb766fb1563fd3fb730e720181ad6380831697 100644
--- a/include/zipr_mem_space.h
+++ b/include/zipr_mem_space.h
@@ -51,6 +51,7 @@ class ZiprMemorySpace_t : public MemorySpace_t
 			GetNearbyFreeRanges(const RangeAddress_t hint, size_t count = 0);
 		void AddFreeRange(Range_t newRange);
 		void RemoveFreeRange(Range_t newRange);
+		Range_t GetLargeRange(void);
 
 		// queries about free areas.
 		bool AreBytesFree(RangeAddress_t addr, int num_bytes);
diff --git a/src/memory_space.cpp b/src/memory_space.cpp
index 79807e81e40c61851f75c56f72f2ac1bbc4f610c..5a9ed3cded6074bb13da3cb7ce0f29c6b78b74d7 100644
--- a/src/memory_space.cpp
+++ b/src/memory_space.cpp
@@ -184,6 +184,19 @@ std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator>
 		result, free_ranges.end());
 }
 
+Range_t ZiprMemorySpace_t::GetLargeRange(void)
+{
+	for( RangeSet_t::iterator it=free_ranges.begin();
+		it!=free_ranges.end();
+		++it)
+	{
+		Range_t r=*it;
+		if(r.GetEnd()==(RangeAddress_t)-1)
+			return r;
+	}
+	return Range_t(0,0);
+}
+
 Range_t ZiprMemorySpace_t::GetFreeRange(int size)
 {
 	vector<Range_t> v;