2016-09-06T00:04:33Z oleo_ joined #sbcl 2016-09-06T00:08:04Z oleo quit (Ping timeout: 240 seconds) 2016-09-06T00:12:03Z Xof quit (Ping timeout: 240 seconds) 2016-09-06T00:14:09Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-09-06T00:25:26Z nyef quit (Quit: Rebooting for system upgrade, back in a bit... I hope.) 2016-09-06T00:29:13Z attila_lendvai joined #sbcl 2016-09-06T00:31:26Z stassats: nothing useful 2016-09-06T00:35:54Z nyef joined #sbcl 2016-09-06T00:36:17Z DGASAU quit (Read error: Connection reset by peer) 2016-09-06T00:39:47Z DGASAU joined #sbcl 2016-09-06T00:43:40Z flavioc quit (Ping timeout: 250 seconds) 2016-09-06T01:07:27Z DavidGu quit (Ping timeout: 276 seconds) 2016-09-06T01:13:29Z DavidGu joined #sbcl 2016-09-06T01:15:41Z jrm quit (Quit: ciao) 2016-09-06T01:17:24Z jrm joined #sbcl 2016-09-06T01:28:15Z DavidGu quit (Ping timeout: 276 seconds) 2016-09-06T01:32:41Z edgar-rft quit (Quit: edgar-rft) 2016-09-06T01:46:35Z DavidGu joined #sbcl 2016-09-06T01:48:15Z em1l_ joined #sbcl 2016-09-06T01:51:21Z em1l quit (Ping timeout: 244 seconds) 2016-09-06T01:52:24Z karswell quit (Remote host closed the connection) 2016-09-06T01:52:39Z karswell joined #sbcl 2016-09-06T01:53:51Z cromachina_ joined #sbcl 2016-09-06T01:55:09Z nyef` joined #sbcl 2016-09-06T01:55:11Z nyef quit (Remote host closed the connection) 2016-09-06T01:57:15Z cromachina quit (Disconnected by services) 2016-09-06T01:57:23Z cromachina_ is now known as cromachina 2016-09-06T02:01:29Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-09-06T02:09:03Z stassats quit (Ping timeout: 240 seconds) 2016-09-06T02:26:52Z nyef`: And done! 2016-09-06T02:43:51Z DavidGu1 joined #sbcl 2016-09-06T02:44:33Z DavidGu quit (Read error: Connection reset by peer) 2016-09-06T02:44:34Z DavidGu1 is now known as DavidGu 2016-09-06T02:46:32Z DGASAU quit (Read error: Connection reset by peer) 2016-09-06T02:47:50Z DGASAU joined #sbcl 2016-09-06T02:57:43Z DavidGu quit (Quit: DavidGu) 2016-09-06T02:58:58Z DavidGu joined #sbcl 2016-09-06T03:22:49Z foom quit (Ping timeout: 255 seconds) 2016-09-06T03:34:51Z foom joined #sbcl 2016-09-06T03:55:13Z DavidGu quit (Read error: Connection reset by peer) 2016-09-06T03:55:16Z DavidGu1 joined #sbcl 2016-09-06T03:57:40Z DavidGu1 is now known as DavidGu 2016-09-06T03:57:49Z shka_ joined #sbcl 2016-09-06T04:08:19Z whiteline quit (Ping timeout: 252 seconds) 2016-09-06T04:09:37Z DavidGu quit (Ping timeout: 255 seconds) 2016-09-06T04:37:12Z rszeno quit (Ping timeout: 244 seconds) 2016-09-06T04:41:22Z whiteline joined #sbcl 2016-09-06T04:45:05Z oleo_ quit (Quit: Leaving) 2016-09-06T04:51:11Z edgar-rft joined #sbcl 2016-09-06T05:00:01Z fiddlerwoaroof quit (Ping timeout: 252 seconds) 2016-09-06T05:04:07Z fiddlerwoaroof joined #sbcl 2016-09-06T05:33:49Z DavidGu joined #sbcl 2016-09-06T05:37:52Z DavidGu quit (Ping timeout: 240 seconds) 2016-09-06T05:44:21Z scymtym quit (Ping timeout: 276 seconds) 2016-09-06T06:24:54Z slyrus quit (Remote host closed the connection) 2016-09-06T06:28:58Z shka_ quit (Ping timeout: 244 seconds) 2016-09-06T07:02:10Z Xof joined #sbcl 2016-09-06T07:30:10Z scymtym joined #sbcl 2016-09-06T07:54:37Z DGASAU quit (Read error: Connection reset by peer) 2016-09-06T07:57:02Z DGASAU joined #sbcl 2016-09-06T08:45:07Z angavrilov joined #sbcl 2016-09-06T08:52:52Z rudolfochrist joined #sbcl 2016-09-06T09:00:44Z Bike quit (Quit: dream eaten) 2016-09-06T09:19:19Z rudolfochrist quit (Ping timeout: 250 seconds) 2016-09-06T10:28:59Z sjl quit (Read error: Connection reset by peer) 2016-09-06T11:20:37Z sjl joined #sbcl 2016-09-06T11:57:55Z stassats joined #sbcl 2016-09-06T12:02:59Z sjl quit (Quit: WeeChat 1.3) 2016-09-06T12:04:30Z DavidGu joined #sbcl 2016-09-06T12:08:32Z DavidGu quit (Ping timeout: 240 seconds) 2016-09-06T12:10:31Z madbub joined #sbcl 2016-09-06T12:20:32Z rudolfochrist joined #sbcl 2016-09-06T12:27:06Z scymtym: stassats: things are back to normal: https://ci.cor-lab.org/job/sbcl-master/1734/ 2016-09-06T12:27:52Z stassats: scymtym: and all read-only tramps are in 2016-09-06T12:27:56Z stassats: you can merge your thing 2016-09-06T12:29:11Z scymtym: will do 2016-09-06T12:29:53Z stassats: and i need to remove #±read-only-tramps 2016-09-06T12:37:46Z scymtym: "enhancement: various improvements allow the compiler to generate more compact low-level error signaling code"? 2016-09-06T12:38:13Z stassats: enhancement: more compact low-level error signaling code 2016-09-06T12:39:36Z scymtym: i wanted to make clear that SIGNAL is not involved, but yours is probably better 2016-09-06T12:39:56Z stassats: clear to whom? 2016-09-06T12:41:07Z scymtym: yeah, the details are probably of interest to few people 2016-09-06T12:41:21Z scymtym: i'm going with your version 2016-09-06T12:44:05Z hel-io joined #sbcl 2016-09-06T12:45:13Z scymtym: pushed. i hope i didn't break the backends i can't test 2016-09-06T12:51:37Z stassats: ok, now i can try combining trap number and error number together 2016-09-06T12:54:47Z attila_lendvai joined #sbcl 2016-09-06T13:00:37Z scymtym: 3 bits for the trap kind and 8 bits for error number? 2016-09-06T13:01:10Z stassats: there are different traps 2016-09-06T13:01:13Z stassats: just put error-trap at the end 2016-09-06T13:01:27Z stassats: and anything larger than error-trap is an error trap error number 2016-09-06T13:09:09Z karswell quit (Ping timeout: 265 seconds) 2016-09-06T13:14:27Z sjl joined #sbcl 2016-09-06T13:21:04Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-09-06T13:22:33Z stassats: (find-class 1 nil) doesn't signal an error 2016-09-06T13:22:45Z sjl quit (Quit: WeeChat 1.3) 2016-09-06T13:26:02Z scymtym: i probably should have added CHECK-CLASS-NAME to FIND-CLASS in 57943392 2016-09-06T13:26:30Z cromachina quit (Read error: Connection reset by peer) 2016-09-06T13:26:46Z scymtym: ah, i did, but only for the errorp case 2016-09-06T13:29:45Z sjl joined #sbcl 2016-09-06T13:30:21Z nyef`: Some platforms have a very limited number of bits for the trap kind. 2016-09-06T13:31:28Z nyef`: Umm... And for the single-step-around-trap, may be encoding extra data in the trap kind bits already. 2016-09-06T13:32:55Z scymtym_ joined #sbcl 2016-09-06T13:35:16Z scymtym quit (Ping timeout: 255 seconds) 2016-09-06T13:37:42Z scymtym__ joined #sbcl 2016-09-06T13:39:19Z scymtym_ quit (Ping timeout: 255 seconds) 2016-09-06T13:40:05Z rudolfochrist quit (Ping timeout: 265 seconds) 2016-09-06T13:44:42Z attila_lendvai joined #sbcl 2016-09-06T13:44:42Z attila_lendvai quit (Changing host) 2016-09-06T13:44:42Z attila_lendvai joined #sbcl 2016-09-06T13:45:39Z attila_lendvai quit (Read error: Connection reset by peer) 2016-09-06T13:47:56Z attila_lendvai joined #sbcl 2016-09-06T14:04:05Z nzambe quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-09-06T14:06:56Z nzambe joined #sbcl 2016-09-06T14:25:45Z chris_l joined #sbcl 2016-09-06T14:27:01Z chris2 quit (Ping timeout: 255 seconds) 2016-09-06T14:28:44Z hel-io quit 2016-09-06T14:30:49Z schjetne_ is now known as schjetne 2016-09-06T14:34:16Z chris2 joined #sbcl 2016-09-06T14:38:48Z oleo joined #sbcl 2016-09-06T14:49:08Z joshe quit (Remote host closed the connection) 2016-09-06T14:50:14Z nyef`: Looks like MIPS, at least, only has five bits for trap kind. 2016-09-06T14:50:59Z nyef`: (From a ten bit field, but the other five are for a register offset for the single-step traps.) 2016-09-06T14:53:40Z joshe joined #sbcl 2016-09-06T14:58:11Z dougk_ quit (Ping timeout: 250 seconds) 2016-09-06T15:07:29Z sjl__ joined #sbcl 2016-09-06T15:09:25Z sjl quit (Ping timeout: 252 seconds) 2016-09-06T15:19:42Z sjl joined #sbcl 2016-09-06T15:21:40Z sjl__ quit (Ping timeout: 244 seconds) 2016-09-06T15:27:33Z sjl quit (Ping timeout: 240 seconds) 2016-09-06T15:35:51Z mgodshall quit (Ping timeout: 276 seconds) 2016-09-06T16:11:07Z sjl joined #sbcl 2016-09-06T16:13:39Z shka_ joined #sbcl 2016-09-06T16:27:54Z mgodshall joined #sbcl 2016-09-06T16:30:31Z dougk_ joined #sbcl 2016-09-06T16:31:34Z karswell joined #sbcl 2016-09-06T16:34:37Z gargaml quit (Quit: WeeChat 1.5) 2016-09-06T16:36:07Z ASau joined #sbcl 2016-09-06T16:44:36Z stassats: nyef`: there's about 128 errors, so, 128 trap kinds should be plenty 2016-09-06T16:44:58Z stassats: but i'll probably confine the changes to x86-64 first 2016-09-06T16:45:08Z stassats: it's cisc, it's what i care about 2016-09-06T16:45:39Z stassats: (on arm64 the trap and error are already encoded into a single instruction 2016-09-06T16:47:10Z stassats: though why do traps start from 8? 2016-09-06T16:47:15Z scymtym__ quit (Ping timeout: 244 seconds) 2016-09-06T16:49:14Z nyef`: I have no idea? 2016-09-06T16:51:27Z stassats: huh, on alpha trap kind actually takes up a whole word? 2016-09-06T16:51:42Z stassats: well, a whole instruction, lword 2016-09-06T16:51:55Z nyef`: Looks like it. 2016-09-06T16:52:16Z nyef`: Probably easier to do it that way, somehow. 2016-09-06T16:52:32Z scymtym joined #sbcl 2016-09-06T16:52:32Z nyef`: Instruction stream alignment or something, maybe? 2016-09-06T16:52:34Z stassats: it doesn't need alignment 2016-09-06T16:52:50Z stassats: but you can align things easily, after encoding error arguments 2016-09-06T16:52:55Z stassats: and which is already done 2016-09-06T16:53:03Z nyef`: It's not just the error arguments, it's also the non-error traps. 2016-09-06T16:53:13Z nyef`: Pending-interrupt, for example. 2016-09-06T16:53:43Z stassats: well, emit-alignment and be done with it, but i won't touch it, who cares, really 2016-09-06T16:53:58Z stassats: it's only about size not performance 2016-09-06T16:54:05Z stassats: save for caches 2016-09-06T16:54:43Z stassats: well, if icache were that important i actually envisioned just having a trap instruction 2016-09-06T16:54:55Z stassats: and a table of traps in the code object 2016-09-06T16:55:03Z stassats: but it makes it harder to handle from C 2016-09-06T16:55:42Z stassats: can we reliably find code from pc? 2016-09-06T16:56:25Z nyef`: ... We have reg_CODE for every non-x86oid platform. 2016-09-06T16:56:40Z nyef`: And the x86oids are, of course, junk that we don't need to worry about. d-: 2016-09-06T16:57:35Z nyef`: Should be reliable, barring heap corruption, anyway: It uses gc_search_space(), IIRC. 2016-09-06T17:00:04Z scymtym: oops: https://ci.cor-lab.org/job/sbcl-master/1737/ . why didn't my gcc complain? did gcc change w.r.t. whether C99 is enabled by default at some point? 2016-09-06T17:00:26Z nyef`: IIRC, yes, it did. 2016-09-06T17:01:17Z scymtym: that would explain it 2016-09-06T17:01:33Z nyef`: Got caught out by that myself a while back. 2016-09-06T17:01:56Z scymtym: so moving k in "for (int k = …)" to the beginning of the function body should fix it 2016-09-06T17:03:35Z stassats: nyef`: when are internal errors handled from C? when things go wrong in cold init 2016-09-06T17:03:45Z stassats: and what can go wrong in cold init? code 2016-09-06T17:04:50Z stassats: and the heap can go corrupted, anything 2016-09-06T17:05:01Z stassats: so i'd rather leave errors as they are 2016-09-06T17:05:19Z stassats: or make it optional? but happens to optional things? they bitrot 2016-09-06T17:07:28Z nyef`: Mmm. More accurately, non-default things bitrot. 2016-09-06T17:07:52Z nyef`: Unicode is technically optional, but it's the default, so the non-unicode build is the one that breaks without people noticing immediately. 2016-09-06T17:08:50Z stassats: you can look at it as not having unicode is optional 2016-09-06T17:09:47Z scymtym: gcc -std=c90 complains about the // comments. what is the right option to test this? 2016-09-06T17:10:01Z nyef`: ... Which reminds me. HEAD doesn't build from 1.0.23. SB!KERNEL:FDEFN-P isn't defined, and is referenced from globaldb (probably via the FDEFN deftype in code/cross-misc). The fix is straightforward, but I don't know if it should be applied or not. 2016-09-06T17:11:29Z stassats: but it has a bang? how come then? 2016-09-06T17:12:19Z gko quit (Quit: ZNC - http://znc.in) 2016-09-06T17:14:52Z nyef`: I think that the defined type (SATISFIES FDEFN-P) is getting expanded in-place as a call to FDEFN-P, and since FDEFN-P isn't defined then it blows up. 2016-09-06T17:15:49Z stassats: but why does it work now? 2016-09-06T17:15:52Z nyef`: The "easy" fix is to just define a dummy FDEFN-P, and I have that in my local tree, I just don't know if committing it is the right thing or not. 2016-09-06T17:16:08Z nyef`: Yeah, I have NO idea what's going on there. 2016-09-06T17:16:23Z nyef`: Probably something with the opacity of typep checks or something. 2016-09-06T17:16:34Z stassats: well, don't build with 1.0.23 then 2016-09-06T17:16:56Z nyef`: Yes, that's another option. 2016-09-06T17:17:41Z stassats: caught var-io.c:25:5: error: 'for' loop initial declarations are only allowed in C99 or C11 mode on MIPS, incidentally 2016-09-06T17:18:47Z stassats: scymtym: i don't think it has to be at the beginning of a function, though 2016-09-06T17:21:11Z stassats: i still haven't come up with a way to define a largest float that can be decoded into a fixnum 2016-09-06T17:22:01Z stassats: (float most-positive-fixnum) doesn't really cut it 2016-09-06T17:23:54Z scymtym: stassats: moving it out of the for should fix the problem in any case since the for is the first statement 2016-09-06T17:25:17Z stassats: C has nextafterf 2016-09-06T17:48:04Z stassats: looks like i can just add 1 to the float bits? 2016-09-06T17:49:17Z gko joined #sbcl 2016-09-06T18:02:36Z stassats: why is double-float-significand-byte (byte 20 0)? 2016-09-06T18:03:18Z nyef`: The overall float model for CL differs a bit from IEEE, so there's a lot of funkiness involved in reconciling the models. 2016-09-06T18:03:23Z stassats: it's only for the hi bits, ok 2016-09-06T18:03:28Z stassats: weird stuff 2016-09-06T18:03:55Z stassats: no 64-bit targets back then 2016-09-06T18:07:33Z stassats: so, upper exclusive bound for floats that decode to fixnums: (sb-kernel::single-from-bits 0 (+ sb-vm:n-fixnum-bits sb-vm:single-float-bias) 0) 2016-09-06T18:07:38Z stassats: lower (sb-kernel::single-from-bits 1 (+ sb-vm:n-fixnum-bits sb-vm:single-float-bias) 1) 2016-09-06T18:07:50Z stassats: don't ask me to explain it 2016-09-06T18:10:34Z stassats: i don't want to make an inclusive bound, but then the name most-negative-fixnum-float doesn't really work 2016-09-06T18:12:35Z stassats: well, i guess it's not that hard 2016-09-06T18:12:38Z stassats: upper goes (sb-kernel::single-from-bits 0 (+ sb-vm:n-fixnum-bits sb-vm:single-float-bias -1) (ldb (byte (1- sb-vm:single-float-digits) 0) -1)) 2016-09-06T18:12:50Z stassats: lower (sb-kernel::single-from-bits 0 (+ sb-vm:n-fixnum-bits sb-vm:single-float-bias) 0) 2016-09-06T18:13:40Z stassats: the first 0 is 1 2016-09-06T18:23:24Z stassats: so, here's my fixnum-float-> http://paste.lisp.org/display/325355 2016-09-06T18:23:31Z stassats: no consing 2016-09-06T18:26:38Z stassats: i feel like it can be extended to handle unsigned-byte 64 and signed-byte-64 2016-09-06T18:27:18Z stassats: but i need to come with a macro wich handles < > <= >= and = 2016-09-06T18:28:04Z nyef` quit (Ping timeout: 264 seconds) 2016-09-06T18:29:14Z nyef` joined #sbcl 2016-09-06T18:31:07Z hel-io joined #sbcl 2016-09-06T18:35:17Z stassats: comparing (loop for i below most-positive-fixnum by 1000000000000 do (> i (float i))) => 0.866/737,886,336 2016-09-06T18:35:25Z stassats: to 0.034/0 2016-09-06T18:35:59Z stassats: not bad, i'd say 2016-09-06T18:48:15Z rtmpdavid joined #sbcl 2016-09-06T19:07:58Z madbub: hey, quick question: I've been digging through sbcl and I'm trying to figure out how I go from Lisp, to IR1, to IR2, etc. Now I want to understand how lisp forms are translated into IR1. I've read the `component` struct definition in src/compiler/node.lisp 2016-09-06T19:08:38Z madbub: but I'm stuck trying to figure out how to give the compiler lisp forms and have it output only the IR1 representation of that, so I can have a look at them 2016-09-06T19:08:44Z stassats: lisp to ir1 is in ir1-translators.lisp 2016-09-06T19:09:36Z madbub: yup, I see that, but I couldn't figure out how to just do something like '(ir1-convert (list 1 2 3))' 2016-09-06T19:09:54Z attila_lendvai: writing that up as examples on a wiki page or somesuch would help lower the fence for approaching sbcl internals 2016-09-06T19:10:31Z stassats: madbub: it needs a little bit of set up 2016-09-06T19:11:23Z stassats: madbub: try (with-ir1-namespace (let ((*source-paths* (make-hash-table)) (*undefined-warnings*) (*lexenv* (make-lexenv :default (make-null-lexenv) :policy *policy* :handled-conditions *handled-conditions* :disabled-package-locks *disabled-package-locks*))) (ir1-toplevel '(list 1 2 3) nil nil))) 2016-09-06T19:11:27Z madbub: I followed the function calls from sb!xc:compile-file and ended up on ir1-toplevel 2016-09-06T19:11:50Z madbub: stassats: aahh, awesome! I'll try this 2016-09-06T19:13:50Z stassats: you can also add (let ((*compiler-ir-obj-map* (make-compiler-ir-obj-map))) (print-all-blocks (ir1-toplevel '(list 1 2 3) nil nil))) 2016-09-06T19:17:41Z nyef`: The compiler doesn't print IR1 output until IR2 conversion is done? 2016-09-06T19:27:21Z gingerale joined #sbcl 2016-09-06T19:30:57Z nyef`: Okay, ir2-convert IS post-stack. Hrm. 2016-09-06T19:31:31Z stassats: you're onto that nip-values thing? 2016-09-06T19:31:37Z shka_ quit (Ping timeout: 250 seconds) 2016-09-06T19:31:51Z nyef`: Yeah. At least taking a more in-depth look at it. 2016-09-06T19:33:32Z stassats: and need to look at that physenv thing 2016-09-06T19:33:42Z nyef`: ... "physenv thing"? 2016-09-06T19:33:56Z stassats: maybe i did before and come up with some conclusions, but i don't remember anymore 2016-09-06T19:33:59Z stassats: (should write things down) 2016-09-06T19:34:22Z stassats: nyef`: https://bugs.launchpad.net/sbcl/+bug/1523149 2016-09-06T19:35:58Z stassats: the first test no longer fails, but the last one is about physenv-analyze 2016-09-06T19:36:49Z nyef`: Eesh. 2016-09-06T19:37:21Z nyef`: We really are just driving the bugs to be more subtle, rather than removing them entirely, aren't we? 2016-09-06T19:38:27Z stassats: it feels like there's fewer bugs than in the past 2016-09-06T19:38:38Z stassats: i remember stumbling on one or two almost each time i used sbcl 2016-09-06T19:39:02Z nyef`: Do we still see the (subsetp end end-stack) thing from that example, or is that fixed? 2016-09-06T19:39:19Z scymtym quit (Ping timeout: 255 seconds) 2016-09-06T19:39:56Z stassats: it's still there 2016-09-06T19:41:00Z nyef`: It's stuff like this that make me want to throw the entire thing out and replace it with a compiler that has a machine-checked proof that it doesn't fuck up, you know? 2016-09-06T19:42:18Z stassats: well, i think that SBCL is salvageable, after all 2016-09-06T19:42:32Z stassats: and how do you plan on understanding the compiler if there's no bugs? 2016-09-06T19:42:41Z stassats: you wouldn't know where to look without them! 2016-09-06T19:44:31Z nyef`: Oh, SBCL is definitely a lot better than it was five or ten years ago, sure. 2016-09-06T19:45:07Z stassats: nyef`: i think i can redo the test to fail without modifying mayve-let-convert 2016-09-06T19:45:13Z nyef`: It's just... Some level of guarantee that part of the system absolutely works as designed would be nice, you know? 2016-09-06T19:45:19Z stassats: the subsetp thing 2016-09-06T19:46:07Z nyef`: Hrm. 2016-09-06T19:46:36Z nyef`: Yeah, working out a version that will tickle the bug without requiring hacking up the rest of the compiler would probably be useful. 2016-09-06T19:47:00Z chris_l quit (Quit: Ex-Chat) 2016-09-06T19:48:03Z nyef`: I definitely see two parts of the system that I've hacked on here. The has-external-references-p strongly implies the DCE phase, and the subsetp bit is stack analysis. 2016-09-06T19:57:12Z stassats: huh, it's %COERCE-CALLABLE-TO-FUN conversion that poses problems? 2016-09-06T19:58:15Z stassats: %funcall doesn't fail 2016-09-06T19:58:35Z stassats: (%funcall (%coerce-callable-to-fun f)) does 2016-09-06T20:01:32Z mprelude joined #sbcl 2016-09-06T20:01:39Z mprelude quit (Client Quit) 2016-09-06T20:11:19Z gingerale quit (Remote host closed the connection) 2016-09-06T20:11:27Z stassats: but why does it try to delete the surrounding function xep? 2016-09-06T20:13:51Z stassats: in (defun foo () ((lambda () (declare (optimize debug)) (block nil (flet ((fun () (return))) (declare (inline fun)) (bar #'fun)))))) 2016-09-06T20:13:57Z stassats: FOO is marked as deleted 2016-09-06T20:14:03Z stassats: bar being (declaim (inline bar)) (defun bar (f) (%funcall (%coerce-callable-to-fun f))) 2016-09-06T20:26:00Z sjl quit (Read error: Connection reset by peer) 2016-09-06T20:32:52Z dougk_ quit (Remote host closed the connection) 2016-09-06T20:34:00Z scymtym joined #sbcl 2016-09-06T20:41:44Z sjl joined #sbcl 2016-09-06T20:45:51Z stassats: mark-for-deletion deletes all block-pred 2016-09-06T20:47:05Z stassats: and (TL-XEP FOO) is in one of these blocks 2016-09-06T20:50:21Z scymtym: is it possible to dump ub8 vectors during cross-compilation? if so, a more compact encoding of xref info seems to reduce the size of the x86_64 --fancy core by 3 MB 2016-09-06T20:50:53Z stassats: you can dump any vectors 2016-09-06T20:51:08Z gargaml joined #sbcl 2016-09-06T20:51:30Z scymtym: the cross-compilation phase says: Unportably dumping (ARRAY (UNSIGNED-BYTE 8)) #(0 5 9 22) 2016-09-06T20:51:44Z scymtym: for everything that has xref info associated with it 2016-09-06T20:52:44Z stassats: you need !coerce-to-specialized 2016-09-06T20:53:14Z nyef`: ... That's new. 2016-09-06T20:53:40Z scymtym: when i create the vector and with #+xc-host? 2016-09-06T20:54:44Z stassats: if you're creating it use !make-specialized-array 2016-09-06T20:54:47Z stassats: no xc-host 2016-09-06T20:54:57Z madbub quit (Remote host closed the connection) 2016-09-06T20:55:01Z scymtym: ok, will try that, thanks 2016-09-06T20:57:35Z stassats: nyef`: found a way to make it into subsetp 2016-09-06T20:58:27Z stassats: nyef`: http://paste.lisp.org/display/325369 2016-09-06T20:59:24Z stassats: somehow the lambda inserted by transforms wreaks havoc 2016-09-06T21:00:12Z stassats: replacing X with %coerce-callable-to-fun gives (NOT (FUNCTIONAL-HAS-EXTERNAL-REFERENCES-P CLAMBDA)) 2016-09-06T21:00:24Z stassats: something is entirely too eager to delete everything 2016-09-06T21:00:43Z stassats: but how come a lambda is causing it? 2016-09-06T21:06:14Z stassats: the %coerce-callable-to-fun transform gives up once, that's why the different error 2016-09-06T21:06:23Z stassats: no idea what's going on 2016-09-06T21:06:28Z stassats: but at least some progress 2016-09-06T21:10:57Z stassats: i'll comment there lest i lose my findings again 2016-09-06T21:12:12Z rtmpdavid quit (Ping timeout: 240 seconds) 2016-09-06T21:15:17Z stassats: there's a lot of stuff to delete in that functions, yes 2016-09-06T21:15:40Z scymtym: is it possible that !MAKE-SPECIALIZED-ARRAY is in the target image, but !COERCE-TO-SPECIALIZED is not? 2016-09-06T21:15:55Z stassats: why are you asking? 2016-09-06T21:16:33Z scymtym: putting together the core after cross-compilation complains about !COERCE-TO-SPECIALIZED being undefined 2016-09-06T21:18:49Z gargaml quit (Quit: WeeChat 1.5) 2016-09-06T21:19:01Z stassats: that is indeed the case 2016-09-06T21:19:29Z scymtym: !MAKE-SPECIALIZED-ARRAY should work just as well for my case 2016-09-06T21:21:08Z stassats: came up with a test case all within one function: https://bugs.launchpad.net/sbcl/+bug/1523149/comments/2 2016-09-06T21:22:00Z scymtym: that worked 2016-09-06T21:22:07Z stassats: basically this whole monstrosity is deleted and just NIL is returned 2016-09-06T21:22:11Z stassats: except something goes wrong 2016-09-06T21:24:28Z stassats: that is one tricky bug 2016-09-06T21:25:32Z stassats: and there are three different incarnations of it 2016-09-06T21:28:06Z nyef`: See? We're just driving them to be more subtle! Who knows what happens once we figure this level of it out? 2016-09-06T21:28:36Z stassats: i want to figure this one once and for all 2016-09-06T21:29:22Z nyef` laughs. 2016-09-06T21:29:27Z nyef`: How do you know when you've done that? 2016-09-06T21:29:48Z stassats: well, i don't want the aver just to go awa 2016-09-06T21:29:49Z stassats: y 2016-09-06T21:30:05Z stassats: i want to know why it happens and how the code came to be that way 2016-09-06T21:41:13Z hel-io quit (Remote host closed the connection) 2016-09-06T21:41:36Z stassats: having inlined functions is important as well 2016-09-06T21:45:49Z stassats: note: implementation limitation: couldn't inline expand because expansion refers to the optimized away object #. 2016-09-06T21:45:57Z nyef`: The use of %FUNCALL is a bit of a flag to me. 2016-09-06T21:46:05Z stassats: another variation 2016-09-06T21:46:52Z stassats: nyef`: what flag? 2016-09-06T21:49:22Z stassats: ctran being an optimized away object? huh 2016-09-06T21:51:44Z nyef`: %FUNCALL is an internal function to SBCL, and more specifically to the compiler. 2016-09-06T21:52:18Z nyef`: Users shouldn't be using it, so a test case which requires it suggests that something is wrong at a slightly higher level, possibly due to misunderstanding what %FUNCALL is supposed to be doing. 2016-09-06T21:52:47Z stassats: %funcall is the right thing here 2016-09-06T21:54:45Z stassats: (when (ctran-deleted-p exit-ctran) (throw 'locall-already-let-converted exit-ctran)) 2016-09-06T21:54:54Z stassats: deletion deletion 2016-09-06T21:56:34Z stassats: ok, that's a new angle to explore 2016-09-06T21:56:49Z stassats: but not today, or rather not now 2016-09-06T22:00:40Z angavrilov quit (Remote host closed the connection) 2016-09-06T22:02:52Z scymtym: it may turn that 3 MB savings were /before/ i removed duplicate xref entries 2016-09-06T22:38:44Z jsnell quit (Ping timeout: 244 seconds) 2016-09-06T22:39:49Z jsnell joined #sbcl 2016-09-06T22:41:39Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-09-06T22:44:19Z jsnell quit (Ping timeout: 250 seconds) 2016-09-06T22:47:13Z attila_lendvai joined #sbcl 2016-09-06T22:49:44Z nyef`: Ahh... I think I might know what's going on with that %NIP-VALUES conversion. It's refusing to move a DX value. 2016-09-06T22:54:42Z cromachina joined #sbcl 2016-09-06T23:11:01Z nyef`: Yeah, that's it. 2016-09-06T23:11:52Z schjetne quit (Ping timeout: 265 seconds) 2016-09-06T23:14:17Z nyef`: (bar 10) generates uv14. (cons x nil) generates dv22, leaving us with (dv22 uv14). We then have an IF... 2016-09-06T23:15:27Z nyef`: ... the false value of which pops dv22 and returns dv14. 2016-09-06T23:15:58Z nyef`: Err... returns uv14. 2016-09-06T23:17:09Z nyef`: The true branch of the if tries to nip uv14, then set up NIL as a *new* uv14, then returns uv14. 2016-09-06T23:21:27Z nyef`: The problem is that we only have *one* storage for uv14, and at some point we need to re-assign another value into it, but the old value is still pinned by dv22. 2016-09-06T23:23:10Z nyef`: This is definitely reminding me of that other MVL and NLX thing. 2016-09-06T23:30:24Z nyef`: ... may-delete-vestigial-exit is overly optimistic. 2016-09-06T23:30:34Z nyef`: Even with the "conservative version" comment. 2016-09-06T23:32:06Z nyef`: It needs to account for DX values somehow, but I'm not sure that the information is available at that point without doing a flow analysis. 2016-09-06T23:32:17Z rszeno joined #sbcl 2016-09-06T23:36:50Z nyef`: Something about the mess-ups for the node-home-lambda for the lvar-uses of the result lvar of the vestigial exit cast? 2016-09-06T23:36:56Z nyef`: I'll keep digging after dinner. 2016-09-06T23:51:52Z jsnell joined #sbcl