diff --git a/src/main/scala/tilelink/Filter.scala b/src/main/scala/tilelink/Filter.scala index 419d7a2997a..fcc59dc5eb5 100644 --- a/src/main/scala/tilelink/Filter.scala +++ b/src/main/scala/tilelink/Filter.scala @@ -89,12 +89,16 @@ object TLFilter } // make everything except the intersected address sets visible - def mSubtract(except: AddressSet): ManagerFilter = { m => - val filtered = m.address.flatMap(_.subtract(except)) + def mSubtract(excepts: Seq[AddressSet]): ManagerFilter = { m => + val filtered = excepts.foldLeft(m.address) { (a,e) => a.flatMap(_.subtract(e)) } val alignment: BigInt = if (filtered.isEmpty) 0 else filtered.map(_.alignment).min transferSizeHelper(m, filtered, alignment) } + def mSubtract(except: AddressSet): ManagerFilter = { m => + mSubtract(Seq(except))(m) + } + // adjust supported transfer sizes based on filtered intersection private def transferSizeHelper(m: TLSlaveParameters, filtered: Seq[AddressSet], alignment: BigInt): Option[TLSlaveParameters] = { val maxTransfer = 1 << 30