2014-12-02T00:04:23Z eudoxia quit (Quit: Lost terminal) 2014-12-02T00:04:58Z Bicyclidine quit (Ping timeout: 264 seconds) 2014-12-02T00:12:00Z echo-area quit (Ping timeout: 250 seconds) 2014-12-02T00:14:14Z Bicyclidine joined #sbcl 2014-12-02T00:33:47Z DeadTrickster quit (Quit: Leaving) 2014-12-02T00:34:00Z DeadTrickster joined #sbcl 2014-12-02T00:35:16Z Oddity joined #sbcl 2014-12-02T00:49:35Z drmeister quit (Ping timeout: 272 seconds) 2014-12-02T00:50:29Z drmeister joined #sbcl 2014-12-02T00:56:15Z psilord quit (Quit: Leaving.) 2014-12-02T01:06:11Z Bicyclidine quit (Ping timeout: 244 seconds) 2014-12-02T01:13:15Z Bicyclidine joined #sbcl 2014-12-02T01:31:05Z Bicyclidine quit (Ping timeout: 264 seconds) 2014-12-02T01:32:42Z Bicyclidine joined #sbcl 2014-12-02T01:45:45Z edgar-rft joined #sbcl 2014-12-02T01:46:55Z echo-area joined #sbcl 2014-12-02T02:22:13Z psilord joined #sbcl 2014-12-02T02:47:17Z Bicyclidine quit (Ping timeout: 252 seconds) 2014-12-02T02:53:41Z tcr joined #sbcl 2014-12-02T02:54:07Z Bicyclidine joined #sbcl 2014-12-02T02:59:07Z Oddity left #sbcl 2014-12-02T03:20:34Z tcr quit (Quit: Leaving.) 2014-12-02T03:22:05Z Bicyclidine quit (Ping timeout: 264 seconds) 2014-12-02T03:39:07Z christoph_debian quit (Ping timeout: 244 seconds) 2014-12-02T03:53:14Z christoph_debian joined #sbcl 2014-12-02T04:01:50Z karswell quit (Read error: Connection reset by peer) 2014-12-02T04:02:02Z karswell joined #sbcl 2014-12-02T04:27:18Z drmeister: pkhuong: Are you online? 2014-12-02T04:44:09Z psy_ quit (Remote host closed the connection) 2014-12-02T04:44:49Z psy_ joined #sbcl 2014-12-02T05:21:47Z pranavrc joined #sbcl 2014-12-02T05:26:16Z gingerale joined #sbcl 2014-12-02T05:59:06Z oleo is now known as Guest55659 2014-12-02T05:59:56Z oleo__ joined #sbcl 2014-12-02T06:02:10Z Guest55659 quit (Ping timeout: 256 seconds) 2014-12-02T06:08:54Z gingerale quit (Ping timeout: 264 seconds) 2014-12-02T06:21:07Z oleo__ quit (Quit: Verlassend) 2014-12-02T06:47:42Z echo-area quit (Remote host closed the connection) 2014-12-02T07:06:19Z pillton joined #sbcl 2014-12-02T07:41:28Z tcr joined #sbcl 2014-12-02T07:41:54Z pranavrc quit (Remote host closed the connection) 2014-12-02T07:50:14Z kanru joined #sbcl 2014-12-02T07:59:34Z angavrilov joined #sbcl 2014-12-02T08:01:03Z tcr quit (Quit: Leaving.) 2014-12-02T08:03:21Z pranavrc joined #sbcl 2014-12-02T08:09:29Z kanru quit (Ping timeout: 264 seconds) 2014-12-02T08:19:25Z kanru joined #sbcl 2014-12-02T08:22:56Z fridim_ joined #sbcl 2014-12-02T08:28:15Z ams joined #sbcl 2014-12-02T08:31:05Z tcr joined #sbcl 2014-12-02T08:55:18Z jdz quit (Ping timeout: 258 seconds) 2014-12-02T08:56:04Z PuercoPop quit (Ping timeout: 258 seconds) 2014-12-02T08:58:08Z PuercoPop joined #sbcl 2014-12-02T08:58:54Z jdz joined #sbcl 2014-12-02T09:12:24Z rszeno joined #sbcl 2014-12-02T09:15:19Z rszeno quit (Client Quit) 2014-12-02T09:19:27Z jdz quit (Ping timeout: 258 seconds) 2014-12-02T09:21:26Z jdz joined #sbcl 2014-12-02T09:26:40Z kanru quit (Ping timeout: 250 seconds) 2014-12-02T09:56:40Z tcr1 joined #sbcl 2014-12-02T09:56:40Z tcr quit (Read error: Connection reset by peer) 2014-12-02T09:57:10Z tcr joined #sbcl 2014-12-02T09:57:10Z tcr1 quit (Read error: Connection reset by peer) 2014-12-02T09:58:44Z tcr quit (Client Quit) 2014-12-02T11:31:46Z rszeno joined #sbcl 2014-12-02T11:37:47Z eudoxia joined #sbcl 2014-12-02T12:20:57Z rszeno quit (Quit: Leaving.) 2014-12-02T12:24:42Z eudoxia quit (Quit: Lost terminal) 2014-12-02T12:25:49Z Hydan` joined #sbcl 2014-12-02T12:38:13Z eudoxia joined #sbcl 2014-12-02T12:52:54Z eudoxia quit (Quit: Lost terminal) 2014-12-02T12:53:02Z eudoxia joined #sbcl 2014-12-02T13:24:13Z pranavrc quit 2014-12-02T13:42:48Z PuercoPop quit (Ping timeout: 258 seconds) 2014-12-02T13:48:20Z eudoxia quit (Quit: Lost terminal) 2014-12-02T13:49:11Z PuercoPop joined #sbcl 2014-12-02T14:06:15Z psilord quit (Quit: Leaving.) 2014-12-02T14:12:07Z drmeister: pkhuong: Are you online? 2014-12-02T14:26:28Z pkhuong: drmeister: ping 2014-12-02T14:26:42Z pkhuong: although, really, a private message would probably have worked better 2014-12-02T14:31:37Z oleo joined #sbcl 2014-12-02T14:35:45Z eudoxia joined #sbcl 2014-12-02T14:46:22Z drmeister: pkhuong: Well, it's interesting stuff, related to Common Lisp implementation - nothing secret. 2014-12-02T14:46:53Z drmeister: I implemented what I think you described to me a couple of months ago. Passing extra arguments in the same multiple-values array that I use to return extra return values. 2014-12-02T14:48:13Z drmeister: I wonder if you I could pick your brains on it a bit. 2014-12-02T14:49:25Z drmeister: The main question I had was previously I had one global (in the future thread local) multiple-values array in the global space. 2014-12-02T14:50:39Z drmeister: That wouldn't work with generic function dispatch because you have to be able to call a generic function and in the generic function dispatch you sometimes have to save the passed arguments and compute the effective method and then restore the passed arguments and complete the call to the effective method. 2014-12-02T14:53:27Z drmeister: I resolved it by putting the multiple-values array on the stack and then I create a temporary multiple-values array at any time I need it and link it to the previous one, make the call to compute the effective method and pop the temporary one and complete the generic function call. 2014-12-02T14:54:04Z drmeister: I recall that you and nyef were telling me about how you do something like this in SBCL but I didn't really understand what you were going on about at the time :-). 2014-12-02T14:54:38Z drmeister: Does what I describe sound like what you do in SBCL? Is there anything better I could be doing? 2014-12-02T15:02:55Z foom quit (Ping timeout: 258 seconds) 2014-12-02T15:09:06Z echo-area joined #sbcl 2014-12-02T15:09:14Z psilord joined #sbcl 2014-12-02T15:19:18Z foom joined #sbcl 2014-12-02T15:20:17Z pkhuong: I think a linked list of stack allocated argument/return vectors will cause lifetime bugs 2014-12-02T15:20:38Z pkhuong: and a linked list of heap allocated ones sounds like a nice way to make calls slow 2014-12-02T15:21:28Z pkhuong: Have you tried copying the arguments to an auto storage array on entry, and copy back from the temporary array to the global extra arg array in APPLY? 2014-12-02T15:21:35Z drmeister: How would a linked list of stack allocated argument/return vectors cause lifetime bugs? 2014-12-02T15:22:22Z drmeister: Because I felt like I was going out on a limb with that - but I couldn't put my finger on what the problem would be. 2014-12-02T15:22:25Z pkhuong: drmeister: you either lose a lot of tail calls or have to do some funny thing to make sure the top of stack isn't used to return values past the vector's extent 2014-12-02T15:23:19Z pkhuong: the nice thing about copying the arguments to auto storage is that it can easily be cast as an optimisation over converting the extra argument array to an &rest list and back (in APPLY). 2014-12-02T15:23:56Z drmeister: Just so we are on the same page. What is an auto storage array? 2014-12-02T15:24:16Z drmeister: Is that an array allocated on the stack? 2014-12-02T15:24:20Z pkhuong: right 2014-12-02T15:24:31Z drmeister: Ok, I can do that. 2014-12-02T15:24:33Z pkhuong: and I don't have std::vector in mind here :\ 2014-12-02T15:24:40Z drmeister: Absolutely. 2014-12-02T15:25:12Z drmeister: __builtin_alloca(sizeof(T*)*numvalues) 2014-12-02T15:25:21Z drmeister: Array on stack. 2014-12-02T15:25:40Z drmeister: Array of pointers on stack. That I can do. 2014-12-02T15:27:20Z edgar-rft quit (Quit: don't waste your life by reading this) 2014-12-02T15:28:03Z drmeister: I still don't quite see the problem, though I really want to - sorry. In my main(...) function, the first thing I do is allocate a MultipleValues object (an array that holds argument/return values) on the stack. In my generic function dispatch function I allocate another one and set a pointer in the new one to the old one. I have a global pointer that 2014-12-02T15:28:03Z drmeister: points to the current (most recently allocated one). Is that a problem? 2014-12-02T15:28:41Z pkhuong: when happens when I use that array to return a value? 2014-12-02T15:29:33Z pkhuong: are you *sure* you'll never return a value through an array past the activation record that own the mv array? 2014-12-02T15:29:33Z drmeister: The value is pulled out of that array or not. 2014-12-02T15:31:02Z drmeister: Thinking... 2014-12-02T15:31:31Z drmeister: I don't think any functions *own* any multiple-value array. 2014-12-02T15:31:49Z pkhuong: if it's stack allocated, it belongs to an activation record 2014-12-02T15:32:13Z pkhuong: if it isn't, then I'm pretty sure that a little bit of copying will be quicker than heap allocation in most cases 2014-12-02T15:33:48Z drmeister: I understand the copying idea - that should certainly work and in some ways be simpler than what I'm doing. I could switch to that and the problem with what I'm doing would become academic. I just hate it when I don't understand why something I'm doing is a problem. I might make the same mistake again in the future. 2014-12-02T15:34:06Z drmeister: I don't want to bother you though with my ignorance. 2014-12-02T15:34:54Z drmeister: I'm reading what you've said so far and I'm trying to come up with an intelligent question. If I can't I'll just follow your advice. 2014-12-02T15:35:30Z drmeister: I thought in SBCL you implemented something where you occasionally allocated new argument/return structures 2014-12-02T15:35:56Z drmeister: That's why I thought this was a correct way to proceed. But I probably misinterpreted it. 2014-12-02T15:36:51Z drmeister: I like the name ArgumentReturnValues rather than MultipleValues, it's more descriptive of what I'm doing now. 2014-12-02T15:43:22Z echo-area quit (Read error: Connection reset by peer) 2014-12-02T15:44:01Z pkhuong: SBCL doesn't have a explicit multiple value array 2014-12-02T15:44:07Z pkhuong: we always create a new one on the stack 2014-12-02T15:44:13Z utsc joined #sbcl 2014-12-02T15:44:32Z pkhuong: and it only lives for a couple instruction 2014-12-02T15:44:50Z pkhuong: it might then be copied to another fresh multiple value array on the stack that will never escape its stack frame 2014-12-02T15:45:03Z drmeister: I'm doing the copying - it actually reduces the amount of argument copying I was doing. 2014-12-02T15:47:51Z psy_ quit (Read error: Connection reset by peer) 2014-12-02T15:47:56Z drmeister: How does something escape its stack frame? If I call (FOO x y z) and FOO is a generic function. A stack frame is created on entry to FOO and it is released on exit. If I allocate an argument/return-value vector in that stack frame, how can it escape? It's not a first class object. 2014-12-02T15:48:24Z drmeister: It has become academic though, I'm implementing your suggestion. 2014-12-02T15:51:32Z psy_ joined #sbcl 2014-12-02T15:53:13Z utsc quit (Quit: Page closed) 2014-12-02T15:56:05Z drmeister: I was kind of enamored by the idea of a shadow-stack of argument/return-vectors being created on the stack. I thought that they couldn't escape because they aren't first-class and they can't end up in closures. But I was ALSO copying the arguments into an auto array on the stack and passing that to the effective method. 2014-12-02T15:59:18Z drmeister: The extra argument/return-vector I was creating was causing me to copy the arguments twice (into the new argument/return-vector and into an auto allocated frame that I pass to the effective method (I also modify APPLY so that if it takes two arguments (function, auto allocated argument-array) it applies the function to the auto allocated argument array as if 2014-12-02T15:59:18Z drmeister: it were a list). This approach is copied from ECL. 2014-12-02T16:02:25Z drmeister: Sorry for the lack of full disclosure - it's an iterative process to figure out what I'm actually doing in this code. 2014-12-02T16:10:27Z eudoxia quit (Quit: leaving) 2014-12-02T16:13:44Z scymtym__ joined #sbcl 2014-12-02T16:13:50Z scymtym_ quit (Ping timeout: 258 seconds) 2014-12-02T16:16:23Z pkhuong: I see. 2014-12-02T16:16:42Z pkhuong: it's not first class, but CL doesn't have the concept of second class &rest vector 2014-12-02T16:16:58Z pkhuong: so you'd need more analyses or to just trust the programmer to get it right 2014-12-02T16:41:33Z Hydan_ joined #sbcl 2014-12-02T16:42:07Z Hydan_ quit (Client Quit) 2014-12-02T16:43:16Z Hydan` quit (Read error: Connection reset by peer) 2014-12-02T16:47:16Z gingerale joined #sbcl 2014-12-02T17:00:52Z stassats joined #sbcl 2014-12-02T17:01:55Z attila_lendvai joined #sbcl 2014-12-02T17:03:03Z irsol quit (Ping timeout: 244 seconds) 2014-12-02T17:05:23Z irsol joined #sbcl 2014-12-02T17:12:08Z eudoxia joined #sbcl 2014-12-02T17:14:20Z fitzsim joined #sbcl 2014-12-02T17:29:38Z Intensity quit (Remote host closed the connection) 2014-12-02T17:56:58Z eudoxia quit (Quit: leaving) 2014-12-02T18:11:33Z joshe quit (Ping timeout: 244 seconds) 2014-12-02T18:12:42Z oleo is now known as Guest96728 2014-12-02T18:16:00Z Guest96728 quit (Ping timeout: 256 seconds) 2014-12-02T18:17:09Z oleo__ joined #sbcl 2014-12-02T18:17:56Z oleo__ is now known as oleo 2014-12-02T18:29:37Z torono joined #sbcl 2014-12-02T18:34:41Z joshe joined #sbcl 2014-12-02T18:57:08Z scymtym joined #sbcl 2014-12-02T19:31:42Z stassats quit (Remote host closed the connection) 2014-12-02T19:32:03Z stassats joined #sbcl 2014-12-02T19:46:35Z jdz quit (Ping timeout: 258 seconds) 2014-12-02T19:48:36Z jdz joined #sbcl 2014-12-02T19:54:29Z stassats quit (Ping timeout: 264 seconds) 2014-12-02T20:02:56Z snuglas joined #sbcl 2014-12-02T20:03:57Z snuglas: I'm looking for an opinion on a pending change that Robert Brown and I are discussing, to signal a style-warning if a define-compiler-macro appears after a full call was compiled to it. 2014-12-02T20:04:16Z torono quit (Ping timeout: 246 seconds) 2014-12-02T20:04:30Z snuglas: One implementation is done already: it track whether at the time of call the function's assumed type was (function * *), and the :where-from was :assumed 2014-12-02T20:05:26Z snuglas: This works great but has false negatives because an ftype proclamation trumps the assumed-type. The other implementation (in my head only) takes it all the way to codegen to decide what full calls were actually emitted. Then and only then will a define-compiler-macro warn on a really emitted call. 2014-12-02T20:05:33Z snuglas: But that seems like a larger hammer than I'd like to use. 2014-12-02T20:06:43Z snuglas: Otoh, the big hammer is actually trivial, clean, and has neither false positives nor false negatives, so... 2014-12-02T20:11:48Z Krystof: if the big hammer is clean, go for it 2014-12-02T20:14:46Z Intensity joined #sbcl 2014-12-02T20:19:37Z fridim_ quit (Ping timeout: 252 seconds) 2014-12-02T20:27:43Z snuglas quit (Ping timeout: 246 seconds) 2014-12-02T20:39:39Z pkhuong: how does who-calls do it? 2014-12-02T20:48:53Z stassats joined #sbcl 2014-12-02T20:49:23Z attila_lendvai quit (Ping timeout: 264 seconds) 2014-12-02T20:51:57Z attila_lendvai joined #sbcl 2014-12-02T20:51:57Z attila_lendvai quit (Changing host) 2014-12-02T20:51:57Z attila_lendvai joined #sbcl 2014-12-02T20:53:15Z prxq joined #sbcl 2014-12-02T20:57:56Z attila_lendvai quit (Read error: Connection reset by peer) 2014-12-02T20:58:02Z attila_lendvai1 joined #sbcl 2014-12-02T20:58:02Z attila_lendvai1 is now known as attila_lendvai 2014-12-02T20:58:06Z attila_lendvai quit (Changing host) 2014-12-02T20:58:06Z attila_lendvai joined #sbcl 2014-12-02T21:03:10Z attila_lendvai quit (Ping timeout: 256 seconds) 2014-12-02T21:12:37Z attila_lendvai joined #sbcl 2014-12-02T21:22:32Z gingerale quit (Ping timeout: 250 seconds) 2014-12-02T21:23:38Z attila_lendvai1 joined #sbcl 2014-12-02T21:23:38Z attila_lendvai quit (Disconnected by services) 2014-12-02T21:23:38Z attila_lendvai1 quit (Changing host) 2014-12-02T21:23:38Z attila_lendvai1 joined #sbcl 2014-12-02T21:24:57Z attila_lendvai joined #sbcl 2014-12-02T21:24:57Z attila_lendvai quit (Changing host) 2014-12-02T21:24:57Z attila_lendvai joined #sbcl 2014-12-02T21:24:57Z attila_lendvai1 quit (Read error: Connection reset by peer) 2014-12-02T21:39:29Z eudoxia joined #sbcl 2014-12-02T21:42:02Z angavrilov quit (Remote host closed the connection) 2014-12-02T21:53:27Z oleo quit (Quit: Verlassend) 2014-12-02T21:55:00Z oleo joined #sbcl 2014-12-02T22:01:59Z prxq quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 2014-12-02T22:57:06Z scymtym__ quit (Ping timeout: 258 seconds) 2014-12-02T22:58:38Z jdz quit (Ping timeout: 258 seconds) 2014-12-02T22:59:01Z jdz joined #sbcl 2014-12-02T22:59:51Z jl_3 quit (Ping timeout: 252 seconds) 2014-12-02T23:08:53Z stassats quit (Ping timeout: 264 seconds) 2014-12-02T23:09:18Z jl_3 joined #sbcl 2014-12-02T23:28:56Z eudoxia quit (Quit: leaving) 2014-12-02T23:46:41Z stassats joined #sbcl 2014-12-02T23:53:41Z attila_lendvai quit (Quit: Leaving.)