freenode/#sicl - IRC Chatlog
Search
10:06:19
beach
I just added an "issue" about improving ENSURE-METHOD. Otherwise, if the generic function exists, as it does during bootstrapping, things now seem to work.
10:08:01
beach
I am currently working on the last part of phase 4, the purpose of which is to prepare for phase 5. And phase 5 is where we create (initially impure) ersatz objects. I don't expect many problems with the rest of phase 4, nor of phase 5, so it shouldn't take much longer to complete those.
13:57:50
heisig
No, totally not. This is just the start of a new semester at my university, and I am drowning in teaching-related work.
13:59:26
heisig
And when I spend too much time on this channel, I feel the urge to hack on SICL instead of my PhD. So I need to be careful :)
17:38:40
beach
I am calling it a day. I am almost done with phase 4. Phase 4 enables the creation of (initially impure) ersatz objects in environment E5, so I should soon be able to load files containing definitions of generic functions, methods, and classes into E5.
17:38:56
beach
I will stick around until my (admittedly small) family announces that dinner is served.
17:44:47
splittist
Perhaps you should have used the Basic numbering-by-tens convention to allow for alterations (;
17:46:12
heisig
Once this is over, I'd suggest we find better names for each environment than 'EN' anyway.
17:47:05
heisig
I would have a much easier time reading the code if the names were something like 'pseudo-host' or 'ersatz-nursery' or whatnot.
17:49:23
beach
My (admittedly small) family just announced that dinner is served. I'll be back tomorrow as usual.
18:12:26
Gnuxie[m]
Hi everyone, in the fast dispatch paper beach says that you can't recompile call sites with a more specific dispatch tree and I am wondering why this is?
19:03:36
beach
You can't recompile the entire caller, because that's not conforming behavior. It doesn't respect the "minimal compilation" requirement.
19:04:49
beach
But there is a way to "recompile" just the call site that I figured out not too long ago, and Bike is doing something similar, but a bit more expensive, performance wise.
19:05:40
beach
A call site can be a jump to a snippet that does the real call and then jumps back. The snippet can be replaced as a result of the callee being modified.
19:08:25
beach
The issue is where to put the snippet. With the global heap that I plan for SICL, code is not moving, so the snippet can be placed at a fixed distance from the original call site. If a new snippet must be allocated only the address of the jump needs to be updated to make the new snippet the current one, and that can be an atomic operation.
19:30:59
Gnuxie[m]
I don't think I have any further questions other than remarking that surely something like this helps a lot, especially when dispatch becomes 'nested' and duplicated for subsequent call sites (to other gfs) in a method body that is already specific
19:34:13
Gnuxie[m]
alright, that's exciting, I wish you luck when you get around to experimenting with it
19:37:38
mseddon
Gnuxie[m]: I'd say with sufficient book keeping you can always recompile what you need, although it's definitely not within the spirit of a lot of lisp compilers.
19:38:14
mseddon
Gnuxie[m]: the problem is of course that you may need to do ?? work when you recompile a method.
19:40:49
mseddon
Gnuxie[m]: so like, the ORBIT lisp compiler does this- it massively inlines things etc. whether that is great long term is questionable, but it's doable, and from what I here it was a very usable system on the MC68020, which is not known for being particularly fast.
19:42:45
mseddon
from my perspective, looking at transferring beach's paper to javascript, I see no obvious drawback recompiling like this, while it significantly helps performance.
19:44:33
mseddon
I think the bigger issue is that SICL is also juggling a complex runtime environment, and there are issues that I probably don't even have to think about which will segfault when you're that low level.
19:46:48
Bike
the problem with recompilation is that you're not allowed to expand macros again. might be possible to work around that by keeping macroexpanded code, i guess
19:48:31
mseddon
Bike: I think yeah, just macroexpand everything and only compile from there. Otoh, the interaction between different environments and compile times gets a bit muddy for me, so I'd hate to call it.
20:13:40
mseddon
Gnuxie[m]: yeah, to be fair, ORBIT compiles to an ooold version of Scheme. I have a lot of respect, but am utterly confused quite how people can do decent case analysis on CL, given the spec is entirely in ambiguous prose, and there is no operational or denotational semantics.