freenode/#sicl - IRC Chatlog
Search
14:42:37
beach
But now, the enclose is left alone and just turned into a JMP by code generation, for further processing by the call-site manager.
14:43:36
beach
So the code I used in MIR-to-LIR to find ENTER-INSTRUCTIONs is gone, and I need to go back to the way they are found in HIR and MIR.
14:44:35
beach
Everything is simpler now, but there is of course going to be some additional complexity (and ultimately significantly more) in the call-site manager.
14:45:29
beach
But the first task is to get MIR-to-LIR and code generation to work with the new way of generating function calls.
15:14:16
beach
So far, I have adapted MIR-to-LIR and code generation to the new way of finding ENTER-INSTRUCTIONs, which also removed the warnings that have been signaled recently when the boot procedure was loaded with ASDF.
15:15:17
beach
But, now, of course, MIR-to-LIR is not up to snuff, because the main task is to replace the (rather silly) way of introducing registers that is currently used by the new EDU-based technique.
15:18:02
beach
The good news is that I know what to do with the CATCH-INSTRUCTION. It will be treated as an instruction with a single successor, namely the first one. Other successors are not reached by normal control flow, and, as I pointed out the other day, all registers must be spilled at those other successors, at least in the general case of a non-local transfer of control.
2:05:59
Bike
i'm thinking of putting something into cleavir i've wanted for a while - making it so that if there's an unexpected error when running an essentially optional pass (e.g. optimization), the client can just skip that pass rather than ending up in the debugger or otherwise aborting the whole compilation
2:06:31
Bike
i can just throw in a bunch of with-simple-restart, and that works ok, but it won't work if the error is signaled in such a way that the compiler is in an inconsistent state
2:07:05
Bike
i can think of some fancy ways to deal with this... but it might not be worth it, since this is only particularly useful to deal with compiler bugs
2:07:21
Bike
but i'm not arrogant enough to think there won't be any bugs in the future, so i'll probably go for it
2:08:54
Bike
what i'm thinking is i can have a macro, with-inconsistency or something, and wrap it around those editing steps. it'll bind some internal dynamic variable to false. then, all the continue restarts have a :test function that makes the continue restart invisible if the variable is false