Show enters and exits. Hide enters and exits.
| 00:12:58 | BrianRice-work | hm, where do I find the source for PICs and inlining strategy in general? |
| 00:13:08 | evan | vm/inline_cache.cpp |
| 00:13:25 | slava | evan: do you fold redundant guards? |
| 00:13:32 | BrianRice-work | ok, that's what I thought |
| 00:13:37 | evan | LLVM can in some cases, yes. |
| 00:13:46 | evan | brixen and I were discussing that |
| 00:13:52 | slava | oh that's right |
| 00:13:57 | slava | you use AA to do it |
| 00:14:02 | evan | we don't fold guards accessed across GC points |
| 00:14:18 | evan | and any method dispatch is a GC point |
| 00:14:29 | evan | so if there is sufficient inlined code |
| 00:14:30 | slava | BrianRice-work is working on inlining with guards for slate |
| 00:14:31 | evan | then it can |
| 00:14:32 | BrianRice-work | AA? |
| 00:14:36 | slava | alias analysis |
| 00:14:40 | BrianRice-work | oh, right |
| 00:14:44 | slava | you teach LLVM that the header field in your object is a constant |
| 00:14:50 | slava | and it can propagate loads and stores |
| 00:14:51 | evan | yep |
| 00:14:56 | evan | exactly. |
| 00:15:06 | evan | i tell it that obj->class is constant |
| 00:15:09 | slava | so if its compared it against a constant once, a subsequent comparison in one branch of the conditional can fold to a constant boolean |
| 00:15:11 | evan | and that class->class_id is constant |
| 01:38:39 | boyscout | Simplify locals in VariableScope - 6b9b7ad - Evan Phoenix |
| 01:46:43 | boyscout | CI: rubinius: 6b9b7ad successful: 3024 files, 11752 examples, 35958 expectations, 0 failures, 0 errors |
| 05:50:34 | fynn | The "Performance Retrospective" of the Unladen Swallow PEP is very interesting: http://svn.python.org/view/peps/trunk/pep-3146.txt?view=markup |
| 05:51:09 | fynn | Explaining why they failed to meet their original goal of 5x faster Python execution through LLVM JIT. |
| 05:53:16 | fynn | Particularly interesting: |
| 05:53:38 | fynn | "(Our hypothesis is that we hit these problems -- problems other projects [including Rubinius] had |
| 05:53:38 | fynn | avoided -- because of the complexity and thoroughness of CPython's standard |
| 05:53:38 | fynn | library test suite.)" |
| 08:40:19 | dbussink | morning! |
| 08:45:50 | dbussink | evan: any luck hunting the issue? |
| 18:54:25 | seydar | gday sailors |
| 18:54:43 | evan | hey there. |
| 18:56:17 | seydar | how goes development? |
| 18:56:21 | seydar | what's the current big hurdle? |
| 18:59:07 | evan | getting you back to work! |
| 18:59:52 | seydar | i'm SOOOOOOOOOOOOO CLOSE to getting eagle |
| 19:00:11 | seydar | i need to get eagle before my apps are read and rejected so i can tell all my colleges specifically about it |
| 19:00:24 | seydar | wow, to think i first came here as a first class scout |
| 19:03:05 | evan | where are you applying? |
| 19:03:46 | seydar | it's a top-heavy list, but i figure go big or go home. dartmouth, cornell, cmu, brown, princeton, stanford, pomona, macalester, u michigan, and USNA |
| 19:04:02 | seydar | i've already gotten into the USNA, so if everything else falls through i can go there |
| 19:04:29 | evan | whats your major going to be? |
| 19:04:30 | evan | CS? |
| 19:04:59 | seydar | CS or linguistics |
| 19:05:28 | seydar | eh, who am i kidding. CS |
| 19:05:37 | evan | hehe |
| 19:05:45 | evan | CS is a lot more practical than linguistics. :) |
| 19:06:06 | seydar | psh. don't talk practicality to a guy trying to learn finnish |
| 19:06:36 | evan | practical helps in a down economy. |
| 19:07:36 | seydar | true. for better or for worse, I plan on going into the marines after college, so in theory i have the next ten years of my life figured out |
| 19:07:55 | evan | are you doing ROTC in college? |
| 19:08:23 | seydar | maybe. I got accepted into the NROTC program, so it's there if i want it |
| 19:08:42 | seydar | i'll figure out if i'm doing it when I see where else I get in |
| 19:09:52 | evan | you doing it for the money? |
| 19:10:14 | seydar | actually, no. |
| 19:10:46 | evan | do you want a career in the military? |
| 19:10:59 | seydar | i'm doing it because [warning: self call] i feel that I would be better at being personally responsible for someone's life than a lot of other people, so i'd like to do what I can to keep soldiers safe |
| 19:11:23 | seydar | i would like to fly helicopters, dropping off troops, picking them up, giving supplies, and providing air support. |
| 19:11:43 | evan | an admiral idea. |
| 19:11:48 | evan | admirable |
| 19:12:35 | seydar | thanks. I considered going subs since i was mildly recruited for that, but they don't do any good for saving lives |
| 19:14:07 | Defiler | Everybody I know that worked on subs says it is ultra boring as well |
| 19:14:23 | Defiler | Got some friends that studied nuclear physics in the academy and did the sub thing |
| 19:14:27 | evan | esp. since the cold war is over. |
| 19:14:40 | evan | all our enemies don't have houses |
| 19:14:44 | evan | let alone subs. |
| 19:14:50 | seydar | looks like i'm making the better choice |
| 19:14:58 | Defiler | Helicopters are badass |
| 19:15:10 | Defiler | They fly like toaster ovens full of neutronium, but they are badass |
| 19:15:31 | evan | who needs a sneaky sub when you can just launch scud missiles from 100 miles away off a battleship |
| 19:15:42 | seydar | hahaha. this guy did what i want to do (found him after i figured out i wanted to fly choppers):http://www.badassoftheweek.com/crandall.html |
| 19:15:52 | Defiler | seydar: This is an interesting dude you may want to follow on twitter or facebook: http://twitter.com/Michael_Yon |
| 19:15:57 | seydar | psh, ain't no battleships since the 50s |
| 19:16:46 | seydar | Defiler: sweet! consider him followed |
| 19:16:48 | Defiler | Also, I subscribe to this blog http://usacac.leavenworth.army.mil/blog/blogs/coin/default.aspx |
| 19:17:12 | seydar | i see his posts -2 and -3 are about helicopters. are most of his tweets about helicopters? |
| 19:17:23 | Defiler | Wider-ranging than that |
| 19:17:30 | Defiler | but definitely helicopters get mentioned |
| 19:18:47 | evan | seydar: what do we fire scuds off? |
| 19:18:51 | evan | aircraft carriers? |
| 19:19:04 | Defiler | trucks on the ground |
| 19:19:09 | seydar | evan: destroyers. duh |
| 19:19:16 | evan | er, yes |
| 19:19:19 | evan | destroyers is what I meant. |
| 19:19:46 | seydar | :-D i made that mistake soooooooooo many times when i was younger. |
| 19:19:58 | Defiler | Also, scuds are a soviet weapon, NATO doesn't use them heh |
| 19:20:16 | BrianRice-work | um yeah |
| 19:20:27 | BrianRice-work | <-- used to run nuclear reactors on aircraft carriers |
| 19:20:53 | Defiler | http://en.wikipedia.org/wiki/Raytheon#Missiles |
| 19:20:58 | Defiler | is what you are likely to run into in NATO town |
| 19:21:39 | BrianRice-work | Jane's defense review books often have full-page ads about being the envy of your region by having the newest ballistic missiles. it's hilarious/scary |
| 19:23:36 | seydar | BrianRice-work: enlisted or officer? |
| 19:24:14 | BrianRice-work | seydar: enlisted. I wanted to get my hands dirty |
| 19:24:31 | evan | Defiler: didn't we use scuds in the first iraq conflict? |
| 19:24:37 | BrianRice-work | (compared to applied maths) |
| 19:24:42 | seydar | i wonder if i can finish a term in the marines, leave, and then enlist into nuclear power school |
| 19:24:45 | BrianRice-work | evan: no, iraq did |
| 19:24:53 | evan | oh, i've got it backwards. |
| 19:24:56 | evan | makes sense. |
| 19:25:16 | BrianRice-work | evan: those missiles have bad guidance/stability systems, so an imperial country can't use them, because they're hugely bad PR |
| 19:25:17 | Defiler | Yeah, that was scuds vs. patriots |
| 19:25:28 | evan | Defiler: ah yes. |
| 19:25:34 | seydar | BrianRice-work: my dad did reactors on sub in the 70s; he was always jealous of the enlisted guys who wouldn't let him touch their reactors |
| 19:25:39 | evan | BrianRice-work: makes sense. |
| 19:26:32 | BrianRice-work | seydar: it's a weird little club. you can say no to officers when they're wrong, you just have to know your shit. |
| 19:26:37 | BrianRice-work | anyway, back to work... |
| 19:27:11 | seydar | BrianRice-work: heh. he just wanted their job because he yearned for the hands on stuff. |
| 19:27:25 | BrianRice-work | ah |
| 19:27:55 | evan | well, we need more nuclear power scientists these days |
| 19:30:25 | seydar | what could you do with a nuclear something degree outside of the navy? |
| 19:30:54 | BrianRice-work | earn a lot of money in a very dull job with very slow promotion rates :( |
| 19:31:13 | evan | do some research and get us back on the nuclear power horse! |
| 19:31:23 | evan | mmmmm nuclear powered horses.... |
| 19:31:24 | BrianRice-work | or go to another country with a more liberal attitude about nuclear power (India, Brazil) |
| 19:31:37 | seydar | evan: ugh. there was a 124 mile march in VT to close the power plant there |
| 19:31:44 | BrianRice-work | (oops, and China, but seriously that's not a good idea) |
| 19:32:08 | evan | helping China with nuclear power is a great way to make sure you can't get back in the US. |
| 19:32:15 | seydar | BrianRice-work: what do you do now? |
| 19:33:05 | BrianRice-work | seydar: software dev consultant (currently working full-time internally for rentrak) |
| 19:34:26 | seydar | http://www.briantrice.com ? |
| 19:36:23 | BrianRice-work | yeah that's me. not updated in a while, though |
| 19:39:16 | evan | BrianRice-work: hows slate land? |
| 19:44:15 | seydar | i know this sounds lame, but i have to free up some ram to use Word. so goodbye IRC. |
| 19:46:28 | BrianRice-work | evan: still working on inlining, sans jit (we inline SSA to SSA). |
| 19:46:46 | evan | how are you modeling the lexical info in the inlined method? |
| 19:47:02 | evan | since you probably don't want to have to build the same runtime structures you do for a normal method |
| 19:47:09 | BrianRice-work | you mean tracking variables and scope? |
| 19:47:18 | evan | yeah |
| 19:48:21 | BrianRice-work | well right now our techniques are pretty simple, working recursively to successively compose new bytecode methods from multiple ones |
| 19:48:27 | BrianRice-work | bottom-up |
| 19:49:07 | BrianRice-work | we need to do a little more to transform register usage optimally but SSA allows us to "wire" up the data flow pretty directly |
| 19:49:38 | BrianRice-work | dunno if you were thinking of something more specific :) |
| 19:50:00 | BrianRice-work | we do have some manually-inlined test cases which we benchmarked and then successively compare against inliner output |
| 19:51:24 | BrianRice-work | here's the source for most of it, at least: http://repo.or.cz/w/cslatevm.git/blob/cae7b252a633b0790844a6c67f98b75a0476e79d:/src/vm/optimizer.c pp |
| 19:51:38 | evan | slate might not have as much lexical info as ruby |
| 19:51:45 | evan | so you don't have to worry about it as much. |
| 19:52:06 | evan | in ruby, you need to know (at runtime) the name of the method you're in |
| 19:52:13 | evan | the Module the method came from |
| 19:52:16 | BrianRice-work | I suppose not. we keep an array of input/local registers and a pointer to an environment. and we avoid allocating closures as much as the compiler can determine |
| 19:52:33 | evan | and some constant scoping structure (which is per method) |
| 19:53:10 | BrianRice-work | yeah, slate methods are somewhat simpler. they don't intrinsically know their own name (like a value in a slot doesn't know the name of the slot) |
| 19:53:29 | BrianRice-work | "self" is just the first input argument in slate methods |
| 19:53:30 | evan | righto |
| 19:53:42 | evan | so you "solve the problem" by not having it |
| 19:53:45 | evan | clever! |
| 19:53:46 | evan | :D |
| 19:53:48 | BrianRice-work | :) |
| 19:54:01 | BrianRice-work | yeah, we just wind up with tradeoffs in language design because of it |
| 19:55:19 | BrianRice-work | I still need to complete the module implementation. which design is mostly finalized - it's kind of like commonjs modules. |
| 19:56:00 | BrianRice-work | designed for being self-contained, where the caller can decide "where it goes" |
| 19:56:21 | BrianRice-work | and that ought to solve the compiled-files issue I ran into last month |
| 19:56:30 | BrianRice-work | blah blah blah, back to perl |
| 20:01:27 | Defiler | seydar should be like this dude: http://en.wikipedia.org/wiki/Jack_Churchill |
| 20:04:12 | evan | if you were really good with a longbow and in WW2, you could have been invaluable |
| 20:04:28 | evan | think about putting explosives on an arrow and shooting it down the barrel of a tank |
| 20:04:46 | Defiler | http://www.cracked.com/article_17019_5-real-life-soldiers-who-make-rambo-look-like-pussy.html |
| 20:04:49 | Defiler | heh |
| 20:04:53 | Defiler | that was one of the wiki footnotes |
| 20:55:56 | dbussink | evan: evening :) |
| 20:56:14 | dbussink | evan: any luck with uncovering the issue? |
| 21:30:49 | evan | dbussink: i seem to have fixed one crash yesterday |
| 21:30:57 | evan | dbussink: if you could, try and repro on master |
| 21:31:18 | dbussink | evan: ah, cool, already was so free to try, but i still get a crash sometimes though |
| 21:31:38 | evan | on master you still get it sometimes? |
| 21:33:07 | dbussink | evan: i think i did yeah, i'll double check with a clean build |
| 21:33:13 | evan | k |
| 22:06:18 | dbussink | evan: hmm, i've run all the specs again but i do see some failures in the specs, no crash yet though |
| 22:10:41 | evan | well thats good |
| 22:13:09 | dbussink | evan: problem still is that those failures don't happen in interpreted mode |
| 22:13:44 | dbussink | so i can imagine that would make debugging harder, but you probably know that better than i |
| 22:15:30 | dbussink | evan: ah, i now have a USZ with a dev build |
| 22:15:36 | dbussink | evan: when running it again |
| 22:15:48 | dbussink | ah, no, sorry, not a USZ |
| 22:17:26 | dbussink | evan: https://gist.github.com/a30479b88c52d2b76d98 |
| 22:17:33 | dbussink | shall i add this one to the issue? |
| 22:18:01 | evan | hm, thats a nil getting through |
| 22:18:02 | evan | yes, add it. |
| 22:18:09 | evan | add all info to it. |
| 22:22:02 | dbussink | evan: any more info you'd want me to get out of it? |
| 22:22:43 | evan | yeah |
| 22:22:45 | evan | one sec. |
| 22:24:37 | evan | on frame 6: |
| 22:24:39 | evan | p *obj |
| 22:24:44 | dbussink | evan: this crash now happened for me in something like 3 from 7 attempts |
| 22:24:52 | evan | and on frame 7: |
| 22:24:57 | evan | the line of code it's on |
| 22:26:08 | dbussink | evan: what do you mean by the line of code it's on? |
| 22:26:29 | evan | when you go "frame 7" |
| 22:26:38 | dbussink | there now |
| 22:26:44 | evan | it will show the contenst of compiledmethod.cpp, line 275 |
| 22:26:47 | evan | i want to know what it is |
| 22:27:06 | evan | i'm not assuming my line 275 is the same |
| 22:27:09 | evan | thats why I ask |
| 22:27:42 | dbussink | evan: ah ok, updated the gist: https://gist.github.com/a30479b88c52d2b76d98 |
| 22:30:03 | evan | in frame 7 |
| 22:30:06 | evan | run 'list' |
| 22:30:10 | evan | so i can see the source around it |
| 22:31:35 | dbussink | evan: ok, updated the gist |
| 22:32:12 | evan | mmm, indirect literals |
| 22:32:13 | evan | yes. |
| 22:32:41 | evan | dbussink: run 'p *obj' in frame 7 |
| 22:32:47 | evan | i wanna see the headers for the CompiledMethod |
| 22:33:23 | dbussink | evan: ok, updated |
| 22:34:49 | evan | ok, perfect. |
| 22:34:53 | evan | i'll bet i know what happened. |
| 22:35:04 | evan | this helped al ot. |
| 22:35:05 | evan | a lot. |
| 22:35:11 | evan | i'm almost finished with some new jit code |
| 22:35:13 | evan | then i'll fix this. |
| 22:35:27 | dbussink | evan: ok, cool |
| 22:35:44 | dbussink | evan: sadly i'm going to head to bed, if you want me to write up more please let me know! |
| 22:35:51 | evan | :D |
| 22:35:52 | evan | will do. |
| 22:35:55 | evan | thanks for the data! |