Right now there are hooks in ASDF which are used by ECL in a perhaps too complicated way. More precisely, ECL requires to make an object file and a FASL file out of every compiled file, so that other operations (LOAD-FASL-OP, monolithic building, standalone executables, etc) become easier. Right now this is done using an :AFTER method on PERFORM. I suggest this patch (already in ECL's tree) which removes that method, removes the upgradability hacks and insteads wraps around COMPILE-FILE* (which now becomes redefinable at run time).