freenode/#clasp - IRC Chatlog
Search
14:36:19
drmeister
https://github.com/clasp-developers/clasp/blob/master/src/lisp/kernel/cmp/cmpintrinsics.lsp#L1100
14:37:39
drmeister
One problem with debugging this is that the (let (... (values (first arguments)) (size (second arguments)) (gf-args (second arguments))) assignment is a source info dead-zone.
14:38:54
drmeister
But there is more than just this bug. The source info dead-zone is a problem as well.
14:41:39
drmeister
https://www.dropbox.com/s/2kzehok7x2kjfm5/Screen%20Recording%202020-08-02%20at%2010.39.40%20AM.mov?dl=0
14:50:20
drmeister
inline core::T_O *raw_() const { return reinterpret_cast<core::T_O *>(this->theObject); }
14:51:42
drmeister
Calling SingleDispatchGenericFunctions_O needs to be changed. It's really inefficient.
15:06:48
drmeister
In both cases gf-args reads the same entry (second arguments) as size (second arguments)
15:08:20
drmeister
AND then finally arguments is NIL and either (values (first arguments)) or (size (second arguments)) or (gf-args (second arguments)) is signalling a type error.
15:11:42
drmeister
It might be that since values (also a terrible name for a variable in CL) is not being used maybe type inference is removing a type check and then it's trying to read the CAR of NIL?
15:13:00
drmeister
It makes it so much easier to debug this problem because I can back up and go forward over the error over and over again.
15:17:43
drmeister
So it gets NIL from the literal vector. (Aside, udb + my python extension = very powerful)
15:21:08
drmeister
ASIDE: Now - why would it do that? Whatever arguments is - there is no reason to check if it's T
15:25:04
drmeister
That doesn't make sense for NIL - but it would make sense for a CONS cell. 0x5(cons-tagged-ptr) would get the CDR
15:26:07
drmeister
Yeah - then the next thing it does is test if the result in %rdi is another cons-tagged-ptr.
15:33:55
drmeister
kpoeck: I think I see why it's intermittent. It's possible that what it reads out of NIL might avoid a type error and since the results don't get used it keeps going.
15:38:10
drmeister
Here's what mine looks like now. I changed the upper 'values' variable name to 'arg-values' as well.
15:39:52
drmeister
I want to show this to bike and karlosz so they can figure out if it's type inference going awry on dead code.
15:42:44
kpoeck
sbcl would complain about the unused variables, I wonder whether we should try to compile - not execute - out compiler with sbcl