in reply to ENTER vs. SAVETMPS
Looking at the definition of ENTER and LEAVE I see:
#define ENTER push_scope() #define LEAVE pop_scope()
And SAVETMPS and FREETMPS are:
#define SAVETMPS save_int((int*)&PL_tmps_floor), PL_tmps_floor = PL_tm +ps_ix #define FREETMPS if (PL_tmps_ix > PL_tmps_floor) free_tmps()
So ENTER/LEAVE is responsible for managing the scope stack (growing it, adjusting pointers) and SAVETMPS/FREETMPS just handles the temp stack, and calls free_tmps() if needed.
I imagine that leaves you with more questions than you came in with, but I'll have to leave it at that. No time to dig further now...
-sam
|
|---|