Camelia, the Perl 6 bug

IRC log for #parrot, 2008-09-30

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 NotFound s1n: I think that ANSI and ISO are not of the same opinion.
00:00 s1n unfortunately ANSI and ISO don't package my copy of libc
00:00 NotFound And parrot.
00:01 s1n if you're looking for a regex header that's ansi compliant, good luck with that
00:02 NotFound Don't know what cotto are looking for. If is some available to any parrot build, regex.h is not.
00:03 cotto NotFound, I found a better solution.
00:03 s1n besides, parrot is fully ANSI compliant?
00:03 s1n cotto: better than regex.h? do share
00:03 NotFound Parrot does not mandate Posix, that is the point.
00:05 s1n NotFound: wow, really? i'm going to add the ansi and pedantic flags on the build and see what happens...
00:05 cotto I needed to match a really simple regex, so I just wrote the FSM manually.
00:06 cotto see pipp_hash_get_intval in r31500
00:06 s1n NotFound: well, i don't see any ansi flag already in use, so i don't think it's fair to say it _must_ be ansi compliant
00:06 NotFound s1n: I say that?
00:07 s1n okay, it doesn't mandate posix or ansi compliance
00:07 NotFound s1n: you can assume you can use any C 89 std header, but you cannot assume teh same for any Posix header. That's all
00:09 s1n NotFound: i'm looking at the makefile and i don't see -std=c89 anywhere
00:09 AndyA joined #parrot
00:09 NotFound s1n: Again, I don't say that.
00:09 s1n NotFound: s1n: you can assume you can use any C 89 std header
00:10 NotFound s1n: You don't need any gcc option to assume that
00:11 dalek r31503 | julianalbo++ | trunk:
00:11 dalek : remove unused static function src/oo.c:get_init_meth
00:11 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31503
00:11 s1n NotFound: i don't think it's safe to assume anything unless the headers being used are ansi compliant
00:12 s1n i don't know what gcc typically will assume the standard is if it's not provided, i would think c99 would be the default
00:12 s1n gnu89
00:13 s1n according to the man page gnu89 is the default for C code (on my platform), which includes some c99 features
00:13 NotFound s1n: but gcc does not define the Parrot design decisions.
00:14 s1n NotFound: the point i was getting at was c89 _is_ ansi compliance
00:15 s1n no matter how you look at it, there is a platform assumption, either by parrot or by gcc and if parrot doesn't build on a platform, it with either adapt or ignore the platform, which may have a different set of standards
00:16 NotFound s1n: surely Parrot can mandate that the plaftorm must have some sort of regex.h, but currently does no do that.
00:17 NotFound Also does not mandate gcc, BTW
00:20 s1n yeah i know, i was just trying to make a point, which i've forgotten now
00:21 NotFound Anyway, cotto has solved his problem :)
00:27 cotto Yes, but don't let that interrupt your conversation. ;)
00:28 NotFound cotto: What do you think about crab's inmortality?
00:31 NotFound (Reference: http://en.wikipedia.org/wiki/Thinkin​g_about_the_immortality_of_the_crab )
00:33 tetragon joined #parrot
00:34 cotto I haven't gotten anywhere, which is disappointing given how much time I spend thinking about it.
00:34 cotto I like that idiom, btw.
00:38 Theory joined #parrot
00:44 bacek_ joined #parrot
01:33 kid51 joined #parrot
02:42 Zaba joined #parrot
02:47 petdance joined #parrot
02:54 Zaba_ joined #parrot
03:02 Bzek joined #parrot
03:20 grim_fandango joined #parrot
03:57 Bzek_ joined #parrot
04:05 Bzek joined #parrot
04:13 davidfetter joined #parrot
04:20 Bzek joined #parrot
04:21 Ontolog can I have a method signature that puts a value constraint on a parameter? For example, I want to any negative values for an Integer to be rejected by the signature
04:24 cotto in perl6 you can do that with roles, iirc.
04:25 Tene This imcc bug is really creepy.
04:25 * cotto grabs popcorn
04:27 cotto Ontolog, http://rakudo.org/2008/09/rakud​o-mmd-now-using-perl-6-al.html
04:31 cotto I seem to have been thinking of constraints.
04:40 nopaste "tene" at 12.172.96.105 pasted "callgrind output from the weird imcc thing" (45 lines) at http://nopaste.snit.ch/14192
04:41 Tene purl: parrot-porters?
04:41 purl rumour has it parrot-porters is now superceded by mailto:parrot-dev@lists.parrot.org
04:44 Tene purl: botsnack
04:44 purl :)
04:53 cotto somebody tell me that code review isn't supposed to be fun
04:53 cotto because it's not
05:07 Tene It's spending most of its time by far in compilers/imcc/sets.c:set_add and compilers/imcc/cfg.c:compute_dominance_frontiers
05:16 dalek r31504 | cotto++ | trunk:
05:16 dalek : [pipp] finish the pipp_hash interface, now to start on the PMC code...
05:16 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31504
05:17 dalek r31505 | cotto++ | trunk:
05:17 dalek : [cotto--] undo accidental commit
05:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31505
05:18 cotto that code definitely didn't belong in trunk
05:21 Tene purl: msg pmichaud I likely will be neither around nor sane during #ps tomorrow.  Can you make sure ot bring up rt #59410 for me?
05:21 purl Message for pmichaud stored.
05:43 iblechbot joined #parrot
05:46 TiMBuS joined #parrot
05:50 Theory joined #parrot
05:55 cotto prime factorization of karma cotto
05:55 cotto lazy bot
05:58 Tene purl: karma cotto
05:58 purl cotto has karma of 138
05:58 Tene 2 3 13
05:58 Tene Wait, that's not right.
05:59 Tene 2 3 23
06:00 Tene purl: wtf am i doing still awake?
06:00 purl tene: bugger all, i dunno
06:00 Tene good point
06:02 cotto prime factorizations, apparently
06:03 Tene badly
06:11 uniejo joined #parrot
08:51 johbar joined #parrot
08:54 tomyan joined #parrot
09:02 dalek r31506 | kjs++ | trunk:
09:02 dalek : [pirc/new] fix the identifier/symbol checking issue in PASM style instructions
09:02 dalek : * "lt i, j, L" can now be parsed correctly: i and j are checked as symbols, and L, being a label, won't be checked
09:02 dalek : * track all memory allocations, which makes freeing it a lot easier. It does mean that the lexer param. must be in any allocating function.
09:02 dalek : * add a -W warning flag.
09:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31506
09:22 barney joined #parrot
09:49 baest joined #parrot
10:08 kj joined #parrot
10:22 braceta joined #parrot
11:06 bacek joined #parrot
11:28 bacek joined #parrot
11:35 pako joined #parrot
11:36 pako left #parrot
11:42 johbar_ joined #parrot
11:48 dalek r31507 | bernhard++ | trunk:
11:48 dalek : Provide link to the RT-ticket for a TODO item.
11:48 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31507
12:09 davidfetter joined #parrot
12:57 tetragon joined #parrot
13:17 dalek r31508 | julianalbo++ | trunk:
13:17 dalek : fix memory leak in parrotio.pmc:open, RT#46083
13:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31508
13:35 Bzek joined #parrot
14:26 dalek r31509 | julianalbo++ | trunk:
14:26 dalek : remove check for props in default.pmc:get_attr_str, RT#46667
14:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31509
14:26 dalek r31510 | coke++ | trunk:
14:26 dalek : [tcl] [DRY] move the volatile part of this description out to the website.
14:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31510
14:26 dalek r31511 | coke++ | trunk:
14:26 dalek : [tcl] "-1" isn't a switch, it's a number.
14:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31511
14:26 dalek r31512 | coke++ | trunk:
14:26 dalek : [tcl] if a namespace doesn't exist, skip the import instead of dying with a null PMC error.
14:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31512
14:36 barney In PDD09 the 'Control stack' is mentioned. Is there still such a thing?
14:41 hercynium joined #parrot
14:44 Debolaz joined #parrot
14:51 dalek r31513 | bernhard++ | trunk:
14:51 dalek : [C] A saner error message when dumping the dynamic environment stack
14:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31513
15:03 dalek r31514 | julianalbo++ | trunk:
15:03 dalek : fix pod item for library.c:Parrot_get_runtime_path
15:03 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31514
15:09 Hinrik joined #parrot
15:16 dalek r31515 | julianalbo++ | trunk:
15:16 dalek : update headerizer of include/parrot/key.h
15:16 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31515
15:21 Theory joined #parrot
15:21 Hinrik joined #parrot
15:26 ruoso joined #parrot
15:41 dalek r31516 | bernhard++ | trunk:
15:41 dalek : Mention the correct ticket in TODO comment
15:41 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31516
15:44 Zaba joined #parrot
15:49 dalek r31517 | julianalbo++ | trunk:
15:49 dalek : fix imcc headerizer problem, RT#57690, and headerize imcc files
15:49 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31517
15:50 Hinrik joined #parrot
16:01 Hinrik joined #parrot
16:05 dalek r31518 | cotto++ | trunk:
16:05 dalek : [pipp] avoid using a win32 reserved word for my own nefarious purposes
16:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31518
16:08 cotto parrotvm.org is suddenly serving blank pages
16:08 * moritz suspects feather apache f*ckup
16:09 NotFound cotto: yes, I noticed one hour or so ago.
16:12 particle (vmware unity mode)++
16:15 moritz parrotmv links now work again for me
16:16 NotFound Still blank for me.
16:20 cotto still b0rked
16:22 moritz for me it shows the page now, but without CSS
16:24 jhorwitz joined #parrot
16:54 Hinrik joined #parrot
17:00 Lorn joined #parrot
17:04 Wknight8111 joined #parrot
17:18 Zaba_ joined #parrot
17:28 jq joined #parrot
17:50 apeiron joined #parrot
18:08 pmichaud #ps in 22.
18:09 rurban joined #parrot
18:12 tewk joined #parrot
18:18 Ivatar joined #parrot
18:25 pmichaud #ps in 5.
18:26 PerlJam o/~ it's the final countdown o/~
18:27 moritz Broadcast message from root@pmichaud (pts/1) (Tue Sep 30 19:27:19 2008): The system is goin DOWN for #ps in 3 mintues!
18:27 PerlJam heh
18:27 moritz erm, minutes ;)
18:28 barney Pipp being alive: http://www.youtube.com/watch?v=NnA24EQJYI8
18:28 NotFound Too much #ps, I want a #wii
18:29 PerlJam barney: heh, I thought I was going to see some cheesey screen-cast like demo of pipp running actual php code.
18:29 * Tene makes a report
18:29 * PerlJam preparse to lurk
18:29 PerlJam er, prepares
18:30 tewk_ joined #parrot
18:32 rurban purl: seen chromatic?
18:32 purl chromatic was last seen on #parrot 4 days, 18 hours, 6 minutes and 6 seconds ago, saying: I haven't read the patch yet, so I'm not suggesting the implementation is problematic, by the way.  [Sep 26 00:26:26 2008]
18:33 chromatic joined #parrot
18:33 johbar joined #parrot
18:33 tewk left #parrot
18:39 chromatic kj, do you track bugs and syntax changes made to IMCC?
18:40 rurban_ joined #parrot
18:40 chromatic dmknopp's CLA arrived; do your magic.
18:42 dmknopp :-)
18:44 particle dmknopp: read and perform the steps for the committer in docs/metacommitter_guide.pod
18:44 kj chromatic: all syntax changes go through DEPRECATED and tickets.. what kind of tracking were you thinking of?
18:44 dalek r31519 | pmichaud++ | trunk:
18:44 dalek : [rakudo]:  spectest-regression.csv update: 193 files, 4381 passing tests
18:44 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31519
18:45 chromatic r30841 for example.
18:47 kj I can't seem to find that bug...
18:47 chromatic It's a commit, not a ticket.
18:47 kj oh right.
18:48 kj well no I don't really track commits to imcc
18:48 kj I think you made a change recently
18:48 kj something with autoconverting I to Ns when overflowing?
18:48 chromatic That too.
18:48 kj how can I check out a commit?
18:49 chromatic http://www.parrotvm.org/svn​/parrot/revision?rev=xxxxx
18:49 chromatic http://www.parrotvm.org/svn​/parrot/revision?rev=30841
18:50 kj chromatic: for that particular commit, that can not happen in pirc I think (if that is what you mean...?)
18:51 kj i think the whole [X,Y] thing should not even be valid syntax anymore (PIR slicing syntax is deprecated; only ';' is allowed iirc)
18:51 chromatic I mean that sometimes I fix bugs in Parrot by making certain constructs illegal in PIR, and I want to make sure that pirc reflects those changes to IMCC.
18:51 kj right, i see
18:52 chromatic Some of them may be artifacts of IMCC and not intentional design decisions.
18:52 kj well, so for that particular commit, it can't happen in pirc. For the rest, I guess I should track that a bit more.
18:52 chromatic I'll try to notify you.
18:52 particle svn log compilers/imcc/ will give you hints
18:52 kj ok, thanks. I'll keep an eye.
18:53 kj usually i always check out the logs on IMCC whenever I update my parrot.
18:54 rurban purl: seen leo_?
18:54 purl leo_ was last seen on #parrot 1 years, 81 days, 5 hours, 48 minutes and 35 seconds ago, saying: thx  [Jul 12 13:05:32 2007]
18:54 rurban purl: seen leo?
18:54 purl leo was last seen on #parrot 138 days, 5 hours, 17 minutes and 42 seconds ago, saying: Hi DietCoke, on diet now?  [May 15 13:36:32 2008]
18:54 DietCoke joined #parrot
18:55 barney cotto: For Pipp on Linux I get segfaults in src/hash.c:373   Does it work under Win32 ?
18:56 rurban leo_: don't you want to try your luck with RT #58368?
18:57 rurban oops, it's http://rt.perl.org/rt3//Public[…]lay.html?id=59410 really
18:58 dalek r31520 | pmichaud++ | trunk:
18:58 dalek : [rakudo]:  Correct name of t/spec/S05-modifier/ignorecase.t
18:58 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31520
18:59 rurban ../../parrot.exe -o befunge.pbc befunge.pasm
18:59 rurban error:imcc:syntax error, unexpected IDENTIFIER, expecting PARROT_OP ('save')
18:59 rurban in file 'flow.pasm' line 33
18:59 rurban included from 'befunge.pasm' line 1
19:00 rurban anybody knows how 'save' should be converted to now?
19:01 * DietCoke rails his fist at rakudo's spectest progress.
19:01 chromatic Normal calling conventions, I thought.
19:01 DietCoke it's not a drop in replacement, though.
19:01 DietCoke if they're specifically using the old user stack, you need to convert the calls to be normal sub calls.
19:02 dalek r31521 | moritz++ | trunk:
19:02 dalek : [pynie] implement some builtins
19:02 dalek : * len, list, range, str
19:02 dalek : * added .namespace [] at top of funcs.pir
19:02 dalek : * add tests (13-builtins.t)
19:02 dalek : * update MANIFEST and CREDITS
19:03 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31521
19:05 dalek r31522 | moritz++ | trunk:
19:05 dalek : [pynie] implement for. Patch courtesy by isop++
19:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31522
19:06 DietCoke AndyA: ping
19:06 AndyA Hello :)
19:06 gmansi joined #parrot
19:12 Zaba joined #parrot
19:13 barney AndyA: Is it worth looking at http://frama-c.cea.fr/index.html  ?
19:13 moritz isop++ # pynie patches
19:14 AndyA Funnily enough I was just looking at that for work this week - but I barely got it working. Didn't try for very long.
19:14 barney I just saw it on http://en.wikipedia.org/wiki/List_o​f_tools_for_static_code_analysis#C
19:15 dalek r31523 | kjs++ | trunk:
19:15 dalek : [pirc/new] fix bug in [target=parrotop] rule. (else clause didn't have braces!)
19:15 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31523
19:15 dalek r31524 | julianalbo++ | pdd27mmd:
19:15 dalek : Fixed integer.pmc default cmp and pmc/integer test
19:15 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31524
19:22 DietCoke AndyA++
19:26 dalek r31525 | kjs++ | trunk:
19:26 dalek : [pirc/new] refactor the big chunk of code added for checking 'lt $I0, 10, L' into a function so it can be re-used. The re-use doesn't quite work, that's next.
19:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31525
19:29 DietCoke -> offline
19:45 contingencyplan joined #parrot
19:45 dalek r31526 | kjs++ | trunk:
19:45 dalek : [pirc/new] fix the not-working re-use of argument-checking code. Also implement an operand-count check.
19:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31526
19:47 dalek r31527 | julianalbo++ | pdd27mmd:
19:47 dalek : fix eq PMC INT
19:47 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31527
19:48 Tene https://svn.perl.org/account is throwing an error
19:58 contingencyplan joined #parrot
20:02 kj mmm. I'm trying pirc on linux now, I exported the path to the libparrot shared object file to LD_LIBRARY_PATH, but still an error message
20:02 kj saying it can't find the shared object.
20:03 kj anyone any ideas?
20:04 NotFound kj: try setting both LD_LIBRARY_PATH and LD_RUN_PATH
20:04 kj ah I see. It was the export stuff; I tried to export an absolute path
20:04 kj didn't work, but exporting relative address works
20:04 kj and I see it segfaults! :-(
20:07 dalek r31528 | pmichaud++ | rt59410:
20:07 dalek : Create a branch for diagnosing RT#59410.
20:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31528
20:08 chromatic Hm, the MMD branch needs a merge from trunk.
20:10 NotFound chromatic: the items I fixed have different implementations than trunk.
20:12 chromatic I meant the ExceptionHandler fix I made yesterday.
20:13 grim_fandango joined #parrot
20:17 dalek r31529 | kjs++ | trunk:
20:17 dalek : [pirc/new] fix memory freeing. embarrassing mistake...
20:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31529
20:18 dalek r31530 | kjs++ | trunk:
20:18 dalek : [pirc/new] forgot to remove brace (that's what happens when editing on 1 system and testing on the other :-( )
20:18 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31530
20:21 dalek r31531 | kjs++ | trunk:
20:21 dalek : [pirc/new] remove 'return' statement to prevent some code running. NOW the memory issue is fixed.
20:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31531
20:24 Zaba_ joined #parrot
20:27 dalek r31532 | kjs++ | trunk:
20:27 dalek : [pirc/new] fix printing of instructions; don't use stderr if it's not necessary (it prints (flushes) stuff before earlier statements!)
20:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31532
20:49 dalek r31533 | kjs++ | trunk:
20:49 dalek : [pirc/new] Ah that's a shame. the argument count check is no good here; opinfo might point to a different variant of the op, which has a different op count. Too bad!
20:49 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31533
20:54 dalek r31534 | kjs++ | trunk:
20:54 dalek : [pirc/new] add another error check; errors can occur during code generation. (not that we're generating code yet, for those who are wondering... just printing them)
20:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31534
20:56 dalek r31535 | pmichaud++ | rt59410:
20:56 dalek : Apply loop_control_next.patch from RT #59410.  All parrot tests pass.
20:56 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31535
21:05 Tene pmichaud: are there any parrot tests that use pct?
21:05 pmichaud Tene: now.
21:05 pmichaud no.
21:05 Tene Oh.  Okay.
21:05 Tene I was confused by your "all tests pass" note.
21:05 pmichaud all parrot tests pass, but not rakudo ones.
21:06 pmichaud I'm working to come up with a small failure case.
21:06 Tene Right.  That patch doesn't touch any parrot stuff, just changes the code generation in pct.
21:09 bacek morning.
21:09 Tene Hi, bacek.
21:09 bacek hi Tene
21:10 bacek pmichaud: if you'll have time there is patch in #58646 to convert "new Failure" to "!FAIL()" (not mine ;)
21:11 Tene I'm definitely in the mood for some parrot hacking tonight.
21:11 Tene Class should be out in 1.5 hours or so.
21:11 pmichaud bacek: RT #58646 is now in my hiveminder list.
21:13 bacek pmichaud: can I have commit bit to this list? I want to add LTM to it ;)
21:13 pmichaud ltm is on the list also, but I guarantee that's not likely to happen overnight.
21:14 particle unless you move to the north pole....
21:14 pmichaud well, if I move to the south pole I could probably have it done by this evening :-)
21:16 NotFound ltm?
21:16 purl somebody said ltm was longest token matching
21:16 pmichaud is there a quick command to strip all pod from a file?
21:24 particle perl 5 pod?
21:25 particle perldoc might have one...
21:26 PerlJam pmichaud: a week long expedition to the south pole costs around $20K.  Do you think a Parrot or Perl Foundation grant would pay for it?  LTM is quite important  :)
21:28 NotFound PerlJam: sure, you only need to tell someone to organize a parrot convention.
21:29 PerlJam NotFound: or a cruise!  Randal does geek cruises, I bet he could whip something up.  :)
21:31 bacek pmichaud: Something like ":/^=/;/^=cut/d", I can't remember how to execute many times for file :(
21:31 NotFound I remember reading something about a HP user's convention on a cruise on the Baltic Sea, that is the closest from a pole I know about.
21:31 pmichaud yes. perl 5 pod
21:32 PerlJam bacek: that fails for =begin/=end pairs among other things.
21:32 pmichaud perl 5 pod has =begin/=end pairs?
21:32 moritz yes
21:32 pmichaud anyway, this particular file doesn't have any.
21:33 moritz erm, it has =for editor...=end for or something
21:33 particle http://search.cpan.org/dist/Pod-Strip/
21:33 pmichaud it's a file of PIR and I need to strip the perl5 pod from it so that I can comment out large chunks of code to find out why 59410 is causing trouble
21:33 PerlJam search.cpan.org is your friend.
21:33 bacek "CPAN is my language of choice" ;)
21:34 PerlJam particle: though the docs say it "strips all POD from Perl Code".  Pm doesn't have Perl Code.
21:35 particle i don't think pod::simple cares if the file has perl code in it
21:35 particle pod::strip is a pod::simple subclass
21:37 pmichaud $lines =~ s/^=.*?^=cut//gms;
21:37 pmichaud seems to do it.
21:41 chromatic If it's valid POD, that should work.
21:42 moritz might fail for some perl 5 obfus ;)
21:42 PerlJam that works modulo =begin/=end as I mentioned earlier  :)
21:42 PerlJam =for will break it too
21:42 chromatic Will can fix his own POD.
21:42 chromatic </subtle>
21:52 Debolaz joined #parrot
21:53 Zaba joined #parrot
21:54 grim_fandango joined #parrot
21:54 cognominal joined #parrot
21:57 Lorn joined #parrot
22:03 pmichaud yay!  I got the problem down to a single sub.
22:03 pmichaud well, one sub that when included causes the hang.
22:03 moritz scary
22:05 moritz whenever I hear about bugs like this I wonder how we could ever got as far as we did ;)
22:08 pmichaud down to two lines of PIR
22:08 TiMBuS joined #parrot
22:09 pmichaud down to one line of PIR
22:09 pmichaud get ready for it....
22:09 pmichaud $N0 *= elems
22:10 Tene *= ?
22:10 Tene Are you sure that's the same?
22:10 pmichaud I have a program where if I compile with that line commented out, it compiles fine, but if commented out, it hangs.
22:10 pmichaud er
22:10 pmichaud wait
22:10 pmichaud if the line is commented out, compiles fine, if left in, compiling hangs
22:12 pmichaud brb
22:12 Tene pmichaud: interesting.
22:16 pmichaud nopaste coming.
22:17 Lorn joined #parrot
22:18 nopaste "pmichaud" at 76.183.97.54 pasted "reproducible hang in rt #59410" (12 lines) at http://nopaste.snit.ch/14198
22:19 pmichaud adding that one subroutine to the beginning of gen_actions.pir is sufficient to get imcc to hang.
22:19 pmichaud without it, gen_actions.pir compiles just fine.
22:19 pmichaud (gen_actions.pir is the file that is produced from compiling actions.pm with nqp)
22:20 chromatic Besides the fact that :multi and :method aren't compatible...
22:20 pmichaud chromatic: we use it all the time in PCT and Rakudo
22:21 chromatic They do completely different things.
22:21 pmichaud however, eliminating ":method :multi()" from hanger.pir still results in the hang.
22:21 chromatic They're two separate dispatch mechanisms and two separate storage mechanisms.
22:22 pmichaud :multi() still works with :method, though.  Otherwise PCT wouldn't work at all.
22:22 chromatic Yeah, besides that, there's nothing in that code that ought to cause a hang.
22:23 pmichaud :multi is how we're able to distinguish   obj.'foo'($P0)   based on the type of $P0
22:23 pmichaud i.e., foo can be   .sub 'foo' :method :multi(_, 'Integer')     or   .sub 'foo' :method :multi(_, 'String')
22:24 chromatic Sure, and I think that's semantically wrong.
22:24 NotFound pmichaud: Changing the name of the .sub has some effect?
22:24 moritz chromatic: so how would you make that distinction?
22:24 chromatic With multimethods.  That's what they're for.
22:24 pmichaud do multimethods work in PIR?  how are they defined?
22:24 moritz and how do multimethods look in PIR?
22:25 Lorn joined #parrot
22:25 chromatic .sub whatever :multi( T, U, V )
22:25 chromatic .end
22:25 moritz but that's a sub, not a method, isn't it?
22:25 chromatic Yep.
22:25 chromatic Different dispatch mechanism.
22:25 pmichaud so   obj.'whatever'(...)   would fail to find it.
22:26 moritz which again leads to my question
22:26 pmichaud at any rate, :method :multi is an issue I'd prefer to defer
22:26 chromatic multi dispatch has nothing to do with inheritance
22:27 chromatic That's the heart of the problem; they're two very different dispatch mechanisms.  Confusing them produces problems.
22:27 nopaste "pmichaud" at 76.183.97.54 pasted "another hang" (9 lines) at http://nopaste.snit.ch/14199
22:28 chromatic pmichaud, what happens if you use a named N-reg instead of $N0?
22:29 pmichaud looking at that now.
22:29 Tene pmichaud: have you tried trimming down gen_actions.pir yet?
22:29 pmichaud Tene:  yes, trimming gen_actions can also cause things to work.  What this does is get it down to a single PIR statement that appears to cause the problem.
22:29 Tene Right.  I'm just wondering if we can produce a smaller failing case.
22:30 nopaste "pmichaud" at 76.183.97.54 pasted "named n-reg also hangs" (10 lines) at http://nopaste.snit.ch/14200
22:32 nopaste "pmichaud" at 76.183.97.54 pasted "multiply by constant value does not hang" (11 lines) at http://nopaste.snit.ch/14201
22:35 chromatic That tickles something in my head.
22:36 particle you ought to get that fixed.
22:36 pmichaud okay, I got it down to two subs.
22:37 nopaste "pmichaud" at 76.183.97.54 pasted "this hangs (only two subs)" (40 lines) at http://nopaste.snit.ch/14202
22:38 pmichaud (I removed the :outer, but it shouldn't really affect things.)
22:38 pmichaud oh, and there's a .const there... let me strip those.
22:40 nopaste "pmichaud" at 76.183.97.54 pasted "this hangs (only two subs, no lexicals or constant lookups)" (40 lines) at http://nopaste.snit.ch/14203
22:42 pmichaud commenting out the "unless $I1811, for_1807_end" line allows it to compile.
22:42 NotFound compute_dominance_frontiers seems to be the culprit.
22:42 pmichaud it's still weird that it's dependent on the *= instruction in the previous sub
22:43 NotFound Use kill -s BUS to get a core dump
22:46 chromatic There's probably a cyclical edge somehow.
22:49 pmichaud is compute_dominance_frontiers used for anything besides register allocation...?
22:50 chromatic No.
22:50 pmichaud once again, register allocation is the bane of my Parrot existence.
22:50 peepsalot joined #parrot
22:51 chromatic Control flow is not easy with continuations, unless you convert everything to CPS.
22:52 chromatic The problem is that the runner keeps flipping back and forth between 8 and 9 in the innermost loop of compute_dominators.
22:53 pmichaud what is it about  'myfoo *= $I0'  that is affecting dominance in the later sub, though?
22:53 pmichaud that's what is a little weird.
22:53 pmichaud changing to  'mul' or '+=' doesn't seem to help.
22:54 chromatic Register information doesn't get cleared appropriately?
22:56 chromatic Valgrind doesn't show anything wrong there... but I did just fix a memory leak in AddrRegistry.
22:56 NotFound Don't know if is related, but we have a problem with the int_overflows function in imcc/symreg.c and headerizer
22:57 NotFound Is static but headerizer puts it in the .h file, and bad formatted,
22:57 chromatic Anybody want to bisect this problem and see if it appeared sometime in the past 1000 commits?
22:57 pmichaud the problem is that it only occurs with Tene's PCT patch
22:57 pmichaud oh, I see
22:57 pmichaud but with this PIR we can do it w/o the patch
22:57 pmichaud cool.
22:57 chromatic Right.
22:57 dalek r31536 | chromatic++ | trunk:
22:57 dalek : [PMC] Fixed a memory leak when destroying an AddrRegistry PMC.
22:58 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31536
22:59 nopaste "pmichaud" at 76.183.97.54 pasted "commenting out any of the lines marked 'xxx' allows this to compile" (34 lines) at http://nopaste.snit.ch/14204
23:00 pmichaud also, reversing the order of the     new $P1809, "Undef"  and the unless instruction before it allows it to compile.
23:01 pmichaud gotta join family for dinner... bbl
23:02 nopaste "pmichaud" at 76.183.97.54 pasted "commenting out any of the lines marked 'xxx' allows this to compile (#2)" (34 lines) at http://nopaste.snit.ch/14205
23:02 NotFound Found the headerizer problem: "static \n int" instead of "static int"
23:03 NotFound (Add random words about headerizer here)
23:03 Tene Words like "headerizer is awesome"?
23:03 NotFound Maybe
23:03 chromatic I need to finish something else and head out soon, but the way to debug this is to figure out how to dump IMCC register and basic blocks information and look for the edge identification between blocks.
23:04 chromatic It looks like block #5 in the second sub is the problem.
23:04 Tene I'll understand what "register and basic blocks information" is once I read enough of the register allocator code?
23:05 chromatic I can give you a quick overview.
23:05 Tene That would be great, if you have time.
23:05 chromatic The alligator divides every compilation unit into basic blocks.
23:06 chromatic A block is a single block of code between branch points.
23:06 chromatic Every entrance and exit point demarcates a block.
23:06 NotFound Unfortunately, the problem of the int_overflows was unrelated to the debated problem
23:07 chromatic If you arrange the blocks in terms of a control flow graph, you can evaluate all of the possible ways you can reach a point within the block.
23:07 chromatic You also keep track of which registers you use within a block.
23:08 chromatic If all of the paths to a block go through another block, the latter dominates the former.
23:08 * Tene nods.
23:08 Lorn joined #parrot
23:08 dalek r31537 | julianalbo++ | trunk:
23:08 dalek : fix imcc/symreg.c:int_overflows() declaration that was fooling headerizer
23:08 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=31537
23:09 chromatic All of this is to say, if you have a named register used in the first block of a unit and the final block of the unit can branch back to the first unit, you have to keep the physical register untouched.
23:10 chromatic If there's a block beyond which you can never branch back, you can reuse physical registers unique to that branch and never used later.
23:10 chromatic I've been unclear about name/physical register mapping, but I think you get the picture.
23:10 Tene I do.
23:11 chromatic It's the mapping of name to register that really matters.
23:11 * Tene orders chinese and reads imcc.
23:12 NotFound Chinese translator?
23:13 Tene no, sesame chicken and fried dumplings
23:13 chromatic My guess is there's something wrong in compute_dominators.
23:13 chromatic At least, that's the next place to start looking.
23:18 tetragon joined #parrot
23:25 mwhudson joined #parrot
23:38 Zaba_ joined #parrot
23:40 mwhudson joined #parrot
23:45 NotFound Why is compute_dominance_frontiers called? Is if'ed with IMCC_INFO(Interp)->optimizer_level
23:45 chromatic I could never figure that out.
23:45 chromatic Something set that, even though we were trying to disable it universally.
23:47 NotFound His value is 0x100
23:48 Tene Really weird things happen with the code if you don't call it.
23:49 Tene In this situation, at least.
23:49 chromatic Maybe someone needs to tease some of these large functions into smaller ones and see what happens.
23:49 NotFound And even weirder if you don't know why you are calling it.
23:50 Tene Hmm.  Back in an hour.
23:54 chromatic NotFound, I've seen people write:
23:55 chromatic #typedef Foo struct Foo
23:55 chromatic and with that forward declaration, they use just Foo when declaring the struct later.
23:55 chromatic If the struct has a pointer to a nested struct, they don't have to use "struct" on the pointer.
23:55 chromatic It seems cleaner.
23:55 NotFound chromatic: yes, is a common usage
23:56 tetragon chromatic: I'm really finding it annoying that 32-bit Intel Darwin uses 16-byte alignment for the stack instead of word alignment
23:56 dmknopp joined #parrot
23:57 NotFound BTW, using _SomeStructName is not good, idenifiers starting with an underscore followed by capital are reserved for the C implementation.
23:59 chromatic Think of Darwin as something not quite completely entirely unlike a Unix operating system, and you'll feel better.
23:59 NotFound chromatic: optimizer_level is changed in imcc/parser_util.c:change_op()

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

Parrot | source cross referenced