The Boehm-Demers-Weiser garbage collector for SWI-Prolog