OM: More precise object destruction

previously, DiscardObjects with a list of object might have destroyed
more objects than necessary. This commit fixes that.