Camelia, the Perl 6 bug

IRC log for #parrot, 2008-10-28

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 chromatic src/ops/*.c didn't get rebuilt?
00:00 Limbic_Region joined #parrot
00:01 kj builds fine on windows too
00:02 kj bedtime here. good night
00:04 dmknopp it built! make realclean did the trick
00:04 dmknopp sorry for the confusion, thx all
00:04 chromatic I suspect that touch src/ops/*.ops would have worked too.
00:04 chromatic Good to know that that fixed things though.
00:06 tetragon joined #parrot
00:09 AndyA joined #parrot
00:58 Coke chromatic: is 123 lines of PIR with a load_bytecode of PGE.pbc small enough?
00:58 Coke can still duplicate it sans tcl's PMCs.
01:18 Coke msg chromatic 70 lines is as low as I can go. Enjoy. =-)
01:18 purl Message for chromatic stored.
01:29 chromatic 70 lines is good.
02:21 ab5tract joined #parrot
02:32 petdance joined #parrot
02:43 Hunger joined #parrot
02:46 Coke whee!
02:46 Coke it was definitely a PITA coming up with that; but better me than you. =-)
02:46 * Coke plays some assassin's creed.
02:47 chromatic Aha, MMD autoboxing works now.
02:50 Coke +1
02:50 purl 1
02:50 Coke purl, +1 is <reply>
02:50 purl i already had it that way, Coke.
02:50 chromatic Running the tests now.
02:54 chromatic One failure, but I'll penalize autopromotion by one point of distance, and that failure goes away.
02:54 chromatic Life is good.
02:54 Coke chromatic++
02:54 Coke Life++
02:54 Coke karma monopoly?
02:54 purl monopoly has karma of 1
03:00 chromatic You're going to love the code, too.
03:00 chromatic Stupidly simple.
03:00 Coke simple is good
03:01 chromatic You're going to hit yourself in the head with the nearest blunt implement and say "They let THIS guy fix bugs?  Why, I could fix GC bugs myself if this is all the brainpower it takes to fix bugs!"
03:01 dalek r32211 | chromatic++ | trunk:
03:01 dalek : [MMD] Allowed autoboxing of primitives into their corresponding PMCs when
03:01 dalek : calculating MMD Manhattan distance -- at a penalty of one point of distance.
03:01 dalek : Parrot's calling conventions handle autoboxing already.  The one point penalty
03:01 dalek : prioritizes any subsequent multi variants which handle the primitives directly.
03:01 dalek : See RT #60124.
03:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32211
03:01 Coke oh, you mean the fix for my GC bug? I thought you meant r32211
03:03 chromatic I did mean that.
03:03 Coke well, it looked straightforward; doesn't mean I could have done it. =-)
03:04 chromatic Sure you could.  I've seen you type.  You can do it!
03:04 particle chromatic++
03:05 particle i hate production release nights.
03:05 chromatic Yes, but Heroes is on tonight.
03:05 particle especially when your SA is in philly and the world series is on and his team is ahead
03:06 Coke our big production release was just pushed back into at least December, if not January
03:06 Coke I have mixed feeligns.
03:06 particle my client does web stores for lots and lots of companies. they don't do any releases from 1nov to 1jan
03:07 particle so everybody's trying to get them in NOW
03:07 ab5tract particle: no worries, game got delayed
03:07 particle yeah, i know, which is why he's finally doing the work :)
03:07 ab5tract tho they might resume it later, i guess
03:07 Coke ... world series? really?
03:07 particle yeah, game 5
03:07 * Coke sips a diet grape ginger ale.
03:08 particle shoot, we need a PDS2008 attendees page
03:22 ab5tract PDS?
03:22 purl PDS is, like, Palin Derangement Syndrome
03:22 ab5tract lol purl thanks
03:22 Tene Parrot Developer Summit
03:26 Coke no, PDS is Parrot Developer Summit
03:26 purl okay, Coke.
03:37 cotto chromatic, I've got a nice minimal PIR segfault, but it's over my head to debug.  Should I post here or file a ticket?
03:38 particle TICKET.
03:38 Tene cotto: SOP seems to be to show chromatic if he responds here and post a ticket if he doesn't.
03:38 Tene Tickets are always better than not tickets, though.
03:38 particle :)
03:38 chromatic I'm hungry.  Tickets are better.
03:39 cotto ok
03:39 nopaste "cotto" at 96.26.202.243 pasted "PIR segfault with exceptions and multi VTABLE functions" (35 lines) at http://nopaste.snit.ch/14407
03:39 chromatic Could have been worse.  Could have said IMCC.  That would have been worse.
03:40 cotto I'll file a ticket then.
03:40 chromatic Except division by zero, which does touch IMCC.
03:40 chromatic Though it's not a compile-time division by zero.  Okay, you're lucky.
03:41 chromatic Guess: exception['message
03:41 chromatic Guess: exception['message'] is an empty string.
03:42 chromatic Hm, it isn't.
03:42 cotto nope.  It works fine if I use say instead of calling the sub.
03:42 chromatic Here's a fun one.
03:42 chromatic Change cause_sf to take a PMC instead of a string.
03:42 purl chromatic: that doesn't look right
03:43 chromatic too many arguments passed (3) - 1 params expected
03:43 chromatic current instr.: 'cause_sf' pc 35 (cotto_seggie.pir:25)
03:43 chromatic called from Sub 'main' pc 32 (cotto_seggie.pir:21)
03:43 cotto I saw that too, but it made me scared.
03:43 chromatic Guess: the exception handler isn't clearing parameters when you call a function from it.
03:43 chromatic Which explains some other problems we've seen elsewhere.
03:43 particle that'd be my guess
03:43 chromatic Including at least one Coke found.
03:44 chromatic But now I want pancakes, and that's all I can think about.
03:45 cotto a different, but tastier, stack
03:45 Tene what do you like in your pancakes?
03:45 particle http://heresabunnywithapancakeonitshead.com/
03:46 particle ah, production release done. time for something not involving electrons &
03:49 * Tene adds electrons to particle's pancakes.
03:57 Psyche^ joined #parrot
03:59 bacek chromatic: what the difference between "throw_from_c" and "throw_from_op"?
04:00 bacek Parrot_ex_*
04:00 chromatic bacek, NotFound knows better, but I think throw_from_op uses the same runloop.
04:01 bacek chromatic: thanks. Next question ;)
04:03 bacek Currently continuation added to exception by "op throw". Is it possible to add continutation in "ex_throw_from_c"?
04:03 * bacek trying to implement junction auto-threading...
04:12 chromatic I would think so, but you don't know if you're going to enter another Parrot runloop from there.
04:13 chromatic http://use.perl.org/~chromatic/journal/37753
04:13 tetragon joined #parrot
04:14 Tene bacek: I looked at that, but couldn't figure out how to make a continuation there.
04:15 Tene bacek: as it's specced, throw_from_c should be able to resume at the level of a C instruction, which you SHOULD be able to do by returning from throw_from_c, but when I tried that things broke badly.
04:15 bacek Tene: me either...
04:17 Tene There are some weird ghosts in the exception code that need to be cleaned up.  I started writing some notes on it that I should turn into tickets but haven't yet.
04:19 bacek I've already submitted #60166...
04:20 Tene Don't worry, there are still more.
04:21 bacek Tene: :)
04:23 Tene The weird one that I remember is exceptionhandler.pmc's invoke().  It accepts a 'next' argument and then does nothing at all with it.
04:28 Zaba_ joined #parrot
04:29 Debolaz joined #parrot
04:59 Ademan joined #parrot
05:21 tetragon joined #parrot
05:49 TimToady joined #parrot
05:49 diakopter joined #parrot
07:13 uniejo joined #parrot
07:16 tetragon joined #parrot
07:33 tetragon joined #parrot
08:11 iblechbot joined #parrot
09:05 Bzek joined #parrot
09:12 bacek joined #parrot
09:21 tomyan joined #parrot
09:52 kj joined #parrot
10:00 barney joined #parrot
10:43 bacek joined #parrot
10:58 tewk_ joined #parrot
11:08 bacek joined #parrot
11:39 gaz joined #parrot
11:57 barney How do I check whether a String PMC starts with a digit ?
11:57 bacek hi there
11:59 cognominal joined #parrot
12:05 dalek r32212 | bernhard++ | trunk:
12:05 dalek : [Pipp] Fix var_dump() for dumping arrays.
12:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32212
12:12 kj barney: from PIR or C?
12:20 barney from PIR
12:21 barney Currently I make a copy to a string register and call is_cclass
12:29 kj Maybe it'd be good to access such functionality through methods
12:29 kj but maybe that's question for #ps tonight
12:29 jan joined #parrot
12:31 Zaba_ #ps?
12:31 purl #ps is probably a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
12:47 tetragon joined #parrot
12:51 cognominal joined #parrot
13:07 Coke the whole "should this code be a vtable/PMC method/opcode/C function thing needs a thunk, I think.
13:07 Coke (to followup on barney)
13:10 barney Yes, I'm just looking at the Pipp data types.
13:11 barney Currently these are plain PMCs, but I'm wondering whether I should work with classes, as Rakudo does
13:13 gryphon joined #parrot
13:14 particle joined #parrot
13:17 Coke I think at the moment that depends on whether you'd rather implement code in PIR or C.
13:18 Coke Tcl went with PMCs mainly because that's what the original Perl5 PMCs did. I have no idea if I'll keep them.
13:31 barney I try to keep close to Rakudo, but I fear that e.g. PHPs OO is unlike Perl 6s OO.
13:32 szbalint w\h\a\t d\o y\o\u m\e\a\n?
13:34 * barney proposed § as namespace separator in PHP
13:35 barney Perl 6s OO seems to be much more prototype based. OTOH I haven't looked at the PHP reflection API yet
13:53 jhorwitz joined #parrot
13:58 grim_fandango joined #parrot
14:00 * Coke installs google earth on his iphone. spifff.
14:09 * cognominal got a problem with an iphone and learnt a magic incantation to reboot it.  pushing the lower button and the sleep button together
14:10 cognominal coke, there is no way to pick a pin in a place in the iphone google earth
14:11 cognominal at least non I found
14:11 cognominal s/non/none/
14:12 dalek r32213 | bernhard++ | trunk:
14:12 dalek : [Pipp] added 2 Perl 6 code samples,
14:12 dalek : used for comparing the PAST generated by Pipp and Rakudo.
14:12 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32213
14:14 gmansi joined #parrot
14:15 Coke cognominal: nope, seems to be more for viewing. I was happy to guess the "zoom out" control, though.
14:15 Coke (reboot) yup.
14:16 cognominal do you know the technical reason why Apple choose to use reference counting instand of true garbage collecting on the iphone?
14:16 cognominal less memory trashing?
14:17 cognominal I suppose the set of fast memory is limited on a iphone
14:17 Coke presumably because "that's how they do it on the mac"?
14:17 Coke ISTR obj-c is all about the ref counting.
14:17 cognominal Coke, nope, cocoa now support true GC
14:18 Coke then you know more than I.
14:18 cognominal my knowledge is partial thus dangerous
14:18 Coke maybe mdiep knows.
14:19 cognominal may be that only for 64 bits
14:19 Tene So they just need to add more bits to the iphone.
14:19 cognominal I just got a multitouch book cause my older book died.
14:19 Andy joined #parrot
14:20 cognominal apparently time machine did not get me back everything :(
14:27 * Coke tries to build Padre.
14:29 moritz Coke: a piece of cake... once wx is built ;)
14:33 bacek joined #parrot
14:46 Coke cpan, 'install Padre' barfed at some point. seeing if I can track down where. (strawberry)
14:57 bacek joined #parrot
14:58 Coke meh. not worth it.
15:04 kj joined #parrot
15:25 pmichaud barney:  currently the way to test if a string starts with a digit is is_cclass
15:27 pmichaud Does the Parrot wiki have a "recent changes" page or something like that?
15:30 barney TNX, WRT is_cclass
15:31 barney http://www.perlfoundation.org/parr​ot/index.cgi?action=recent_changes
15:31 pmichaud I meant the one on parrot.org, sorry.
15:32 Coke pmichaud: http://www.parrot.org/admin/content/node is the closest I can find.
15:32 pmichaud Access denied
15:32 purl Access denied is not cool on my main page
15:32 pmichaud You are not authorized to access this page.
15:33 Coke you have to login.
15:33 pmichaud I am logged in.
15:33 Coke ah. then you have to be an admin! =-)
15:33 Coke digging...
15:33 purl somebody said digging was when someone has made a stupid comment and then blindly tries to defend it, sprouting crap in the process
15:34 Coke does http://www.parrot.org/rss.xml work for what you need?
15:34 pmichaud that only seems to cover articles, not the wiki.
15:35 Coke forget digging...
15:35 purl Coke: I forgot digging
15:37 Coke pmichaud: http://drupal.org/node/217264 doesn't give me hope.
15:38 pmichaud Coke: okay, was just curious.
15:38 pmichaud I might create a RecentChanges page that says "we don't have one".
15:38 Coke looks like there's a RecentChanges module which we don't appear to have installed.
15:39 Coke I don't think I have perms to install modules on the site.
15:41 Coke at least, I don't see a big red  button that says "click here to install"
15:42 pmichaud Maybe it's blue.
15:42 Coke Allison probably knows who to talk to.
15:44 PerlJam parrot.org is drupal?
15:47 cosimo joined #parrot
15:48 Coke innit?
15:48 purl wicked!
15:48 davidfetter joined #parrot
15:50 PerlJam I dunno. But purl's right if so.
15:54 PerlJam oh, it's clearly drupal.   I must have been blind until just now.
15:54 particle coke: mailto:support@osuosl.org
15:55 dalek r32214 | bernhard++ | trunk:
15:55 dalek : [Pipp] Add a Makefile target 'make smolder_test'.
15:55 dalek : Fiddle with Parrot::Harness::Smoke in order to allow overriding
15:55 dalek : the project id and the report file.
15:55 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32214
15:55 * particle is dealing with production F-UP, so can't help more
15:56 barney mpeters++ for adding Pipp to the smolder server, http://smolder.plusthree.com/app/d​eveloper_projects/smoke_reports/10
15:59 Coke jhorwitz: I see from digging through email that you've done more than edit a wiki page in drupal; can you followup on patrick's request?
16:00 * jhorwitz hasn't been paying attension, and scrolls back...
16:02 Coke something RSS or otherwies that shows recent changes to the site.
16:02 Coke perhaps, say, the RecentChanges module.
16:03 jhorwitz i (or OSU) should be able to install that module.  hopefully the access issues aren't a big deal.
16:04 Coke 'tag, you're it'
16:05 hercynium joined #parrot
16:08 Coke jhorwitz++
16:08 jhorwitz hm, a tag and some unearned karma.  i guess i should actually do this...  :)
16:11 Lorn joined #parrot
16:30 dalek r32215 | bernhard++ | trunk:
16:30 dalek : [codingstd] remove trailing whitespace
16:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32215
16:33 chromatic joined #parrot
16:45 allison Coke: I have permissions to install drupal modules in parrot.org, what do you want added?
17:04 Tene allison: he wanted 'Recent Changes'
17:05 allison Tene: ok, thanks
17:06 Croke chromatic++
17:06 Croke allison++
17:07 chromatic Eh?
17:07 purl Eh is this right though?
17:07 Croke email.
17:08 Croke and chromatic++ # in anticipation of GC bugfixen.
17:09 Croke purl: no, eh is <reply>Speak up, sonny!
17:09 purl okay, Croke.
17:10 chromatic Trade you a GC bugfix if Allison fixes the "Where did these extra parameters come from in the exception handler?" problem.
17:10 chromatic Or Jonathan.  Don't say I'm not flexible.
17:11 NotFound What extra parameters?
17:12 chromatic cotto posted an example here last night (or this morning, for you Old Worlders).
17:12 chromatic Let me find it.
17:12 chromatic http://nopaste.snit.ch/14407
17:12 chromatic Change cause_sf to take a PMC instead of a string.
17:12 purl chromatic: that doesn't look right
17:13 chromatic I traced things down to src/inter_call.c, where init_call_stats gets the number of incoming parameters wrong.
17:14 chromatic I *think* that's because interp->params_signature is incorrect, but that's as far as I could get before I wanted pancakes and decided to fix Test::More's MMD.
17:16 NotFound I was looking at a maybe related problems: catching exceptions seems to leak memory.
17:16 chromatic We do seem to leak contexts somewhere (again).
17:16 NotFound Yes, I was thinking the same.
17:17 chromatic How's your Valgrind-fu?
17:17 NotFound Bad
17:17 chromatic Here's your chance to learn!
17:18 NotFound I hope that when introduced throw_from_op_args will be easier to catch the problem
17:19 NotFound I'm working on it now.
17:19 chromatic It should clean up things.
17:25 johbar joined #parrot
17:35 ambs joined #parrot
17:36 cjfields joined #parrot
17:44 ambs left #parrot
17:48 rdice joined #parrot
17:55 ruoso joined #parrot
18:04 Croke #ps?
18:04 purl somebody said #ps was a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
18:04 Croke time?
18:04 purl time is 18:04:17 2008 and (did you mean "clock"?) or flowing like a river
18:04 Croke clock?
18:04 purl Croke: LAX: Tue 11:04am PDT / CHI: Tue 1:04pm CDT / NYC: Tue 2:04pm EDT / LON: Tue 6:04pm GMT / BER: Tue 7:04pm CET / IND: Tue 11:34pm IST / TOK: Wed 3:04am JST / SYD: Wed 5:04am EST /
18:07 NotFound utc?
18:07 purl rumour has it utc is date -u or the timezone you use if you don't have a 1mm penis
18:07 Croke msg purl utc?
18:07 purl Message for purl stored.
18:12 dalek r32216 | pmichaud++ | lex:
18:12 dalek : [core]:  set outer_ctx in invoke, switch newclosure to be clone+capture_lex
18:12 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32216
18:21 masak joined #parrot
18:23 pmichaud #ps in 7
18:28 Tene But... but I don't have anything to report yet?
18:28 Tene svn rm languages ; svn commit
18:28 masak ouch.
18:29 cotto svn undo
18:30 pmichaud #ps in 0.
18:42 gaz joined #parrot
18:52 Lorn joined #parrot
19:11 nopaste "tene" at 160.79.186.34 pasted "remove old 'don't invoke an EH more than once' check" (20 lines) at http://nopaste.snit.ch/14410
19:18 dalek r32217 | chromatic++ | trunk:
19:18 dalek : [runtime] Updated Test::More and Test::Builder to use PMCs for all MMD
19:18 dalek : dispatchy arguments.  This should make the code more robust for HLL use.
19:18 dalek : However, it did necessitate some changes in a couple of tests to make them
19:18 dalek : smarter, as dispatch is now more correct in Test::More.  In particular,
19:18 dalek : t/pmc/n_arithmetics.t now uses a second optional parameter to is() to specify
19:18 dalek : the expected precision of a float comparison.  This interface may change.
19:18 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32217
19:25 johbar joined #parrot
19:27 * Croke ponders offering a bounty to fix his GC bug.
19:29 chromatic I already have paper towels.
19:32 Croke Am I that transparent?
19:33 chromatic When you get down to a 32" waist, yes.
19:34 dalek r32218 | kjs++ | trunk:
19:34 dalek : [pirc/new] when including files, let Parrot search wherever it is defined to be searching. In order for this to work, you must run pirc from parrot root directory, not compilers/pirc/ directory.
19:34 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32218
19:39 * jhorwitz contemplates a PIR cookbook wiki
19:39 moritz jhorwitz: you could integrate that with the parrot wikibook
19:40 jhorwitz very true...
19:40 purl very true... is it avoidable though? Would escaping it work?
19:40 * jhorwitz escapes purl
19:41 Tene purl: forget very true...
19:41 purl Tene, I didn't have anything matching very true
19:50 dalek r32219 | kjs++ | trunk:
19:50 dalek : [pirc/new] nicer layout for -E preprocessing option; instructions are nicely formatted + print operands.
19:50 dalek : This option can be used for pretty-printing ('pirtidying').
19:50 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32219
19:51 Tene allison: any idea why ExceptionHandler's invoke() accepts a *next argument but doesn't do anything with it?
19:52 allison all invokes accept a *next argument
19:52 Tene Ah.
19:52 Tene Right.
19:52 Tene Clever.
19:54 spinclad (half-thought from #parrotsketch: C< name = push_eh; ... pop_eh name; >; would this allow surer track of which eh to pop?)
19:55 chromatic I'd almost rather see DISABLE THIS EH SOMEHOW.
19:55 Tene disable or remove?
19:56 chromatic Either/both.
19:56 chromatic Or disable all exception handlers immediately, and force people to reactivate them if they want them to stay active.
19:57 chromatic Branching around in code and hoping to get the push_eh/pop_eh pairs right for every possible path through the call graph seems like a recipe for leaks to me.
19:57 Tene There was also discussion of "all properly-scoped EHs are cleared at scope exit"
19:58 pmichaud "disable this eh"  is really just a method on the eh, yes?
19:58 Tene it would be nice if there was a way to get the EH from itself.
19:59 pmichaud that sounds like a .get_results feature.
19:59 Tene yeah
19:59 chromatic The only scopes we have in Parrot right now are compilation units.
19:59 spinclad 'pop/remove this eh' doesn't sound like an eh method, though
19:59 chromatic and look there, free Spanish lesson from native polyglots.
20:00 pmichaud correct, pop isn't something we do on an eh, it's something we do on the eh list
20:00 spinclad chromatic: spanish lessons are on topic today, too, i notice
20:01 chromatic I don't like push/pop as a metaphor anyway.  It makes exception handlers sound like a stack, rather than something where dispatch works.
20:01 allison scoped EHs works now
20:01 allison they're stored in the context
20:01 allison so, they're GC'd when the context is no used
20:02 allison chromatic: agreed that push/pop is the wrong metaphor
20:03 NotFound And there is also the public relations impact of having things called push and pop and talks about stackless ;)
20:03 allison chromatic: I originally planned to eliminate pop_eh and change the name of push_eh to 'add_eh', but the transition was too hard
20:03 allison NotFound, it's not actually a stack anymore, it's an array stored in the context
20:04 allison NotFound: they're just still called push/pop
20:04 NotFound allison: yes, but the names gives wings to bad critics.
20:04 Croke no point in renaming opcodes until we rename ALL of them.
20:04 allison NotFound: these are definitely on the list to be renamed
20:04 chromatic Look, a big thud fallacy!
20:05 allison NotFound: once we've completed the transition, I'd be happy to see the rename done
20:05 Croke I don't know what means, but I am a fan of the name. =-)
20:05 allison should be a quick transition
20:05 Croke (and I was kidding, btw.)
20:05 allison (maybe a branch, maybe just a patch)
20:06 chromatic It just seems to me that if we have typed exceptions, a stack is completely the wrong metaphor.
20:06 dalek r32220 | kjs++ | trunk:
20:06 dalek : [pirc/new] remove ugly code that folds constants for math ops, if we find out they don't exist: They should exist, or the user shouldn't write them/compiler shouldn't generate them. Fake ops are eeeeevil!
20:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32220
20:07 chromatic Handlers of the same time could stack (nested scoping is fine), but we shouldn't expose the details of that implementation any more than saying "Scoped exception handlers get called innermost outward" and leave it at that.
20:07 Croke $I1 = add_eh $P1; del_eh $I1
20:07 allison chromatic: one possiblity (and it's how the C functions work now), is that the 'pop_eh' equivalent takes a PMC argument, which is the same handler PMC that was pushed
20:07 allison add_eh $P1/del_eh $P1
20:08 chromatic That seems cleanest to me.
20:08 spinclad 'handlers of the same type'?
20:08 chromatic Two handlers that handle EXCEPTION_ILL_INHERIT but defined in different scopes, for example.
20:09 NotFound allison: but with push_eh label we don't have the handler pmc available.
20:09 allison NotFound: yes
20:09 spinclad allison: if $P1 already has an eh (from last iteration, say), would 'add_eh $P1' del it?
20:09 pmichaud I'm thinking anyone who wants to do more than a simple handler shouldn't be using the push_eh label syntax for it.
20:10 pmichaud either that or we should do:    $P1 = new_eh label, type
20:10 allison I'd be more inclined to add '$P1 = add_eh <LABEL>' than to mess about with integer indexes
20:10 chromatic Integer indexes are too easy to lose.
20:10 chromatic Or fake.
20:10 Croke 'sfine.
20:10 chromatic crashy crash crash
20:11 allison pmichaud: ah, great minds think alike :)
20:11 pmichaud allison: I've had the advantage of chatting about this with Tene++ a little bit.  :-)
20:11 allison spinclad: no, adding an exception handler just adds it to the array, you can add the same exception handler as many times as you want
20:11 pmichaud "add the same exception handler" -> "invoke the same exception handler"
20:11 mberends joined #parrot
20:12 NotFound I like the idea of making the created handler available
20:12 allison pmichaud: both
20:13 pmichaud afk, gotta get dinner groceries for tonight.
20:14 Croke Should we support PIR sugar for discarding unwanted OUT values from opcodes?
20:15 spinclad allison: good, then a HLL could generate its 1e6 eh's (for its own good purposes) and store them as it likes
20:16 Psyche^ joined #parrot
20:17 dalek r32221 | kjs++ | trunk:
20:17 dalek : [pirc/new] add comments and remove old structure definition.
20:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32221
20:17 chromatic More PIR sugar?
20:17 chromatic We have opcodes which have side effects?
20:18 kj PIR's sweet enough?
20:19 particle Croke: something like ($I0 :unused) = isnull $P0 ??
20:19 kj why would you invoke the op in that case?
20:19 particle please don't address the fact that isnull is not the best example
20:19 kj ok, maybe bad example..
20:20 kj sorry :-)
20:20 chromatic I can't think of a good example.
20:20 particle :P
20:20 particle me neither
20:20 kj I can't see the benefit
20:20 chromatic You'd need an op which has an effect and a side effect, and you'd call it only for the latter.
20:20 particle ($S0, $I1 :unused) = $P0()
20:21 Croke subclass?
20:21 kj what can the pir compiler do with that information?
20:21 Croke the new add_eh?
20:21 particle it's a hint to the alligator
20:21 spinclad i know! make register -1 in each class be a write-only discard register!
20:22 kj that's a good reason
20:22 chromatic I don't believe we do return count checking now anyway.
20:22 Croke particle: for method calls, it doesn't matter. I'm thinking opcodes only.
20:22 chromatic That's not an op anyway.
20:22 particle c: no, we don't, but we should
20:22 particle Croke: you mean for invoke?
20:22 spinclad ($I-1 :unused, $S0) = $P0()
20:22 chromatic You're thinking $I0 :unused = paint_house $P1
20:22 chromatic which gets all of the equipment and paints your house
20:23 chromatic but you don't care if it paints your house
20:23 chromatic you're only calling it to get out your ladder
20:23 chromatic </subtle>
20:23 kj hehe
20:23 particle damn. my neighbor *still* has my ladder.
20:23 kj ENOLADDER
20:24 spinclad mine too!
20:24 spinclad do they know each other??
20:24 allison Croke: it would have to be a separate opcode anyway, because it wouldn't have a valid destination register to assign to
20:25 kj what allison sais
20:25 kj says
20:25 kj was just typing that... but in silly wording
20:25 * particle cheers on the dow
20:25 spinclad so +I+ should call $I-1 = paint_house $neighbor to get my ladder back.
20:26 spinclad s/+/*/g
20:28 spinclad thanks, chromatic, that's a plann!
20:29 Croke allison: sure it would. it'd be a register would be free to be override by PIR in the next opcode.
20:30 Croke not really needed, of course; we can always just do $P99 = foo_op and just ignore it.
20:30 kj Croke: and it'd be only for ops, not invocations?
20:30 kj yeah,but $P99 would be allocated
20:30 Croke yes. you can already ignore the return value of an invocation.
20:31 Croke and if it were never used after that, the register could throw away the value anyway.
20:31 Croke or reuse the real register.
20:31 kj well, kinda. But say you want the nth return value, you need to store the first n-1 return values as well
20:31 spinclad .local pmc dummy; dummy = paint_house $neighbor; dummy = something $else
20:31 Croke ... opcodes don't have n return values.
20:32 kj Croke: i was talking invocations
20:32 kj you said you can ignore values; if I want to ignore all return values except the 3rd, for instance
20:32 spinclad .local pmc dummy :unused
20:32 kj still need to store the first 2: (foo, bar, baz) = sayhi()
20:33 Croke kj: sure.
20:33 kj if i'm only interested in 'baz'
20:33 allison I'm inclined to say, just use $P99. The register allocator can already detect that the register isn't used again and reclaim it on the next line
20:33 spinclad (_, _, baz) = ...
20:34 spinclad .local pmc _
20:34 allison Croke: I've been ripping out so many custom dispatch hacks from core Parrot, that I'm wary of adding new ones
20:34 kj I was just pondering on whether I should give writing a register allocator a try..
20:34 kj *today
20:34 allison Croke: they end up being more maintenance pain than they are benefit
20:34 Croke yup. only a half-hearted suggestion.
20:35 allison Croke: I certainly understand the pull
20:36 chromatic kj, it's not as difficult as it sounds.
20:36 allison (so it's more of a "That'd be cool. Um... well, maybe not.")
20:36 chromatic ... provided you know how to break a compilation unit into basic blocks.
20:36 kj <rhetoric>have you seen imcc's reg. alloc??!!
20:37 kj yeah, well, I read a paper some time ago on a different scheme
20:37 allison kj: "Mom, Dad, don't touch that. It's pure evil!"
20:37 spinclad welll, that's one that's more difficult than it sounds
20:37 kj it was not a coloring scheme, but a linear one
20:37 kj coloring can take several iterations I believe.
20:38 kj http://www.cs.ucla.edu/~palsbe​rg/course/cs132/linearscan.pdf for the itnerested lurker :-)
20:38 Lorn joined #parrot
20:40 NotFound And bits have no colors, they are not quarks ;)
20:44 dalek r32222 | julianalbo++ | trunk:
20:44 dalek : add 'Parrot_ex_throw_from_op_args' function and replace 'Parrot_ex_throw_from_c_args' with it in a lot of opcodes, see RT#60166
20:44 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32222
20:47 dalek r32223 | kjs++ | trunk:
20:47 dalek : [pirc/new] I have zero-tolerance policy regarding missing function documentation. Enforce it.
20:47 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32223
20:48 jsut|work joined #parrot
20:50 Croke error:imcc:syntax error, unexpected '\n', expecting '(' in file 'EVAL_16548' line 3
20:51 Croke that's a lot of generated PIR
20:51 kj partcl-generated?
20:51 Croke mmm.
20:52 kj I thought EVAL_ starts at 1...
20:52 Croke ayup
20:55 bacek morning everybody
20:55 bacek NotFound++ # for r32222 :)
20:57 NotFound bacek++ for opening a can of worms ;)
20:58 bacek NotFound: btw, why we need throw_ex_from_c ?
20:58 * kj prints the linear scan register allocation paper and starts reading...
20:59 NotFound bacek: for throwing from c ;)
21:00 bacek NotFound: :) but can it be replaced with from_op? E.g. in MMD.
21:01 NotFound bacek: will be good to replace it wherever possible.
21:03 NotFound But I think that replacing it in functions that can be called from an unknown depth of C functions is risky.
21:04 bacek NotFound: got it. Next question - is it good or bad idea always specify continuation in "build_eception_from_args"? As interp->code->base.data
21:05 bacek msg moritz Pm ask not to close #60168 till final fix :)
21:05 purl Message for moritz stored.
21:05 moritz argl
21:06 bacek afk #prepare kids for school
21:07 allison NotFound: yes, throw_from_op is only useful when you're actually in the op, all other locations in C code should use 'throw_from_c'
21:08 Limbic_Region joined #parrot
21:08 moritz bacek: (if you backlog...) re-opened the ticket, and adjusted subject. Thanks for noticing.
21:09 NotFound allison: in some cases a helper functions that takes the continuation address as argument can use it, I suppose.
21:10 allison NotFound: potentially, yes, but keep in mind that 'throw_from_op' doesn't actually run the exception handler
21:10 NotFound But maybe the easy searchability is more valuable.
21:11 allison NotFound: it only returns the address of the exception handler, and relies on whatever code it returns to to execute the handler
21:11 allison NotFound: so it's really not recommended for general use
21:12 allison NotFound: there's just too much complexity in ensuring that whereever it's used, the code immediately returns to the calling op and does nothing else before executing the handler
21:14 allison NotFound: this is something the ops you modify will have to consider too. 'throw_from_op' and 'throw_from_c' aren't semantically equivalent
21:15 NotFound allison: that is usually the reason to modify them.
21:16 allison NotFound: yes :) What I mean is, 'throw_from_op' doesn't have the same effect of immediately halting all other behavior until the exception is handled
21:16 NotFound allison: I know, don't worry too much.
21:16 allison 'k, cool
21:30 Croke to see parrot blow up, grab partcl, change the parent class of src/class/tclconst.pir to "TclString" instead of "String" and then 'make test'. whee
21:30 pmichaud moritz: 2 failures are in S03-operators/arith.t
21:32 moritz I've added two failing tests recently, but they are both TODO'ed
21:32 moritz (the last two)
21:32 Croke (ton of "outside of current segment" errors)
21:32 Croke ->
21:54 TiMBuS joined #parrot
22:34 pmichaud the last two tests of arith.t are failing with "no bigint lib loaded"
22:35 chromatic I thought we skipped those when Parrot::Config doesn't have GMP.
22:35 pmichaud sorry, in rakudo.
22:36 pmichaud t/spec/S03-operators/arith.t
22:36 pmichaud I suspec the 'todo' should be 'skip'
22:36 pmichaud *suspect
22:50 dmknopp joined #parrot
22:55 dalek r32224 | julianalbo++ | trunk:
22:55 dalek : replace remaining throw_from_c inside opcodes with throw_from_op except a few deprecated ones
22:55 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=32224
23:17 tetragon joined #parrot
23:22 Tene Huh.
23:23 Tene In NQP:
23:23 Tene our @?Foo; @?Foo.push(1); say(@?Foo[0]);
23:23 ruoso joined #parrot
23:55 chromatic joined #parrot
23:58 apeiron joined #parrot
23:58 Tene pmichaud: looks like PCT breaks badly if I set :namespace() on a block to a subclass of ResizablePMCArray

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced