00:00:12 In a "collective code ownership" sense or in a "you wrote it" sense? 00:00:54 the latter. 00:01:03 Ah. 00:01:15 over the course of a couple months, but still. 00:02:06 Mmm. Sometimes I wonder if -anyone- actually understands all of the parts of the compiler. 00:02:16 Krystof [~csr21@84-51-132-95.christ977.adsl.metronet.co.uk] has joined #sbcl 00:02:16 -!- ChanServ has set mode +o Krystof 00:02:46 I doubt it 00:02:47 I mean, I'm not bad at IR2, but even now I find that there are options to VOPs that I don't know much about. 00:05:46 same here. I mostly get IR2, a tiny bit between IR1 and IR2, and the fixpoint rewriting part of IR1. 00:06:56 IR1 still operates on the FM principle as far as I'm concerned. 00:08:13 "FM"? 00:08:18 fucking magic 00:08:36 -!- hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has quit [Quit: hargettp] 00:10:42 hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has joined #sbcl 00:12:16 -!- tcr [~tcr@cpc1-bour2-0-0-cust414.15-1.cable.virginmedia.com] has quit [Quit: Leaving.] 00:18:03 That's actually probably unfair of me, as I can do -some- IR1-level work, but it's still not an area I'm overly familiar with. 00:23:32 we might have developed a bias toward putting more logic in IR2 because it's more similar to regular compilers, so we understand it better. 00:25:47 Too bad most of the compiler bugs are at the IR1 level, huh? 00:28:34 Which reminds me, actually, on x86oids, with a decrementing loop over a fixnum terminating on zero, is it cheaper to just decrement a stack slot and branch on the condition code, or to load the counter into a register, decrement that, and do an explicit comparison? (figure that the register gets spilled over the body of the loop) 00:28:53 Or should I just put together my own test case? 00:28:57 nyef: probably better to load, decrement, store and branch 00:29:26 actually... probably depends on the generation 00:29:55 Oh, joy. 00:31:20 old stuff didn't like rmw instructions that much, then they broke stuff in uops internally (so l1d density matters), and now we have improving support for fusion of cmp/jcc, and *I think* some sub/jcc too. 00:31:40 *pkhuong* grabs a manual 00:45:42 so, they're telling us to avoid rmw 00:45:58 and sub/jcc instead of sub/cmp/jcc 00:46:12 but if we must cmp/jcc, some patterns work better. 00:46:12 rbarraud [~rbarraud@202-180-88-252.callplus.net.nz] has joined #sbcl 00:47:53 ... joy. 00:48:26 So much for that idea. 00:54:48 for an easy one, we could replace all occurrence of inc/dec with add/sub. 01:02:21 Could we profitably replace some of them with LEA? 01:03:41 instead of add? why? 01:03:52 I think we already do that, actually. 01:04:16 -!- angavrilov [~angavrilo@217.71.227.181] has quit [Ping timeout: 252 seconds] 01:06:31 Okay, it's gone nine pm, and I'm tired. Maybe we can discuss optimization opportunities tomorrow? 01:08:44 -!- nyef [~nyef@pool-70-109-134-127.cncdnh.east.myfairpoint.net] has quit [Quit: G'night all.] 01:11:39 bah. Not like I have any time for sbcl hackage. 01:19:36 -!- hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has quit [Quit: hargettp] 01:21:18 hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has joined #sbcl 01:22:37 the inc/dec replacement would be pretty easy 01:30:49 -!- hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has quit [Quit: hargettp] 01:43:38 -!- Blkt [~user@dynamic-adsl-94-34-31-251.clienti.tiscali.it] has quit [Quit: Error: do not makunbound t please] 01:58:14 -!- rbarraud [~rbarraud@202-180-88-252.callplus.net.nz] has quit [Ping timeout: 264 seconds] 02:20:57 rbarraud [~rbarraud@118-92-19-211.dsl.dyn.ihug.co.nz] has joined #sbcl 02:29:30 angavrilov [~angavrilo@217.71.227.181] has joined #sbcl 02:35:07 -!- angavrilov [~angavrilo@217.71.227.181] has quit [Ping timeout: 240 seconds] 02:36:40 angavrilov [~angavrilo@217.71.227.181] has joined #sbcl 03:05:54 The_Jon_Smith [~The_Jon_S@ip24-250-13-137.ri.ri.cox.net] has joined #sbcl 04:10:45 Fare [~Fare@ita4fw1.itasoftware.com] has joined #sbcl 04:30:18 -!- The_Jon_Smith [~The_Jon_S@ip24-250-13-137.ri.ri.cox.net] has quit [Ping timeout: 240 seconds] 05:59:04 -!- cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has quit [Ping timeout: 265 seconds] 05:59:52 cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has joined #sbcl 06:04:51 -!- Fare [~Fare@ita4fw1.itasoftware.com] has quit [Quit: Leaving] 06:12:54 -!- cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has quit [Ping timeout: 272 seconds] 06:13:35 cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has joined #sbcl 06:24:49 -!- cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has quit [Ping timeout: 265 seconds] 06:25:15 cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has joined #sbcl 06:25:16 nikodemus [~nikodemus@cs181199216.pp.htv.fi] has joined #sbcl 06:25:16 -!- ChanServ has set mode +o nikodemus 06:32:33 -!- cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has quit [Remote host closed the connection] 06:32:50 cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has joined #sbcl 06:42:38 -!- cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has quit [Ping timeout: 245 seconds] 06:43:30 cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has joined #sbcl 07:07:56 attila_lendvai [~attila_le@catv-89-133-171-82.catv.broadband.hu] has joined #sbcl 07:13:53 -!- rbarraud [~rbarraud@118-92-19-211.dsl.dyn.ihug.co.nz] has quit [Read error: Connection reset by peer] 07:16:45 rbarraud [~rbarraud@118-93-78-162.dsl.dyn.ihug.co.nz] has joined #sbcl 07:55:29 How would one go about defining a VOP-backed function with an optional argument? An inline wrapper that calls an internal version with all args? 07:56:41 sounds about right 08:32:11 it even builds and all: http://paste.lisp.org/display/114488 08:42:37 nikodemus: are there still cases where we share dfuns (checking/cacheing)? 08:46:47 you mean a single dfun serving multiple generics? 08:49:03 tcr [~tcr@cpc1-bour2-0-0-cust414.15-1.cable.virginmedia.com] has joined #sbcl 08:52:25 -!- nikodemus [~nikodemus@cs181199216.pp.htv.fi] has quit [Quit: This computer has gone to sleep] 09:12:28 -!- attila_lendvai [~attila_le@catv-89-133-171-82.catv.broadband.hu] has quit [Disconnected by services] 09:12:28 attila_lendvai1 [~attila_le@catv-89-133-171-82.catv.broadband.hu] has joined #sbcl 09:12:31 -!- attila_lendvai1 is now known as attila_lendvai 09:24:15 nikodemus [~nikodemus@cs181199216.pp.htv.fi] has joined #sbcl 09:24:15 -!- ChanServ has set mode +o nikodemus 09:32:12 Krystof: i'm an idiot. it's not actually dfuns that i stuck the (DFUN FOO) name on, but emf 09:32:28 and emf are definitely per-generic 09:33:01 so aside from s/dfun/emf/ it should always be correct 09:36:04 Is it possible to somehow patch instruction definitions in a running image without rebuilding everything? If I C-c C-c on a definition in insts.lisp, it complains about "unknown instruction format"... 09:38:35 good 09:39:04 if you want to unshare and name dfuns too, that wouldn't go amiss 09:49:57 Krystof: i'm going for the low-hanging fruit here. unsharing stuff looks more difficult and may have performance implications 09:50:26 slot-accessors themselves would be neat too, but those are way too shared to name right now 09:50:59 i'm also trying to get rid of NAME-LAMBDA and add (declare (sb-ext:fname foo)) instead 09:51:52 that is not get fully rid of N-L -- keep it for DEFUN, but for this stuff it seems somewhat wrong, and is too magical to document right now 09:52:19 I'd be happy to get rid of named-lambda as a special form completely 09:52:30 code-walkery people don't like it 09:57:06 or keep it as a special form but have a macroexpansion for it too 09:57:40 that was my plan 09:58:08 what i don't like about it is that it is used to effect block-compilation of self-calls -- but only sometimes 09:59:11 whereas a macro-expansion along the lines of (labels ((,name ,lambda-list ,@body))) #,name) would be nice and simple -- and always get self-calls right 10:00:09 so DEFUN would choose which to use based on the policy (FNAME declaration or NAMED-LAMBDA) instead of compiler deciding what to do about self-calls in a named-lambda based on policy 10:17:39 hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has joined #sbcl 10:21:53 crap, this is trickier than i thought 10:37:18 -!- hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has quit [Quit: hargettp] 10:39:22 That's my exact thoughts everytime I hack on sbcl :-) 10:39:54 next thoughts in line "Why the heck is it not compiling anymore?" 10:40:25 hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has joined #sbcl 10:41:45 ok, i'll do the simple version now and defer the DECLARE FNAME refactoring, because i need to think about it a bit more 11:05:47 git branch | wc -l 11:05:48 88 11:05:54 uuuh 11:23:44 Heh, nice. 11:24:54 git: so good at keeping track you'll never get round to finishing your half-baked hacks. (I know, I know) 11:27:56 aargh. commit message editing fail 11:38:56 -!- rbarraud [~rbarraud@118-93-78-162.dsl.dyn.ihug.co.nz] has quit [Ping timeout: 255 seconds] 11:39:18 -!- hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has quit [Quit: hargettp] 11:44:16 hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has joined #sbcl 11:46:38 angavrilov: it's possible, but you have to load a good bit of the instruction definition machinery yourself 11:56:10 nikodemus: thanks for the extended PCL named-lambda usage! 11:58:30 attila_lendvai: hopefully it proves useful 11:59:04 i wonder if it will make a bigger difference in sb-sprof usage or debugging 12:07:14 -!- nikodemus [~nikodemus@cs181199216.pp.htv.fi] has quit [Quit: This computer has gone to sleep] 12:12:09 I've never really worried about them in sb-sprof because you can usually look one step up the call stack 12:12:20 froydnj: Probably simpler to rebuild then :) 12:36:56 nikodemus [~nikodemus@cs181199216.pp.htv.fi] has joined #sbcl 12:36:56 -!- ChanServ has set mode +o nikodemus 12:56:19 -!- nikodemus [~nikodemus@cs181199216.pp.htv.fi] has quit [Quit: This computer has gone to sleep] 13:04:03 angavrilov: eh, you can do it...the particular bits are not *too* hard to track down 13:04:46 nikodemus [~nikodemus@cs181199216.pp.htv.fi] has joined #sbcl 13:04:46 -!- ChanServ has set mode +o nikodemus 13:05:31 froydnj: There is no real need. I'm only occasionally fixing various typos etc in SSE instruction definitions that come out due to my work on intrinsics. 13:23:33 -!- nikodemus [~nikodemus@cs181199216.pp.htv.fi] has quit [Quit: This computer has gone to sleep] 13:39:42 nikodemus [~nikodemus@cs181058025.pp.htv.fi] has joined #sbcl 13:39:43 -!- ChanServ has set mode +o nikodemus 14:09:04 lnostdal_ [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 14:09:06 -!- lnostdal_ [~quassel@56.84-48-233.nextgentel.com] has quit [Remote host closed the connection] 14:09:38 -!- lnostdal [~quassel@56.84-48-233.nextgentel.com] has quit [Ping timeout: 276 seconds] 14:37:42 -!- nikodemus [~nikodemus@cs181058025.pp.htv.fi] has quit [Quit: This computer has gone to sleep] 14:44:23 lnostdal [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 14:50:44 lnostdal_ [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 14:51:47 -!- lnostdal [~quassel@56.84-48-233.nextgentel.com] has quit [Read error: Connection reset by peer] 14:59:40 -!- Krystof [~csr21@84-51-132-95.christ977.adsl.metronet.co.uk] has quit [Ping timeout: 272 seconds] 15:04:50 -!- lnostdal_ [~quassel@56.84-48-233.nextgentel.com] has quit [Ping timeout: 276 seconds] 15:23:22 In which order are deftransforms for a certain function applied? 15:23:58 I think last-defined to first-defined 15:25:07 What happens once one succeeds? The process starts again? 15:26:35 once one succeeds, the compiler moves on to the next form; it doesn't try to apply another transform for X (this round of optimization, anyway) 15:28:23 lnostdal [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 15:29:27 Krystof [~csr21@84-51-132-95.christ977.adsl.metronet.co.uk] has joined #sbcl 15:29:27 -!- ChanServ has set mode +o Krystof 15:30:10 and it's bottom-up, unfortunately. 15:32:34 lnostdal_ [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 15:33:16 -!- lnostdal [~quassel@56.84-48-233.nextgentel.com] has quit [Ping timeout: 252 seconds] 15:34:25 bottom-up makes sense...why unfortunately? obvious optimizations that we miss and have to go through another ir1 round to do? 15:34:44 froydnj: bottom-up makes sense for type derivation 15:35:25 but for rewritings, top-down makes a lot of sense: otherwise, you end up inlining subexpressions when the whole expression could be rewritten at a higher level. 15:35:42 stuff like (mod (expt ...) ...) 15:36:42 (or (replace/subseq)) 15:36:55 all those inter-form optimizations we do... :) 15:37:20 -!- lnostdal_ [~quassel@56.84-48-233.nextgentel.com] has quit [Ping timeout: 276 seconds] 15:37:26 well, could do, but for various reasons, such as the one above, it's hard as hell 15:40:16 In this case I found that if if-ps is expanded into (or-ps (and-ps c a) (andnot-ps c b)) via inlining, splice transforms between ands and c cannot apply due to an intermediate var. 15:41:00 So I had to replace inlining with a transform, and use application order to ensure priority... 15:41:34 That's how I understand what's going on anyway 15:42:28 pkhuong: oh, agreed. it'd be difficult 15:43:06 froydnj: actually, it might be possible to do something funky like look at the parent node and rewrite it. 15:43:40 pkhuong: I wonder if for combinations, you could remember the args, rewrite the parent, and then rewrite the args 15:44:17 you'd have to pass back "hey, I rewrote the whole glob, don't touch the args" or somesuch 15:49:35 lnostdal [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 15:49:53 froydnj: it's to much easier to do that in IR2, though ;) 15:49:56 *so much 15:51:47 pkhuong: heh. maybe. IR2 is painful to manipulate. 15:51:49 but for things like replace/subseq, the subseq call might have disappeared by IR2 15:51:58 right. 15:52:08 they'll most likely have been replaced by loops 15:58:03 -!- lnostdal [~quassel@56.84-48-233.nextgentel.com] has quit [Ping timeout: 265 seconds] 16:00:36 pkhuong: Meanwhile, I have defined almost all computation and sap SSE intrinsics: http://github.com/angavrilov/sbcl/commits/sse/ 16:01:33 nyef [~nyef@pool-70-109-134-127.cncdnh.east.myfairpoint.net] has joined #sbcl 16:01:50 Hello all. 16:03:49 hi nyef 16:13:26 lnostdal [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 16:21:07 -!- lnostdal [~quassel@56.84-48-233.nextgentel.com] has quit [Ping timeout: 240 seconds] 16:34:35 lnostdal [~quassel@124.80-203-140.nextgentel.com] has joined #sbcl 16:40:35 -!- lnostdal [~quassel@124.80-203-140.nextgentel.com] has quit [Ping timeout: 276 seconds] 16:53:48 lnostdal [~quassel@124.80-203-140.nextgentel.com] has joined #sbcl 17:00:00 -!- lnostdal [~quassel@124.80-203-140.nextgentel.com] has quit [Ping timeout: 272 seconds] 17:00:21 lnostdal [~quassel@124.80-203-140.nextgentel.com] has joined #sbcl 17:05:26 -!- lnostdal [~quassel@124.80-203-140.nextgentel.com] has quit [Ping timeout: 264 seconds] 17:07:06 lnostdal [~quassel@124.80-203-140.nextgentel.com] has joined #sbcl 17:11:48 -!- lnostdal [~quassel@124.80-203-140.nextgentel.com] has quit [Ping timeout: 240 seconds] 17:14:56 lnostdal [~quassel@124.80-203-140.nextgentel.com] has joined #sbcl 17:16:50 -!- cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has quit [Ping timeout: 264 seconds] 17:17:24 cmm [~cmm@bzq-79-181-203-193.red.bezeqint.net] has joined #sbcl 17:19:51 lnostdal_ [~quassel@124.80-203-140.nextgentel.com] has joined #sbcl 17:20:18 -!- lnostdal [~quassel@124.80-203-140.nextgentel.com] has quit [Ping timeout: 240 seconds] 17:30:43 -!- lnostdal_ [~quassel@124.80-203-140.nextgentel.com] has quit [Ping timeout: 240 seconds] 17:42:09 lnostdal [~quassel@124.80-203-140.nextgentel.com] has joined #sbcl 17:54:29 -!- lnostdal [~quassel@124.80-203-140.nextgentel.com] has quit [Ping timeout: 276 seconds] 18:08:03 rmarynch [~roman@bras-7-ge-62.122.200.234.utm.if.ua] has joined #sbcl 18:16:28 lnostdal [~quassel@56.84-48-233.nextgentel.com] has joined #sbcl 18:22:14 -!- lnostdal [~quassel@56.84-48-233.nextgentel.com] has quit [Ping timeout: 264 seconds] 18:32:27 pkhuong: I wonder if you or somebody else could spare some time and define the PEXTRW & PINSRW instructions. I understood enough to do some simple copy & paste editing, but those seem to have unique signatures. 18:35:04 Or tell me where to copy & paste from :) 18:35:30 You know that a good chunk of the complexity in the instruction definitions is to support the disassembler, right? 18:35:49 angavrilov: something like the shuffle instructions. 18:36:19 (assuming you're wondering about the imm part) 18:37:16 What about the r32 <-> xmm register type combination part? 18:37:54 My trouble is that I don't actually understand how instructions are encoded; the lowest I've ever gone is assembly level. 18:40:37 tsuru [~charlie@c-174-50-217-160.hsd1.tn.comcast.net] has joined #sbcl 18:40:59 Hmm, is it perhaps enough to just copy some xmm <-> register move instruction, and stuck on the imm byte?.. 18:41:15 looks like it's encoded like a xmm -> gpr and a byte. 18:41:24 You can look in the docs to make sure; they have a bit-level table. 18:41:53 there's this machine learning paper on inferring assemblers with a black box reference. 18:41:57 Might be a good idea ;) 18:45:26 "black box reference"? 18:46:06 What's that, an existing assembler and some source texts, or a set of source texts and corresponding objects, or something else? 18:48:53 just an existing assembler 18:49:14 Hrm. Must be harder. 18:49:18 and a basic machine description (opcode names, arity, registers and address syntax) 18:49:22 Ahh. 18:49:31 Okay, that'd make it far more tractable. 18:50:33 and the description can be a relaxed version of the truth, as long as the reference dies on syntax errors. 18:52:39 The real question is, if the description is wrong in places, not merely relaxed, can the system figure out that it's wrong and come up with the right version? 18:53:19 if the description disallows legal syntax, then no. 18:53:59 but as long as the description includes the syntax you want to support, errors were handled gracefully. 19:01:53 It'd be interesting to see a paper on inferring operational semantics of machine instructions given a basic single-stepping ptrace-like interface. 19:04:35 or just run a couple random tests and assume the odds that you're wrong are low enough 19:04:48 (ISTR a superoptimizer doing just that) 19:24:49 -!- hargettp [~anonymous@pool-71-174-139-221.bstnma.east.verizon.net] has quit [Ping timeout: 252 seconds] 19:27:18 hargettp [~anonymous@96.237.126.100] has joined #sbcl 19:38:28 -!- rmarynch [~roman@bras-7-ge-62.122.200.234.utm.if.ua] has quit [Ping timeout: 245 seconds] 19:38:48 rmarynch [~roman@bras-7-ge-62.122.200.234.utm.if.ua] has joined #sbcl 19:40:43 -!- rmarynch [~roman@bras-7-ge-62.122.200.234.utm.if.ua] has quit [Client Quit] 20:03:31 Blkt [~user@dynamic-adsl-94-34-31-251.clienti.tiscali.it] has joined #sbcl 20:06:47 -!- hargettp [~anonymous@96.237.126.100] has quit [Quit: hargettp] 20:06:48 -!- pkhuong [~pkhuong@gravelga.xen.prgmr.com] has quit [Ping timeout: 240 seconds] 20:08:35 hargettp [~anonymous@96.237.126.100] has joined #sbcl 20:14:50 pkhuong [~pkhuong@gravelga.xen.prgmr.com] has joined #sbcl 20:20:12 nikodemus [~nikodemus@cs181199216.pp.htv.fi] has joined #sbcl 20:20:12 -!- ChanServ has set mode +o nikodemus 20:26:49 -!- nikodemus [~nikodemus@cs181199216.pp.htv.fi] has quit [Read error: Connection reset by peer] 20:44:31 Fare [~Fare@ita4fw1.itasoftware.com] has joined #sbcl 20:44:49 -!- hargettp [~anonymous@96.237.126.100] has quit [Quit: hargettp] 20:44:56 nikodemus [~nikodemus@cs181199216.pp.htv.fi] has joined #sbcl 20:44:56 -!- ChanServ has set mode +o nikodemus 20:58:50 Kaer [b@c-cfcee253.97-16-64736c12.cust.bredbandsbolaget.se] has joined #sbcl 21:01:26 -!- Kae [b@c-cfcee253.97-16-64736c12.cust.bredbandsbolaget.se] has quit [Ping timeout: 265 seconds] 21:13:57 -!- nikodemus [~nikodemus@cs181199216.pp.htv.fi] has quit [Quit: This computer has gone to sleep] 21:45:01 rbarraud [~rbarraud@118-93-78-162.dsl.dyn.ihug.co.nz] has joined #sbcl 22:26:22 -!- Blkt [~user@dynamic-adsl-94-34-31-251.clienti.tiscali.it] has quit [Quit: Error: do not makunbound t please!] 22:37:47 The_Jon_Smith [~The_Jon_S@ip24-250-13-137.ri.ri.cox.net] has joined #sbcl 22:37:52 hey, anyone around? 22:38:02 No, why? 22:38:17 i need examples of things people want peephole optimized 22:38:54 i've got the ugly mov eax ecx, mov ecx eax so far 22:39:33 it happens a lot apparently 22:40:31 I was planning on attacking this from another direction, but... Generate a local function call (using LABELS or the like) and have a look at what happens with EBP. 22:41:08 Umm... I don't remember it happening with a full call, just the local ones. 22:41:45 (I'm still planning on attacking this from another direction, really. It's a completely stupid thing to see in generated code.) 22:44:30 huh 22:44:35 that is stupid 22:44:43 Isn't it, though? 22:45:41 If I were more certain that it wouldn't cause trouble (and I -will- be looking into this), I'd consider just using a wired TN of appropriate attributes instead of that nonsense with CURRENT-FP or whatever the VOP is. 22:47:13 -!- pkhuong [~pkhuong@gravelga.xen.prgmr.com] has quit [Ping timeout: 252 seconds] 22:47:40 just to be clear, we're talking about how it shuffles the registers around a lot 22:48:15 ? 22:48:16 We're talking about the extra temporary register burned to stash EBP in the newly generated frame. 22:48:17 pkhuong [~pkhuong@gravelga.xen.prgmr.com] has joined #sbcl 22:48:26 yeah 22:48:45 -!- pkhuong is now known as Guest46444 22:48:58 -!- tcr [~tcr@cpc1-bour2-0-0-cust414.15-1.cable.virginmedia.com] has quit [Quit: Leaving.] 22:51:04 -!- attila_lendvai [~attila_le@catv-89-133-171-82.catv.broadband.hu] has quit [Disconnected by services] 22:51:04 attila_lendvai1 [~attila_le@catv-89-133-171-82.catv.broadband.hu] has joined #sbcl 22:51:06 -!- attila_lendvai1 is now known as attila_lendvai 22:51:13 is weird that would happen with just locals 22:53:07 -!- Guest46444 [~pkhuong@gravelga.xen.prgmr.com] has quit [Ping timeout: 240 seconds] 22:53:38 Not really. It's pretty much mandated by the way the local stack frames are built. 22:54:02 pkhuong_ [~pkhuong@gravelga.xen.prgmr.com] has joined #sbcl 22:54:41 If you look at the VOP that moves from EBP, you'll find that it doesn't have a template, so has to be introduced explicitly during IR2-conversion, and that leads you to ir2tran, and that shows that it only happens for local calls. 22:56:00 At the same time, however, I'm planning on looking for a way to introduce something like an "IEP-ALLOCATE-FRAME" VOP to go with "XEP-ALLOCATE-FRAME", which would be a -perfect- place to hang this operation... As well as snap the stupid stubs introduce for any local call to pop the return address to the right place. 22:56:12 (Those are introduced per -call site-, which isn't right.) 22:57:05 nyef: right. I had a hack to introduce them right before the entry point 22:57:45 Mmm. IEP-ALLOCATE-FRAME sounds like a good VOP to have, doesn't it? 23:50:27 -!- Fare [~Fare@ita4fw1.itasoftware.com] has quit [Quit: Leaving] 23:51:44 stassats [~stassats@wikipedia/stassats] has joined #sbcl