Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply merge
Set by moderator on 23 October 2009.
00:01 darbelo joined
pmichaud_ so, the only piece I'm missing is how to specify a type as that last argument 00:01
chromatic bacek, the only thing I could find that uses get_string there was the MMD tuple creation in CallSig's own get_pmc.
pmichaud_ and perhaps that just argues that we really want the last argument to be a type more than an object to be cloned
japhb pmichaud_, and there I've got nothing yet. Brain still too fuzzy
pmichaud_ I like the potential power of "object to be cloned", but the common case is "create a new object of this type" 00:02
bacek chromatic: indeed. Let me finish testing and I'll commit lazy string_sig creation
chromatic: and then we can fix MMD to use raw arguments instead
pmichaud_ and typical code generation really wants that "new object of this type" to be specified as a constant somehow. 00:03
darbelo Whiteknight: pong
chromatic bacek, the only thing I don't see this doing is marking named arguments by appending 'n' in the signature.
Austin So you're back to specifying the hll-mapped role you want to request? 00:04
japhb pmichaud_, the only two ideas I have in that direction are: 1. double the ops again. Ew. 2. Have the default arg be a thunk to be called to get the default. Whether that's a win depends on how often code in the wild needs to use the default.
bacek chromatic: it's not required for MMD.
00:04 zak_ joined
Whiteknight darbelo: I'm starting to prototype the 2D matrix PMC. I'm trying to figure out a good way to do indexing 00:04
pmichaud_ Austin: actually, I'm looking at $P0 = vivify_lex '%foo', ['Hash'] 00:05
and
$P1 = vivify $P0, 'key', ['Undef']
Austin So the HLL can't change its mind about what default type to use?
pmichaud_ no, but I'm not sure that's all that important. The "change its mind part" was more along the lines of one HLL being able to signal to another HLL what type to use 00:06
Austin Ah
pmichaud_ for example, a library running in the 'parrot' namespace being able to create objects for callers coming from the 'mylang' hll namespace
Austin When you mentioned that before, the little man in my head that pulls all the levers just said "forget this," an quit. (It's been muscle memory only for the last half hour or so) 00:07
pmichaud_ Both P6object and PCT run into issues like this, because they provide methods that are often called from other hll namespaces, and we want those methods to be able to act as if they were in the foreign hll namespace. 00:08
so, when something from a toolkit creates an "integer", it ends up creating an integer that is correctly mapped according to its HLL caller type.
If the vivification type is hard-coded into the PIR, there's less opportunity for that to occur.
Austin So fetch is: fetch Pagg, Pkey, Pdfltkey ? 00:09
darbelo Whiteknight: Have you considered using keyed access with a FIA?
pmichaud_ maybe.
bacek purl: (6518415064 - 5795672288) / 6518415064 * 100
purl 11.0877071942162
bacek 11%!!!
Austin 1/9th
pmichaud_ as I said, I really like the clone semantics, I just can't figure out how to get the common "make me an object of this type" semantics, short of creating a new one of those objects at the beginning of each sub, or doing a set of lookups at the beginning of each sub 00:10
Austin bacek: What did you do?
Whiteknight darbelo: I was thinking of something very similar to that
bacek chromatic: you was wrong. It's 11%, not 5-6 :)
Austin: drop creating stirng_sig in PCC
Austin bacek: congrats
pmichaud_ in some sense I guess the "set of lookups" at the beginning of each sub feels like the best way to go, but I'm not sure I like it. 00:11
japhb pmichaud_, this may sound a little odd, but how about having the last arg be a label?
Austin pmichaud_: How could a local library know the type to create using fetch?
japhb That way we only do the lookups and default when needed? 00:12
or, instead of a label,
have a pre-op that sets the label to use to default, like setting an exception handler
chromatic I don't mind underestimating this way.
pmichaud_ Austin: I must be getting tired -- I didn't follow your question. 00:13
Austin japhb: I don't get it. An example?
pmichaud_ japhb: label -- interested.
*interesting.
japhb OK, still fighting through the fuzz here,
Austin pmichaud_: In the case where hll A calls B, how could B provide an A-centric type via fetch?
Whiteknight darbelo, dukeleto: I just pushed a prototype of the PMC. bare bones. check it out
darbelo Whiteknight: I've been thinking about this and the way I see it being the most efficient is to keep the PMC's data in 'cblas-native' format, with as little conversion as possible in inter-PMC operations.
pmichaud_ Austin: B can find out the hll of its caller
darbelo Whiteknight: Ohh. I'll ckeck it out.
japhb but something like:
pmichaud_ then B can find out A's hll_mapping 00:14
Whiteknight darbelo: the way we do storage isn't as important right now as the way we do indexing
japhb push_def_handler default_array
pmichaud_ then B can choose/create a fetch argument that is consistent with that mapping
Whiteknight but you're right, CBLAS internal format would be nice
japhb fetch aggregate, key
...
default_array:
pmichaud_ japhb: here's an examle
japhb afk for just a sec, damn
pmichaud_ actually, japhb, now that I'm looking at it, I think that using a label is basically what PAST does now. 00:15
we just avoid the "if null" check.
Austin pmichaud_: That argues that fetch should take a pmc or a type name, instead of a role sentinel.
pmichaud_ Austin: I've been wanting to have role sentinels in addition to pmcs
to avoid having to always look up the pmc
(I don't have a good way to do it, which is why I'm falling back to "okay, let's just eat the cost of looking up the pmc")
darbelo Whiteknight: Yeah, maily I was thinking of Complex there, FLOATVAL is just a double. 00:16
pmichaud_ actually, I think I know what I want to do here.
first, all of this discussion has been *incredibly* useful.
Whiteknight darbelo: yes, I think we are going to have to have multiple PMC types
japhb Oh, duh! I think I see a solution!
pmichaud_ waits for japhb's solution.
Austin disbelieves. 00:17
japhb fetch aggregate, key, label_for_SUCCESS
pmichaud_ disbelieves also, but hopes.
japhb do_default
label_for_success:
pmichaud_ japhb: that's what PAST does now.
japhb pmichaud_, yep.
pmichaud_ so no advantage to what we have now. :-)
dalek rrot: r42057 | bacek++ | trunk/src (2 files):
Stop building string_sig in build_sig_object functions.

