You can save a lot of RAM by using R13 and R14 for FRAME and retAddr in the return code.
//->endFrame = LCL
@LCL
D=M
@R13
M=D
//->retAddr=*(endFrame-5)
@5
A=D-A
A=M
D=M
@R14
M=D
These temporaries are only used during the return code so they don't need to be unique.
The real cool thing about this is that then the return code is identical for all instances of return. You can put a ($RETURN) label at the start of it the first time you generate it and all other returns only need to jump to that label!
--Mark