freenode/#clasp - IRC Chatlog
Search
11:22:24
Colleen
scymtym: drmeister said 12 hours, 33 minutes ago: We went with post-processing the tree after the parser and builder code is done with it to handle the ring-tag-set/test.
14:08:29
Bike
i figured an easy way to avoid vaslists for discriminating functions that don't branch to effective methods, so i'm trying that out
14:09:06
Bike
i think i should also clean things up so that effective method functions don't take another argument pointlessly
14:09:33
Bike
do we have an apply with known arguments that's as efficient as a call now? or close? because using that might be good
14:27:05
Bike
drmeister: i just noticed cc_read_stamp returns 123456 if the tag doesn't match any of the cases (which I think is impossible?) can we put an actual error in there or what
14:28:42
drmeister
Sure - just make sure that it does a simple call to a function that signals the error and doesn't inline a lot of code to do so.
14:31:43
Bike
instance-stamp takes a T_sp, then does obj.raw_, then does reinterpret_cast<void*>, then passes it to cc_read_stamp which does reinterpret_cast<uintptr_t>
14:31:56
Bike
can i start with a T_O* and just reinterpret_cast<uintptr_t> without bothering with the void*?
14:47:06
drmeister
Yes, core::make_fixnum is just an inline shift - but if you are going to do inline shifts yourself make sure you derive the shift from gctools::fixnum_shift defined in clasp/include/clasp/gctools/pointer_tagging.h - it is exported to Common Lisp.
14:47:59
drmeister
https://github.com/clasp-developers/clasp/blob/dev/include/clasp/gctools/pointer_tagging.h#L102
14:51:15
drmeister
obj.raw_(), reinterpret_cast<void*> and reinterpret_cast<uintptr_t> are zero cost abstractions - they don't generate a single extra instruction, they just get around the C++ compiler type checking.
14:52:15
drmeister
I'm reading and rereading what you typed to pull a question out of it. What is the question?
15:06:41
Bike
i switched it to use arguments instaead of a vaslist and there's no noticeable timing change for the simple example i was working with, so the only bottleneck left i can think of is instance-stamp, is why i'm looking at this
15:22:19
Bike
ok, so at this point if i completely cut out the bespoke compiler, build takes 37 minutes instead of 30. i think with instance-stamp inlined it ought to be fast enough.