Index

Show enters and exits. Hide enters and exits.

00:00:32rueListening to my Ornette Colemans while coding
00:03:25rueThe Programming Language shall define a new paradigm, Jazz-Oriented Programming
00:03:46slavahttp://www.jazzscheme.org/
00:05:16rueThose poseurs
07:11:07ddublooks back in time to see just how dead the channel is
07:11:25ddubwhy can't there ever be lively technical discussions on _my_ schedule?!
07:11:27ddub:)
07:11:31brixenthis is a trappist channel
07:11:41brixenwe're studying, not dead :P
07:11:48ddubsorry, I'm in a weird mood
07:11:51ddubI blame the paint fumes
07:11:56brixenhehe
07:12:42ddubplus, someone put the jimmy the cab driver commercials (from mtv) up on youtube
07:12:48ddubbeen looking for those for a while
07:14:07ddub( http://www.youtube.com/watch?v=Jd68qvUilDY )
07:14:52brixenresists wasting time on youtube
07:17:04ddubstronger than me!
07:18:31brixennot that there's anything wrong with youtub, I'd just rather get this profiler fixed
07:18:40brixenyoutube even
09:27:52jzkHi, what is VMMethod? How does it compare to CompiledMethod?
16:27:00rueVMMethod, for posterity, is the "backend" implementation of a given CompiledMethod. It abstracts away whether the method executes through the interpreter, LLVM or whatever
16:28:16tilmanrue: oh hai. think this looks correct? http://7f08dfffd5646341.paste.se/
16:28:25tilmanit fixes the 'bt' command in the debugger
16:29:14rueSec, flambeing something
16:34:36tilman:o
16:39:54ruetilman: With a 0 offset, the backtrace will also contain the .backtrace method's frame, dunno if that is desirable?
16:40:19tilmanprobably not
16:40:41tilmanrue: i'm not sure System::vm_backtrace is what i want to use.
16:41:31tilmanrue: getting a backtrace everytime someone asks for Thread#context feels a bit funny
16:43:32rueYeah.. you should be able to retrieve it when it is actually needed
16:52:55tilmanrue: re. the 0 offset -- which .backtrace method did you mean?
16:53:26tilmani should probably check out an ooold revision and see how the bt looked before stackful
16:57:40rueThe C++ backtrace, but good point
16:58:02rueGenerally, the 0th frame is whichever the primitive call is in
16:58:19tilmani don't see that. seems to work just fine
16:59:02rueGoodies, then
17:00:45odai saw there is a branch called stackfull, why is it called this?
17:01:30rueAs opposed to stackless, with a bonus spelling error
17:01:45odadoes it versus stackless?
17:01:55odathanks :)
17:02:16rueI deleted it a couple days ago, though
17:02:31odait is merged in master
17:02:38rueRight
17:03:22odawhat changes does it include? use native thread to replace green thread...
17:03:51rueMain change is using the C stack for calls rather than maintaining a separate callstack in heap memory
17:04:48odaemm, I need take a look at the code. thanks rue
17:16:33odaHi, rue
17:16:50odais there any resource i can read about using the C stack for calls
17:24:30rueI am sure there is, although finding something applicable to this situation may be hard..
17:24:57rueoda: Do you know how the C calling convention works?
17:25:25rueIf not, that might be a place to start
17:25:52rueEssentially, this is the "normal" way, whereas stackless execution is a specialised mechanism
17:26:19odaemm, i see
19:13:23evantilman: you around?
19:13:58tilmanyeah, hi
19:14:16evancould you explain 93baca35e8 to me?
19:14:21evanmainly, what was breaking
19:14:30tilmanyes :)
19:15:05tilmanevan: running "[1,2,3].each" would read call_frame->stk[-1] instead of stk[0]
19:15:20evanread for what?
19:15:21tilmanie we'd take an itm off the array, push it onto the stack (to stk[0])
19:15:25evanthe yield in Array#each ?
19:15:36tilmanthen the yield_stack instruction would want to read that value off the stack again
19:15:37evani'm confused because your change means a different set of argument is passed to the block
19:15:47evanso i'm confused WHY it worked at all before
19:16:06tilmani think that branch is only exercised if t1 is nil
19:16:08evansince every block would be getting the wrong values as it's block args.
19:16:20evanah.
19:16:21tilmanand since NilClass#call just raises, you don't end up seeing what was read off the stack
19:16:32evanyes, yes.
19:16:33evani see.
19:16:36evanthis is the uncommon case
19:16:40tilmanyep
19:16:49evanie, there is neither a Proc nor a BlockEnvironment in ->block
19:16:53tilmanexactly
19:17:06evanso something like
19:17:14evan[1,2,3].each &blah.method(:foo)
19:17:15evanshould cause it too.
19:17:50tilmani didn't try that :o
19:19:00evanseems like yield_splat is busted then too...
19:19:07evanit's doing just (count), not (count -1)
19:19:08tilmani wondered about that
19:19:19tilmanbut didn't find a test case where count >0
19:19:33evani also notice that almost all calls to stack_back_position are called with - 1
19:19:38evanso we should probably change it's impl
19:19:47tilmani wanted to suggest that, too
19:20:12tilmanit's unintuitive to pass 0 if you want 1 element imo
19:20:48evanhm
19:21:24evanok, i see.
19:21:32evanthis is a simple size versus index problem
19:21:35evanthus the - 1
19:22:08evani'll do a quick audit right now
19:22:13evanand see where stack_back_position is used
19:22:22evanpretty sure we can change it to do position - 1
19:23:27tilmanevan: can you put this in your review queue please? http://03b673c918730184.paste.se/
19:24:09evani'm going to say no
19:24:23evanObjectMemory should not be exposed to general code
19:24:27evanit's an internal detail
19:24:32tilmanok
20:12:51boyscoutSanitize stack_back_position API - 5355a64 - Evan Phoenix
20:19:21boyscoutCI: 5355a64 success. 1503 files, 7245 examples, 23659 expectations, 0 failures, 0 errors
23:39:32boyscoutFix debugger show ivars command - c52cb0f - Adam Gardiner
23:39:32boyscoutFix debugger sexp command - 1860a50 - Adam Gardiner
23:41:01boyscoutCI: 1860a50 success. 1503 files, 7245 examples, 23659 expectations, 0 failures, 0 errors