2015-02-07T07:15:07Z ccl-logbot joined #sbcl 2015-02-07T07:15:07Z 2015-02-07T07:15:07Z names: ccl-logbot psy_ Shinmera gabriel_laddel dustinm` oleo__ christoph_debian edgar-rft Quadrescence ivan4th ehaliewicz karswell ASau soggybread |3b| Adlai` DeadTrickster pchrist pkhuong_ Intensity scymtym carvite yauz mega1` specbot minion psilord1 irsol salva Cymew alchemis7 brucem luis Posterdati cojy_ foom jdz loke milosn weissschloss fikusz_ mood reb` jrm @Krystof kanru snafuchs jsnell PuercoPop drmeister akkad p_l flip214 fe[nl]ix Blkt joshe ferada les 2015-02-07T07:15:07Z names: nicdev antoszka wasabiz__ redline6561 Bike 2015-02-07T07:16:33Z zRecursive joined #sbcl 2015-02-07T07:27:53Z Intensity quit (Ping timeout: 265 seconds) 2015-02-07T07:41:21Z zRecursive quit (Remote host closed the connection) 2015-02-07T07:56:57Z gingerale joined #sbcl 2015-02-07T08:14:53Z ehaliewicz quit (Ping timeout: 250 seconds) 2015-02-07T09:01:57Z scymtym_ joined #sbcl 2015-02-07T09:38:30Z angavrilov joined #sbcl 2015-02-07T09:56:22Z gingerale quit (Ping timeout: 255 seconds) 2015-02-07T10:06:15Z attila_lendvai joined #sbcl 2015-02-07T10:31:07Z fridim_ joined #sbcl 2015-02-07T10:33:41Z mega1` quit (Ping timeout: 250 seconds) 2015-02-07T11:01:31Z fridim_ quit (Ping timeout: 265 seconds) 2015-02-07T11:25:29Z oleo__ quit (Quit: Verlassend) 2015-02-07T11:35:26Z attila_lendvai quit (Quit: Leaving.) 2015-02-07T11:49:58Z psy_ quit (Ping timeout: 264 seconds) 2015-02-07T12:25:56Z stassats joined #sbcl 2015-02-07T12:29:00Z oleo joined #sbcl 2015-02-07T12:29:00Z oleo quit (Changing host) 2015-02-07T12:29:00Z oleo joined #sbcl 2015-02-07T12:54:13Z nyef joined #sbcl 2015-02-07T13:20:35Z Quadrescence: would it be reasonable for SBCL to save source when SPACE=0? 2015-02-07T13:44:25Z ASau` joined #sbcl 2015-02-07T13:47:45Z ASau quit (Ping timeout: 256 seconds) 2015-02-07T13:52:55Z ASau` is now known as ASau 2015-02-07T14:10:36Z attila_lendvai joined #sbcl 2015-02-07T14:45:20Z karswell quit (*.net *.split) 2015-02-07T14:45:20Z soggybread quit (*.net *.split) 2015-02-07T14:45:20Z psilord1 quit (*.net *.split) 2015-02-07T14:45:20Z luis quit (*.net *.split) 2015-02-07T14:45:20Z akkad quit (*.net *.split) 2015-02-07T14:45:20Z p_l quit (*.net *.split) 2015-02-07T14:45:39Z soggybread joined #sbcl 2015-02-07T14:45:52Z karswell joined #sbcl 2015-02-07T14:46:16Z p_l joined #sbcl 2015-02-07T14:46:27Z psilord1 joined #sbcl 2015-02-07T14:48:50Z luis joined #sbcl 2015-02-07T14:49:46Z akkad joined #sbcl 2015-02-07T15:17:01Z Adlai` is now known as adlai 2015-02-07T15:34:29Z stassats: sbcl takes 14 minutes to build on an atom CPU, about same time as POWER8 2015-02-07T15:35:46Z stassats: Quadrescence: what for? 2015-02-07T15:36:39Z Quadrescence: stassats, Maybe so MAYBE-INLINE doesn't need to be sprinkled everywhere. 2015-02-07T15:37:12Z stassats: inlining everything isn't a good idea anyway 2015-02-07T15:37:13Z LiamH joined #sbcl 2015-02-07T15:37:25Z Quadrescence: stassats, of course not, I agree 2015-02-07T15:37:54Z Quadrescence: locally declaring some functions as INLINE is a nice thing to have without having to go before the definition and adding MAYBE-INLINE 2015-02-07T15:38:08Z stassats: that's not what MAYBE-INLINE is for, though 2015-02-07T15:39:01Z Quadrescence: I see. I guess the other alternative is to INLINE DEFUN NOTINLINE it, which would maybe force it to save the info 2015-02-07T15:39:14Z Quadrescence: though that might wreak havoc if your function is recursive 2015-02-07T15:39:39Z stassats: that's how you get local inline to work, and it's portable 2015-02-07T15:41:50Z dustinm` quit (Quit: Leaving) 2015-02-07T15:43:47Z Quadrescence: Too bad INLINABLE wasn't a declaration that was created to make such an ugly way of doing something a lot cleaner. 2015-02-07T15:57:49Z attila_lendvai quit (Quit: Leaving.) 2015-02-07T15:59:35Z dustinm` joined #sbcl 2015-02-07T16:10:34Z psilord1 quit (Quit: Leaving.) 2015-02-07T16:13:41Z psilord1 joined #sbcl 2015-02-07T16:16:57Z stassats: and C-x ` stopped working in *slime-scratch*, great 2015-02-07T16:23:02Z ASau quit (Read error: No route to host) 2015-02-07T16:23:47Z ASau joined #sbcl 2015-02-07T16:25:13Z nyef: stassats: Do you have any ideas about how to make TRACE :ENCAPSULATE NIL (and breakpoints more generally, for that matter) work properly? 2015-02-07T16:25:45Z stassats: haven't been thinking about it 2015-02-07T16:26:01Z stassats: but i was planning on implementing it on arm, and once i do, it'll be more clear what do with it 2015-02-07T16:26:57Z nyef: Mmm. I ran into a situation yesterday where I wanted to TRACE a function, and I needed :ENCAPSULATE NIL because the use that I wanted to trace was via an already-taken function reference rather than via the fdefn. 2015-02-07T16:27:07Z stassats: tackling 1417822 now 2015-02-07T16:27:09Z stassats: lp 1417822 2015-02-07T16:27:09Z specbot: https://bugs.launchpad.net/bugs/1417822 2015-02-07T16:27:26Z nyef: ... and then the trace was useless because the arguments were unavailable. 2015-02-07T16:28:02Z nyef: ARM is a good example of one of the things that are horribly wrong with breakpoints. 2015-02-07T16:28:15Z nyef: The other is x86. 2015-02-07T16:29:03Z nyef: Okay, that's a neat bug. Looks like MVLs and NLX again. 2015-02-07T16:30:33Z stassats: it complaints about FUNCTION being deleted 2015-02-07T16:33:51Z nyef: As far as working breakpoints (or TRACE :ENCAPSULATE NIL) on ARM goes, my attempt is available at http://repo.or.cz/w/sbcl/nyef.git/commitdiff/e5a970aaf250fbf54676c92082c3dc1b8cfd81ef 2015-02-07T16:34:02Z stassats: so, it tries to let-convert an already deleted call 2015-02-07T16:35:13Z fikusz_ quit (Quit: Leaving) 2015-02-07T16:38:13Z fikusz joined #sbcl 2015-02-07T16:41:00Z stassats: it doesn't even have to call anything 2015-02-07T16:42:18Z stassats: ; note: deleting unused function ; (SB-C::LOCAL-INLINE (FLET FUNC1 :IN CALL)) 2015-02-07T16:42:22Z stassats: why does that even happen 2015-02-07T16:50:07Z nyef: The compiler inlines CALL twice within TEST-CALL, then type-propagates the value of FUNCTION to determine that one of the invocations of FUNC1 is never used...? 2015-02-07T16:50:46Z stassats: looking at the ir1, it seems like it tries to let-convert unreachable branch 2015-02-07T16:51:07Z stassats: find that's CL:FUNCTION is deleted and derails 2015-02-07T16:51:14Z stassats: finds that 2015-02-07T16:51:31Z Quadrescence quit (Quit: This computer has gone to sleep) 2015-02-07T16:53:20Z stassats: which is strange, because if optimization shouldn't yet happen 2015-02-07T16:53:45Z stassats: or that would be ir2 if optimization, i need to look at ir1 if optimization 2015-02-07T16:54:08Z nyef: Type propagation should be telling the compiler that the second branch of the IF is never used. 2015-02-07T16:54:18Z stassats: no, was looking at the wrong buffer, it's ir1 indeed SB-C::IR1-OPTIMIZE-BLOCK is not yet called, and it's already bad 2015-02-07T17:01:00Z stassats: so, it's not about if? 2015-02-07T17:01:11Z stassats: righto 2015-02-07T17:01:24Z stassats: (defun test-call () (flet ((call (function) (flet ((func1 (x) (declare (ignore x)) (unwind-protect function))) (declare (inline func1)) (func1 1) (func1 2)))) (declare (inline call)) (call 1) (call (lambda ())))) 2015-02-07T17:01:35Z stassats: so, it's about uwp 2015-02-07T17:05:12Z stassats: or nlx 2015-02-07T17:05:29Z stassats: (defun test () (flet ((call (function) (flet ((func1 (x) (return-from func1 function))) (declare (inline func1)) (func1 1) (func1 2)))) (declare (inline call)) (call 1) (call (lambda ())))) 2015-02-07T17:06:31Z nyef: Ah, no more UWP. That DOES cut things down a bit. (-: 2015-02-07T17:07:03Z stassats: uwp just expands into return-from 2015-02-07T17:07:15Z nyef: There's more than that to a UWP. 2015-02-07T17:07:24Z stassats: not for this bug 2015-02-07T17:07:31Z stassats: so, it's about unused results and return-from 2015-02-07T17:10:32Z nyef: It's... wait, WTF? RETURN-FROM, seriously? 2015-02-07T17:10:34Z stassats: so, it let-converts the call, sees that the result is not used and deletes the function? 2015-02-07T17:10:42Z nyef: You don't need the arguments to FUNC1, btw. 2015-02-07T17:11:07Z stassats: i need to see in the ir1 which REF is that 2015-02-07T17:11:10Z nyef: The use of RETURN-FROM somehow buggers up the analysis. 2015-02-07T17:11:11Z nyef: Ah. 2015-02-07T17:11:38Z oleo is now known as Guest90722 2015-02-07T17:12:32Z oleo__ joined #sbcl 2015-02-07T17:13:37Z stassats: though it doesn't seem to be let conversion, since it fails with (declare (optimize (let-conversion 0))) too 2015-02-07T17:13:44Z stassats: just local call then 2015-02-07T17:14:10Z stassats: though (speed 0) hides the issue 2015-02-07T17:14:38Z Guest90722 quit (Ping timeout: 246 seconds) 2015-02-07T17:14:39Z nyef: Is INLINE required? 2015-02-07T17:14:44Z stassats: yes 2015-02-07T17:15:49Z nyef: You're INLINEing an already-IR1-converted function, twice. 2015-02-07T17:16:18Z nyef: It's doing the analysis and deletion and whatnot correctly on the first one, but it's corrupting the second one at the same time, because there's only one copy. 2015-02-07T17:16:39Z nyef: Or I'm completely wrong, but it makes a certain amount of sense. 2015-02-07T17:16:49Z stassats: there's a safe guard, it reports "couldn't inline expand because expansion refers to the optimized away object" 2015-02-07T17:17:01Z stassats: but after it reports, it tries to delete something and stumbles 2015-02-07T17:18:33Z stassats: so maybe it just needs to be more careful 2015-02-07T17:18:41Z stassats: or maybe we should do a better job at inline expansion 2015-02-07T17:19:22Z nyef: Can we do the latter, please? I'm tired of seeing really bogus component names due to inline expansion. /-: 2015-02-07T17:23:43Z nyef: (Or did that finally get fixed?) 2015-02-07T17:46:17Z attila_lendvai joined #sbcl 2015-02-07T18:10:12Z stassats: even using the result seems to trigger this 2015-02-07T18:10:57Z stassats: so, it deletes the function parameter 2015-02-07T18:13:10Z stassats: without return-from, it says twice note: implementation limitation: couldn't inline expand because expansion refers to the optimized away object #. 2015-02-07T18:23:01Z stassats: i think it's something i've already encountered 2015-02-07T18:23:28Z stassats: since the already-converted is a throw, it may not finish converting something when it throws 2015-02-07T18:44:24Z stassats: i think it's clear what happens, just can't pinpoint where 2015-02-07T18:50:21Z stassats: now i can 2015-02-07T18:51:05Z stassats: so, in return-from, it creates an exit, then ir1-converts the value, which throws locall-already-let-converted, leaving the exit without the previous node 2015-02-07T18:51:48Z stassats: maybe-expand-local-inline catches the tag, and tries to delete what was already converted, and delete-block breaks on the exit with node-prev being NIL 2015-02-07T18:53:24Z nyef notes that it's never the IR1-converter that's the problem, it's always something downstream that screws things up. 2015-02-07T18:53:44Z stassats: i've already dealt with locall-already-let-converted breaking things in the middle 2015-02-07T18:54:17Z stassats: in ae026fe85fef157ff42d6655e5f5e4eef74709f1 2015-02-07T18:55:10Z nyef: Lovely. 2015-02-07T18:58:14Z stassats: so, putting (push exit (entry-exits entry)) after ir1-converting the return-from value 2015-02-07T18:58:16Z stassats: fixes it 2015-02-07T18:59:10Z nyef: Sounds like it's time for an audit of all ir1-conversion uses for precisely this kind of thing. 2015-02-07T19:00:51Z stassats: or just get rid of the need in locall-already-let-converted 2015-02-07T19:05:58Z stassats: ok, the solution satisfies my current needs, getting rid of locall-already-let-converted is for later research 2015-02-07T19:18:03Z stassats: oops, i manged to get attempt to THROW to a tag that does not exist: LOCALL-ALREADY-LET-CONVERTED 2015-02-07T19:25:31Z stassats: maybe it's nothing, since it's a modified expansion of unwind-protect 2015-02-07T19:37:22Z stassats: found a better test-case for this: https://bugs.launchpad.net/sbcl/+bug/309115/comments/5 2015-02-07T19:37:48Z stassats: capturing the block for some reason interference with type inference 2015-02-07T19:51:44Z attila_lendvai quit (Ping timeout: 265 seconds) 2015-02-07T19:52:00Z Adlai` joined #sbcl 2015-02-07T19:53:07Z adlai quit (Ping timeout: 250 seconds) 2015-02-07T19:53:14Z Adlai` is now known as adlai 2015-02-07T19:59:56Z attila_lendvai joined #sbcl 2015-02-07T20:02:17Z attila_lendvai quit (Read error: Connection reset by peer) 2015-02-07T20:02:47Z attila_lendvai joined #sbcl 2015-02-07T20:02:47Z attila_lendvai quit (Changing host) 2015-02-07T20:02:47Z attila_lendvai joined #sbcl 2015-02-07T20:31:54Z salva quit (Ping timeout: 245 seconds) 2015-02-07T20:33:07Z salva joined #sbcl 2015-02-07T20:58:25Z oleo__ quit (Quit: Verlassend) 2015-02-07T21:03:06Z oleo joined #sbcl 2015-02-07T21:20:36Z eudoxia joined #sbcl 2015-02-07T21:53:04Z Quadrescence joined #sbcl 2015-02-07T21:56:42Z Shinmera quit (Quit: しつれいしなければならないんです。) 2015-02-07T22:22:38Z angavrilov quit (Remote host closed the connection) 2015-02-07T22:31:18Z pacon joined #sbcl 2015-02-07T22:34:50Z stassats` joined #sbcl 2015-02-07T22:50:33Z p_l quit (Ping timeout: 245 seconds) 2015-02-07T22:50:33Z psilord1 quit (Ping timeout: 245 seconds) 2015-02-07T22:51:20Z p_l joined #sbcl 2015-02-07T22:52:57Z psilord1 joined #sbcl 2015-02-07T23:48:28Z attila_lendvai quit (Quit: Leaving.) 2015-02-07T23:59:44Z eudoxia quit (Quit: Leaving)