fib.pir
japhb no null check.
Austin 2->1 ops
japhb but OK, fine, genius is fleeting. ;-) 00:18
pmichaud_ there's still a null check, it's just being done inside of the fetch opcode instead of separately
japhb pmichaud_, your idea was?
pmichaud_ I don't think the null check provides that much benefit
japhb pmichaud_, yes, understood.
dalek rrot-linear-algebra: 58cb4dc | Whiteknight++ | src/pmc/NumMatrix2D.pmc (2 files):
add a prototype of a 2D matrix PMC for proof-of-concept
japhb sigh
pmichaud_ actually, in the vivify case the label form avoids a null-check and a bind
but still, not a huge benefit
darbelo Whiteknight: You are going for 'allocate storage on assignement' there, right?
pmichaud_ my idea is summed up in one word: "wait" 00:19
a lot of this discussion is predicated on the code that NQP produces now
japhb blinks
Whiteknight darbelo: I haven't thought about allocation yet
Austin has never been good at waiting.
pmichaud_ but NQP produces code that is based on older ideas about how Perl 6 would work
and a lot of those ideas are no longer valid
I'm thinking about the fetch and vivify opcodes at the moment, and I'm guessing that NQP likely won't need them anyway
Whiteknight Matrixy requires resizable matrices, but allows for preallocation as an optimization
pmichaud_ other languages might be able to use them, but NQP won't
Whiteknight so if matrices were fixed-size, we could implement a relatively fast copy 00:20
Austin 8-O
pmichaud_ so perhaps the thing to do is to wait and see what NQP-rx develops, and look at the code it generates
Austin I'll bite. Why won't nqp use them?
pmichaud_ it would use them, but only for aggregate and package lookups 00:21
Austin Sure.
pmichaud_ and I think we'll find that's a much smaller percentage than the example that you were looking at
where every lexical fetch was generating 4+ opcodes
in the future, NQP lexical fetches will be one opcode
(find_lex)
Austin My example combined two things: lexical fetches and (package/aggregate) fetches.
pmichaud_ looks at the example again
the example in the ticket only showed lexical 00:22
00:22 kj joined
darbelo The two approaches that make sense to me are: The default init() can allocate a 'big enough for most uses' buffer, that we grow as needed. Or, init() leaves the thing empty, and we allocate storage on first assignement, when we know how big the thing will be. 00:23
pmichaud_ oh, in the ticket it also says 00:24
Austin pmichaud_: True. But the "load, unless_null $Px, vivify_, default, vivify_YY:" pattern is the same for lexical loads and aggregates.
pmichaud_ "we expect about a 2-3% reduction is pbc size (pir lines != opcode words) and a corresponding 2-3% increase in execution speed. "
Austin So my grep caught them both.
darbelo I can argue it both ways, but it'll depend on what our typical use case will be.
pmichaud_ my question is how many of those patterns were lexical lookups
anyway, with
Austin Right. That I didn't count.
pmichaud_ "we expect about a 2-3% reduction is pbc size (pir lines != opcode words) and a corresponding 2-3% increase in execution speed. "
purl i already had it that way, pmichaud_.
Whiteknight darbelo: I like the second idea. I think they should start empty, and then become fixed-size on assign
pmichaud_ ...why would a 2-3% reduction in pbc size result in a 2-3% increase in execution speed? That doesn't follow from my experience. 00:25
ttbot Parrot trunk/ r42057 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/120439.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
chromatic My guess is that the execution improvement will be about half of the size improvement. 00:26
pmichaud_ I'm guessing even less.
when I moved CodeString and Capture from being written in PIR to being written in C (essentially combining multiple operations into a single C method), I didn't get near that level of performance increase 00:27
darbelo Whiteknight: How does matrixy handle it's matrices now? Does it reuse storage on any operations?
Austin The size estimates were based on the original proposed 'vivify' op, which is now defunct.
Whiteknight darbelo: right now it uses nested RPAs, and allows resizing 00:28
pmichaud_ Austin: sure, size might be reduced by 2-3%, but there's no corresponding performance increase
Whiteknight in-place resizing
chromatic CodeString suffers from its use of METHOD.
kj good evening
purl Ah, evening. The tumultuous mind tarries and contemplates, reveling in the silence afforded by the diurnal proletariat. Good evening, indeed.
pmichaud_ chromatic: I think that's a bit of a wash (but could be wrong)
at any rate, we took what were several dozen opcodes and put them into C
bacek purl: (8505314725 - 5795672288) /8505314725 * 100 00:29
chromatic and cross the C/PIR boundary, which is never fast.
purl 31.8582265866711
pmichaud_ is the C/PIR boundary that much more expensive than a PIR-PIR call?
chromatic Oh yes.
pmichaud_ interesting.
Austin pmichaud_: The library has grown slightly. It now has 1411 occurrences of "find_lex" and 1415 of ", vivify_".
bacek speaking of speed: fib.pir is 31% faster now comparing to post pcc merge :)
Austin Suggesting there are 4 places where aggregates are accessed.
pmichaud_ Austin: right 00:30
chromatic bacek, we have another 19% to go then.
pmichaud_ so in the new NQP, you would end up with 1411 occurrences of find lex and 4 occurrences of vivify
bacek chromatic: it will tough...
Austin Won't you be vivifying parameters?
pmichaud_ which makes me think I'm essentially correct that lexical lookups swamp all other forms
parameters are already vivified, by definition
i.e., they come in as arguments supplied by the caller 00:31
Austin foo(My::symbol::name)
It's how I create nulls.
pmichaud_ My::symbol::name takes care of the vivification before calling foo
Whiteknight oi! This is such a pain. We have so many places where we really need access to two integers: size, resize, index/get, index/set, etc
and the VTABLE interface is basically useless for it 00:32
Austin I just use a symbol name that doesn't exist, and the lookup returns null.
darbelo Whiteknight: It rezises the R(RPA)A on *shrinking* matrices?
pmichaud_ that will likely change in the new NQP
bacek chromatic: can we reuse Sub's RetContinuation?
Whiteknight darbelo: No, not yet anyway
Austin Man, you mean my is_null function will become useless?
:(
Whiteknight Matrixy has a really bad implementation, that's why I'm rewriting it
Austin All that work, for naught.
chromatic bacek, manual recycling?
pmichaud_ it will become much better
my $foo := PIR::null
bacek chromatic: caching inside Sub and reusing 00:33
pmichaud_ (which will execute the null opcode and bind $foo to the result)
bacek chromatic: it's about 35% of all time spent in fib.pir
chromatic I see that.
I don't think we can recycle that so easily. Our subs are re-entrant.
darbelo Whiteknight: Oh, I was just checking for behaviur we might want to preserve.
pmichaud_ anyway, I figure that if you pass NULL as an argument to a subroutine, you have a reason for wanting it to be NULL and NQP shouldn't be vivifying it for you. 00:34
Austin :)
FWIW, those four places where the aggregate accesses occur get run a whole lot.
pmichaud_ sure, but I don't think we're saving much in terms of execution speed there
bacek chromatic: what about using TLS for it? 00:35
chromatic TLS?
purl TLS is Transport Layer Security or the Times Literary Supplement or the latest version of SSL (3.1 or something like that) or Thread Local Storage or at en.wikipedia.org/wiki/Transport_Layer_Security or required for XMPP
Whiteknight darbelo: we need a function to copy the buffer from one size to another (bigger or smaller)
and with that, we can resize pretty easily
pmichaud_ either the elements exist, in which case we branch, or they don't exist, in which case we create a new object. That's the same in all the scenarios we've posited.
bacek chromatic: Thread Local Storage
Austin I'm thinking that my code might be deficient in aggregate accesses, because I've gone out of my way to put everything together as method calls.
chromatic I'd rather explore merging Context and RetCont.
Whiteknight chromatic: true! 00:36
pmichaud_ it's only a question of whether the branch is occurring in PIR or if it's occurring inside of an opcode
darbelo Whiteknight: We could, with some extra bookkeeping, avoid the shrink operation and save on memory allocation.
pmichaud_ i.e., I'd think that fetch/vivify are really only improving our .pbc size, not really increasing code speed 00:37
dalek TT #1141 created by kjs++: Parrot API changes breaks PIRC
pmichaud_ we're just saving the cost of opcode dispatch; I'm not sure how much that is.
Whiteknight darbelo: agreed. I'm storing x/y sizes, so we can shrink those bounds without reallocating the underlying storage
Austin I think that's what everyone else is agonizing over right now :)
pmichaud_ ?
"everyone else"? 00:38
you mean the pcc cost? that's subroutine dispatch, not opcode dispatch
Austin Ah.
pmichaud_ that's the cost of the invoke opcode, not the cost of opcodes in general :-)
bacek chromatic: interesting... We have 1M calls to Parrot_allocate_context and 1M calls to new_ret_continuation. Allocate context is heavier than new_ret_continuation. But context takes ~7% vs 35% for continuation. 00:39
pmichaud_ the fact that fixing invoke to be faster results in double-digit performance improvements just indicates how much of parrot execution is being swamped by the cost of subroutine dispatch :-)
bacek chromatic: something is terribly wrong here...
chromatic I'm sure that varies depending on PObj allocation.
darbelo Whiteknight: And (for cblas, at leat) we can take advantage of the 'Row-Major'/'Column-Major' C/FORTRAN thing to avoid most transposing.
chromatic It just so happens that in this particular order, the GC runs more often for pmc_new with RetCont than pmc_new with Context. 00:40
Whiteknight darbelo: ATLAS supports flags for rowmajor/colmajor operations
Austin Anyway, back on topic: You're saying that fetch is essentially only needed for aggregate accesses, since PCT will be smarter about lexicals. What about vivify?
pmichaud_ since NQP will be smarter about lexicals.
bacek chromatic: sounds reasonable...
pmichaud_ NQP will be able to assume that lexicals are vivified upon declaration. 00:41
darbelo That makes the MATLAB a' operation trivially cheap.
pmichaud_ there is no other vivification for lexicals.
vivification for aggregates would still be the same as now
darbelo And, from what little MATLAB I remember ' was used fairly heavily.
pmichaud_ i.e., fetch the element, branch unless null, build a new element, bind in the aggregate 00:42
Whiteknight darbelo: so the question is this: do we want to resize dynamically (grow when accessed but never shrink) or do we want to specify a fixed size ahead of time
I'm thinking now that dynamic resizing might be best
darbelo Whiteknight: I agree.
pmichaud_ the only significant difference between "fetch" and "vivify" is that vivify also does a bind
Austin Sure. 00:43
So when will nqprx land?
pmichaud_ (which should answer chromatic's question about how to implement the vivify opcode, should we decide we want to do that)
Whiteknight darbelo: Okay, I'm going to throw together a prototype of that
pmichaud_ I'll have variables done this weekend.
Whiteknight we can modify it later
bacek chromatic: nope. gc_ms_more_traceble_objects called only ~4000 times.
chromatic pmichaud_, does this obviate the experimental fetch opcode?
pmichaud_ chromatic: for the moment, it seems yes.
I need to think about it a bit more.
darbelo I won't have many tuits over the weekend, but I'll most assuredly be all over that on monday. 00:44
pmichaud_ I really like the idea of having opcode support for lvalue versus rvalue semantics, because I agree that the code we generate from PAST for it looks really ugly and inefficient
Whiteknight darbelo: that way we can do resizing (at a cost), and we can support preallocating which will be cheaper 00:45
pmichaud_ adding fetch/vivify makes the code look less ugly, but it's not significantly more efficient.
chromatic We could benchmark it.
00:45 zak_ joined
pmichaud_ I wouldn't rip out the experimental ops just yet, no. 00:46
benchmarking it would be good -- I could put together a quick benchmark fairly quickly.
chromatic If you have callgrind installed, that's the way to check performance.
pmichaud_ I do, and yes, it is.
dalek rrot: r42058 | chromatic++ | trunk/src/pmc/retcontinuation.pmc:
[PMC] Enabled (experimental) recycling of RetContinuation PMC when it gets

RetCont PMC will merge with Context soon, but until then, this is a nice improvement that's easy to revert if it causes problems.
00:47
pmichaud_ the _other_ optimization I've been considering is to make PAST smarter about knowing when it needs to re-fetch a lexical in the first place
for example, right now we fetch a lexical on every use 00:48
thus:
my $b := $a + $a * 3
darbelo Ok, gotta go now.
pmichaud_ does two fetches of $a, along with creating (separate) temporaries for each if it hasn't already been vivified somehow
but if PAST can analyze the code path to determine that the second $a has to be the same thing as the first, then it can re-use the register it got from the first fetch 00:49
instead of doing a re-fetch
of course, we have to have some way for the compiler to signal "hey, it's possible for re-binds to take place here", so that it doesn't perform that optimization. 00:50
dalek TT #1141 closed by kjs++: Parrot API changes breaks PIRC
Coke msg bacek fperradmsg bacek, I isolate a problem with r42039, see nopaste.snit.ch/18440
purl Message for bacek stored.
ttbot Parrot trunk/ r42058 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120490.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
pmichaud_ the other optimization I'm really looking for is to be able to determine when a block can be inlined instead of generating a separate parrot sub 00:51
bacek Coke: too late. I already fixed it :)
pmichaud_ for example:
if $b > 3 { say($b); }
doesn't really require a separate parrot sub for the block
right now it doesn't check for the case of "no new lexicals here, okay to inline" 00:52
(or other reasons why a block might not be safe to inline)
dalek rrot: r42059 | kjs++ | trunk/compilers/pirc/src/bcgen.c:
[pirc] fix some Parrot API invocations, particularly passing STRINGs instead of C strings
00:53
ttbot Parrot trunk/ r42059 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120509.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 00:55
pmichaud_ afk for a while
dalek rrot: r42060 | kjs++ | trunk/compilers/pirc/src/pirop.c:
[pirc] 'fix' op-signature calculator for stand-alone key operands, as in 'new Packfile?'
00:56
00:58 Zak joined
pmichaud_ chromatic: in fetch/vivify, how hard would it be for the last parameter to be a type instead of an object to be cloned? 00:59
i.e.:
ttbot Parrot trunk/ r42060 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120540.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 01:00
pmichaud_ $P0 = fetch $P1, 'key', ['Hash']
chromatic That's easy.
pmichaud_ I might want that.
I'm thinking that the aggregate cases are sufficient to warrant fetch/vivify
chromatic In addition to or instead of what's there now?
pmichaud_ I was thinking it would need to be "instead of"
if "in addition" is possible, what's the downside? 01:01
kthakore hello folks is there a place of nightly Rakudo/Parrot tarballs?
pmichaud_ kthakore: there aren't nightly tarballs for rakudo, but you can always get a tarball from github
chromatic The downside is more op variants, but they're easy to create.
pmichaud_ we can distinguish a constant ['Foo'] from other PMCs? 01:02
chromatic Yes, that's a Key.
pmichaud_ there's been some speculation it might not be a Key someday
still workable?
kthakore pmichaud_: ok. thanks
pmichaud_ kthakore: just go to rakudo's github page, click the "download" button, and you can get a current tarball or zip 01:03
chromatic If it's constant at compile time, that's reasonably easy.
I might have to experiment some though.
pmichaud_ chromatic: okay, good to know.
For now I think I want "instead of" 01:04
someday I might want "in addition to", but that can be off in the nebulous future
so
chromatic Instead of is easy.
pmichaud_ fetch $P0, $P1, key, ['Foo']
vivify $P0, $P1, key, ['Foo']
dalek rrot-linear-algebra: 2d8fbeb | Whiteknight++ | src/pmc/NumMatrix2D.pmc (2 files):
expand the matrix pmc a little bit. Add a resize function. Resizing is inefficient, so there is motivation to preallocate
pmichaud_ fetches $P1[key] into $P0, and if it doesn't exist it creates a new instance of ['Foo'] and returns that 01:05
in the vivify opcode case, creating a new instance of ['Foo'] also does a set_pmc_keyed on $P1[key] for the newly created object
kthakore pmichaud_: I am justing going to cron git pull and tar it myself :) Thanks
pmichaud_ kthakore: that works, although you'd also want to skip the .git directories. 01:06
chromatic pmichaud_, if you give me a patch to t/op/fetch.t, I can make the other work.
kthakore pmichaud_: oh crap ... yeah ... thanks
pmichaud_ chromatic: okay, I'll send along a patch. Might be a few hours before I can do that -- have other things I have to do here now.
chromatic Ditto.
pmichaud_ there's no rush on fetch/vivify for me at the moment, I won't get to using them in PAST/NQP until Sunday at the earliest. 01:07
PerlJam kthakore: git help archive
pmichaud_ but I think having them will make code gen a lot cleaner, and that's likely worthwhile on its own.
if nothing else, it keeps people from looking at it and going "Ewwww...." 01:08
okay, gotta run. Thanks.
kthakore PerlJam: that saves time thanks 01:10
Whiteknight okay, now I just need to figure out how build this damn PMC
dalek rrot-linear-algebra: 8c86b73 | Whiteknight++ | src/pmc/NumMatrix2D.pmc (2 files):
add resize function (thought I already did) and fix the exception that gets thrown
Coke seen kid51? 01:14
purl kid51 was last seen on #parrot 23 hours, 43 minutes and 36 seconds ago, saying: must sleep
Coke bacek: you added a file but didn't update the manifest. 01:16
this tends to break the build. :P
bacek Coke: *sigh* 01:17
chromatic Oh, MANIFEST... I've loved you since I was a child. They're always trying to take you away from me. Why? Because you're busy work... and they have... the SPACE! MADNESS! 01:19
01:20 tokuhirom joined
Whiteknight don't even say nice things about MANIFEST in jest 01:23
chromatic I wasn't aware that proximity to original Ren and Stimpy scripts could reflect well on MANIFEST.
Whiteknight ah, that's where it was from 01:24
knew it sounded a little familiar
I haven't seen Ren and Stimpy in years
chromatic You were in for serious mockery if you didn't recognize even the name "Ren and Stimpy". 01:25
dalek rrot-linear-algebra: 6ecabdb | Whiteknight++ | src/pmc/NumMatrix2D.pmc (2 files):
actually pretend to do the resizing function correctly
01:28
Whiteknight I spent more of my formative years in front of Ren and Stimpy than the guidance councelor thought was healthy
chromatic Watching the first season in its entirety is unhealthy. 01:29
Whiteknight powedered toast man, rubber nipples, anthropomorphic mud skippers, etc. they all ruined me
jsut don't pee on the electric fence 01:30
Whiteknight "what do you want to drink?" "MEAT!" 01:31
"no sir, I don't like it"
dalek rrot: r42061 | bacek++ | trunk/src/pmc/callsignaturereturns.pmc:
[core][cage] Add CallSignatureReturns.destroy.
01:33
rrot: r42062 | bacek++ | trunk (2 files):
Use FixedSizeStorage in CallSignatureReturns for small amount of returns. Give us another ~1.5% of performance
rrot: r42063 | bacek++ | trunk/MANIFEST:
[cage] Add callsignaturereturns.t into MANIFEST. Coke++, MANIFEST--
rrot-linear-algebra: ab6446f | Whiteknight++ | src/pmc/NumMatrix2D.pmc (2 files):
fix a stupid typo
01:34
Whiteknight yay! the fixed-size allocator swoops in to save the say again!
bacek oookey... I can't spot any other big improvements without merging CallSignature and Context (and probably RetContinuation)
Whiteknight it's like the Zorro of performance
Austin sings "When nature's callin', don't be stallin' - use your common sense! Take it slow, find a place to go, but DON'T whiz on the electric fence!" 01:36
ttbot Parrot trunk/ r42061 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120603.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
Parrot trunk/ r42063 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120605.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
Austin The opcode 'time' returns a Num, but is that in seconds, or what?
01:37 mikehh joined, Zak joined
chromatic bacek, how are we versus when we started? 01:40
Coke Austin: that eventually just invokes system time() 01:41
Austin Ah.
bacek chromatic: almost same as 2 hours ago - ~32% faster comparing to pcc merge.
Coke Austin: (presuming I read that right. I may not)
Austin :)
bacek chromatic: I can retest it
chromatic Did you see my ~5% improvement? 01:42
Whiteknight I'll show you my 5% improvement
Coke svn latest just segfaulted building PGE on osx 10.4/intel.
re-testing...
is there a better way to see if $N1 is a NaN other than stringifying? 01:44
bacek chromatic: oops, missed it.
Whiteknight Coke: I feel like we should have an isnan opcode 01:45
plobsing isn't NaN the only number where $N1 != $N1
?
Coke Whiteknight: I would tend to agree. esp since I have to do the stringify check a lot. 01:46
(hurm. segfault is not repeatable.) 01:47
dalek rtcl: d04804f | coke++ | src/mathops.pir:
Improve usage errors and nan handling for several procs in ::tcl::mathop
Austin Okay, I've found a bug someplace. 01:49
Or spectacularly bad gc performance. 01:50
nopaste "bacek" at 114.73.162.96 pasted "Performance tests:" (11 lines) at nopaste.snit.ch/18442 01:54
bacek purl: (8505247882 - 5372280006)/8505247882*100 01:55
purl 36.8357033147785
bacek purl: (6958440380 - 4637738821) / 6958440380 * 100 01:56
purl 33.3508865818579
bacek chromatic: 36% with GC involved, 33% without.
Austin Wow. My problem seems to be a pir compiler problem. :( 01:58
bacek 3519952820 at 1.4 on fast core... 02:04
(5372280006 - 3519952820) / 3519952820 * 100 02:05
purl 52.6236367565858
bacek *sigh*
We are doing something wrong...
chromatic: r42058 epically broke TapTinder. 02:07
dalek rtcl: 77b55f1 | coke++ | docs/spectest_skips:
mathop no longer segfaults.
02:09
mikehh bacek: and me - /src/pmc/callsignature.pmc:421: error: ISO C90 forbids mixed declarations and code 02:16
02:17 Zak joined 02:36 janus joined 02:39 mikehh joined 02:43 bacek joined
bacek mikehh: thanks for spotting codetest failure. 02:46
dalek rrot: r42064 | bacek++ | trunk/src/pmc/callsignature.pmc:
[cage] Reorganise CallSignature.get_string variable initialisation to prevent compiler warnings.
02:47
ttbot Parrot trunk/ r42064 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120717.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 02:50
Austin Anyone know if imcc is O(n**2) or something? 02:57
02:57 mikehh_ joined
bacek Austin: it can be even n**n... 02:59
Austin That's optimistic.
I just created a pair of subs with 100,000 x 3-line code paragraphs.
It's taking a while to compile.
bacek Austin: .annotate? 03:00
purl rumour has it .annotate is described in PDD19, but there's some lower-level details in PDD13
Austin Nope.
bacek just plain .sub;noop;.end?
Austin Just some perl that emits $Pxx = find_lex '$what' ; unless_null $Pxx, branch ; $Pxx = new ['Undef'] ; branch over and over and over. 03:01
03:02 mikehh joined
bacek Austin: I suspect register allocator in IMCC 03:03
Austin Yeah, it's been like an hour. 03:04
I think I'll kill that.
10,000 wasn't too bad - maybe 2 minutes or so.
bacek Austin: try always use $P0 03:05
Austin I am always using $P11.
bacek hmmm... So, it's something different. 03:06
nopaste "Austin" at 98.235.55.43 pasted "make_fetches() sub" (18 lines) at nopaste.snit.ch/18443
Austin The vivify_$label is increasing, but everything else is contant. 03:07
There. 10k fetches took 3m4.4s to compile. 03:08
I'll try 11k, see what that says. 03:09
03:09 mikehh joined
dalek tracwiki: v17 | kurahaupo++ | ArrayTasklist 03:12
tracwiki: Add reference to RT#56718</a>; tidy page
tracwiki: trac.parrot.org/parrot/wiki/ArrayT...ction=diff
Austin That takes 3m47s, a difference of 43s. 03:13
purl, 227 / 184.0
purl 1.23369565217391
Austin purl, 1.1 **2 03:14
purl 1.21
Austin purl, 1.2**2
purl 1.44
bacek yay, O(N^2)
Austin purl, 184 * 1.44
purl 264.96
Austin I'm running 12000. We'll see if it takes ~ 4m25s 03:15
SCIENCE!!!
purl science is testable
Austin www.weebls-stuff.com/toons/science/ 03:17
Science, plus epilepsy.
5m17s 03:20
But with flash in the background. :(
4m8s with minimal activity. 03:24
I'm going for N**2
On the number of labels? Or conditionals? 03:25
Or number of opcodes?
purl number of opcodes is not tightly connected to execution speed.
Austin Replacing my matches with 'noop' line-for-line is <1s to compile. Ergo, not on LOC. 03:26
dalek rrot: r42065 | mikehh++ | trunk/compilers/pirc/src (2 files):
fix codetest failures - trailing spaces and linelength
03:27
ttbot Parrot trunk/ r42065 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120762.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
bacek Austin: labels? 03:29
purl labels are really pretty.
Austin Yeah, I'm working my way towards that.
Putting back a single $P11=find_lex '$foo' followed by 3x noop (12000 times) compiled in 16 s
Putting back $P11 = find_lex, then noop, then $P11 = new ['Undef'], noop compiled in 1m2s 03:30
dalek rrot: r42066 | mikehh++ | trunk/t (2 files):
set svn properties
03:31
Austin Now I'm making the branch be to a single, constant label at the bottom: unless_null, goto done
ttbot Parrot trunk/ r42066 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120786.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
03:32 mikehh joined
Austin I'm wondering if there's a symbol table that just gets lsearched. 03:32
03:35 colomon joined
Austin It's fun when the test case fails. Embarassing, but fun. 03:36
It's fun when the test case fails. Embarassing, but fun. 03:37
Still compiling the everything-does-goto-done file. 03:38
7m36s
Probably due to other stuff on the system.
dalek rrot: r42067 | mikehh++ | trunk/t/pmc/callsignaturereturns.t:
fix test failure - 2 tests were run
Austin I got rid of the unless_null, and brought back the various labels (now all unreferenced.) 03:39
03:40 JimmyZ joined
ttbot Parrot trunk/ r42067 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120822.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 03:41
dalek rrot: r42068 | mikehh++ | trunk/src/pmc/callsignaturereturns.pmc:
fix codetest failure - there should be at least one space between a C keyword and any subsequent open parenthesis
03:42
Austin 2m51s for that.
03:43 mikehh joined
Austin So creating labels doubles the compilation time, even when they aren't referenced. 03:43
ttbot Parrot trunk/ r42068 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120843.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
Austin Creating branches causes some kind of N**M, where M ~ 2, behavior. 03:44
Probably trying to shrink the offsets.
Or dorking around with blocks. 03:45
mikehh Has dalek gone to sleep? 03:55
dalek rrot: r42069 | mikehh++ | trunk/src/ops/experimental.ops:
fix codetest failure - opcode documentation errors
mikehh still missing 4 previous commits 03:57
ttbot Parrot trunk/ r42069 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/120889.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 03:58
mikehh messages
Austin What does "invalid arg type in named portion of args" mean?
Coke mikehh: (sleep) "just for a little while." 04:02
-> (23:57) From Koan, to random: - ['hip','hip'] (it's a hip hip array!) 04:04
*groan*
mikehh I think my connection is a bit wonky 04:13
chromatic Yes, everything with a name (label, register, sub, whatever) goes in the same hash in IMCC. 04:20
Register allocation performs a *linear scan* of that hash. 04:21
Austin Ah.
That explains the N**2 behavior;
chromatic It's technically worse than that, but yes.
I stopped counting at N^2 and realized that fixing that meant rewiring most of IMCC besides the parser (and parts of the parser). 04:22
Austin :)
Well, it does serve to encourage modular design. 04:23
But it makes profiling harder.
mikehh trunk - pre/post-config, smoke (#29353) PASS, fulltest FAIL at r42069 - Ubuntu 9.10 (beta updated) amd64
t/op/annotate-old.t - Failed test: 1 - in testf and testg (TT #1135)
t/pmc/eval.t - Failed test: 12 - in testr (Segmentation fault)
the remainder of fulltest passes
Austin s/profiling/ performance analysis/
mikehh needs a bit of a break 04:50
05:36 tokuhirom joined 06:05 eternaleye joined 06:07 TiMBuS joined 06:15 eternaleye joined 06:36 Zak joined 06:48 fperrad joined
chromatic msg whiteknight Does compact_pool actually do anything useful for us now? 06:50
purl Message for whiteknight stored.
07:00 bacek joined 07:12 desertm4x joined 07:17 desertm4x_ joined 07:42 cotto joined
cotto hi 07:42
and good night
dalek rrot: r42070 | chromatic++ | trunk/src/interp/inter_create.c:
[interp] Fixed a memory leak by freeing the interpreter's gc_sys pointer.
07:53
rrot: r42071 | chromatic++ | trunk/src/gc (3 files):
[GC] Moved Parrot_gc_free_attributes_from_pool() into src/gc/api.c and made it

modest (1.656%) performance improvement to fib.pir.
07:54
ttbot Parrot trunk/ r42071 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121006.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 07:55
Parrot trunk/ r42070 darwin-thread-multi-2level make error tt.ro.vutbr.cz/file/cmdout/121010.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 07:58
08:02 Zak joined
chromatic I don't care for that Windows box. 08:03
dalek rrot-linear-algebra: fbb3baf | (Markus Mayr)++ | src/pmc/NumMatrix2D.pmc:
Fixed some minor issues and added the VTABLE function *get_string. I tested this version against parrot and actually used it. Resizing and *get_string work now, but I did not figure out yet, how to use set and get.
08:24
chromatic Hm, we're within 8% of trunk. 08:33
pre-merge
08:34 colomon joined
chromatic 7.252% 08:35
purl 0.07252
moritz speed wise? 08:52
chromatic Yes. 08:53
6.571% now, by my measure. 08:55
Another clever hack will get us there. 09:00
dalek rrot: r42072 | chromatic++ | trunk/src/pmc/callsignaturereturns.pmc:
[PMC] Used attribute access instead of elements() vtable call where speed is a

Tidied code.
09:02
rrot: r42073 | chromatic++ | trunk/src/pmc/callsignaturereturns.pmc:
[PMC] Added allocate_initial_values() static function to CallSignatureReturns

This gives another 0.729% speed improvement on fib.pir because this is the most common use of this PMC.
chromatic --runcore=fast on the command line gives us another 2.119% improvement.
ttbot Parrot trunk/ r42073 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121116.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 09:05
Parrot trunk/ r42072 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/121133.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 09:09
mikehh trunk - pre/post-config, smoke (#29356) PASS, fulltest FAIL at r42073 - Ubuntu 9.10 (beta updated) amd64 09:36
t/op/annotate-old.t - Failed test: 1 - in testf and testg (TT #1135)
t/pmc/eval.t - Failed test: 12 - in testr (Segmentation fault)
the remainder of fulltest passes
mikehh gotta go to the store - bbl 09:38
dalek rrot: r42074 | chromatic++ | trunk/src/gc/api.c:
[GC] Deleted apparent vestigial setting of PObj_is_special_flag in
ttbot Parrot trunk/ r42074 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121229.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 09:40
09:44 iblechbot joined 09:49 payload joined 09:50 kj joined, chromatic joined
chromatic msg bacek Crazy hack idea: CallSigRet has enough storage space for a single return pointer *without allocating anything else*. 09:52
purl Message for bacek stored.
Infinoid drive-by crazy. 09:59
10:05 desertm4x joined
dalek rrot: r42075 | kjs++ | trunk/compilers/pirc/src (5 files):
[pirc] first C-string argument converted into STRING. Needs lots of hacks currently, to keep things working. Currently all strings are stored twice: once as a STRING, once as a C string. Once all is converted to STRINGs, the C-string stuff can be removed.
10:10
ttbot Parrot trunk/ r42075 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121305.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 10:13
10:30 baest joined 10:36 xenoterracide joined 10:38 kj_ joined 10:39 payload joined 10:58 payload joined 11:12 Whiteknight joined
Whiteknight good morning #parrot 11:21
Austin Guten Morgen, WhiteKnight. 11:22
Whiteknight purl msg chromatic: I believe compact pool still is used to manage STRING memory. I'll look into it but I don't think we have stopped using it
purl Message for chromatic stored.
Whiteknight hello Austin
kj good morning 11:23
Whiteknight hello kj
kj hi Whiteknight 11:24
11:36 joeri joined 11:54 bacek joined
bacek o hai 11:54
Whiteknight hello bacek 11:55
bacek msg chromatic It's really crazy idea. I like it!
purl Message for chromatic stored.
bacek hi Whiteknight
msg chromatic more crazy idea: we can add 3 fields value0, value1, value2 to store first 4 values without additional allocations. 12:02
purl Message for chromatic stored.
bacek purl: (5132872970 - 3088400055) / 5132872970 * 100 12:03
purl 39.8309665356865
12:08 ruoso joined
Whiteknight desertm4x++ # Work on parrot-linear-algebra Matrix PMC 12:09
purl msg darbelo: know anything about dynpmcs? We need to get the src/pmc/NumMatrix2D.pmc in parrot-linear-algebra added to the makefile. Then, we can start adding tests and stuff 12:11
purl Message for darbelo stored.
Whiteknight with this PMC working, next step is to start migrating Matrixy to use it instead of the nested RPAs nonsense 12:14
and we can start adding CBLAS bindings, which is key 12:24
bacek msg chromatic Do you have anything personal against diamond inheritance? We can easily create "pmclass ParrotContext extend Context extend CallSignature" almost with no code changes. 12:32
purl Message for chromatic stored.
12:33 mokurai left, flh joined 12:36 allison joined 12:40 jan joined
mikehh trunk - pre/post-config, smoke (#29358) PASS, fulltest FAIL at r42075 - Ubuntu 9.10 (beta updated) amd64 12:44
t/op/annotate-old.t - Failed test: 1 - in testf and testg (TT #1135)
t/pmc/eval.t - Failed test: 12 - in testr (Segmentation fault)
the remainder of fulltest passes
dalek a: 4450684 | unknown++ | src/pmc/lua (3 files):
fix segfault
12:45
a: a0384cc | unknown++ | .gitignore:
ignore *.patch
a: 3223771 | unknown++ | t/lua-TestMore:
update submodule lua-TestMore
rrot: r42076 | bacek++ | trunk/src/pmc/callsignaturereturns.pmc:
[cage] Remove CallSignatureReturns.push_pointer.
12:46
rrot: r42077 | bacek++ | trunk/src/pmc/callsignaturereturns.pmc:
[doc] Update CallSignatureReturns pod.
12:49
ttbot Parrot trunk/ r42077 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121549.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 12:51
Parrot trunk/ r42076 darwin-thread-multi-2level make error tt.ro.vutbr.cz/file/cmdout/121552.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 12:54
13:56 plobsing joined 14:02 szabgab joined
dalek rrot: r42078 | kjs++ | trunk/compilers/pirc/src (3 files):
[pirc] remove STRING member of %union in parser for now; it doesn't work yet.
14:40
ttbot Parrot trunk/ r42078 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121760.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 14:43
kj anybody around on windows who can spare a minute? 14:47
14:51 Psyche^ joined
dalek TT #906 closed by kjs++: [PIR] Assignment syntactic sugar restricted to destination parameters 14:54
14:56 fperrad joined
dalek rtcl: b617453 | coke++ | docs/spectest- (2 files):
another spectest - reclaim mathop.test
14:57
a: 21c7436 | fperrad++ | src/lib/luatable.pir:
table.insert throws an error when too many arg
15:05
rrot: r42079 | kjs++ | trunk/compilers/pirc/src/pircompunit.c:
[pirc] check duplicate declarations of .lex'icals. Implementation of TT1073
15:06
ttbot Parrot trunk/ r42079 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121815.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 15:07
dalek TT #1113 closed by coke++: segfault in ?? 15:11
15:14 Psyche^ joined
dalek rrot: r42080 | kjs++ | trunk/compilers/pirc/src/pircompunit.c:
[pirc] clean up code a bit, remove need for another auto var in set_lex_flag(); only set the .lex flag on a target if it wasn't done so already
15:19
TT #906 reopened by coke++: [PIR] Assignment syntactic sugar restricted to destination parameters 15:21
kj Coke: hi
Coke: ok, got your comment in the ticket. never mind! 15:22
ttbot Parrot trunk/ r42080 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121867.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 15:23
15:28 payload joined
dalek rrot: r42081 | kjs++ | trunk/compilers/pirc/src/pircompunit.c:
[pirc] add function doc for a (static) function; the constructor for key_entry objects
15:29
ttbot Parrot trunk/ r42081 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/121910.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 15:32
15:43 theory joined
PacoLinux I have core dumped with latest parrot in linux : pastebin.com/m680d2510 15:54
15:59 chromatic joined
Coke kj - i was going to make you reopen it, but apparently replying to was sufficient. =-) 16:04
kj Coke: well i can see in a way you want it open, but (1) the desired/required behaviour has been specced in pdd19, (2) the behavior has been implemented in PIRC, and (3), it's a wontfix for IMCC... 16:07
...for which the ticket was opened.
Coke the ticket is opened for /parrot/ 16:15
purl Hmm. No matches for that, Coke.
Coke and parrot can't do that yet.
it was opened for imcc because pirc didn't exist when the ticket was opened.
16:24 particle joined
mikehh trunk - pre/post-config, smoke (#29359) PASS, fulltest FAIL at r42081 - Ubuntu 9.10 (beta updated) amd64 16:39
t/op/annotate-old.t - Failed test: 1 - in testf and testg (TT #1135)
t/pmc/eval.t - Failed test: 12 - in testr (Segmentation fault)
the remainder of fulltest passes
IOW we have three failing tests at the moment - two of which are the same test in different runcores 16:40
PacoLinux with --optimize, parrot dont do core dump 16:53
mikehh PacoLinux: I haven't tested without --optimize for ages - maybe I need to try 16:54
16:58 davidfetter joined
Coke PacoLinux: do you mean, that /without/ optimize, parrot doesn't core dump? 17:33
PacoLinux without optimize does core dump : pastebin.com/m680d2510 17:34
chromatic hm. 17:41
Confirmed.
I think I've fixed it too. 17:53
18:14 theory joined
flh I'm playing with the new (shiny) PCC, but I think I need to know a bit more about continuations in Parrot to go on 18:15
can I use any PMC which can be invoked as a continuation? 18:16
chromatic I think so, but I'm not sure what you're asking. 18:21
flh it looks like Parrot has a default "Continuation" PMC which only restores a few settings in the context 18:22
chromatic Right. 18:23
flh I want to do more complicated things when a sub returns
18:24 nbrown_ joined
chromatic What do you have in mind? 18:24
flh So I'm writing my own Sub PMC and my own Continuation PMC: when MySub is invoked, it actually sets MyContinuation as someone's continuation (not sure yet about that "someone")
I'm trying to implement something like that : take a sub f which takes an argument and returns a sub, which itself takes another argument 18:26
in PIR, I would write something (equivalent) to (f(first_arg))(second_arg)
chromatic You want your sub to return somewhere else, based on the continuation you pass in? 18:27
flh but I want f(first_arg, second_arg) to work: so I'm writing my own sub which handles the "too many params" case, and sets a continuation which will actually call the result on the remaining argument
I think the answer to your question is yes: I want the sub to return somewhere else 18:28
chromatic Makes sense. 18:29
flh actually, I've just seen the returncc opcode: it does "goto ADDRESS(dest)", where "dest" is given by invoke'ing the continuation 18:30
I'll just pretend I haven't seen the tailcall opcode, which seems to expect more things about the continuation 18:31
parrot doesn't have a "stack" of continuations, right?
chromatic Right. It's a graph. 18:33
dalek rrot: r42082 | chromatic++ | trunk/src/pmc/retcontinuation.pmc:
[PMC] Fixed RetContinuation recycling in invoke() by invalidating the from

build in PGE, created by r42058. This also requires that the RetCont's from_ctx pointer can't point to the same place as its to_ctx, or else the wrong context gets nulled out. Something may not set the from_ctx pointer correctly before invoking the RetCont.
18:34 nopaste joined
flh sorry, I'm not sure to understand what you mean by a "graph" of continuations 18:35
it seems that each context has only one continuation (stored "current_cont") 18:37
ttbot Parrot trunk/ r42082 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/122120.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 18:43
dukeleto languages? 18:48
purl rumour has it languages is trac.parrot.org/parrot/wiki/Languages
18:50 Zak joined
mikehh ok that works - r42082 builds and tests without --optimize 18:54
dalek tracwiki: v102 | dukeleto++ | Languages 18:58
tracwiki: trac.parrot.org/parrot/wiki/Langua...ction=diff
19:08 mokurai joined
mikehh trunk - pre/post-config, smoke (#29360) PASS, fulltest FAIL at r42082 - Ubuntu 9.10 (beta updated) amd64 19:26
t/op/annotate-old.t - Failed test: 1 - in testf and testg (TT #1135)
t/pmc/eval.t - Failed test: 12 - in testr (Segmentation fault)
the remainder of fulltest passes
dalek TT #1142 created by mikehh++: test 12 of t/pmc/eval.t fails in testr (passes in other runcores) 19:28
19:34 joeri left
Coke I am having trouble with parrot r42082 19:38
installs fine, but then building partcl fails with:
PackFile_unpack: This Parrot cannot read bytecode files with version 5.3. 19:39
Parrot VM: Can't unpack packfile /home/coke/sandbox/parrot/runtime/parrot/library/PGE.pbc.
19:43 eternaleye joined 19:45 nbrown_ joined
mikehh just updated my Ubuntu 9.10 beta and it requires a restart - bbiab 19:46
19:54 mikehh joined
chromatic By my measurements, that's 0.546% faster than pre-merge. 20:20
dalek rrot: r42083 | chromatic++ | trunk/src/gc/mark_sweep.c:
[GC] Tidied code and rearranged a couple of branch conditions. No functional
purl somebody said changes was part of the communication in a release, and should involve actual human thought
rrot: r42084 | chromatic++ | trunk/src/call/args.c:
[PCC] Replaced vtable calls to FIA when passing and returning with macro

least a 3.207% speed improvement on the fib.pir benchmark.
ttbot Parrot trunk/ r42083 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/122247.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 20:29
Parrot trunk/ r42084 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/122248.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
dalek rrot: r42085 | chromatic++ | trunk/src/gc/api.c:
[GC] Allowed Parrot_gc_allocate_fixed_size_storage() to look up fixed-size pool

there's a pool already created. This gives fib.pir a 1.592% performance increase.
20:37
purl it has been said that increase is from processing gains.
20:39 colomon joined 20:40 kurahaupo joined
ttbot Parrot trunk/ r42085 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/122325.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 20:46
20:48 kthakore joined 20:59 bacek joined
chromatic bacek, time for one more benchmark. 21:00
mikehh chromatic: one of the things I wanted to do this weekend was to try and remove skipped tests - TODO if possible or check if they pass 21:01
any suggestions where I should start 21:02
chromatic Anything related to the JIT core is low-hanging fruit. 21:03
If you can get rid of arch-specific skips, that's good too.
mikehh ok I'll start there 21:04
chromatic must run; will backlog
mikehh according to my latest smolder report #29362 at r42085 - 11,203 ok, 0 failed, 260 todo, 572 skipped and 0 unexpectedly succeeded 21:08
21:09 TiMBuS joined
mikehh that's 572 skipped tests to check :-} (that's not including the ones in fulltest) 21:09
bacek good morning 21:10
purl: (8505247882 - 4831058690)/8505247882*100 21:12
purl 43.1990841769096
bacek purl: 4831058690/3088400055*100 21:13
purl 156.425935888024
bacek msg chromatic trunk is 43.2% faster then after merge, still 56% slower that 1.4 21:14
purl Message for chromatic stored.
21:17 Austin joined
mikehh hi bacek - less that two hours to go before morning for me and then they go back from BST to GMT or whatever 21:18
bacek mikehh: day light saving? 21:21
mikehh we lose it in a couple of hours here 21:22
bacek think that Day Light saving is most useless idea... 21:23
mikehh trunk - pre/post-config, smoke (#29362) PASS, fulltest FAIL at r42085 - Ubuntu 9.10 (beta updated) amd64
t/op/annotate-old.t - Failed test: 1 - in testf and testg (TT #1135)
t/pmc/eval.t - Failed test: 12 - in testr (Segmentation fault)
the remainder of fulltest passes
ok - I am going to TODO thos tests for the moment 21:24
those
bacek mikehh: try to steal autounfudge.pl from Rakudo 21:25
21:28 mikehh joined 21:31 ruoso joined
dalek TT #1143 created by bacek++: examples/benchmarks/overload.pir requires rewriting. 21:32
21:39 mikehh joined
Coke seen moritz? 21:56
purl moritz was last seen on #parrot 13 hours, 4 minutes and 10 seconds ago, saying: speed wise?
Coke verrrry big rain here. 21:59
moritz re
Coke moritz: OHAI. 22:00
any chance you can install infinoid svn-bisect CPAN package for me?
moritz OMGIZCOKE
Coke (if not, I can just build my own perl )
infinoid's, that i.s
moritz takes a look at the dependencies 22:01
Infinoid what huh? who's installing me from CPAN where? 22:02
moritz Coke: installed 22:05
purl installed is easy as well.
moritz at least App::SVN::Bisect, hope that's fine
moritz -> sleep
Coke yes, moritz++ 22:12
Infinoid wow, that is some serious rain. 22:15
Coke Infinoid: did you check the radar or somethign? 22:18
22:20 bacek joined
Coke bisecting... 22:22
purl hmmm... bisecting is a lot harder than I expected
Coke no, bisecting is easy if you use svn-bisect
purl okay, Coke.
Coke Infinoid++ 22:23
Infinoid: add svn-bisect run so I can kill my module! =-)
Infinoid Coke: it was raining cats and dogs here when I said that 22:29
domestic pets are dangerous when they fall from the sky. 22:30
Coke aha. bacek broke the build.
bacek Coke: no way! it was chromatic!
Coke bacek: trac.parrot.org/parrot/changeset/42055 breaks installed PGE. 22:31
(which breaks partcl.)
trying with HEAD minus that rev.
bacek "Installed PGE"?
Coke yes. I can no longer build partcl using the installed PGE at that point. 22:32
complains about invalid bytecode version. 22:33
bacek hmm... I just successfully build partcl on my box from parrot trunk.
Coke using partcl from github? 22:34
bacek Coke: Hey. Did you make realclean after r42038?
(yes, from github)
Coke bacek: i /always/ make realclean.
22:34 joeri joined
bacek Coke: it's... weird... I broke PBC compatibilty in r42038... 22:35
Coke retrying with head...
damnit, it works again. 22:37
I mean, YAY.
bacek :)
Coke I am tempted to track down when it was re-fixed, but iznotworthit.
bacek++ # trying it to make sure.
bacek gotta go. It's my kids birthday party today. 22:40
see you!
dalek tracwiki: v39 | bacek++ | ParrotQuotes 22:41
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
Coke me kicks off YA spec test run. 22:47
dukeleto is hanging out in a parrallelization session at the gsoc conf. anybody have any questions they want asked? 22:51
22:52 mokurai joined
Austin kicks the @#$%@#%@# C3 algorithm. 22:57
23:03 Whiteknight joined
Whiteknight good evening #parrot 23:05
23:11 Eevee joined
dukeleto 'ello 23:12
Austin sings "Boom di yada, boom di yada, boom di yada, boom di yada.." 23:16
Props to Stephen Hawking for appearing in a campfire girls video... 23:17
23:18 mikehh joined
Whiteknight hello dukeleto, Austin 23:20
Austin Stupid cache. 23:21
Hello Whiteknight
Whiteknight ls 23:24
Austin ls?
purl ls: cannot access /dev: Input/output error
Austin :)
botsnack
purl :)
Whiteknight ...typed that in the wrong window 23:25
Austin Really?
Coke or, "ww"
23:34 kj joined
dalek rrot-linear-algebra: c9a372f | Whiteknight++ | src/pmc/NumMatrix2D.pmc:
add some stub methods to the PMC
23:38
rrot-linear-algebra: f3e3e20 | Whiteknight++ | config/Makefile.in:
add some stuff to the makefile which I blantantly (and ignorantly) stole from Rakudo. I don't even know what this does, but it seems like a good start
23:44 eternaleye joined
Whiteknight anybody around here have strong makefile-foo? 23:50
specifically, I'm looking to build a dynpmc into a library
23:51 patspam joined
dukeleto 'ello 23:54
plobsing Whiteknight: isn't it the same as any other C file?
23:55 joeri left
Coke Whiteknight: partcl does that. 23:55
look for the section ## pmcs
dukeleto Whiteknight: looks like you have been working hard on parrot-linear-algebra, i hope I can start hacking on it soon
Whiteknight plobsing: it uses the Pmc2c file to translate the PMC file into C code 23:57
and I'm not entirely sure how that happens, since all the examples I've seen are more complicated then I expected them to be
dukeleto: yeah, I think we have a good prototype for the matrix PMC in place now 23:58
dukeleto Whiteknight: exciting! 23:59
purl i heard exciting was good enough.