>Having to clear the cache is another reason why it's seen as bad practice, beyond being horribly unmaintainable. There's a reason people pretty much stopped doing it in the mid 80's.
Honestly, self modifying code isn't just a bad practice, its a recourse used by sloppy programmers. For the small improvement you might see in performance you destroy easy traceability and can no longer use re entrant code.