Index

Show enters and exits. Hide enters and exits.

00:18:56evanwoop
00:18:59evandynamic deoptimization
00:19:00evanin the HOUSE
00:19:16brixenrad
00:20:12evani think i want to redo MethodTable
00:20:29evanit needs some encapsalation
00:20:49evanand I really find the Visibility objects to be combersome
00:21:08brixenyeah, they are a bit gross
00:21:27evani think i'll make MethodTable it's own class, not a subclass of LookupTable
00:21:33evanand have it use a cuckoo hash internally
00:21:53evanwith the value being (Executable* method, Symbol* visibility)
00:21:56evanso you just do
00:22:06evanmethod_table.set method, :public
00:22:19brixensure
00:22:38evanthen i can hide cache invalidation behind MethodTable's methods
00:22:46evanrather than having to sprinkle it around
00:29:13evanok, gotta run some errands.
01:24:39boyscoutImplement a faster reference class guard - c9d1953 - Evan Phoenix
01:24:39boyscoutAdd dynamic deoptimization for establish safe inlining - 9865fe3 - Evan Phoenix
01:25:45evannice english there evan.
01:25:46evangeez.
01:30:33boyscoutCI: 9865fe3 success. 2709 files, 10776 examples, 33796 expectations, 0 failures, 0 errors
01:32:28brixenheh
01:37:54evanbrixen: do you have that cuckoo.h i sent you awhile back?
01:38:04evani've got a copy here, i'm wondering if it's old
01:38:35evanactually, you know
01:38:36evannm.
01:38:45evani'm not going to use a cuckoo for now.
01:39:15brixenI have it, if you need it
01:39:20evangist/paste it
01:39:26brixensec
01:40:18brixenhttp://gist.github.com/103631
01:40:29brixenI just pulled that out of .git/config :)
01:40:35brixengist is awesome
01:41:00evanok, thats the same one.
01:41:08brixenso, for compactlookuptable, I'd like to try a linear probe hash
01:41:15brixenworst case is no worse than now
01:41:21brixenbest case is O(1)
01:42:06brixenfor method table, cuckoo may work quite well
01:42:18evanok, i'll give it a shot.
01:42:19brixensince you'd never be more than h2() away
01:42:42brixeninsert would be more expensive and load factor is never > 0.5
01:42:48brixenso uses more space probably
01:43:00brixeninsert _may_ be more expensive
01:43:14evanbecause of the shifting around
01:43:14brixenbut with the better integer hash function, may perform well
01:43:18evangah.
01:43:19brixenyeah
01:43:22evanyou know
01:43:23evannevermind
01:43:31evani'm going to duplicate LookupTable, but with a different Bucket class.
01:43:45brixenthat's probably a best first try
01:44:03brixenwe should see how long the chains are getting anyway
01:45:42evanyeah
04:29:12slavahi evan
05:40:52brixencrappy code is the preferred nesting ground of the twisty logic bird
06:28:13evanbrixen: hows loader.rb going?
06:30:46brixenalmost there!
06:31:17brixenmri does some weird stuff
06:31:27brixenbig surprise, news at 11
06:31:44brixenso ruby -e 'blah' -e 'foo' script
06:31:51brixenruns both -e's but not script
06:34:01brixenI broke something with ARGF that I'm looking at now
06:34:25brixenbrb..
07:11:36scooprheh, didn't realize that python was (indirectly) a build time requirement =)
07:17:01brixenscoopr: it is?
07:21:14scoopryeah, udis86 generates some stuff with python
07:21:25brixenahh
07:21:38scooprthough, I'm not compiling on x86 so I doubt I'll need that lib =)
07:24:27brixenmri option parsing is o/~ fucking crazy o/~
07:26:44brixenhttp://gist.github.com/135724
07:31:36evanyep!
07:36:17brixenI thinks I got it
07:38:18brixenso close
07:43:09brixenman, I'm so spoiled with these consistently ~45sec full spec runs
07:43:27evanhehehe
07:43:38brixendunno what I'll do with myself when they are ~10-15sec
07:43:48brixen:)
07:44:36evanhah
07:44:44evanjoin a band
07:44:48evanin your new free time
07:45:03brixenheh, indeed
07:45:04evani'm working on the MethodTable change
07:45:11brixenah, how's it going?
07:45:14evani basically just duplicated LookupTable into MethodTable
07:45:20evanand changed the Bucket class
07:45:26evanand the key name
07:45:33brixenthat's cool
07:45:47evankey type is Symbol* only, Bucket has Executable* method, and Symbol* visibility
07:46:12brixenmakes sense
07:46:21brixenwe can evolve them as oppropriate for each
07:46:31brixeninstead of one-size-fits-all-method-tables
07:46:36evanpretty much
07:46:41brixener lookup-tables rathre
07:46:52evanthe Bucket has basically become a Visibility object
07:47:03evanso the changes to the rest of the system have been pretty easy
07:47:09brixencool
07:53:37evanwhats the other side of lookup the verb
07:53:40evanassign?
07:53:42evanbind?
07:53:43evanstore?
07:55:21brixenum..
07:55:30brixenstore
07:55:43brixenseems most symmetric to me
07:55:52evank.
08:18:56boyscoutAdded simple option parsing. - df578f7 - Brian Ford
08:18:56boyscoutMoved legend on benchmark graphs. - adde17d - Brian Ford
08:18:56boyscoutAdded optional arguments and -, -- parsing. - 7828b2b - Brian Ford
08:18:56boyscoutInitial rewrite of loader.rb with option parsing. - 1e1644b - Brian Ford
08:19:50brixenthere are certainly other ways to do it, but I think this is a big initial improvement
08:20:16brixenplenty to bikeshed there though, what with option parsing and script writing :)
08:21:34boyscoutCI: 1e1644b success. 2733 files, 10849 examples, 33889 expectations, 0 failures, 0 errors
08:22:34brixenevan: I'd like to get the Hash stuff in before I forget what I was doing
08:22:45evank
08:23:02brixenmind if I try a different algo for compactlookuptable to see if I can speed up interp ivar access?
08:24:07evanbrixen: what is Options?
08:24:12evanand where is it coming from?
08:24:22brixenkernel/delta/options
08:24:28brixenor do you mean where is the code from?
08:24:49brixenit's modified from what's in mspec
08:24:50evanboth
08:25:27evanok,
08:25:29evancool.
08:25:53evanthe big deal with using an option class in loader has been about it's simplicity and non-interference
08:26:02brixenyeah
08:26:10evanthough honestly, we're so darn good now, compat wise
08:26:11brixenare you surprised by it?
08:26:16evanthe simplicity thing matters less
08:26:26evanno, not surprised.
08:26:27brixenwe talked about doing this
08:26:28brixenok
08:26:29evanyeah
08:26:33evani knew you were doing it.
08:27:11brixenI think loader should use realistic ruby code
08:27:22evanyeah, thats fine.
08:27:23brixenalthough, the option parser is really simple
08:27:37evani've always been paranoid about using complex code in there
08:27:41evanbut in reality, it doesn't matter
08:27:47evanby the time we get to loader.rb, irb can run
08:27:53evanso it's complete :D
08:27:56brixenright
08:28:10brixenbut realistic code doesn't necessarily mean complex code
08:28:18brixenthat script was like wow
08:28:28brixenback to the future car and it actually runs
08:28:28evani doubt it's a big deal, but something to watch out for is startup time
08:28:32evanhahahahh
08:28:35evanyou know
08:28:46evanloader.rb is probably the only file that has never been rewritten until now.
08:28:54evanit's been cobbled up since day 1
08:28:55brixenprobably
08:28:58brixenyeah
08:34:23evanis't the way -e's are run weird
08:35:24brixenyeah
08:36:09brixenit's really the interaction of -e with the first non-option arg
08:37:21evanright
08:49:01boyscoutStatus updates for Roadmap page. - 3b0f5d0 - Brian Ford (gh-pages)
08:50:19brixenevan: http://rubini.us/roadmap.html
08:50:59evanlooks good.
17:39:26lypanovbreathes a big sigh of relief
17:39:29lypanovevan: yo
17:40:25brixenlypanov: what up yo?
17:40:32lypanovwazaa
17:40:32brixenwhat're ya sighing about?
17:40:43lypanovmarriage and major release. both finished
17:40:49lypanovcan relax now
17:40:49brixensweeet!
17:40:51brixenheh
17:41:16brixensettling down into the good 'ol life eh?
17:41:28lypanovyeah. but the wife stole the bottle of wine
17:41:42brixenoh boy, the battling begins
17:41:49brixenjust when you thought you could relax
17:42:26brixenlypanov: does that mean you have some free time to help rbx?
17:46:41lypanovbrixen: to give guidance at the very least. preferably some code but not 100% certain
17:48:07brixenlypanov: cool
17:57:07evanmarning!
17:57:11evanor.. morning!
17:57:46brixenmorning!
17:58:32evanshould finish the MethodTable change shortly
17:58:34brixenps ux'd on elle and discovered 3 spec runs jit.enabled apparently still running
17:58:38evanit's running enough to run irb
17:58:42evangoing to run the specs now.
17:58:42brixensweet
18:00:04lypanovwaza mr evan
18:00:17evanlypanov: congrats on the big day!
18:00:21evanlypanov: go smoothly?
18:01:58lypanovevan: very. in awe of the girl
18:02:10evanyay
18:02:14lypanovevan: but, as she stole my wine. lets talk shop
18:02:15lypanov:P
18:02:19evanhah
18:02:30evani'm in the midst of adding inlining via type feedback
18:02:53lypanovooo
18:02:59lypanovk. my work is done
18:03:04evanhah
18:03:08lypanovgoes off to do his own ruby interpreter
18:03:15evanno no stay!
18:03:33lypanovfalls over while attempting to walk both backwards and forwards at the same time
18:03:49evanhelps lypanov put and puts the rubinius source in front of him
18:03:58evanatm, it's only inlining accessors
18:04:13lypanovk. pray tell good man, what methods hast thee used to undertake the implementation of such a grossly underused mechanism?
18:05:03evanI rewrote our InlineCaches
18:05:18evanto allow them to track seen receiver classes
18:05:35evanonce the JIT kicks in for a method
18:05:51evanit can consult those ICs to figure out if it should inline
18:06:20evanfor accessors, it emits a guard and then custom code to run the accessor
18:06:50evanfor inlining a normal method, i'm going to run the same JIT Compiler I have, but in "inline" mode
18:07:06evanso it emits code thats normally by itself in an LLVM Function
18:07:13evanbut now, in the middle of an existing LLVM Function
18:07:20evanthen let LLVM go to down optimizing it.
18:07:59lypanovwhats the speed improvement like
18:08:03lypanov?*
18:08:16evanfor accessors, about 12% improvement
18:08:46lypanovwhat exactly does the accessor do anyway?
18:08:58evanjust return an ivar of a method
18:09:04evanclass B; attr_reader: foo; end
18:09:12evanb = Blah.new; b.foo
18:09:18lypanovah, thought you meant accessor as in @blah
18:09:22evanyeah.
18:09:24lypanovmakes more sense hehe
18:09:35evan:D
18:10:22lypanovhow is ivar lookup done?
18:10:29evanthere are 2 ways
18:10:33evandepending on the class
18:10:42evaneither via fixed offset inside the object
18:10:51evanor via an ivar table
18:10:55evanfor fixed offset ones
18:10:56evanit's great
18:11:02evanLLVM lowers it to
18:11:10evanmov %eax, 10(%ecx)
18:11:15evangiven the object is in %ecx
18:11:38evanthe guard is 5 instructions, then this one to get the proper slot
18:11:57evanso i actually want to figure out how to properly translate normal ivars into slot based ones
18:11:59lypanovyou making use of the cute bignum support in llvm yet?
18:12:24evanno
18:12:31evanbut we make use of the fact that it supports a 31bit int
18:12:41evansince thats how many bits our Fixnum has
18:12:56evanwe use that with the overflow addition instrinsics
18:13:02brixencute bignums? I've always thought of them as big and hairy and smelling of beer
18:13:13evanheh
18:13:33sbryant_workdoesn't sound very cute.
18:14:18evannope!
18:15:23sbryant_workAfternoon.
18:16:07evansbryant_work: where you at?
18:16:11lypanovevan: aye. i meant the overflow support :)
18:16:26lypanovso whats the killer with perf in rubinius lately?
18:16:43evanlypanov: the ammount of ruby code we have
18:16:44evan:D
18:16:48lypanov:P
18:17:10evanI profile it often
18:17:12lypanovany luck on the techniques i talked about for doing profiling?
18:17:13evanthere is no silver bullet anymore
18:17:25evanwhich techniques did you mention? i don't recall
18:17:53brixenI would say the amount of ruby code we *run*
18:18:10evanthere ya go
18:18:11brixenone perf area is making that less if possible
18:18:28brixenlike in core lib, which we haven't looked at tons
18:18:36brixenand in the jit
18:18:45brixenwhich just makes everything faster
18:19:52evanbrixen: so, i'm going to simplify the MT interface
18:19:58evana bit
18:20:02evanno [] or []=
18:20:15evan#lookup returns a MethodTableBucket or nil
18:20:16sbryant_workevan: Atlanta.
18:20:26evan#store takes a name, Executable, and visibility
18:20:36evansbryant_work: hotlanta in the house!
18:21:10sbryant_workevan: it's hot alright.
18:21:15sbryant_workToo damn hot and humid.
18:21:21sbryant_workI'm from the north so this is a bit much.
18:21:31evani'll bet
18:21:33sbryant_workBeen here for a number of years now and still not used to it.
18:21:35evangrowing up in Montana
18:21:40evani can't really handle humid well.
18:21:56sbryant_workI'm from Detroit and it gets cold or perfect weather.
18:22:28evanhow did you end up in Atlanta?
18:23:03sbryant_workFamily moved here.
18:23:27sbryant_workKind of blindsided me actually. I was a kid on vacation and came back to a new state o.O
18:23:37evan:/
18:24:03sbryant_workI'd like to move but I can't figure out a decent place.
18:24:09lypanovholland
18:24:13brixenheh
18:24:18evanLA is pretty nice.
18:24:26lypanovyeah, if you don't count holland
18:24:28sbryant_workHow's the job market and can I speak English?
18:24:30brixenpdx is pretty nice, if you like rain
18:24:34evanit's probably like Atlanta with a thermostat that isn't busted
18:24:52lypanovsbryant_work: if you're good, you'll get away with anything anyway.
18:24:58lypanovanywhere :)
18:25:01sbryant_workI love California. I head there to visit friends and stuff
18:25:26sbryant_worklypanov: yeah, well people generally are wary because I opted out of a college education for computer science.
18:25:55brixenevan: so, why no [], []=? seems like you could give it just lookup/store semantics and it would be slightly cleaner at use points
18:25:55lypanovah. that'll be a problem here in big companies
18:25:58sbryant_workI was going to film school and then I landed a job at a start up.
18:26:09lypanovbut shouldn't be in small as long as you can prove yourself
18:26:12brixenevan: or are you wanting to disambiguate on the selector?
18:26:23evanbrixen: well, i could do [] to return a MTB
18:26:40evanbut []= has issues, because you never pass the visibility
18:26:46evani could default it to :public
18:26:47lypanovwhats the situation with rubinius + wacky gcc versions now?
18:26:52sbryant_worklypanov: the thing is that I don't think I'm that good. Other people say differently but I'm not a really great programmer (yet).
18:26:54brixenevan: ah I see
18:26:57brixeneither way
18:26:58evanbut i'd prefer the user actually have to always specify it
18:27:02brixenyeah
18:27:08evanMT is used actually very few places
18:27:11evanso it's not a big deal
18:27:12lypanovsbryant_work: no time like the present :P
18:27:15brixenI prefer explicit and consistent
18:27:53lypanovalways thought he rocked, so. yeah... can't comment
18:27:57sbryant_worklypanov: hah. This contract is ending in a few days. So I could go for anything
18:28:06brixenlypanov: gcc 4.2.1 appears to do mean things to our stack manipulation code in one of the opcodes
18:28:18sbryant_worklypanov: I used to think that, then I met really good programmers.
18:28:30brixenlypanov: so, you end up with a message sent to the wrong item cus the stack order is wonky
18:28:39brixenat least that's the assumption
18:29:12evansbryant_work: well, you get better by doing
18:29:25evansoftware development isn't a spectator sport
18:29:27evanas they say.
18:29:54evanI have a nasty habit of taking on things just over my head
18:29:58evanand pulling myself up
18:30:02lypanovditto
18:30:05lypanovdo that. its fun
18:30:10evanit is fun
18:30:13lypanovrewrite photoshop in ruby or something
18:30:19sbryant_workevan: I develop quite often :)
18:30:21lypanovwith the aim of finishing by saturday
18:30:33sbryant_workI'm just not as good as I want to be.
18:31:33lypanovonly knows a few people he knows are better than him and they all say that he's amazing, so, doesn't know what to think really
18:31:35sbryant_workI usually try not to talk about things I don't about
18:32:01sbryant_workknow about
18:32:17evansbryant_work: you doing development day to day now?
18:32:20evanfor work
18:32:23sbryant_workevan: have been for years
18:32:33lypanovboring or interesting?
18:32:39sbryant_workI've been programming since I was 10 or 12
18:32:43sbryant_workboring :(
18:32:49sbryant_workAnd personal projects are interesting
18:33:24sbryant_workI'm trying to do some Chromium development, that's pretty interesting.
18:33:41lypanovused to hack on webkit, which also is fun :)
18:33:50evansbryant_work: which part of chromium?
18:33:55sbryant_workThe OS X version.
18:34:00lypanovgood boy
18:34:04sbryant_workThat's the best I can give for "part"
18:34:24sbryant_workI had patches for the project before my mbp was stolen!
18:34:31evan:(
18:34:34lypanov:(
18:35:14lypanovso. which gcc should i use? and how should i build rubinius?
18:35:21lypanovwould like to actually have a play
18:35:49lypanovshould for once just stick to a normal osx install one of these days
18:36:01sbryant_workwhat do you do to your os x install?
18:36:13lypanovgentoo
18:36:19evanyou're so crazy.
18:36:19sbryant_workI disable all the keyboard shortcuts because it gets in the way of my emacsing
18:36:23sbryant_workgentoo is crazy
18:36:33lypanovi heart gentoo
18:36:35sbryant_workI had a friend who used to build gentoo over and over for some reason.
18:36:52sbryant_workhe was always in a different stage of installing that thing
18:36:56lypanovhehe
18:37:01evanno no
18:37:04evanthats what you do with gentoo
18:37:08evanyou're compiling CONSTANTLY
18:37:10sbryant_workevan: i know!
18:37:20sbryant_workBut I'm no better, I used to hack on FreeBSD.
18:37:31lypanovreally? odd. i compile less with gentoo than i do when fucking around with macports or fink
18:37:35sbryant_workI wrote custom drivers and stuff for a company I used to work for
18:37:51evanlypanov: well, thats true
18:37:54lypanovand gentoo actually works when i install something
18:38:01lypanoveven with a tiny user base
18:38:07sbryant_workif I linux I usually debian or ubuntu it up.
18:38:08lypanovits still more reliable than that tcl shit
18:38:16evanyeah
18:38:21evanmacports is a pain in the ass.
18:38:31evani generally try to use it.
18:38:35evantry to NOT use it.
18:38:36evanrather.
18:38:42lypanovwish that was an option.
18:38:43sbryant_workI try to.
18:38:59lypanovi use ubuntu when i have the option
18:39:25sbryant_workFreeBSD spoiled me. When I installed something I didn't have to worry about installing "dev" packages.
18:51:19brixenevan: there are 4 hung rbx processes running specs jit enabled under my elle account if you'd like to debug this
18:51:22brixenhttp://gist.github.com/136016
18:51:37brixenI'm guessing they are the same issue but I only attached to that one
18:56:51evanok.
18:57:03brixenargh, fucked up -S processing
18:57:08brixenle'see
18:58:36rueevan: I see a lot of non-morphic caching, strategised any for those? I have not seen today's commits if you have just added something
19:01:22evanwhat do ya mean, non-morphic caching
19:02:40rueCache hits on the same class without exception
19:03:05evanyou mean where the cache only ever seens one class?
19:04:18evans/seens/sees/
19:06:05evanthose are prime inlining canidates
19:11:43evanrue?
19:23:00rueYes, those
19:24:34evaninline them is the current strategy
19:24:41evanis there something else you were considering?
19:30:38evanwonders if there is a space delay on packets to finland today
19:32:36rueDoing stuff.
19:33:03rueHard inline or leaving a guard still?
19:33:11evanyou have to guard
19:33:19rueA hard inline mode might be useful as an option
19:33:30evanthere is no guarantee that because it worked before it will continue to work
19:33:50evani suppose it depends on the code being inlined
19:33:58evanthere is some code thats unsafe for unguarded inlining
19:34:05slavahi evan
19:34:07evani suspect there is probably some that is safe though
19:34:11evanslava: hello.
19:35:17rueOK
19:36:37slavaevan: how's things?
19:38:29evanoh good
19:38:30evanyou?
19:38:49slavahacking at a coffee shop
19:39:09slavawith my mac laptop
19:39:11slavaI'm such a fag
19:39:30evanheh
19:40:50brixenslava: you are a junior pupil at a private preparatory school that works and runs errands for a senior pupil?
19:41:04lypanovslava: frappuccino?
19:41:15brixenconsulted the dashboard dictionary widget
19:41:20slavalypanov: peach iced tea
19:41:22slavabrixen: something like that
19:41:39sbryant_workslava: you're not hacking at a coffee shop. You're writing a screen play. Now come clean with it!
19:41:47lypanovslava: oh, i have no idea then.
19:42:36slavasbryant_work: actually, I'm writing a critical analysis of kant's work, surrounded by 6 smoking-hot chicks who dig my emo style
19:43:00brixenhah
19:43:12brixenit's written in Factor though
19:43:32sbryant_workslava: as one man to another. Pics or it didn't happen.
19:47:56slavasbryant_work: my friend sitting next to me has one of the newer unibody mac book pros. he's getting all the girls
19:48:12slavabastard also got a 3gs iphone the other day just to totally upstage me
19:49:05brixen2 things every hot geek must have: unibody mbp and iphone 3gs
19:49:22lypanovisn't hot, so, its okay
19:49:24brixenthe moustache or scruffy beard is optional
19:50:27slavawhat about picking bits of skin off your foot at eating them, RMS-style?
19:51:05slavaevan: how's the type feedback going?
19:51:11evangoing good
19:51:18evanaccessors are inlinig
19:51:24evani've got dynamic deopt working
19:51:24slavawith guards?
19:51:26evanyeah
19:51:29slavanice
19:52:17evanone nice thing about the guards here is that i know, from the class, if the object will be a reference or an immediate
19:52:28evanwhich simplifies the guard
19:52:55evanfor checking a reference's class, it's currently at 5 instructions
19:53:14slavayou could probably bum that down a bit; its just reading the header isn't it?
19:53:17evanwith 2 jumps to the non-inlined version
19:53:21slavaor are you doing a full subtype check
19:53:31evanwell, it's a couple things
19:53:36evanwe have to check that the object is a reference first
19:53:39evanthats 2 instructions
19:53:43slavaoh, you mean in the general case
19:54:02evanwell, even if you're checking a reference class
19:54:09evanyou still have to make sure the object is a reference
19:54:28slavaah
19:54:30slavaI get it
19:54:55evanthen 1 to get the class, and 1 to compare the class's id against the expected id
19:55:00evanand a jump
19:55:12slavasounds good
19:56:08evanchecking for Fixnum's is only 2
19:56:13evanwhich is nice.
19:56:36slavaif you have a guard nested inside of a code block that is itself protected by a guard, do you optimize out the inner guard if the condition it checks is a subset of the outer condition?
19:57:01evanno, but i should
19:57:08evani'll be sure to add that
19:57:18evanthat shouldn't be hard
19:57:29evani'll just pass down in the compiler an assumptions object
19:57:33slavayeah
19:57:50evanand the guards can consult the assumptions to make themselves more effecient
19:58:25slavahave you read about class hierarchy analysis?
19:58:46slavaonce you have some type feedback going you can do some static analysis too, and it becomes a lot more effective
19:59:01evanyeah, i have some
20:03:35slavayour jit is starting to sound pretty awesome
20:03:44evanyeah!
20:03:51slavawhat about code sequences for built-in stuff, like blocks, control flow, etc, are they pretty good?
20:04:03evancontrol flow is solid
20:04:09evanand exceptions rock
20:04:23evanthey're flattened entirely into C style control flow
20:04:33evanbecause the compiler can seen the nesting at compile time
20:04:40slavaso you're probably getting good results for fib now huh? :)
20:04:54evanyou know
20:04:58evani don't really benchmark fib :D
20:05:02evani should check though.
20:05:31brixenheh, we should add fib to the nightly bench runs
20:05:44brixenI think I'll do that
20:05:50brixenit's so real-world
20:06:27evanhah
20:06:54slavabrixen: 90% of scheme implementations are only used to run fib
20:07:04evanhahah
20:07:09brixenthen we'll be faster than MRI on something, show 'em where the real potential is
20:09:10slavaevan: I finished up with my new register allocator, now I'm working on a pass which converts stack operations to register operations in the whole procedure
20:09:14slavaformerly I'd do this on a per-basic block basis
20:09:28evanah! cool
20:12:23slavaI went test-crazy with the register allocator, more than half the code is unit tests :)
20:12:31evanthats good!
20:12:37evanespecially for a register allocator
20:12:45evanthere are so many edge cases
20:13:17slavayeah, register allocation in basic blocks is easy but when you do it for the whole procedure you have to take control flow into account
20:13:46slavaeg, if you spill a value in block A and reload it in block B, you better make sure that every path from the entry to B goes through A otherwise its wrong :-)
20:13:46evanyeah
20:13:54evanbigtime
20:14:13evandid you end up decorating each block with the register usage?
20:14:53slavathe algorithm I use allocates registers in a linear fashion, ignoring control flow, then does a pass at the end to fix things up
20:14:58evansaying "this block loads value 1 into register 2"
20:15:14evanah ok.
20:15:15slavafor every value, it compares its register at the end of one block with the start of the successor block
20:15:19slavaif they differ, it inserts a move
20:15:28evanah! sure
20:15:28slavain practice you only insert a handful of moves
20:15:32evanthats pretty straightforward
20:16:09slavathe other tricky thing is that if you have a series of blocks, A B C, A defines a value, C uses it, but B doesn't use it, you still have to take it into account when allocating registers in B
20:16:16slavasince its live there even though its not used
20:16:35slavacomputing liveness was a bit tricky, I had to bug jrose about it a few times
20:16:35evanyeah
20:16:55slavamy algorithm still isn't optimal, I use hash sets of values but you're meant to use a bit vector where bit N is set if value N is live
20:17:02evanyou have to mark that value as being a shadow in B
20:17:03slavathen you can do union/intersection with and/or on the bits
20:17:39slavathat's a nice optimization for sets where all keys are small integers
20:19:17evannice
20:24:39dbussinksbryant_work: i vote for holland too :)
20:25:00evanthen you can eat stroopwaffles everday at lunch!
20:25:05evaneverday
20:25:07evanGR.
20:25:09evaneveryday
20:25:16lypanovveryday!
20:25:31dbussinkmuhaha
20:25:50dbussinkevan: you can buy them in the restaurant where i work
20:25:53dbussink:)
20:25:56evanhahah
20:26:08dbussinklypanov: where are you located?
20:26:13evandbussink: to you eat herring from street vendors?
20:26:29dbussinkevan: personally i hate raw herring, not really a fish person in general either
20:26:46dbussinkevan: but we have people that do, a fish street vendor is not very uncommon
20:26:53evanyeah
20:27:01evani recall seeing them in amsterdam
20:27:02dbussinkalthough they usually have their van there all the time, so it's not that they are moving around
20:27:08evanand being mildly grossed out.
20:27:15dbussinkevan: hehe, i can imagine
20:27:33evanit's no different than getting a hotdog on the street though
20:27:36dbussinkthe first catch of the year usually goes for something like 20k euro's
20:27:38evanthe herring is better for you too
20:28:13dbussinkwhich usually makes the national news too, so it's pretty much an estabilished tradition
20:28:21evanyeah
20:28:55dbussinkevan: ok, it was 66000 euro's this year...
20:29:07evanzoinks.
20:29:08dbussinklong live wikipedia
20:29:27sbryant_workdbussink: but I'm a vegan!
20:29:57dbussinksbryant_work: well, we have less of a burger culture compared to the us ;)
20:30:20dbussinknot a steakhouse on every corner with insanely large portions
20:30:27dbussinkso that's better i guess
20:30:36lypanovand the water doesn't suck
20:30:39sbryant_workThe insane proportions is better but I doubt it's less animal focused.
20:30:49slavaanimals are tasty
20:30:52sbryant_worklypanov: oh man I hate the chlorine heavy water.
20:31:00lypanovmove to holland then
20:31:04sbryant_workand the florine too.
20:31:05lypanovhere we actually have water
20:31:06dbussinksbryant_work: dutch water is better than bottled
20:31:11sbryant_workMetal tastes nasty.
20:31:11lypanovaye
20:31:26sbryant_workI've had filters installed where I live
20:31:30lypanovdbussink: as a friend staying with us atm said "wow, its like it came from the mountains!"
20:31:44dbussinkthere are places where on one side of there street there's a water bottling company pumping up water, on the other side of the road there's the communal water supply :)
20:31:55lypanovhehe
20:32:11dbussinkthey measured quality too and usually tap water wins
20:32:24dbussinki hated the chlorine taste in the us too
20:32:32sbryant_workdbussink: can I get by with just english?
20:32:37dbussinksbryant_work: yeah
20:32:43lypanovsbryant_work: the portions of meat here are sane. and they have plenty of veggie restaurants
20:32:49sbryant_workI take it Japanese (my horribly broken Japanese at that) isn't very useful over there.
20:32:55dbussinksbryant_work: english speaking people actuallu complain that they can't learn dutch here
20:33:01sbryant_workhaha
20:33:08dbussinksbryant_work: because the instant someone notices you're english speaking they switch
20:33:18lypanovthey should just make conversation with the turkish. they are fine
20:33:20sbryant_workMuch better than Russia.
20:33:22lypanovjust the dutch are annoying
20:33:30dbussinki read / write more english than dutch
20:33:35dbussinklypanov: hey :P
20:33:35lypanovditto
20:33:37boyscoutRework MethodTable to be independent - 01a15c7 - Evan Phoenix
20:33:40sbryant_workWhere they spell out prices in Russian and give numbers for english people.
20:33:50evanok, MethodTable work is all done.
20:33:53sbryant_workAnd the prices are always jacked up too.
20:33:54evanVisibility is gone
20:33:54evanyay!
20:33:55lypanovdbussink: its true. its almost impossible to get someone to just talk dutch with you when you arrive. they always "want to help"
20:34:06dbussinklypanov: you mean as a tourist?
20:34:12dbussinkwell, don't stay in amsterdam then :0
20:34:13dbussink:)
20:34:17boyscoutCI: Build 01a15c7 failed. http://ci.rubini.us/rubinius/builds/01a15c7a00d156b7afac8dfb50bc695565d3278d
20:34:17lypanovno, as a newcomer to the country that wants to learn the language
20:34:25dbussinklypanov: ah yeah, that's hard indeed
20:34:33lypanovsbryant_work: as someone that eats vegan (but with honey) 2 days a week for religious reasons, its still very hard to eat vegan here.
20:34:37dbussinkyou have to continuesly ask people to speak dutch to you
20:34:51lypanovsbryant_work: i cook myself instead. cheaper anyway.
20:34:57sbryant_worklypanov: I do too.
20:35:13dbussinkhere there's much more a culture of home cooking compared to the us
20:35:17dbussinkthat's my experience at least
20:35:20lypanovagreed
20:35:25lypanovsame with me
20:35:31sbryant_workI found some pasta and breads over here that have only 3 ingredients. That excited me.
20:35:50dbussinkyou can buy actual real bread at a bakery
20:35:57sbryant_workThank god.
20:36:04sbryant_workI always have to ask for real bread here.
20:36:07dbussinkyou don't realize the quality untill you go abroad
20:36:14dbussinksbryant_work: even the supermarket bread is real
20:36:16sbryant_workI don't want anything but water, flour and a rising agent.
20:36:22sbryant_workIs it that hard?
20:36:25dbussinksbryant_work: if you don't buy the cheapest of the cheapest
20:36:32dbussinksbryant_work: probably not in a bakery
20:36:42sbryant_workdbussink: my food bills are not cheap here.
20:36:53sbryant_workmainly because I go for quality.
20:37:10sbryant_workOh and some friends grow things and I steal from them.
20:37:14evanfail!
20:37:25evanerg.
20:37:53dbussinksbryant_work: supermarkets also have a collection of ecological stuff
20:38:09dbussinksbryant_work: but you can also get fresh vegetables at the local market pretty cheap
20:38:55sbryant_workThe thing that upsets me where I live is the time things are open.
20:39:04sbryant_workPlaces start closing around 9pm.
20:39:12dbussinkthat's the same around here
20:39:16sbryant_work:(
20:39:26dbussinksupermarkets where i live are usually closed at 8pm
20:39:32evansbryant_work: move to vegas!
20:39:34dbussinkin cities like amsterdam it's longer
20:39:36evanstuff never closes there.
20:39:50sbryant_workevan: vegas is a nice place to sometimes maybe visit if you have money to burn.
20:39:52dbussinkalso almost everything is usually closed on sundays here
20:40:15dbussinkreligious tradition left over
20:40:24dbussinkalthough that's not the case in the bigger cities again
20:40:28sbryant_workFigured as much.
20:40:35sbryant_workCan you buy booze on sunday?
20:40:39slavawhy would you go to a supermarket after 9pm?
20:40:48sbryant_workslava: awkward schedule
20:40:55dbussinksbryant_work: at bars you always can
20:41:06dbussinkand if a supermarkt is open, you can buy it there of course
20:41:13dbussinkif you're over 16 that is ;)
20:41:41sbryant_workLast time I checked I was over 16.
20:41:47sbryant_workyep still 23.
20:43:06dbussinkbut if you move to for example downtown amsterdam it's way different than some other smaller city :)
20:44:49sbryant_workMy friends tell me amsterdam is a place should avoid.
20:45:06sbryant_workI should avoid.
20:46:01boyscoutCI: 01a15c7 success. 2733 files, 10849 examples, 33889 expectations, 0 failures, 0 errors
20:46:40dbussinksbryant_work: you should visit it just to have been there
20:47:06dbussinksbryant_work: although i've worked there 3 years ago during the summer and it's nice if you know where to avoid the tourists :0
20:47:07dbussink:)
20:48:31dbussinkdbussink: i actually live on the other side of the country and i like it
20:48:51dbussinkbut i grew up between farmlands, so that might have an influence too
20:54:50sbryant_workI'm planning a visit out there.
20:54:55sbryant_workI guess if I like it I won't come back?
20:57:33dbussinksbryant_work: hehe, well, you need stuff like a work visa etc. but that isn't that hard
20:57:52dbussinkespecially if you find a company that i willing to pay a reasonable amount of money
20:57:54sbryant_workBut I'm Amurikan!
20:58:17sbryant_workI was wondering about residency requirements and things like that.
20:59:17lypanovrequirement == good position, as dbussink says :)
20:59:23dbussinksbryant_work: i was able to get a colombian intern to work here, for americans it's actually easier
21:00:57sbryant_workDoes it help that I might come over there with money?
21:01:25dbussinksbryant_work: can help yeah, just found that we apparently have a eu blue card thingy these days
21:01:34dbussinkfor high-skilled foreign workers
21:02:00sbryant_workOh neat-o.
21:02:36dbussinkhmm, still a proposal i see
21:02:51dbussinkbut if you can get a good job, it's not an issue in general
21:03:38dbussinksbryant_work: you have a masters degree?
21:03:45sbryant_workNo.
21:03:53sbryant_workI'm a self taught programmer.
21:04:40dbussinkah, because that's a qualification for high skilled worker
21:04:45sbryant_workI've been thinking about going back to school
21:06:18sbryant_workdbussink: that's strange for the tech industry.
21:06:37dbussinksbryant_work: well, it's a general rule, so it's where they put the mark
21:06:45dbussinkbut if you make enough money you can get around it
21:06:57sbryant_workwhat's that mark?
21:07:10sbryant_workIs six figures enough?
21:07:23dbussinkthat's way to much even :)
21:07:35dbussinkyou don't get that here quickly as a developer either
21:08:04sbryant_workI just like to know things :)
21:08:14dbussinksbryant_work: around 36k for under 30, 50k for older
21:08:33dbussinksbryant_work: and those are not really insane salaries, you get there pretty quick
21:08:57slava36k? are you serious?
21:08:59sbryant_workOh yeah, my first tech job payed me over that :)
21:09:01slavais this php programming?
21:09:04dbussinkslava: yeah
21:09:14dbussinkwell, salaries are not really comparable to the us
21:09:36dbussinkwith a master thesis starting salaries are around 2500 / month here
21:09:36slavano shit :)
21:10:14ddubyeah, I really wanted to work overseas a few years back
21:10:25ddubbut I simply couldn't comprehend the drop in salary
21:10:26dbussinkif you're a decent ruby developer you probably end up with something between 40 - 60
21:10:34ddubof course, the dollar has dropped since then, so it might work out :)
21:10:41dbussinki don't know what the average living expenses are over there
21:10:48dbussinkwith health insurance and all that stuff
21:10:59sbryant_workdbussink: that's what I'm trying to figure out.
21:11:10dbussinkbut i probably could have made a lot more money if i'd moved to the us :P
21:11:13sbryant_work40 - 60 is low over here.
21:11:18slavacost of living is higher; the prices in coffee shops are not competitive with what you pay in US or Canada at all :)
21:11:33dbussinkwe don't live in those shops either ;)
21:11:38slavaof course its legal, so...
21:11:43sbryant_workYeah! You probably don't spend $5 on a cup of coffee.
21:11:46dbussinkbut i pay around 100 euro's a month for health insurance
21:11:51dbussinkfor example
21:12:08sbryant_workdbussink: private?
21:12:20dbussinksbryant_work: we only have private here, one system for all
21:12:23slavanever mind, I was just trying to make a joke
21:12:34dbussinka obligated base insurance and optional additional stuff
21:12:49dbussinkslava: hehe, wel just use the free coffee machines at work ;)
21:12:57dbussinkalthough i don't drink coffee myself :p
21:13:16dbussinkbut if hard cash is the goal, don't move the eu :)
21:13:27sbryant_workdbussink: well, I payed something like $180 here for really bad insurance.
21:13:33sbryant_workSo that's got to be at least better than that.
21:13:34dbussinki've heard stories about for example spain which is a lot worse than here
21:13:54dbussinkyou can just get a living with development tuff
21:13:59sbryant_workI'm looking for a place to work where there are smart people.
21:14:07sbryant_workif I can't learn from my environment I get bored.
21:14:09dbussinksome people i talked to who worked in barcelona all had customers outside spain
21:14:15dbussinkbecause they paid decent money
21:14:15slavawhat do you pay for broadband and how good is it?
21:14:33dbussinki pay 30 or something i think a month
21:14:40dbussink8 mbit
21:14:44sbryant_workInsane.
21:14:56dbussinksbryant_work: as on?
21:14:58dbussinkas in?
21:15:02dbussinkcheap or expensive?
21:15:06sbryant_workcheap.
21:15:16dbussinkif you're lucky and live in the right places you can get a lot better
21:15:19sbryant_workI pay something like 150 for cable and internet.
21:15:26dbussinki pay 16 for cable
21:15:33sbryant_workyeah that's insanely cheap.
21:15:37dbussinkwhich gives me way more than enough crap on the tv :p
21:15:43sbryant_workI don't even watch it.
21:15:58sbryant_workI have this huge television for when people come over and want to chill out.
21:16:05sbryant_workAnd that's the only reason I have it.
21:16:34sbryant_workBut 46 for internet and cable is fantastic.
21:16:53sbryant_workAnd it's kind of faster? Comcast has this stupid bandwidth throttling feature.
21:16:56dbussinkyou can get cheaper if you don't care about stuff like guaranteed static ip etc.
21:17:03dbussinki always have full speed
21:17:13dbussinkaround 800 KB/s downloading of stuff
21:17:15sbryant_workFirst connection gets 12+Mb for the first 10MB.
21:17:27sbryant_workThen it's throttled down to 6.
21:17:28slavacomcast sucks
21:17:33dbussinkthis works how it should :P
21:17:40dbussinktwo downloads is 400 each
21:17:40sbryant_workslava: no shit.
21:18:02sbryant_workslava: I live in the city and I have no access to U-Verse or Docsis 3.0 or any fiber
21:18:14sbryant_workAnd I live right next to level3 a tier 1 ISP.
21:18:33sbryant_workdbussink: bandwidth caps?
21:18:43dbussinksbryant_work: no
21:18:47sbryant_workHooray.
21:19:14sbryant_workI've never hit bandwidth caps but just knowing they're there is infuriating.
21:19:40dbussinkit's officially all FUP, but i've never heard of anyone who was contacted about it
21:21:54sbryant_workFUP?
21:22:36dbussinksbryant_work: fair use policy
21:23:02dbussinkbasically so they have something to complain about to you if you download full bandwidth 24/7
21:31:55ddubhey they sold me unlimited internet!
21:32:28ddubI was upset but willing to deal with the limitations imposed by physics, but I'll be damned if I'm going to sit still and let them impose limitations based on scarcity of bandwidth!
21:33:51sbryant_workthat damn pesky speed of light limitation.
21:34:12ddubI know
22:11:05evaneven if we had instantanious, unlimited data transfer technology
22:11:18evanthe telecos would try and figure out a way to say "but we're doing A LOT to give you this!!"
22:11:41ddubI had a rather odd discussion a while back with a friend
22:11:59ddubhe basically said something like "wouldn't it be rad if we had teleporters like star trek"
22:12:00sbryant_workevan: no kidding. I hate their victim strategy.
22:12:42dduband I turned it into this discussion on the ramifications of the teleporter on society, commerce, and politics
22:12:48evanyes
22:12:56evanthe philosophy of teleporting is complex.
22:12:57ddubI don't know if that is more or less geeky than saying 'yes, totally rad!'
22:13:11evanis the ego on the receiver side the same as the ego on the sending side?
22:13:21evanyes, it acts the same
22:13:43evanbut did the person on the sending side cease to be?
22:18:11brixenevan: the MethodTable cleaned up a lot of the ruby code nicely
22:18:21evanyeah
22:18:41evanyou see i've provided 3 iterators too
22:18:59brixenjust looking through the commit now
22:18:59ddubevan: there was an outer limits where the teleporter was basically an instantaneously created clone in another locatoin
22:19:05evanso do avoid having to create temp Arrays in order to manipulate the contents of a MT
22:19:09evans/do/to/
22:19:14brixencool
22:19:16dduband the teleporter engineer was basically responsible for killing the person on the originating side
22:19:28evanright
22:19:33evanthat seems crappy.
22:19:59evanI can understant that the ego of a person is really just a very complex state
22:20:02brixenArray#at and Array#[] account for ~1.2sec of 8sec to run rails -h
22:20:08ddubthe particular story was around a communications failure right after teleportation
22:20:15evanbut it makes me uneasy
22:20:20ddubso they weren't able to prove that the person arrived safely for one week
22:20:46evanbrixen: really? wow.
22:20:53evani wonder what forms.
22:20:57evanit must be using a Range or something
22:21:13evanthe trivial fixnum forms are handled by a prim
22:23:37brixenevan: ok, I see the iterators, #each, #each_entry, #filter_entries
22:23:50evanyep
22:24:31evanbrixen: did you redirect the output of the benchs to a file?
22:24:34evanif so, where
22:24:36evani'm debugging one now.
22:25:03brixenit was overwriting the cron log file
22:25:08brixenI fixed that last night
22:25:09evanwheres that
22:25:20brixenI don't have logs for those days
22:25:27evanhm...
22:25:27evanok.
22:25:34brixenall that showed up in the log for today is the timeout abort
22:25:44brixenbasically, the spec run lasted more than 2500 sec
22:25:56brixenwell, the 6 spec runs rather
22:26:19brixenevan: here's the rails -h profile I was looking at http://gist.github.com/136177
22:26:51boyscoutFixed -S option parsing. - 4663ea2 - Brian Ford
22:26:51boyscoutFixed processing options with optional arguments. - 6d15476 - Brian Ford
22:26:51boyscoutProperly rescue SystemExit in Loader. - aa80d8b - Brian Ford
22:27:12brixenand now you can run that too :) bin/rbx -Pcalls -S rails -h
22:27:47evanbrixen: rad
22:27:47evanok
22:27:52brixenstill working out kinks in loader code
22:27:53evanlets do this:
22:27:56ddubbrixen: I'm still thinking about writing a parser for ruby
22:27:57evanthis is our hit list.
22:28:04evanif anyone one wants to help with rubinius
22:28:10ddubthere just isn't a definition of 'what is valid ruby' other than grammar.y
22:28:12evanmake this list change!
22:28:14ddubwhich sucks butt
22:28:16evanmake the times go down
22:28:54evanso everyone, focus on making the ruby code in these methods better
22:29:00brixenddub: I'm looking forward to see it :)
22:29:01evani'm going to focus on making the JIT run them better
22:29:07boyscoutCI: aa80d8b success. 2733 files, 10853 examples, 33891 expectations, 1 failure, 0 errors
22:29:09evanfor instance, Kernel#equal?
22:29:15brixenfailure!
22:29:16evani'll teach the JIT how to make that ultra fast
22:29:20ddubbrixen: I need better resources or else it probably won't happen
22:29:34brixenevan: ok, I'm going to get the Hash stuff in
22:29:41brixengot sidetracked fixing the loader
22:29:47brixenwell, not really sidetracked..
22:29:52evank
22:29:57evanfix that failure!
22:30:27brixenwe need to fix that the failure doesn't get reported as a CI failure
22:30:34ddubteaches the JIT how to fail more discreetly
22:30:43brixenah, that damn actor spec
22:30:52brixenactors are such high drama
22:31:04brixenboots actors from rubinius' stage
22:31:49evan0 is stdout
22:31:50evanright?
22:32:44evanno, 1.
22:33:09brixenin, out, err right
22:33:13brixen0, 1, 2
22:33:40evandamn
22:33:45evani tried to redirect stdout within gdb
22:34:50evanWOO
22:34:51evanit worked!
22:34:56evani had the arguments to dup2() backwards
22:35:00evanthe manpage for dup2 sucks.
22:35:23brixenhow'd you do it?
22:35:39brixensince I always forget when I attach and wonder where my output is going
22:35:48evanA jedi can not reveal all his tricks!
22:35:49evan:D
22:35:51evanjk
22:35:52brixenhah
22:36:10evanp creat("/tmp/whatever", 00700)
22:36:26evanthat shows you the fd, say, 79
22:36:32evanp dup2(79, 1)
22:36:36brixensweet
22:36:45evancreat is just open with the creat flag set
22:37:50brixenand a ridiculous spelling
22:37:56evanyeah
22:37:58evanwtf unix
22:38:06evanthe e doesn't cost extra
22:38:09evani promise.
22:38:36brixenbut you can only use them once, and create has 2
22:38:49brixenonce or not at all
22:38:54evanhah
22:39:07brixenthat's all the bits you have for a test
22:39:14evan"the keys on my IBM keyboard work better if i only use a letter once per word"
22:39:17brixengive me an 'a'
22:39:25brixenif 0 'a' else ''
22:39:26evanOh i'm sorry
22:39:27evanspin again?
22:39:33evan</wheel-of-fortune>
22:39:55evanbtw, is it just me, or does it seem like wheel of fortune should have a pirate theme
22:40:04evanYARR THIS BE YAR WHEEL OF FORTUNE!
22:40:19brixenheh
22:40:35brixenunix words would be a great theme for a wheel of fortune show
22:40:50brixenyou'd have to teach 90% of the audience what unix is first
22:40:53brixenminor hurdle
22:41:12evan"I'd like to solve the puzzle: chmod it to 0700"
22:41:46brixenheh
22:42:37evanperhaps i watched too much wheel of fortune as a kid.
22:43:03brixengreat show
22:43:24brixenwho wouldn't want to watch vanna
22:43:33evantrue enough
22:43:36evanand man, she's still on to
22:43:37evantoo
22:43:45brixenheh, amazing
22:43:59evaneven though they have LCDs for the letters
22:44:02evanwhich is fucking hilarious
22:44:30brixenohh yeah, she just touches them now
22:44:35evanyeah
22:44:41brixenI guess I have seen it in the past 10 years
22:44:47evanhah
22:44:49evanGOTCHA
22:44:55brixenman, turning those letters was hard
22:45:02brixenshe was probably getting RSI
22:45:10evani'm sure she's got good health care
22:45:19brixenlet's hope so!
22:46:37brixenevan: you see where Kernel#=== is on that profile output?
22:47:55evanyeah
22:48:01evanbecause it's just redispatching to kind_of? internally
22:48:05evanoh wait.
22:48:16evanKernel#===? not Module#===
22:48:17evan...
22:48:41evanoh huh.
22:49:05evanI wonder whats hitting it
22:49:11brixenyeah me too
22:49:17evando we override === on String?
22:49:17brixenI was surprised to see it
22:49:18evanmaybe thats it
22:49:19evanwe need to
22:49:34evanah yep
22:49:36evani don't think we do
22:49:42evanwe need to alias == to === in String
22:49:51evanso we don't have to redispatch to it
22:50:12brixenk
22:50:38brixenevan: do you have rails gem installed?
22:50:50evanI believe so, yes.
22:51:03brixendo you get a bt for bin/rbx -S rails -h
22:51:16evana bt of what?
22:51:23brixenbacktrace
22:51:25brixenexception
22:51:29evanthere is one?
22:51:38brixenyeah
22:51:42brixenwell, I'm seeing one
22:51:43evansure
22:51:44evanone sec.
22:51:46evanah yep.
22:51:52evanah hehe
22:52:00evanmy MethodTable probably did this.
22:52:01evanone sec.
22:56:32evanhm..
23:01:10evanwtf.
23:01:28evanwhy is this failing....
23:14:28evanoh, it's undef'd already...
23:14:36evanhm.
23:36:09tmorniniHey guys, I'm getting a build error on HEAD: Don't know how to build task 'vm/builtin/methodvisibility.hpp'
23:36:20brixentry rake clean
23:36:25brixenthe file got removed
23:36:50tmorniniTrying!
23:36:53brixenheh
23:36:59brixenit'll work, I swear :)
23:37:13brixenneed to rewrite the build tasks ;)
23:37:33tmorniniI'm curious, why do you build -O2 -vs- -O3?
23:37:58brixenI believe we had issues with -O3 at one point
23:38:18brixencould try it
23:38:35tmorniniI'll give it a shot.
23:41:38tmorninirake clean built, but massive errors on specs
23:41:57brixenhm
23:42:02brixencould you pastie it
23:42:40tmorniniWeird! 2nd invocation runs fine!
23:42:55tmorniniWell, runs way better.
23:43:00tmorniniWill pastie.
23:43:02brixenk
23:43:32tmorninihttp://gist.github.com/136210
23:44:14brixenwhat does build.sh do?
23:44:28tmorniniSorry.
23:44:29tmorninigit pull; RBX_LLVM=1 rake build; bin/mspec ci -B full -T -Xjit.enabled
23:44:31brixendid you rake clean or rake vm:clean?
23:44:35tmorninirake clean
23:44:44brixenk
23:44:55brixencould you try without the jit enabled?
23:44:55evan-O3 performs worse.
23:45:06tmorniniReally? That's interesting!
23:45:22evanbecause gcc does a crappy job figuring out what to inline in the interpreter
23:45:37tmorniniI'll try -Os, which produces surprising results some times. :-)
23:46:08brixentmornini: I think you have stale rbc files in there
23:46:14brixencould you do a rake clean again
23:46:34tmorniniOK
23:47:12brixenrunning a full ci with the jit atm
23:48:51brixenhmm, full ci with jit ran ok
23:49:31tmorniniOk, I'll sort out.
23:49:58brixenrake clean should remove all .rbc files
23:50:08brixenbut you could run find after to ensure it did
23:53:05evanhm wait
23:53:16evanis this a bug in BlankSlate that we masked...
23:54:07tmorninibuilding again, almost done.
23:54:18evanyeah, it must be.
23:54:31evanso i fixed MethodTable and exposed this bug.
23:54:39tmorniniAha, I've validated my usefulness. :-)
23:54:41brixenevan: ah! I was wondering about that
23:54:51tmorninigrep reveals several instances of -O2. Which is the root?
23:54:56evantmornini: not your problem, sorry.
23:54:59evansomething else.
23:55:17tmorniniOuch! Rewinding self-validation sucks...
23:55:43evanbasically, BlankSlate has a bug
23:55:50evanif a method that it's already undef'd reappears
23:55:51evanit breaks
23:55:57evanin this case, we've got our own Kernel#breakpoint
23:56:05evanthat it undefs at the beginning
23:56:13evanthen rails adds it's own Kernel#breakpoint
23:56:22evanand BlankSlate blows up.
23:56:27evanso i'm going to remove our Kernel#breakpoint
23:57:17brixenhm
23:57:35evanit's busted anyway.
23:57:36brixenmaybe we should just provide a BlankSlate that works right
23:57:37evanit uses MethodContext
23:57:40brixenahh
23:57:46evanthats certainly not a bad idea
23:57:49evanbut i'll fix this for now anyway
23:58:46evangreat
23:58:53evanmore breakage.
23:58:59evanthis time with something a bit more critical
23:59:02evanKernel#metaclass