freenode/#clasp - IRC Chatlog
Search
8:31:20
drmeister
::notify Bike FYI this change to gen-primitive-type-check allowed cclasp-boehmdc to compile ... https://github.com/drmeister/clasp/blob/dev-func/src/lisp/kernel/cleavir/hir-to-mir.lisp#L193
9:12:28
Colleen
Unknown command. Possible matches: 8, time, help, clhs, say, mop, login, hello, tell, roll,
9:23:12
Shinmera
::notify Bike https://irclog.tymoon.eu/freenode/%23clasp?around=1500875908#1500875908
14:12:32
Colleen
Bike: Shinmera said 4 hours, 49 minutes ago: https://irclog.tymoon.eu/freenode/%23clasp?around=1500875908#1500875908
14:14:15
Bike
drmeister: i'm confused. as you can see on L336 of that file, it should only call gen-primitive-type-check when there is a primitive type (i.e., there is a non-null entry in the hash table)
14:15:06
Bike
drmeister: oh, i see. i also call gen-primitive-type-check for stuff like abstract-simple-vector that i assume is in there
15:06:05
drmeister
When I start emacs in OS X from the Dock, certain environment variables are not set. It plays hell with building.
15:59:06
drmeister
I was thinking (1) we already have a virtual machine - the interpreter speaks pidgin Common Lisp.
16:01:00
drmeister
(2) If we ensure that the bodies of translate-simple-instruction and translate-branch-instruction generate only pidgin Common Lisp or calls to stuff that generates pidgin Common Lisp then we can wrap the bodies of those generic functions in a macro that in sbcl writes its body to a file.
16:01:28
drmeister
Then we run that file in the interpreter after loading a few support functions - maybe the stuff in cleavir/ir.lisp
16:02:44
drmeister
We can define pidgin Common Lisp to be whatever we want - up to but probably not including CLOS.
16:04:10
drmeister
Then the same code that we run in sbcl to generate the pidgin Common Lisp will be used when cclasp is running to generate code.
16:07:18
drmeister
Rather than come up with a new intermediate representation. We use pidgin Common Lisp as the intermediate representation.
16:10:22
drmeister
We have cleavir running in sbcl generate the lisp code that calls to translate-simple-instruction and translate-branch-instruction generate. Then we load up as much of bclasp into the interpreter that we need and we then load and evaluate the lisp code that cleavir/sbcl generated.
16:12:13
drmeister
And we can include as much Common Lisp as we want because the interpreter can load Common Lisp code and make the functions and macros available.
16:12:48
drmeister
It gets really bogged down in CLOS - so as long as we don't use CLOS inside of translate-simple/branch-instruction.
16:13:28
drmeister
But the interpreter can call into llvm without loading any Common Lisp code. That's built into the C++ executable.
16:21:18
drmeister
the clasp interpreter running the generated code - maybe 15 min (this is the biggest unknown).
16:24:13
drmeister
So - on my laptop thats 10+15+15+15 -> ~1 hour, where less than half the time is compiling Common Lisp code and the rest of the time is C++ and LLVM linking.
16:26:03
drmeister
We are never going to get this down to 5 minutes. C++ and LLVM become the bottlenecks.
16:27:44
drmeister
Bike: I hit this while building bclasp: datum: TYPE-ERROR (:DATUM #S(STANDARD-GENERIC-FUNCTION GENERIC-FUNCTION-NAME #slots[14]) :EXPECTED-TYPE FUNCTION)
16:33:23
drmeister
What I've been doing the last couple of days should have fixed that - investigating...
16:36:29
drmeister
Those are the range of stamps for Function_O. FuncallableInstance_O is 264 This is what FUNCTIONP should reduce to in 'boehm'
16:37:31
drmeister
Don't worry - I'm sure things are fine. I've been doing a lot of messing around the past couple of days before I settled on FuncallableInstance_O inheriting from Function_O - I'm on it.
17:03:32
drmeister
generic-functions are being allocated as Instance_O and not FuncallableInstance_O
17:38:38
Bike
i'm gonna start on path replication, but i think it will be easier if i can get values of constant hir data. do you think it would be reasonable to add a 'value' slot to load-time-value-input, and have generate-ast evaluate the form and put the result in that slot, when read-only-p is true?
17:42:52
beach
I think I have said this before, but constant folding might not be universally good (for all values, I mean).
18:32:23
Kevslinger
drmeister: when I run the test-nglview notebook and get to (defparameter *r* (trivial-http:http-get *u*)), [where *u* is "http://files.rcsb.org/view/4HB1.cif"], I get an error of type: END-OF-FILE. Do you know what I can do to fix that?
18:36:14
drmeister
https://github.com/clasp-developers/cl-jupyter/blob/master/nglview/adaptor.lisp#L91
18:37:00
drmeister
Shinmera: I don't think there is a good reason anymore - I can't remember why we were using trivial-http
18:37:23
Shinmera
drmeister: drakma uses flexi-streams which uses gray-streams, maybe because of that.
18:38:39
drmeister
Kevslinger: What Shinmera is describing are other quicklisp systems that handle the http protocol.
18:39:15
drmeister
(ql:quickload "dexador") or (ql:quickload "drakma") are probably how you load them.
18:40:00
drmeister
I don't have problems using quicklisp dependencies - they get automatically compiled into the docker image
18:59:01
drmeister
I have these C++ classes called CREATOR's - they do the business of ALLOCATE-INSTANCE but for all C++ objects.
18:59:21
drmeister
For some reason I didn't make them funcallable. I'm going to make them inherit from Function_O.
18:59:48
drmeister
Then we can go (funcall (core:creator (find-class 'whatever))) and get a C++ constructed object
20:10:16
drmeister
I found the problem I was having. I was allocating a FuncallableInstance_O but installing the header-value for Instance_O