libera/#clasp - IRC Chatlog
Search
20:54:28
drmeister
yitzi: Commenting on something you said earlier on the phone. ECL does have (sys:install-bytecode-compiler) - that installs the bytecode compiler as the default compiler.
20:55:41
drmeister
We should be able to put it under control of a dynamic variable once the bytecode compiler can do anything that it is missing.
20:56:18
drmeister
There is some fussy stuff like some compiler macros that cleavir can use, the bytecode compiler cannot.
20:58:04
drmeister
I'd be all for LOADing everything with the bytecode compiler and then COMPILE-FILEing things with Cleavir.
20:58:37
drmeister
The only hitch is that the inlining code may get really bogged down if its running in bytecode.
21:18:40
drmeister
Bike: I'm going to stick a call to extern "C" drag_native_calls() right at the top of every generated function IFF sys:*drag-native-calls* is T.
21:27:46
drmeister
That let's us slow all compiled functions by about 20 instructions for each drag unit.
21:39:10
drmeister
drag = 0. Time real(8.470 secs) run(8.470 secs) consed(2752278536 bytes) interps(2186) unwinds(0)
21:39:41
drmeister
drag = 100. Time real(12.079 secs) run(12.079 secs) consed(2749859640 bytes) interps(2182) unwinds(0)
21:40:19
drmeister
drag = 0. Time real(8.473 secs) run(8.473 secs) consed(2739291616 bytes) interps(2178) unwinds(0)
21:40:32
drmeister
drag = 100. Time real(10.581 secs) run(10.581 secs) consed(2754494432 bytes) interps(2182) unwinds(0)
21:41:16
drmeister
drag = 0. Time real(8.552 secs) run(8.552 secs) consed(2755525056 bytes) interps(2186) unwinds(0)
21:41:51
drmeister
drag = 10. Time real(14.150 secs) run(14.150 secs) consed(2754744056 bytes) interps(2186) unwinds(0)
21:42:50
drmeister
drag = 0. Time real(8.555 secs) run(8.555 secs) consed(2755360640 bytes) interps(2186) unwinds(0)
21:43:33
drmeister
drag = 100. Time real(24.954 secs) run(24.954 secs) consed(2740699464 bytes) interps(2178) unwinds(0)
21:44:36
drmeister
So in order of importance for speeding things up... cxx-call wrappers, general-allocation, cons-allocation, native-calls
21:46:09
drmeister
Bike: What was the bytecompile that you tried to do early when clasp was starting up that gave you a mysterious problem?
21:47:19
drmeister
I want to look at that now - because it feeds into my idea to compile the wrappers.
21:47:22
Bike
cmprepl-bytecode does (setq *implicit-compile-hook* 'bytecode-implicit-compile-repl-form)
21:47:37
Bike
i got the error when i changed it to (setq *implicit-compile-hook* 'bytecode-implicit-compile-form)
21:53:59
drmeister
yitzi: I'm getting this when I load_vclasp-boehmprecise stopping early - hang on...
21:57:53
drmeister
I put in a test... Could not use file-write-date on #P"SYS:SRC;LISP;KERNEL;CONTRIB;ACCLIMATION;PACKAGES.LISP"
22:00:51
drmeister
There is something wrong with `(probe-file #P"sys:src;lisp;kernel;contrib;acclimation;")`
22:03:34
drmeister
is export CLASP_STAGE_COUNT=2 ; `ninja -C build load_vclasp-boehmprecise` something I should be able to do?
22:07:19
drmeister
Bike: What problem did you see? Because I can start up the interpreter with nothing else and `(setq cmp:*implicit-compile-hook* 'cmp:bytecode-implicit-compile-form)` and it compiles and evaluates forms.
22:10:48
karlosz
drmeister: good to know we are at 392 instructions for that snippet now. this wrapper stuff is where drag showed the most impact right? i think thers more instructions to be squeezed out. the nil tag thing is really weird
22:13:16
drmeister
Bike: When you use CL_DEFUN - I think you need the package designator in front of it.
22:13:37
drmeister
So it should be: `CL_DEFUN T_mv comp__bytecode_implicit_compile_form(T_sp form, T_sp env) {`
22:15:02
drmeister
::notify Bike Ping me when you are online about CL_DEFUN - I have some questions and might clear up some things.
22:15:57
drmeister
karlosz: I'd like to move the cvm code into clasp - could we do that? as in clasp/src/cvm ?
22:16:46
drmeister
I'd like to move the have one definitive source of VM opcode info and one definitive reference compiler.
22:35:20
karlosz
Bike: i think optimizing the stack pointer access will be just as if not even mor effective than the pc optimization. here's the code for every instance of vm.pop which gets inlined https://paste.gnome.org/2ldoNSB6D
22:36:12
karlosz
whereas we really need just 2: a memory load into the value variable, and then a pointer increment.
22:41:33
drmeister
How should cmp__bytecode_implicit_compile_form differ from cmp__bytecode_eval_with_env ?
22:42:45
drmeister
`export CLASP_STAGE_COUNT=2; ninja -C build load_vclasp-boehmprecise` is the correct way to stop after stage 2 - right?
23:09:59
drmeister
Yesterday I switched the code to use fmt::fprintf(std::iostream ...) - it WORKED on zeus and I thought "great - the fmt people made fprintf work with iostreams". Now you tell me it doesn't work with iostreams. How is all of our code working???
23:12:40
drmeister
I am in effing version hell right now. fmt just changed from 9.0 to 9.1 - did they drop support for ostreams in just the last couple of days?
23:13:01
drmeister
Did I change all of our code to use ostreams within a few hours of fmt dropping support for it?
23:13:38
Colleen
Bike: drmeister said 58 minutes, 36 seconds ago: Ping me when you are online about CL_DEFUN - I have some questions and might clear up some things.
23:36:45
yitzi
Actually I think the issue might be that fprintf is exclusively for FILE, whereas print is for ostreams.
23:41:33
yitzi
Nope, they completely removed them in 9.1.0 .... wow I guess they consider a point release to be a "major" release. Amazing.
23:46:03
Bike
tracing the vm, i can see it going through a function, hitting return, and then somehow ending up at a previous instruction, with the same frame pointer
23:46:13
Bike
this function shouldn't be recursive and in any case the previous instruction isn't after a call
23:53:03
Bike
what it specifically does is special-bind, then some save-sp's, then bla bla bla return
0:01:22
Bike
i see... because all returns have been nonlocal so far... so it'll just escape from any number of interposed special-bind frames
0:06:04
Bike
::notify karlosz save-sp/restore-sp is broken with respect to unbinding special variables, for now
2:03:39
drmeister
Bike: Other than boostrapping issues I'm not having any problems installing the bytecode compiler as the implicit compiler.
2:08:48
drmeister
If you turn that on in configure_clasp.h then it turns on the bytecode compiler right from the start.
2:32:41
drmeister
The OUT-OF-EXTENT-UNWIND was me - I removed whatever caused it by unwinding some changes I made to the early code to allow bytecompile to work.
2:57:19
Bike
do is defined... really early. i don't think it depends on anything except some other simple macros like when and dolist
3:08:06
drmeister
I moved a bunch of macros into `export.lisp` and I load that before `jit-setup.lisp` in `init.lisp` - I get a lot farther.
3:09:59
drmeister
It's surprising how tangled this all is. I implemented some macros in the interpreter long ago to allow us to bootstrap.
3:11:33
drmeister
That's so you can see everything load and you see what the context is when it crashes.
3:20:06
drmeister
There were two hooks that need to be defined - one hook was starting up the interpreter and that fed a ValueEnvironment_O into the system
3:30:06
drmeister
https://github.com/clasp-developers/clasp/blob/vm/src/lisp/kernel/lsp/seqlib.lisp#L881
3:30:37
drmeister
You have: https://github.com/clasp-developers/clasp/blob/vm/src/lisp/kernel/lsp/seqlib.lisp#L885
3:48:24
drmeister
Actually, that's not the original - that's the defmacro for PROG and I hacked it to move the DECL variable out of the lambda list into alet.
3:48:40
drmeister
The problem remains. I don't know what I'm doing and I'm too tired to figure it out.