dcn@ihuxl.UUCP (11/07/83)
I'm almost glad I made the mistake of switching NEW() for RELEASE() or I would not have seen how many other people use Apple Pascal. I don't like everything about it, but it a good implementation for a micro as old as the Apple II. Some more info on Apple Pascal can be found in old net.micro.apple messages. Dave Newkirk, ihnp4!ihuxl!dcn
mark@cbosgd.UUCP (11/08/83)
The mark and release functions of Apple Pascal are straight out of UCSD Pascal, which in turn our straight out of the P2 compiler. They are no substitute for dispose, but are sufficient to implement the compiler (and, indeed, are more convenient for it than dispose). Basically, the heap is treated as a stack (allocated from the other end of memory). A pointer is kept to the top of the stack (e.g. next available place to allocate). new grabs a hunk from the stack and increments the pointer. Period. No hunting from a free block. mark saves the pointer. release restores the pointer from the saved value. In effect, release frees all memory allocated since the last mark. This is convenient for freeing the symbol table in a block structured language. (I can't remember, but I suppose the marks must stack.)