Show enters and exits. Hide enters and exits.
| 01:10:55 | evan | RAWR |
| 01:11:18 | evan | fix the c-ng slowness. |
| 01:11:20 | evan | fixed |
| 01:11:44 | evan | find spec -name "*.rbc" -delete |
| 01:12:14 | evan | Finished in 100.703253 seconds |
| 01:12:24 | Zoxc | wonders how fast the breaks and returns in Rubinius is :] |
| 01:14:13 | evan | pretty darn fast |
| 01:14:19 | evan | return in a method is a C return |
| 01:14:34 | evan | break in a while is a jump |
| 01:14:40 | Zoxc | I was thinking of in blocks :) |
| 01:14:48 | evan | break in a block is a C return and then a comparison |
| 01:15:02 | Zoxc | how do you manage that? :/ |
| 01:15:10 | evan | magic! |
| 01:15:23 | brixen | heh |
| 01:15:32 | evan | everything in rubinius takes STATE as the first arg |
| 01:15:48 | Zoxc | doesn't really believe in magic :) |
| 01:16:41 | evan | oh, me neither. |
| 01:17:01 | evan | so, STATE is thread local |
| 01:17:12 | evan | to break in a block, it does, basically |
| 01:17:20 | Zoxc | that return and comparison thing doesn't sound good for ensure blocks, unless you was thinking of return chained exceptions? |
| 01:17:23 | evan | state->condition = break; |
| 01:17:32 | evan | state->destination = scope; |
| 01:17:34 | evan | return 0; |
| 01:17:46 | evan | the caller sees the 0 and knows there is an exception |
| 01:17:56 | evan | it checks if the condition is break |
| 01:18:02 | evan | and if so, if the destination matches itself, it's done. |
| 01:18:24 | evan | Zoxc: for an ensure, it's just condition = ensure |
| 01:18:31 | evan | and return 0; |
| 01:18:35 | Zoxc | what happens if there is no one to handle it? |
| 01:18:45 | evan | there is always someone to handle it |
| 01:18:49 | evan | because there is a toplevel frame |
| 01:18:54 | evan | that is part of the VM |
| 01:19:07 | evan | to provide the user with some "hey, something went wrong" |
| 01:19:16 | evan | loader.rb typically catches anything that comes into it |
| 01:19:48 | Zoxc | it should raise a LocalJumpError from the break position right? |
| 01:20:24 | evan | you mean when the caller has returned? |
| 01:20:47 | Zoxc | yeah |
| 01:21:02 | evan | when a scope returns |
| 01:21:12 | evan | it sets the heap alias for itself to returned = true |
| 01:21:22 | evan | the heap alias is what the break closure holds |
| 01:21:43 | evan | so it checks if destination->returned before it unwinds |
| 01:21:59 | evan | if destination->returned { do LJE error; } |
| 01:24:27 | Zoxc | the returned variable is set when the call with the attached block returns? |
| 01:24:55 | evan | yeah |
| 01:25:01 | evan | when the context that created the block returns |
| 01:26:25 | Zoxc | does MRI use SJLJ for exceptions? |
| 01:26:31 | evan | no |
| 01:26:48 | Zoxc | I just saw some macros for them :/ |
| 01:27:02 | Zoxc | I'm guessing it's green thread related then |
| 01:27:05 | evan | where at? |
| 01:27:10 | evan | we've used them for various things |
| 01:27:15 | evan | but we don't use them to implement exceptions |
| 01:27:15 | Zoxc | Don't remember |
| 01:40:48 | Zoxc | pushed tons of renaming stuff commits to mirb :D |
| 01:46:20 | boyscout | Fix handle leakage GC issue - d4c677c - Evan Phoenix |
| 01:46:21 | boyscout | Add -Xgc.immix.debug and streamline immix marking - e99908e - Evan Phoenix |
| 01:46:21 | boyscout | Teach GC::scan_object about Tuples specificly - b704c2a - Evan Phoenix |
| 01:46:36 | evan | brixen: http://github.com/evanphx/rubinius/commit/d4c677c2de5b991f52b9fc3fa626b60cb55de508 |
| 01:49:37 | boyscout | CI: b704c2a success. 3002 files, 11756 examples, 35757 expectations, 0 failures, 0 errors |
| 01:49:42 | brixen | ahhh |
| 01:49:51 | evan | we were doing ref() everytime |
| 01:49:55 | evan | even though it was already in the set |
| 01:49:59 | brixen | :/ |
| 01:49:59 | evan | but we only deref() once |
| 01:50:10 | evan | so anything that was used 2+ times leaked. |
| 01:50:11 | brixen | so everything stayed forever |
| 01:50:23 | evan | pretty much |
| 01:50:24 | evan | actually! |
| 01:50:31 | evan | i'm surprised rubinius even survived this. |
| 01:50:35 | evan | thats good for us! |
| 01:50:37 | brixen | heh |
| 01:50:43 | evan | because basically the memory footprint was unbounded |
| 01:50:43 | brixen | yeah, rbx is pretty hardy |
| 01:51:15 | brixen | this should help brianmarios benchmark on yajl too |
| 01:53:10 | brixen | I will say that ubuntu 9.10 is the slickest install yet |
| 01:53:20 | brixen | they've *really* slimed things down |
| 01:53:31 | brixen | win7 eat your heart out |
| 01:53:45 | brixen | hasn't installed win7 of course :) |
| 01:54:22 | brixen | whoa, what's this Ubuntu One? |
| 01:54:23 | Zoxc | vista/win7 uses like 15min before the setup window pops up |
| 01:54:29 | brixen | 2GiB of cloud storage? |
| 01:54:51 | brixen | Zoxc: boot to installed on this vbox will be about 10 min |
| 01:54:57 | Zoxc | I didn't like the silver logo stuff on ubuntu 9.10 :/ |
| 01:55:19 | brixen | looks better than any windows stuff, imho :) |
| 01:55:37 | Zoxc | nah it doesn't :) |
| 01:55:40 | brixen | heh |
| 01:55:49 | brixen | hmm, I wonder what font they're using on this |
| 01:56:20 | evan | brixen: yeah, this issue effected all extensions |
| 01:56:32 | evan | and would cause it to basically get slower and slower |
| 01:56:51 | brixen | whoa, the ubuntu installer let me launch ff while it's running |
| 01:57:03 | brixen | so I could visit www.ubuntu.com/support |
| 01:57:31 | evan | hm, i should install that |
| 02:28:50 | boyscout | Remove old cruft - 9a29da1 - Evan Phoenix |
| 02:36:23 | boyscout | CI: 9a29da1 success. 3002 files, 11756 examples, 35757 expectations, 0 failures, 0 errors |
| 10:26:41 | rue | Win7 installs much nicer than XP. Dunno about Vista |