freenode/#clasp - IRC Chatlog
Search
14:45:46
Bike
so with the find-class macro there's two things - we need a get-cell that creates a cell if it doesn't exist, and we need to be able to detect that a cell doesn't have a class in it. we could probably just put NIL in the cell or something
14:46:03
Bike
actually you have it so that (setf (find-class 'foo) nil) removes the cell entirely, which probably isn't the best way to do it i think
14:48:39
Bike
technically that means we could get an accumulation of useless cells, but it seems unlikely to happen
14:49:01
Bike
if it did happen we could GC them (with them being kept alive by any code find-class-ing those names)
14:49:52
drmeister
I see your point(s) - so I should change (setf (find-class 'foo) nil) to leave the cell in there.
15:05:49
drmeister
Kevslinger: Are you online? If you are around can you come see me? Or check Slack.
16:34:30
drmeister
Bike: Regarding the cleavir changes. Should I submit a pull request to your fork of sicl and you can look it over, fix it up and then submit that to beach?
17:09:06
Bike
beach: oh yeah, about the predicate thing- did you mean just clasp changing its typep-for-classes to use generic functions, or explicitly writing out generic functions in the cleavir source? the latter is what drmeister is talking about
17:17:24
drmeister
Bike: I can't submit a pull request to your fork of sicl because I'd have to have my own fork of sicl.
17:20:24
drmeister
There are two commits - one with the predicates and use of predicates and a second where I added :size 1024 :rehash-size 4.0 to the map-instructions-xxx hash-tables.
17:21:16
drmeister
I confess - I couldn't tell because of everything else I did. You could drop those ones and I can experiment with it a bit.
18:21:53
drmeister
I did look at how much rehashing there was before and after. After - about half as much
18:23:56
drmeister
I can’t do anything at the implementation level because I can’t tell these hash tables from others.
19:39:07
drmeister
Bike: I have some more cleavir changes - ast class predicates and changes to introduce-invoke that use them.
19:39:40
Bike
i'm kind of focusing on the hir rewrite stuff. which, again, will end in me deleting introduce-invoke. so don't worry about it much.
19:41:25
drmeister
But I think I figured out the main story about why the AST generation thread slows down along with the AST->HIR->llvm children.
19:43:28
drmeister
If you use the Activity Monitor, sample the process, save it and bring it up in emacs you can search for "pthread_mutex_lock_slow" - and everything becomes clear.
19:44:27
drmeister
Then we can either change a TYPEP to a predicate or use a load-time-value class-holder.
19:46:54
drmeister
That and we need an interpreter for cclasp-eval-with-env. defstruct goes crazy compiling forms.
19:55:45
Bike
(defstruct foo bar baz) expands to a defclass, a defgeneric, four declaims, four defuns, an eval-when setf, and two defsetfs
19:56:22
Bike
defsetf is kind of like defmacro here- it's a (setf whatever (lambda ...)) in an eval-when
21:54:08
drmeister
I've updated Bike's sicl repo with some more cleavir class predicates (this time ast classes).
22:03:34
drmeister
I mean - there were some changes in dev that I had to rebase - building everything now...
22:09:34
drmeister
Bike: wrt the literal bytecode interpreter idea - you were talking about using a stack where I was talking about using a sort of register machine with lots of registers. Did you have your idea fleshed out how to implement it?
22:13:00
drmeister
What the heck - I'll just do the register machine thing - I see how to do it and we are talking about different ways to manage temporary storage.