libera/#clasp - IRC Chatlog
Search
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.
9:41:36
Colleen
karlosz: Bike said 9 hours, 35 minutes ago: save-sp/restore-sp is broken with respect to unbinding special variables, for now
9:41:51
karlosz
::notify Bike I see the issue you're talking about with special bind. i don't think there's a good way to solve it generally
9:43:36
karlosz
::notify Bike the main problem is we can't unbind multiple frames in one instruction like clisp because the binding stack is implicit on the C++ stack and not explicit. so i see two things we could do to still get most of the benefit: eliminate dynenv consing by using a 0 marker to explicitly invalidate dynenvs, and also to just restrict savesp and restoresp to contexts where no special binding has been lexically done. this is easy