Index

Show enters and exits. Hide enters and exits.

00:00:11brixenDefiler: like this: http://rafb.net/p/4dX3tt23.html
00:00:15agardinerjust be something like label1..labeln though
00:00:35Defilerbrixen: Yeah, exactly that
00:00:38brixenagardiner: would be helpful I think
00:00:49brixenagardiner: OTOH, goto is unconditional
00:00:58brixenso you can just jump and find out after the fact :)
00:01:07DefilerThat last commit of mine is totally badass
00:01:14DefilerI am pretty happy with it
00:01:19brixenheh nice
00:01:49brixenagardiner: ok, while in wish list mode, any chance of setting display to opcodes, like gdb has?
00:02:17agardinerhehe, sure
00:02:26agardineryou mean the auto-display of the current line?
00:02:29brixenthat would be super helpful
00:02:40brixenyeah, but opcodes rather than source
00:02:45agardineryeah, right
00:02:57agardineri can do two things that would make this better, i think
00:03:03brixene.g. for debugging a line like this: ((data.strip! || data).tr!("\n", " ") || data).squeeze!
00:03:04agardiner1) let you set the mode
00:03:22agardiner2) default intelligently, based on the type of step you take
00:03:33agardinerso if you step by line, show the Ruby source
00:03:36brixenohh #2 would be da bomb :)
00:03:43agardinerand if you step by instruction, show the decode
00:03:51brixenyes please :D
00:04:04agardinerright, will do! :-D
00:04:11brixenheh, many thanks
00:05:40zenspiderwtf???
00:06:09zenspidermy latest pull is dying on unable to load complier/init because it is executing through a symlink
00:08:21brixenagardiner: would you have a minute?
00:08:28agardinersure, what's up?
00:08:34rmm5t enters the room.
00:08:36brixenone sec..
00:09:20rubuildius_ppcWilson Bilkovich: a9f5d7ad4; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors;
00:09:26brixenagardiner: I was going to give you a paste, but this might be faster..
00:09:40brixenshotgun/rubinius benchmark/yarv/bm_so_count_words.rb
00:09:54AndrewO leaves the room.
00:10:13agardinerer... i'm vm-less today, so i can't run that
00:10:45brixenahh, ok
00:11:27brixenlooks like meta_send_op_plus got converted to meta_send_op_minus in this code: nc += data.length
00:11:39brixenI'll track it down
00:12:27agardinerhuh? you saying the compiled bytecode changed, or the meta_send_plus is behaving like meta_send_minus?
00:13:08brixenI'm running describe now, I'll know in a sec
00:13:13zenspiderhttp://rafb.net/p/YmxVxv76.html huh???
00:13:20brixenagardiner: look at this: http://rafb.net/p/SCdsBa97.html
00:13:26brixenagardiner: toward the bottom
00:13:29zenspiderI can't run outside of the rubinius dir anymore... worked at noon
00:14:26RyanTM leaves the room.
00:15:06brixenagardiner: it's something else, I got confused by the narrow viewport in the debugger
00:15:33agardinerah, ok
00:15:42RyanTM enters the room.
00:16:12brixenagardiner: it's trying to do meta_send_op_minus on a String, but it's not related to the nc += ... line
00:17:45agardinerhmm... i think another handy thing in the debugger would be a 'merged' source listing
00:17:53zenspideranyone else seeing this?
00:17:54agardinershowing the Ruby source and the decode interleaved
00:18:11rmm5t leaves the room.
00:18:45brixenagardiner: that would be really nice
00:18:51brixenzenspider: what's the repro command?
00:20:26zenspiderbrixen: ~/Work/git/rubinius/shotgun/rubinius -e 'p 1 + 1'; cd ..; ~/Work/git/rubinius/shotgun/rubinius -e 'p 1 + 1'
00:22:27brixenzenspider: yeah, I get it, I'm one back from HEAD
00:22:57yipstar leaves the room.
00:23:17zenspiderk. I think we might have found it.
00:25:25DefilerYou know who broke it?
00:25:26DefilerYOU PEOPLE
00:27:32zenspiderpushing...
00:28:25zenspidergod I hate git
00:28:30boyscout1 commit by Ryan Davis
00:28:31boyscout * Fixed pathing issues for RUBYLIB env var; 9466ca2
00:30:35brixenzenspider: git I hate god sounds more interesting to me :P
00:31:14MenTaLguYzenspider: you're not doing the whole "Rubinius workflow" thing, are you?
00:31:16brixenDefiler: did you do some work with the n.times {} construct in the compiler recently?
00:31:22MenTaLguYzenspider: I think it's enough to make anyone hate git :P
00:31:40zenspiderMenTaLguY: I'm not?
00:31:53Defilerbrixen: I have a ticket for fixing it, but I haven't touched it since evan added it, personally
00:32:04brixenohh, # off hand?
00:32:16MenTaLguYzenspider: I dunno, you tell me?
00:32:18zenspiderYAY! constant definition is fixed! miniunit passes!
00:32:30zenspideryes, I am?
00:32:30Defilerbrixen: Yeah, it is.. uhh..
00:32:37MenTaLguYah
00:32:40brixenDefiler: I can find it
00:32:41TheVoice leaves the room.
00:32:56Defilerhttp://rubinius.lighthouseapp.com/projects/5089/tickets/369-next-causes-integer-times-to-lose-coun t
00:32:59MenTaLguYzenspider: most of the time you can just work in master and push from there and forget all about the Rubinius rake stuff
00:33:14MenTaLguYgit-fetch and git-rebase if you want to linearize your history before pushing
00:33:28MenTaLguYif you merge, just be sure to git-commit --amend to give it a meaningful commit message
00:34:12brixenkeeping a linear history is very helpful, IMO
00:34:36brixenI dunno what's so horrible about git:update and git:push
00:34:41DefilerYeah, I don't use branches much.. I just do git fetch && git rebase origin
00:34:42TheVoice enters the room.
00:34:59DefilerAlso, I use git commit -a -v a lot
00:34:59zenspiderMenTaLguY: yeah. but I'm still using git, which is the problem in my case.
00:35:10MenTaLguYwhat sort of troubles are you hitting in particular?
00:35:12zenspiderok... we go eat now. I have another green box based on our work today
00:35:23zenspiderhttp://www.zenspider.com/~ryand/dashboard/ YAY
00:35:30MenTaLguYcongrats!~
00:35:59zenspiderlater folks
00:36:11DefilerSame here. Food time
00:39:17rubuildius_ppcRyan Davis: 9466ca2b0; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors;
00:46:41dgtizedok, question does anyone care if the Bytecode::Compiler::Primitives constant disappears entirely?
00:48:30dgtizedit get used outside of ShotgunPrimitives, but I wondered if anyone cared about it anywhere else? A full grep of the project comes up with nothing.
00:48:47dgtizedsorry it doesn't get used anywhere else, does anyone intend to use it anywhere else?
00:52:23brixendgtized_: do you have to remove it to get rid of the primitive_names? if not, I'd run it by evan first
00:53:21agardinerdgtized_: yes, i care
00:53:37agardineri need that in the debugger to convert a primitive index to its namre
00:54:16agardineroh, hang on... i'm confusing it with Rubinius::Primitives, i think
00:56:03dgtizedyea it still does a call to cpu_populate_prim_names so the names are still about
00:56:27aotearoa enters the room.
00:56:33agardineryeah, i use Rubinius::Primitives, which is what any other code should use as well
00:56:57dgtizedk, and that just uses the raw C lookup table I presume?
00:57:20agardinerhehe, it used to be a hash, but i guess its been changed recently
00:57:56agardinerbut yes, thats what it uses
01:02:30jrun leaves the room.
01:02:39jrun enters the room.
01:04:42jrun leaves the room.
01:05:10jrun enters the room.
01:06:55jrun_ enters the room.
01:06:55jrun leaves the room.
01:08:56dgtizedok I have local changes, but I got a seg fault earlier before I made them but it didn't reappear, so I went a head and made changes, I think something is finicky somewhere
01:09:21dgtizedand running specs again on my changes I don't get the segfault so it's not deterministic
01:10:00benburkert enters the room.
01:13:40boyscout2 commits by Charles Comstock
01:13:41boyscout * nuked primitive_names by adding a class var macro to ShotgunPrimitives; dd4304f
01:13:42boyscout * refactor generate_select use Bytecode::Compiler::Primitives in one place, and each ...; 2ddabcc
01:16:36radarek enters the room.
01:17:29aotearoa_ enters the room.
01:17:49imajes leaves the room.
01:20:26benburkert_ enters the room.
01:20:48jrun_ leaves the room.
01:23:39ubiquitous enters the room.
01:23:54rubuildius_ppcCharles Comstock: dd4304f14; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors;
01:24:20RyanTM leaves the room.
01:25:24nicksieger leaves the room.
01:25:32RyanTM enters the room.
01:25:57aotearoa leaves the room.
01:28:16jrun enters the room.
01:28:27headius leaves the room.
01:30:29TheVoice leaves the room.
01:33:14jrun leaves the room.
01:33:35jrun enters the room.
01:37:09wifelette leaves the room.
01:37:26wifelette enters the room.
01:37:33benburkert leaves the room.
01:40:52TheVoice enters the room.
01:43:12rmm5t enters the room.
01:45:54enebo leaves the room.
01:51:14TheVoice leaves the room.
01:51:25TheVoice enters the room.
02:03:44_martinS_ enters the room.
02:04:20radarek leaves the room.
02:04:55rubymaverick enters the room.
02:11:57craftermDefiler: looks like theres been a few changes to the loader preventing it rubinius.local.bin running directly
02:12:25craftermone is related to the search_path inside of main.c, the other is the $LOAD_PATH for stdlib and lib
02:17:36AndrewO enters the room.
02:29:48xif leaves the room.
02:30:19d2dchat enters the room.
02:37:34benburkert enters the room.
02:44:34zuwiki enters the room.
02:46:19VVSiz_ enters the room.
02:49:14agardiner leaves the room.
02:52:44xif enters the room.
02:53:49xif leaves the room.
02:54:18agardiner enters the room.
02:54:30xif enters the room.
02:56:43benburkert leaves the room.
02:57:34xif leaves the room.
03:02:29TheVoice leaves the room.
03:02:29GMFlash leaves the room.
03:02:29geekounet leaves the room.
03:02:29jero5 leaves the room.
03:02:29rubuildius_ppc leaves the room.
03:02:29kAworu leaves the room.
03:02:29tmornini leaves the room.
03:02:29lopex leaves the room.
03:02:29ko1_away leaves the room.
03:02:29cout leaves the room.
03:02:29nitay leaves the room.
03:02:29wycats leaves the room.
03:02:29lenbust leaves the room.
03:02:29rudebwoy leaves the room.
03:02:29ezmobius leaves the room.
03:02:29fearoffish leaves the room.
03:03:12TheVoice enters the room.
03:03:12geekounet enters the room.
03:03:12ezmobius enters the room.
03:03:12wycats enters the room.
03:03:12tmornini enters the room.
03:03:12lopex enters the room.
03:03:12rubuildius_ppc enters the room.
03:03:12jero5 enters the room.
03:03:12kAworu enters the room.
03:03:12rudebwoy enters the room.
03:03:12lenbust enters the room.
03:03:12nitay enters the room.
03:03:12cout enters the room.
03:03:12fearoffish enters the room.
03:03:12ko1_away enters the room.
03:04:19GMFlash enters the room.
03:04:26GMFlash leaves the room.
03:04:32GMFlash enters the room.
03:04:39VVSiz leaves the room.
03:05:03bitbckt enters the room.
03:06:00TheVoice leaves the room.
03:06:48GMFlash leaves the room.
03:07:11cavalle enters the room.
03:08:53xif enters the room.
03:09:13xif leaves the room.
03:09:44xif enters the room.
03:09:54GMFlash enters the room.
03:15:59binary42 enters the room.
03:17:38dewd leaves the room.
03:23:17cavalle_ leaves the room.
03:26:56rueMoogleroo
03:44:41jrun leaves the room.
03:44:55DefilerHey, WEBrick runs
03:44:57DefilerI had no idea
03:45:34brixenDefiler: you deep into anything?
03:47:56DefilerNot really, no
03:48:39brixenwant to take a look at something with me?
03:50:40brixenit fun :P
03:50:42brixenit's
03:53:04DefilerSure. The WiFi here is freaking slow, though, so there might be some delay
03:53:32dkubb enters the room.
03:53:35brixenok
03:53:50brixenhttp://rafb.net/p/5Mg8kO86.html
03:53:57DefilerActually, got an idea
03:54:02brixenthose 3 cases cover 1 of your tickets and 1 of mine
03:54:44DefilerI am going to walk back to Eric's place and use the much-better internet there
03:54:54DefilerI believe that takes me about 10 minutes
03:54:57brixenwell, it can wait
03:59:25benburkert enters the room.
04:02:46jinjing enters the room.
04:05:27headius enters the room.
04:06:30headius leaves the room.
04:07:00headius enters the room.
04:10:05AndrewO leaves the room.
04:22:19benburkert leaves the room.
04:23:56Defilerbrixen: OK, ready to hack again
04:26:05brixenok, one sec
04:26:34DefilerSo, which tickets (other than the one I linked earlier) are related to this?
04:27:30brixen#339
04:27:57brixenso, first off, I distilled your and my ticket down to these cases: http://rafb.net/p/5Mg8kO86.html
04:28:19brixenthe "funner" one we could spec on #next
04:28:27brixenI don't know where to spec the other two
04:28:45brixenthis makes all 3 cases pass: http://rafb.net/p/UUltGb74.html
04:29:07brixenbut it concerns me that there might be other weirdness lurking out there
04:29:24brixenI wonder if the way to fix this "right" is to introduce a local for the loop counter
04:29:31brixenbut I have no idea how to do that
04:29:46brixenalso, for your reading pleasure: http://rafb.net/p/yQcqml71.html
04:30:42brixenthe "funnest" case is in that debug paste, it leaves an extra obj on the stack
04:30:53DefilerAah
04:30:58brixenthe other two will fail without the sub.dup
04:31:03brixenthe last will fail without the pop
04:31:07brixenbefore/after the block
04:32:12DefilerRyan had a really good idea for a compiler spec techique that would make this really clean
04:32:20DefilerI am planning on looking into that this week
04:32:20brixenoh good! :)
04:33:13brixenso, do you think this fix is good, or should we do the local var route?
04:33:44brixenI could put all 3 of these cases on the #times spec, actually
04:33:52brixenkind of weird, but not terribly so
04:34:31DefilerLet me look at it in context. Just a sec.
04:34:36brixenk
04:35:01TheVoice enters the room.
04:35:45brixenbtw, the debugger is freaking awesome
04:35:48DefilerMan, this uses so many obscure compiler methods
04:36:07brixenthe #times plugin?
04:36:11DefilerYeah
04:36:34brixenheh, they're all obscure to me, I spend very little time there so far
04:36:53brixenthat'll be changing ;)
04:37:13agardinerhehe
04:37:17DefilerWhy is this local called 'sub'?
04:37:24brixenheh, dunno
04:37:32brixenagardiner: mate, I *love* the debugger!
04:37:48agardinerand i *love* seeing your pasties using it! :-D
04:37:53brixenagardiner: thinking about it, I
04:37:56brixendang
04:38:00Defilerbrixen: Your fix looks good to me
04:38:04brixenI'm sure the mixed-mode display would be best
04:38:17brixenDefiler: ok, I'll put in the specs and commit
04:38:24DefilerCool
04:38:24brixenDefiler: so, you don't think a local var is the way to go?
04:38:39DefilerHow does that make this easier?
04:38:47Defiler(ready to believe that it does, just don't see it immediately)
04:38:52brixenwell, you never worry about stack depth
04:39:02brixenand it can't be that many more ops
04:39:14lopex leaves the room.
04:39:14brixenyou'd have to push the local for each - op
04:39:22brixenbut you're duping and swapping now
04:39:37DefilerI think we should go with the local, and add support for the block argument
04:39:47agardineri dislike the use of "special" locals/vars... (including @lre)
04:39:52Defiler..and just push it up into a real local. I doubt anyone will notice
04:40:07brixenDefiler: well, I dunno how to do that :P
04:40:13brixenagardiner: what would you do in this case?
04:40:26rmm5t leaves the room.
04:40:43Defilerbrixen: Basically you just put the 'while' version of the code in a file, run describe on it, and make this plugin emit those same instructions
04:40:43brixenDefiler: oh, you mean also optimize when the block takes an arg?
04:40:46agardineri'd probably stick with what you have... i have a plan one day to try to optimise away some of the dup/pop stuff
04:40:47DefilerYeah
04:41:47brixenso, does this current method make the block arg case impossible?
04:41:53agardinerbut i see it as greatly preferable to use the stack instead of special locals
04:41:54brixenI wasn't clear why it's not optimized
04:42:16brixenwell, this is a good fix for the interim, closes 2 tickets :)
04:42:27agardinerto the point i'd add new ops to make manipulation of the stack easier if necessary
04:42:33headiusevening
04:42:44brixenagardiner: makes sense
04:43:17brixenDefiler: how about if I make a new ticket to optimize with a block arg?
04:43:19headiuswhat do you mean by "#times plugin" btw?
04:43:22Defilerbrixen: Yeah, doing this as a plugin was premature in my opinion anyway
04:43:30Defilerbrixen: Sure, do that, but don't mark it 1.0pre
04:43:38headiusyou guys implementing compiler extensions for specific methods?
04:43:52Defilerheadius: We have a compiler plugin that unrolls Fixnum#times into the equivalent while loop to avoid creating a bunch of BlockContexts
04:43:58brixenDefiler: ok
04:44:04Defiler..but it was getting screwed up by 'next'
04:44:06headiusok, so you're cheating like Ruby 1.9
04:44:09headius:)
04:44:10DefilerSo brixen just fixed it
04:44:22DefilerCheating is good
04:44:29headiushey, whatever floats your boat
04:44:35DefilerExactly
04:44:37DefilerI am the law
04:44:56Defilerhttp://supremetyrant.com/misc/hello_my_name_is.png
04:45:08brixenheadius: what's being "cheated"?
04:45:44brixenif rewriting code/order/etc is cheating, most compilers cheat
04:45:53headiusI just didn't expect you guys were going to start implementing a bunch of method-specific optimizations
04:46:11brixenyep, this marks the start of an avalanche
04:46:21TheVoice leaves the room.
04:46:22brixenmethod-specific ftw :P
04:46:29Defilerheadius: evan added this specific one on a whim, mostly to see how much of a difference it made
04:46:39DefilerI doubt we are going to end up with a whole portfolio of them
04:46:44brixenyeah, this isn't starting to implement a bunch
04:46:45agardinerheadius: easy for you to say, when you've got JIT inlining! :-D
04:46:51headiusI think I heard that said about primitives too
04:47:13headiusjust givin you guys some grief :)
04:47:18brixenwell, our primitives still fit in a couple pages
04:47:21DefilerSounds like someone needs some Quiet Time :)
04:47:31brixenI wonder how many trees would be needed to print that java code :P
04:47:50headiusyou and your LOC
04:48:41brixenwell, I know that emperically, programmers tend to write about the same loc in any language, so yes, loc concerns me when it comes to semantic density
04:48:53brixencomprehension, maintainability, etc
04:49:13brixenand I just like ruby better :P
04:49:49headiusyeah, well, there's a reason I'm working on duby
04:50:13brixenyeah, I was going to say :P
04:50:45brixenhopefully we can find common ground and end up with garnet
04:50:52brixenduby sounds horrible :P
04:51:34DefilerThat or we can duel to death on the sands of the Circus Maximus
04:51:36DefilerEither way is fine
04:51:44brixenheh
04:52:05brixengoing to see cirque du soleil, corteo tomorrow night
04:53:08headiusyeah, I got tired of waiting for garnet to appear
04:53:33zenspiderso... instead of helping out on garnet... riiight
04:53:34headiusI don't think evan was ever very interested in a higher-level ruby subset like this though, he always talked about it being more like slang
04:53:42headiuszenspider: hey, I don't see you doing anything
04:54:17dancroak enters the room.
04:54:23headiusI'm totally up for coming up with something in common
04:55:20brixenwell, I was looking at rpython again today, didn't realize it before but, iiuc, it runs the code and then generates the type info etc to create the rpython stuff
04:55:25brixenthat's rather interesting
04:55:35brixenso, I don't think it uses annotations
04:55:40headiusyes
04:55:48brixenbut I haven't read through the paper yet
04:55:54TheVoice enters the room.
04:56:06headiusit doesn't use annotations, but it has a much longer pipeline
04:56:24brixenhmm
04:56:34headiusI've been talking with the pypy guys on and off for a few months
04:56:53brixenwell, 2 edged-swoard a bit, since annotations make it clearer, but they are ugly
04:57:33headiuswell, I'm up for ways to make them nicer
04:57:39headiuswe're willing to adjust the grammar too
04:57:46brixenwhat I'm most curious about is: how will the proposed work for the jvm make jruby run faster?
04:57:50zenspideryeah. we talked to them 2 years ago at DLS and I didn't really like their approach. It is interesting, but I wouldn't want ot depend on it myself.
04:57:58brixenif the jvm is already very suited for this type of code
04:58:26brixenzenspider: would you prefer annotations for a static-typed subset of Ruby?
04:59:04headiusthe proposed work for the JVM allows us to wipe out our manual call-site optimization completely, among other things
04:59:25headiusit allows JRuby as a runtime to enlist in hotspot's method selection and optimization logic directly
04:59:53headiusright now we have to go through contortions to make code look like something hotspot can recognize as optimizable Java invocation
05:00:33zenspiderbrixen: no, I don't like annotations either. I think they're ugly. I prefer self's approach more. it may be more work under the covers, but I think it is cleaner and more objective
05:00:43brixenzenspider: yeah, agreed
05:03:29headiuswell, annotations are a pragmatic way to get it working well now
05:04:19bitbckt leaves the room.
05:06:54headiusis the intent to still have garnet be something slang-like?
05:07:20headiusI talked with evan about this a few times, but something that low-level would be mostly useless on the JVM for example
05:08:22brixenwell, I doubt garnet will be ruby -> C translator, but I think that's what evan initially conceived of
05:08:40mediogre enters the room.
05:09:10rueHe as looking into LLVM last I heard
05:09:50brixenyeah, something that is able to do rtcg or at least cg directly in some form
05:10:31headiusrtcg...realtime code generation?
05:10:39brixenyeah, run-time
05:10:45headiusrun-time, got it
05:11:02brixenheadius: I guess what I think is this: if the jvm will make the current approach so much faster, duby seems to be a waste of time
05:11:27headiusI can't expect people to run JDK 7 alphas
05:11:28brixensince people won't use it for apps, and it would take a lot of time to rewrite what you already have
05:11:39headiusthere's production apps using JRuby right now
05:12:00headiusI guarantee they wouldn't run JDK7 in the next few months, much less the next year or two
05:12:33headiusand dude, I've spent all of ten hours on it
05:12:55brixenwell, seems you'd be in much the same place as this: http://www.mail-archive.com/pypy-dev@codespeak.net/msg03239.html
05:12:57headiusin ten hours it can compile some basic algorithms already, with only a few type declarations
05:14:04headiusand at the risk of sounding a bit snarky, you guys obviously see the benefit of writing portions in a static typed language, what with adding more primitives all the time
05:15:21DefilerPlease, we would never think you were snarky on IRC
05:15:41headiusit's not for lack of trying! :)
05:16:06headiusif you guys weren't so convinced you're right about everything, perhaps I wouldn't have to be snarky so often
05:16:24headiusANYway
05:16:33rueHm, FF3b4 is faster
05:17:05dgtizednow now, no bickering in the ruby implementations car, it needs to keep moving forward, no driving back
05:17:09headiushonestly I would love to find common ground, especially if you can come up with a good way to make it perform well without static type declarations
05:17:45rueIt depends on the rules
05:18:37rueFor example, Cuby may require that a variable never changes type
05:19:07headiusso would it try to statically determine it?
05:19:21headiusbecause if it's deferred until runtime it still runs into most of the same problems
05:19:21dgtizedit's a pain in the ass, but how much type check advantage do you get with pulling erlang's trick of unmutable variables?
05:19:34dgtizedfor VM/kernel code only?
05:19:52dgtizedsorry immutable, not unmutable
05:20:11headiusdgtized_: doesn't really help you that much here...the cost is that you can't determine ahead of time what methods you're going to call, and delaying type determination until runtime keeps that problem there
05:20:43dgtizedexcept it seems like it makes all types an easier constant propegation rule
05:20:58headiussure, if you're optimizing at runtime that helps
05:21:18headiusneither cuby/garnet or duby are bound at runtime
05:21:29_martinS_ leaves the room.
05:21:37headiusor at least, what I understood of garnet was that it would be statically translated
05:21:44rueheadius: Each variable must be initialised to a known value at some point
05:21:52rueTo a known type, rather
05:22:00DefilerGarnet is now officially planned to be whatever makes you least happy :)
05:22:00headiusrue: so it infers from assigned values
05:22:08DefilerWe had a little come-to-Jesus meeting just now
05:22:34rueheadius: Well, in my purely hypothetical example :P
05:22:43headiusrue: it makes sense to me
05:23:01headiusfor literal values that's easy, but for method calls you need to inspect more of the system
05:23:11rueSure
05:23:16headiusDefiler: in the spirit of cooperation, naturally!
05:23:34DefilerYes that was what I meant to say, yes
05:24:40rueheadius: That will of course depend on the rest of the rules but yeah
05:24:42headiusI am going to eliminate the need to declare a return type, since that can be inferred
05:25:21headiusI've also been trying to think of how garnet would get type information for C functions it's calling
05:25:27headiusyou'd have to inspect header files or something
05:25:40rueThe only hurdle is the method lookup but since we (theoretically) know the type of all objects, we can determine which method is being called
05:25:52headiusright, for everything implemented in garnet
05:25:57headiusthe C thing though?
05:26:10headiuspresumably the garnet-based code will want to call C functions directly
05:26:14brixenwe have pieces of that already
05:26:37rueYeah, just reuse the FFI model?
05:26:46headiuswell, you have to provide all the types in FFI
05:26:52brixenthis is a quite polished tool, we can get ideas from: http://www.haskell.org/ghc/docs/latest/html/users_guide/hsc2hs.html
05:27:01rueI suppose you could try to infer them
05:27:05brixenwe already use cpp to parse the headers, like haskell's tool
05:27:24brixenwe already have all types defined in the C headers
05:27:28brixenTypesGenerator
05:27:37headiusok, that's good
05:27:51brixenour FFI layer is kick-ass
05:27:56brixenwhile we're all here bragging :P
05:28:06headiusyes yes, again, this is what gets you guys the snark
05:28:25brixenwell, a bit of a chiken-egg case I'd say
05:28:45brixenI can't remember how many comments about how great the jvm is and what a waste of time our existence is :P
05:28:50DefilerYeah, the snark is really helpful. Thank you for your ongoing service in this matter.
05:29:06headiusI've never said anything of the sort
05:29:09zenspidertruly
05:29:10wycatsvolunteers to provide additional snark
05:29:12Defilerhahahahahahahahahhahahahaahhahahahahahahahahahaahaa
05:29:14Defilerhahshahsahshara8rasdasrw4
05:29:15brixendare me to go to the logs?
05:29:19DefilerOK, sorry.. keyboard error there
05:29:29headiusthat your stuff is a waste of time? hell no I haven't
05:29:40headiusand I don't believe that for a minute
05:29:45brixenthat writing a VM when jvm exists?
05:29:45wycatsbows at the alter of the JVM
05:29:48brixenok, you've dared me
05:29:48zenspiderDefiler: yeah. you type too fast and that happens
05:30:18DefilerClick here to get your free credit score
05:30:37wycatsWhaaaat? A virus?
05:31:57headiusso yeah, if you can inspect all the headers for stuff you're calling you could do a full-system type inference
05:32:05zenspiderbrixen: good luck filtering through all the jvm references
05:32:17wycatslol
05:32:30DefilerHere I will help you JVM out a little JVM because I am such a pal.
05:33:26headiusI almost understood that
05:34:20binary42_ enters the room.
05:34:21binary42 leaves the room.
05:34:55headiusideally whatever inference engine we'd come up with could be shared too
05:35:47headiushmmm
05:37:57mkescher leaves the room.
05:39:14headiuswhat state is the garnet/cuby stuff in right now?
05:41:40DefilerIt is totally awesome. Like.. JVM9
05:41:58headiushmm, was it expunged from the codebase?
05:42:10headiusI can't find any of it anymore...I thought there was still something around
05:42:27brixenit's written in a dialect of ruby that is invisible on certain monitors
05:43:00agardinerits under shotgun/lib/garnet iirc
05:43:00brixenon other monitors, certain files show up under lib/compiler/garnet
05:43:45headiusahh, under compiler
05:43:46headiusok
05:44:31headiushmmm
05:45:54headiusthis is all of it?
05:46:03wycatsit depends if you have the JVM installed
05:46:57headiusthe approach is similar to what I'm doing
05:47:04dancroak leaves the room.
05:47:10headiusheheh, even some similar error messages for node types that aren't supported
05:48:07headiusyeah, this isn't really as low-level as I thought, we could certainly meet in the middle
05:49:37headiusheh
05:49:37headiusdeclare 'allocate' => 'OBJECT'
05:49:41headiustype annotations!
05:49:44headiushuzzah
05:50:25headiusso yeah, if we came up with a common set of type names for the low-level types, the same approach would work for both
05:50:35robinhoode leaves the room.
05:54:03RyanTM leaves the room.
05:54:03tizianobis enters the room.
05:54:46agardiner leaves the room.
05:58:20headiusany of you ever monkey with the garnet stuff?
05:58:54headiusit generates C code...I was thinking about the same approach for my stuff, since the java compilers do a better job of method selection than I would
05:59:27headiusright now the compiler reflectively inspects the target types and methods
06:00:33tizianobis_ enters the room.
06:00:42tarcieriboggles at the idea of static C code generation from a Ruby subset
06:01:05binary42_ leaves the room.
06:01:06tarcierihow much do you have to get rid of to make that possible?
06:01:31headiusI dunno, I don't think you have to get rid of too much
06:01:35Defiler:defs, maybe :sclass, definitely eval
06:01:42headiusI'm statically generating JVM bytecode
06:01:43tarcieridefine_method?
06:01:57DefilerYeah, but define_method is already useless, so that's not much of a loss
06:01:58headiusDefiler: defs I can do as class methods...that's one area where there's going to be some contention
06:02:06headiusyeah, screw define_method
06:02:12tarcierihow do you handle procs?
06:02:12headiusbut it's a method anyway, so you can just say "no"
06:02:15zenspidertarcieri: it isn't that hard for algorithmic stuff
06:02:34headiusprocs would either have to be treated as a function pointer or tossed
06:02:39Defilerheadius: How can def @foo.baz be a class method? Name mangling?
06:02:40headiusand they probably couldn't be closures
06:02:52tarcieria function pointer which encloses its lexical scope?
06:02:52headiusDefiler: well, let's say "limited" desf
06:02:53headiusdefs
06:03:01headiuslike only def self.whatever
06:03:03Defilerbinding has to go into a deep hole and be covered with fire
06:03:09tarcierihahaha
06:03:11DefilerOK
06:03:15zenspidertarcieri: we've had that for 2+ years now
06:03:27tarcierizenspider: how?
06:03:41headiusthat's one confusion I have with how to do the java plugin for ruby inline too...right now it requires the generated methods be static (class) methods
06:03:49tarcierido you still have some sort of garbage collector?
06:03:59zenspiderheadius: why?
06:04:13headiuszenspider: why does it require they be static methods, or why am I confused?
06:04:26headiusthey're static methods because that's the appropriate analog for C functions
06:04:33tmornini leaves the room.
06:04:37zenspideroh. I know why you're confused... I was wondering about the static methods
06:04:53headiuswell, that was nice
06:05:08headiustarcieri: you'd use this sort of thing to implement lower-level stuff
06:05:20headiusthe GC question is a really good point though, I hadn't thought about that
06:05:30zenspidertarcieri: how what? it is not that hard to write a translator from static ruby to C... we used parse tree to grab the ast, did some normalization, type inference, and then translated down to static C
06:05:33tarcieriwell yeah, I mean I get the point
06:05:47tarcierizenspider: how do you solve the funarg problem without a garbage collector?
06:05:59headiusyou'd probably want garnet to generate something that calls into the same memory alloc routines, no?
06:06:38zenspidertarcieri: funarg?
06:06:57headiusI'm not sure how garnet would fit in with green threading either
06:06:59headiushmmm
06:07:01tarcieria method which returns a proc which encloses the scope of the method before returning the proc
06:07:03DefilerWe would need to be able to track an object from creation to scope-out in a static way
06:07:04tarcierifor example
06:07:07tarcierido you just disallow that?
06:07:11DefilerThen we could just emit 'free' when needed
06:07:14headiusDefiler: reference counting? :)
06:07:35tarcierisomething which explicitly violates downward closure semantics
06:07:37headiusyeah, I suppose that's a decision we'd have to think about early on
06:07:47DefilerIf we ban a strategic set of features, I suspect it can be done without runtime tracking of anything
06:07:53zenspidertarcieri: I solve that problem by not allowing it
06:07:59tarcieriokay, cool
06:08:00tarcieriheh
06:08:01headiusif code written in garnet needs to do memory management it would map really weird to a GCed environment
06:08:04tarcierijust wondering
06:08:05DefilerAlso, we need to think hard about how to handle contravariant types
06:08:10zenspiderworks great
06:08:17tarcieriyeah, for sure
06:08:18DefilerSpecifically, return values in subclasses are tricky
06:08:49TheVoice leaves the room.
06:09:12headiusin my case I'm planning to emit normal Java class hierarchies, so i'm banking on that model covering most of those issues
06:09:42headiusthe disconnect between garnet looking OO and generating C code seems a little sticky
06:10:22DefilerWhy?
06:10:22headiuszenspider: do you handle classes, ivars, etc?
06:10:29headiusDefiler: classes, ivars, etc :)
06:10:31wifelette leaves the room.
06:10:50Defilera class is just a C type
06:11:02headiusI think if you wanted to represent those you'd want to generate a struct for it
06:11:03headiusyeah
06:11:04Defilerivars can just be set/get pairs of functions
06:11:17Defilerfunction pointers in the struct, even. heh
06:11:18headiusnah, just make them struct fields and be done with it
06:12:21Defilertroo
06:12:23headiusthat's another question...seems like you'd want all ivars to be declared in garnet
06:12:40headiusao maybe the compiler looks for attr* to determine the struct
06:12:41DefilerThey should be in regular Ruby already
06:12:49DefilerThat or the warning should go away
06:13:14headiusyeah, the hash for ivars is one reason a lot of code has perf issues
06:13:19headiusyou can reduce it but not eliminate it
06:13:39headiuseven you guys ended up making specific ivars indexed
06:13:57headiusI think the problem is the fact that you don't have to declare them
06:14:13headiusso any piece of code, possibly in subclasses, can add ivars at any time
06:14:33DefilerYeah, that has to go
06:14:45headiusevan and I have both tried to come up with clever ways to eliminate the lookup
06:16:36tizianobis leaves the room.
06:20:00wycats leaves the room.
06:28:50tizianobis_ leaves the room.
06:31:30ezmobius leaves the room.
06:39:10rueheadius: You should try to come up with stupid ways to do it for a change
06:40:30headiusthere's an idea
06:47:03rueEw, smooth scrolling sucks
06:47:21rueheadius: Seriously, though.. we will figure out the dumbest possible way to do it and run with it
06:47:27rueIt will be an instant success!
06:47:57headiuswell, the numbering of core ivars is a step in the right direction
06:48:08headiusfor most core class state in JRuby we obviously just use Java fields
06:51:43headius leaves the room.
06:51:57headius enters the room.
06:55:15be9 enters the room.
07:02:47lachie leaves the room.
07:03:24lachie enters the room.
07:06:54wycats enters the room.
07:14:49w1rele55 enters the room.
07:28:48wifelette enters the room.
07:29:19wycats leaves the room.
07:31:38random8r enters the room.
07:36:07wycats enters the room.
07:39:28wycats leaves the room.
07:44:03headius leaves the room.
07:54:12aotearoa_ leaves the room.
07:55:00perplexes leaves the room.
08:11:20benburkert enters the room.
08:14:34thehcdreamer enters the room.
08:30:39gnufied enters the room.
08:39:28octopod enters the room.
08:41:21lachie leaves the room.
08:41:40lachie enters the room.
08:51:45octopod_ enters the room.
08:54:27dbussinkmorning!
09:00:09kamal_farizmorning
09:00:14VVSizmorning!
09:00:51kamal_farizi'm lying .. it's actually 5PM
09:07:02dbussinkhmm, that still leaves quite some countries :)
09:07:16octopod leaves the room.
09:07:47benburkert leaves the room.
09:10:47benburkert enters the room.
09:13:26dbussinkkamal_fariz: malaysia?
09:13:41kamal_farizdbussink: yep
09:13:57dbussinkhad to jump through some hoops to find that :p
09:14:21kamal_farizi'm impressed by maxmind's ip to location lookup
09:14:26kamal_farizdoes a pretty good job
09:14:56dbussinkah, well, didn't use that
09:21:04Arjen_ enters the room.
09:24:27crossblaim enters the room.
09:29:28JimMc enters the room.
09:30:05boyscout1 commit by Tom Mornini
09:30:06boyscout * Prevent bin/bm from crashing on long test names, and reduce loop counts on; 91a8226
09:31:03dbussinktom, you in here?
09:33:45kamal_farizshhh, he's committing while he's sleeping
09:36:21dbussinkwell, i was wondering whether that benchmark did work in mri, because if it does, we need to fix something in rubinius
09:36:26dbussinkand not in ./bin/bm
09:43:52benburkert leaves the room.
09:44:25rubuildius_ppcTom Mornini: 91a822655; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors;
10:00:39cavalle leaves the room.
10:01:27cavalle enters the room.
10:05:57crossblaim leaves the room.
10:19:37cavalle leaves the room.
10:23:06jinjing leaves the room.
10:24:18_mutle enters the room.
10:24:53_mutle leaves the room.
10:24:59_mutle enters the room.
10:25:28Fullmoon enters the room.
10:30:48GMFlash leaves the room.
10:41:18mutle leaves the room.
10:46:14jacen_ leaves the room.
10:47:00cavalle enters the room.
10:49:11binary42 enters the room.
10:57:00dbussinkwoot, i actually bought my first car :)
11:00:46be9dbussink: grats. which is it?
11:00:54dbussinka renault clio
11:01:29be9dbussink: cool. sport version?
11:01:40dbussinkno, expression
11:01:58dbussinkbut it was pretty cheap and only ran 40k km's, so that's the main reason i bought it
11:02:15dbussinkbe9: http://www.autotrack.nl/car-img/of01/s055/of01_0004997055.jpg
11:02:40chris2 enters the room.
11:04:30be9dbussink: so, how's the gasoline priced in netherlands?
11:04:58dbussinkbe9: ridiculously expensive :P
11:05:52dbussink1.40 euro / liter
11:06:34be9dbussink: hmm. we have something like 0.60 euro/liter here
11:07:15dbussinkfor us people, that's $8.20 / gallon with the current euro / dollar exchange rate
11:08:10dbussinkbe9: that's in russia isn't it?
11:08:16be9dbussink: yep
11:09:22be9dbussink: your clio ain't gonna eat much :)
11:10:04dbussinkthat's also one of the reasons, didn't feel like buying a 3.0 liter gas guzzler :P
11:10:30dbussinkand small cars are a lot cheaper in taxes and insurance
11:11:21be9has just paid the car tax for 2007
11:11:48crafterm leaves the room.
11:14:21be9and how is it with the parking space?
11:14:37dbussinkhere it's no problem
11:15:00dbussinkthere's always a spot free here somewhere around my appartment building
11:15:56dbussinkin amsterdam parking space is more expensive per m2 than building space :P
11:16:39be9that's good. so I wish you good luck with your clio
11:19:24dbussinkhehe, probably gonna be fine
11:19:32dbussinkhmm, our string performance is really crap :(
11:20:58be9dbussink: is it any specific benchmark you run?
11:21:26dbussinkthe standard one we have, it's in benchmark/rubinius/bm_string.rb
11:23:35obvio enters the room.
11:27:09crafterm enters the room.
11:27:12crossblaim enters the room.
11:27:33radarek enters the room.
11:29:50crafterm leaves the room.
11:31:19lachie leaves the room.
11:33:49crafterm enters the room.
11:33:53dctanner enters the room.
11:35:41crafterm leaves the room.
11:39:08_martinS_ enters the room.
11:50:01dewd enters the room.
11:58:25webmat enters the room.
11:59:00d2dchat leaves the room.
12:03:57mutle leaves the room.
12:04:12mutle enters the room.
12:04:25wdperson enters the room.
12:18:44imajes enters the room.
12:21:16rubymaverick leaves the room.
12:26:33Fullmoon leaves the room.
12:26:43chris2 leaves the room.
12:31:00crossblaim leaves the room.
12:52:30d2dchat enters the room.
12:54:12be9what's that? "zip error: Zip file structure invalid (load_spec_rba.rba)"
12:55:30ragnard enters the room.
12:55:42crossblaim enters the room.
12:56:26dbussinkthat's weird, because rba is not zipped anymore afaik
12:58:00tizianobis_ enters the room.
12:59:09be9dbussink: ok, trying with the latest HEAD
13:00:52be9huh, new stuff: /home/od/work/rubinius/lib/rbconfig.rb:9: uninitialized constant Config::Rubinius (NameError)
13:02:25be9I'm currently updating my cmakebuild branch and thought I missed something. Now I run master branch and see the same
13:04:59dbussinkthat's strange, because it works ok for me
13:10:02tizianobis_ enters the room.
13:11:43ttmrichter enters the room.
13:12:06tizianobis leaves the room.
13:15:39be9works on all platforms?
13:16:23dbussinkyeah, afaik i know it does
13:16:36dbussinktested on os x, linux, freebsd and openbsd
13:18:11ttmrichter leaves the room.
13:20:31rubymaverick enters the room.
13:21:12RyanTM enters the room.
13:27:31wmoxam enters the room.
13:28:14be9Ar::Error: "./spec/core/kernel/../../ruby/1.8/fixtures/require/require_spec_rba.rba is not an archive file"
13:28:34be9this file is indeed a zip archive
13:31:03dbussinktry rm -rf spec && git checkout spec
13:31:16dbussinkthere are some files that keep lingering in there that should be removed
13:32:21GMFlash enters the room.
13:33:13be9same shit with Config::Rubinius
13:34:00be9it shows up on gem tests
13:34:20dbussink./bin/mspec ci runs ok?
13:34:29dbussinkor does it bork before that?
13:35:29be9I run "rake spec"
13:35:51dbussinkhmm, works fine here
13:36:06dbussink./shotgun/rubinius works ok?
13:36:20be9yes
13:36:46be9most tests pass ok also, it's a screenful of dots when it blows up
13:36:55dbussinkhow weird then
13:37:03dbussinkand a clean clone?
13:37:07dbussinkdoes that work ok?
13:37:28be9dbussink: haven't tried yet
13:38:12ttmrichter enters the room.
13:38:59ttmrichter leaves the room.
13:39:11ubiquitous leaves the room.
13:39:34be9when I do require 'rbconfig' by hand (in irb), it works
13:39:41tizianobis leaves the room.
13:39:47dbussinkhmm, isn't something run by mri?
13:40:37be9oh damn! from /usr/lib64/ruby/site_ruby/auto_gem.rb:5:in `require'
13:41:02be9how come MRI pops in?
13:41:40dbussinkreally no idea
13:41:52dbussinkwhat version do you have installed?
13:41:58be9of what?
13:42:28dbussinkmri
13:42:39dbussinkand could you pastie a trace?
13:43:17be9BTW is there a script to pastie from the command line?
13:45:04dbussinki think someone made that for himself
13:53:05cavalle leaves the room.
13:54:25ragnard leaves the room.
13:54:37AndrewO enters the room.
13:55:02probablycorey enters the room.
13:55:40olabini enters the room.
13:55:42be9found one: http://pastie.caboo.se/164374
13:58:25ttmrichter enters the room.
13:59:48dbussinkhmm, pastie doesn't work here
13:59:53dbussinkservice unavailable
14:02:54be9so, the first spec to boom is spec/subtend/array_spec.rb
14:03:54headius enters the room.
14:04:12dbussinkweird stuff
14:07:11be9http://nopaste.org/p/a5ZjIUQpab
14:09:02dbussinkguess there's something wrong with your codebase then
14:09:10dbussinkor is this a clean clone?
14:10:09dbussinkdid you ever install rubinius?
14:10:53be9never
14:11:12dbussinkbut could you try with a clean clone then?
14:11:57be9this is not easy with my connection
14:13:35be9this can be connected with recent rubygems import
14:14:37headius leaves the room.
14:15:02enebo enters the room.
14:23:21dancroak enters the room.
14:24:40dancroak leaves the room.
14:27:24imajes leaves the room.
14:29:20imajes enters the room.
14:34:50be9ok, found it :)
14:35:13be9rubygems on gentoo add RUBYOPT="-rautogem" to environment on boot
14:35:31be9i.e. "-rauto_gem"
14:36:27be9this somehow got picked up by rbx, /usr/lib64/ruby/* stuff was loaded and messed up
14:39:26cavalle enters the room.
14:39:31RyanTM leaves the room.
14:40:17RyanTM enters the room.
14:42:01be9huh, seems it has been loaded for a long time, but since there was no 'rubygems', it did nothing. now with appearance of 'rubygems' it sorta "activated"
14:43:56binary42 leaves the room.
14:45:41skaar enters the room.
14:46:14Fullmoon enters the room.
14:46:48dbussinkthat's pretty nasty
14:48:13be9still can't find where RUBYOPT gets in, as it's the MRI stuff
14:52:56olabini leaves the room.
14:57:35dbussinkprobably rake itself then
14:57:42dbussinkwhich is run by mri of course
14:59:16be9it remains even without rake
14:59:33agile leaves the room.
15:01:58be9some socket stuff still hangs for long time
15:02:09dbussinkstrange, any spec specific?
15:02:21dbussinkbecause the long waits were in the ipaddr specs
15:02:34dbussinkand i fixed those and tested it pretty well on linux too
15:02:51be9will rerun in verbose mode
15:03:14headius enters the room.
15:03:14headiusI had a dream about garnet last night
15:05:23dbussinkinspirational or disturbing? :P
15:05:43be9maybe a horror one? :D
15:07:54be9damn, it doesn't hang in verbose mode
15:08:18headiusI think it was inspirational
15:08:31headiusbut halfway through I woke up to a big cat sitting on my chest
15:13:19dbussinkbe9: could be a dns / network lag that caused it
15:15:30be9dbussink: yeah, maybe. i'm on a several kmeters radio link here
15:16:31djwhittbe9: radio link?
15:16:35boyscout1 commit by oleg dashevskii
15:16:36boyscout * Clean more stuff.; fed2be2
15:18:50be9djwhitt: long-distance wifi actually, with special RF equipment
15:19:09dbussinkbe9: then that's probably the cause of the hang :p
15:20:01djwhittbe9: interesting, is that from an ISP or something you rigged up yourself?
15:24:11be9djwhitt: no, it was our local sysadmin who did that. ISP still shows no interest to connect our apartment house with fiber channel
15:28:15jinjing enters the room.
15:29:14rubuildius_ppcoleg dashevskii: fed2be2cb; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/164420
15:32:15GMFlash leaves the room.
15:37:13boyscout1 commit by oleg dashevskii
15:37:14boyscout * Remove unused variables in ffi.c; ed24090
15:37:38GMFlash enters the room.
15:38:57KirinDave enters the room.
15:49:09rubuildius_ppcoleg dashevskii: ed2409027; 1741 files, 5916 examples, 20084 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/164427
15:50:39dctanner enters the room.
15:52:59AndrewO leaves the room.
15:54:29gnufied leaves the room.
16:00:17perplexes enters the room.
16:03:41dbussinkanyone interested in some valgrind callgrind output to look at?
16:04:04dbussinkjust ran some and trying to interpret the results
16:04:41jinjing leaves the room.
16:04:52jinjing enters the room.
16:04:56srbaker enters the room.
16:06:29wellsj__ enters the room.
16:06:57wellsj__ leaves the room.
16:07:24jbwiv__ enters the room.
16:07:34srbaker leaves the room.
16:08:36dc_ leaves the room.
16:13:23jbwiv__ leaves the room.
16:13:40jbwiv__ enters the room.
16:17:20enebo leaves the room.
16:17:51srbaker enters the room.
16:35:49enebo enters the room.
16:41:02cavalle leaves the room.
16:41:14wmoxam leaves the room.
16:42:38KirinDave leaves the room.
16:44:20probablycorey leaves the room.
16:48:40wmoxam enters the room.
16:50:26tizianobis_ enters the room.
16:54:40benburkert enters the room.
16:56:27perdix enters the room.
16:59:36Fullmoon leaves the room.
17:02:14srbaker leaves the room.
17:02:54srbaker enters the room.
17:03:40probablycorey enters the room.
17:04:20tizianobis_ enters the room.
17:08:12wycats enters the room.
17:08:46tizianobis__ enters the room.
17:09:28macournoyer enters the room.
17:11:19lopex enters the room.
17:12:14tizianobis___ enters the room.
17:20:22tizianobis leaves the room.
17:20:42probablycorey leaves the room.
17:22:10probablycorey enters the room.
17:26:43tizianobis_ leaves the room.
17:28:50tizianobis__ leaves the room.
17:28:54tizianobis____ enters the room.
17:30:45tizianobis___ leaves the room.
17:32:37probablycorey leaves the room.
17:33:12probablycorey enters the room.
17:34:41wifelette leaves the room.
17:34:57dctanner_ enters the room.
17:35:16dctanner leaves the room.
17:35:20agile enters the room.
17:37:32agilista enters the room.
17:38:00benburkert leaves the room.
17:38:32agilista leaves the room.
17:38:49agile enters the room.
17:39:48dctanner_ leaves the room.
17:40:03dctanner enters the room.
17:40:56enebo leaves the room.
17:41:21AndrewO enters the room.
17:41:58obvio leaves the room.
17:42:02jwall_ leaves the room.
17:43:37headius leaves the room.
17:43:42jinjing leaves the room.
17:43:58jinjing enters the room.
17:45:39dbussinkDefiler: awake?
17:46:03DefilerIndeed
17:46:34dbussinkah, i've been playing a bit with valgrind profiling
17:46:55DefilerCool. I've pretty much permanently had that on my list of things to get proficient with
17:47:36dbussinki can send you the result if you want
17:47:55dbussinkit's a profile from the bm_stat benchmark, i was trying to look at what made ffi so slow
17:48:22dbussinkit also had some memory leaking too btw
17:48:50Defilerleak bad
17:49:47probablycorey leaves the room.
17:50:15dbussinkDefiler: http://pastie.caboo.se/164490
17:50:19GMFlash leaves the room.
17:50:47wifelette enters the room.
17:50:57dbussinki can mail you a .out file for callgrind of the same benchmark
17:51:34brixenDefiler: btw, celebration was premature, the times plugin was not returning the receiver of #times, it was pushing self (which in this case was 'main') and returning
17:51:42probablycorey enters the room.
17:52:00Defilerbrixen: Well, that sounds like a straightforward fix. Heh
17:52:06brixenDefiler: still trying to get it to work, but we may need the local var
17:52:09brixenheh, it's not :P
17:52:31brixenI still cannot determine if the top of the stack is an invariant with that inlined block
17:53:11DefilerWhy wouldn't it be?
17:53:30DefilerIt is a 'call', so it should be the receiver always, right?
17:53:41brixen'it' ?
17:54:27tizianobis____ enters the room.
17:54:45brixenthe problem is, the bytecodes for the block are inlined right there, and they affect what is on the stack
17:54:54KirinDave enters the room.
17:55:11evanallo
17:55:12brixene.g. if a git is on the stack, excuting that will pop one, but a while xxx .. end will leave one
17:55:17evani'm back in LA
17:55:19brixenevan: hello!
17:55:21brixenwb
17:55:21dbussinkevan: had a good trip?
17:55:33evanyeah, lots of fun.
17:55:52evanand it's still 1.5 hours before I took off from .au
17:55:59evanahh.. livin' in the past...
17:56:04brixenheh
17:56:10dbussinktime travel!
17:56:22Defilerevan: So you came back separately from drbrain?
17:56:28evanyeah
17:56:34evanwe didn't fly out together either
17:56:53dbussinkbrixen: i'm profiling the File.stat stuff, to see why it's so slow
17:57:05dbussinkbrixen: interested in the callgrind output?
17:57:13brixendbussink: saw that, good times
17:57:22brixendbussink: kind of wrapped up in something atm
17:57:45dbussinkproblems is i don't really know how it should look, so that makes it hard :)
17:58:03brixenyeah, only slightly familiar with valgrind
17:58:41dbussinkthis information is probably useful for someone with intricate knowledge in the vm
17:58:43