freenode/#clasp - IRC Chatlog
Search
15:14:40
Bike
o-k, i'm pretty much set up for fast method calls except i don't know how to codegen the actual call.
15:55:01
ecraven
I'm not an expert, but I think npm is more of an example of how to *not* do things than anything else... there's been another incident recently with deleted packages that were re-uploaded by someone else. there's no verification of the source, so people would just have pulled that
15:57:39
Shinmera
The whole web ecosystem is a mess that you can't trust a single bit of: https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5
16:30:51
Bike
Just did a quick survey of how effective methods shake out in clasp. On startup there are 772 generic functions. After having used cleavir a bit and looking through all call histories: 799 (33%) emfs are slot readers, 197 (8%) are writers, 1089 (45%) are leaf methods, and the 320 (16%) remaining do something more complicated.
16:31:13
Bike
"leaf methods" meaning they don't call-next-method or anything so their method functions can be used directly as the emf.
16:36:58
Bike
of course, some frequently called generic functions are in the last category, like compile-ast
16:45:27
Shinmera
I'd estimate that in most libraries accessors will dominate both in definition and usage frequency
16:47:21
Bike
i can't measure actual calls without some slowing instrumentation, though it would still be interesting
16:47:48
Shinmera
Can't you get pretty low overhead instrumentation with linux tools like perf or what?
16:48:42
Bike
prrrrrobably, but i'm not immediately sure how to use that with the clos infrastructure
16:50:41
Bike
just thought i'd try to get a bit of evidence for the idea that most effective methods only involve one method, really
18:10:29
Bike
ok, there actually is code to not do the valist stuff when it's not needed, it's just that the "effective methods need valist" variable is constant t at the moment
18:29:40
Bike
as far as i can tell the only reason this isn't working is that i can't guess the right accessor to use
19:05:05
Bike
passing the registers raw probably won't work, since the closure has to be passed correctly
19:09:54
Bike
so i can't do this in any obvious way because i can't get the regular arguments to the gf
19:38:03
Bike
it is kind of interesting how fastgf makes gfs static, or rather allows using a static way of optimizing for a dynamic system. i think even more severe things like cutting method bodies together as an effective method to be compiled probably would make sense, performancewise
20:04:43
Bike
...right, all my changes were reverted as part of something else. i am going to do that again and it will stick
21:17:36
Bike
hoo, i thought i hit a bug that was going to be hugely irritating to find, but worked it out. go two minute breaks
21:20:38
Bike
and another quick survey shows they make up a little over half of all the single-method case
21:54:59
Bike
But when we call the fast method function we need the closure to be the fast method function.
21:56:00
drmeister
Bike: If you aren't tied up with something else - could you come be a sounding board to my latest exception handling problem.
21:56:16
drmeister
I keep upping my game with the debugging but eh seems to be one step ahead of me every freaking time.
2:23:41
drmeister
I'm pretty sure there is a very long standing problem lurking in Clasp's exception handling when exceptions are thrown in cleanup clauses. I'm pretty sure it has something to do with cxa_begin_catch/cxa_end_catch/rethrow
2:24:25
drmeister
I might be failing to pop entries from the exception stack - it would be really useful if I could interrogate the exception stack - must look into it.