freenode/#sicl - IRC Chatlog
Search
5:34:06
no-defun-allowed
Should I tell the Clozure maintainers that it's possible to meddle with hash tables like that? My greatest fear was that some web server like Hunchentoot could be slowed down drastically, but the servers I read didn't use hash tables for values the client provides.
5:37:57
no-defun-allowed
The website states I should report it on GitHub, but it seems like it may be dangerous to describe publicly.
5:38:40
no-defun-allowed
(Well, someone could just check the logs here, but people probably spend more time on GitHub...)
6:18:22
no-defun-allowed
(pressed Enter too soon), so I would have assumed it had USEd the REPL package.
6:19:42
no-defun-allowed
Hm, I did update my fork already to have -boot depend on -repl and changed the instructions for that, but I can flip it around then in a bit.
6:22:07
beach
This kind of REPL should be thought of as something to cater to the questions we get, and not as something intrinsic. However, if the code can be factored so that the same code is used for the native REPL, that might change, but I haven't given it enough thought.
6:27:33
beach
I am not very good about thinking things through very fast. I am likely to change my mind later.
7:04:03
beach
Today, I need to get back to MIT-to-LIR. I have spent a few days on the debugging paper, and I have asked Didier whether he intends to write his part of the paper about method combinations. I have also sent email to LispWorks so ask about their breakpoints. No answer yet from either, so I am putting the work on the paper on hold for now.
7:04:37
beach
So, recall that the issue is that I need to figure out how to process the CATCH-INSTRUCTION in HIR-to-LIR.
7:05:32
beach
I think I can turn it into a function call for a run-time function, say AUGMENT-WITH-BLOCK/TAGBODY-ENTRY.
7:06:10
beach
A call to this function automatically receives the current dynamic environment, so that does not have to be an argument.
7:06:58
beach
This function should return two values, just like the CATCH-INSTRUCTION, namely a continuation and an augmented dynamic environment.
7:08:22
beach
And it must allocate a CATCH/TAGBODY-ENTRY and CONS it onto the existing dynamic environment.
7:09:13
beach
But here is the catch (pun intended!): It needs to store the frame pointer and the stack pointer of the caller in the entry.
7:12:26
beach
Indeed it can. The callee RBP points to a stack location containing the caller RBP, and the callee RBP + 8 is the callee RSP.
7:14:38
beach
So, then, what I need to do as a HIR transformation is to precede the CATCH-INSTRUCTION with an FDEFINITION-INSTRUCTION that returns a pointer to this new function, and I need to add the lexical location containing this function as an input to the CATCH-INSTRUCTION.
7:16:00
beach
Then, when MIR is turned into LIR, I just translate the CATCH-INSTRUCTION as a function call.
7:20:30
beach
In the HIR interpreter I have a choice. I can leave it as it is, or I can define a boot version of the AUGMENT-WITH-BLOCK/TAGBODY-ENTRY function and call it. No stack/frame pointers would be involved, of course.