freenode/#sicl - IRC Chatlog
Search
18:43:49
Bike
the current Cleavir representation of dynamic environments should be fine across implementation. the question is what to do with local unwinds. We could, for example, insert UNBIND- and UNWIND-DEPROTECT- instructions on the local unwind paths... and for unwind-protect, a funcall of the cleanup thunk as well
18:44:23
Bike
SICL might want to give those funcalls a dynamically-passed dynamic environment to handle exit point abandonment, or it could just take whatever dynenv was in place when the unwind-protect was entered, and rely on the entry marks
18:45:46
Bike
on SICL UNBIND- and UNWIND-DEPROTECT- would just pop the dynamic environment entry (I think that's how it works?). on clasp UNBIND would replace the symbol value and UNWIND-DEPROTECT would be a nop.
18:47:48
Bike
the alternate would be to forgo individual instructions and just have a like LOCAL-UNWIND instruction that does everything
18:48:09
Bike
maybe with a better name than that though, i've been using "unwind" interchangeably with "nonlocal"
19:06:55
beach
froggey: Oh, so the GS register is actually available and usable? I should just use it for the reified thread then.
19:08:13
Bike
wikipedia says "Four of the segment registers, CS, SS, DS, and ES, are forced to 0", so i guess the other two are fair game
19:09:25
beach
I should read up on the segment registers, but not tonight. I am off to spend time with my (admittedly small) family.
19:15:23
Bike
maybe i was reading the output wrong or something, cos stuff online says gs. i don't know
4:33:56
beach
alandipert: I should have warned you. My remarks often come across as "dry". It's because I am a professor, and I switch modes to "grading", so I make no effort to be polite. I apologize for that.
4:42:25
alandipert
one thing i realized when writing is this is how much my writing skills atrophied since college, and i wouldn't be surprised if part of the reason why is, when i do write, i rarely get detailed feedback
4:44:16
alandipert
would you happen to have any general thoughts about the overall structure or tempo of the article? or the impressions, if any, it left you with?
4:46:13
beach
Hmm. Your writing is not bad at all. It must have been fantastic when you were in college. My skills have improved immensely, mainly because my (admittedly small) family has a PhD in English, and because they were hampered by my not being a native speaker of English.
5:00:31
alandipert
thanks. and you know, considering the command of english you demonstrate, even as a non-native speaker...
5:01:00
alandipert
I can't help but wonder if it's time for me to start communicating with proper grammar and punctuation.
5:16:03
beach
no-defun-allowed: You were warned. verisimilitude just wants to argue, and with no reasonable arguments.
5:19:19
no-defun-allowed
And yes, I should have stopped; but I despise when people say a problem is only "theoretical".
5:26:32
no-defun-allowed
Some time ago, I was exposed to their article "A Rebuttal of an Article Involving the CL-CHARMS Common Lisp Library"; and it didn't appear to refute anything in the referenced tutorial.
6:00:42
karlosz
and was curious to see more details with respect to actually dumping classes so they can get loaded by the target
6:01:37
beach
I have an isomorphic graph in the host, so I should have no problems creating the bits required by the target.
6:02:28
karlosz
i don't think there's a problem, i was just curious how the graph would actually get dumped.
6:04:04
beach
I think a single pass ought to be enough. I would keep a hash table of already dumped objects. Then I would implement a host version of the memory allocator that would use a byte vector.
6:07:09
beach
If I encounter an object that is not in the hash table, I dump it and enter it into the hash table.
6:07:25
beach
If I encounter an object that is already in the hash table, I just use the existing address.
6:08:13
karlosz
but if i dump something like the meta object standard-class which has standard-class as a subobject
6:08:43
karlosz
then the 'standard-class' object is not in the hash table, but dumping it requires standard class to have already been dumped
6:10:50
beach
I start by allocating space for the header object, and I enter that address in the hash table.
6:12:46
karlosz
you separate out the allocation and dumping of the header from the allocation and dumping of the rest of the slots
6:14:05
beach
The important part is that when I encounter an object that has not yet been dumped, I start by allocating space for it in the byte vector, and I enter its address in the hash table.