@marick In Lisp the way it works is that when you do a function call, you look up the _symbol_ you don't jump to the symbol value to execute it at some hard coded address. When you redefine a function all you do is modify that symbols value.
If that is machine code, text, interpreted, is not very important. You can still stomp any function in essentially any Lisp just as easily as "early" Lisp (not sure what that means).