www.parrotcode.org/ | Last release: 0.7.1 "Manu Aloha"
Set by moderator on 17 September 2008.
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
NotFound And parrot.
s1n if you're looking for a regex header that's ansi compliant, good luck with that 00:01
NotFound Don't know what cotto are looking for. If is some available to any parrot build, regex.h is not. 00:02
cotto NotFound, I found a better solution. 00:03
s1n besides, parrot is fully ANSI compliant?
cotto: better than regex.h? do share
NotFound Parrot does not mandate Posix, that is the point.
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.
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
NotFound s1n: I say that?
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
s1n NotFound: i'm looking at the makefile and i don't see -std=c89 anywhere 00:09
00:09 AndyA joined
NotFound s1n: Again, I don't say that. 00:09
s1n NotFound: s1n: you can assume you can use any C 89 std header
NotFound s1n: You don't need any gcc option to assume that 00:10
dalek r31503 | julianalbo++ | trunk: 00:11
: remove unused static function src/oo.c:get_init_meth
diff: www.parrotvm.org/svn/parrot/revision?rev=31503
s1n NotFound: i don't think it's safe to assume anything unless the headers being used are ansi compliant
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
gnu89
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.
s1n NotFound: the point i was getting at was c89 _is_ ansi compliance 00:14
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:15
NotFound s1n: surely Parrot can mandate that the plaftorm must have some sort of regex.h, but currently does no do that. 00:16
Also does not mandate gcc, BTW 00:17
s1n yeah i know, i was just trying to make a point, which i've forgotten now 00:20
NotFound Anyway, cotto has solved his problem :) 00:21
cotto Yes, but don't let that interrupt your conversation. ;) 00:27
NotFound cotto: What do you think about crab's inmortality? 00:28
(Reference: en.wikipedia.org/wiki/Thinking_abou...f_the_crab ) 00:31
00:33 tetragon joined
cotto I haven't gotten anywhere, which is disappointing given how much time I spend thinking about it. 00:34
I like that idiom, btw.
00:38 Theory joined 00:44 bacek_ joined 01:33 kid51 joined 02:42 Zaba joined 02:47 petdance joined 02:54 Zaba_ joined 03:02 Bzek joined 03:20 grim_fandango joined 03:57 Bzek_ joined 04:05 Bzek joined 04:13 davidfetter joined 04:20 Bzek joined
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:21
cotto in perl6 you can do that with roles, iirc. 04:24
Tene This imcc bug is really creepy. 04:25
cotto grabs popcorn
Ontolog, rakudo.org/2008/09/rakudo-mmd-now-u...-6-al.html 04:27
I seem to have been thinking of constraints. 04:31
nopaste "tene" at 12.172.96.105 pasted "callgrind output from the weird imcc thing" (45 lines) at nopaste.snit.ch/14192 04:40
Tene purl: parrot-porters? 04:41
purl rumour has it parrot-porters is now superceded by mailto:parrot-dev@lists.parrot.org
Tene purl: botsnack 04:44
purl :)
cotto somebody tell me that code review isn't supposed to be fun 04:53
because it's not
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:07
dalek r31504 | cotto++ | trunk: 05:16
: [pipp] finish the pipp_hash interface, now to start on the PMC code...
diff: www.parrotvm.org/svn/parrot/revision?rev=31504
r31505 | cotto++ | trunk: 05:17
: [cotto--] undo accidental commit
diff: www.parrotvm.org/svn/parrot/revision?rev=31505
cotto that code definitely didn't belong in trunk 05:18
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 05:46 TiMBuS joined 05:50 Theory joined
cotto prime factorization of karma cotto 05:55
lazy bot
Tene purl: karma cotto 05:58
purl cotto has karma of 138
Tene 2 3 13
Wait, that's not right.
2 3 23 05:59
purl: wtf am i doing still awake? 06:00
purl tene: bugger all, i dunno
Tene good point
cotto prime factorizations, apparently 06:02
Tene badly 06:03
06:11 uniejo joined 08:51 johbar joined 08:54 tomyan joined
dalek r31506 | kjs++ | trunk: 09:02
: [pirc/new] fix the identifier/symbol checking issue in PASM style instructions
: * "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
: * track all memory allocations, which makes freeing it a lot easier. It does mean that the lexer param. must be in any allocating function.
: * add a -W warning flag.
diff: www.parrotvm.org/svn/parrot/revision?rev=31506
09:22 barney joined 09:49 baest joined 10:08 kj joined 10:22 braceta joined 11:06 bacek joined 11:28 bacek joined 11:35 pako joined 11:36 pako left 11:42 johbar_ joined
dalek r31507 | bernhard++ | trunk: 11:48
: Provide link to the RT-ticket for a TODO item.
diff: www.parrotvm.org/svn/parrot/revision?rev=31507
12:09 davidfetter joined 12:57 tetragon joined
dalek r31508 | julianalbo++ | trunk: 13:17
: fix memory leak in parrotio.pmc:open, RT#46083
diff: www.parrotvm.org/svn/parrot/revision?rev=31508
13:35 Bzek joined
dalek r31509 | julianalbo++ | trunk: 14:26
: remove check for props in default.pmc:get_attr_str, RT#46667
diff: www.parrotvm.org/svn/parrot/revision?rev=31509
r31510 | coke++ | trunk:
: [tcl] [DRY] move the volatile part of this description out to the website.
diff: www.parrotvm.org/svn/parrot/revision?rev=31510
r31511 | coke++ | trunk:
: [tcl] "-1" isn't a switch, it's a number.
diff: www.parrotvm.org/svn/parrot/revision?rev=31511
r31512 | coke++ | trunk:
: [tcl] if a namespace doesn't exist, skip the import instead of dying with a null PMC error.
diff: www.parrotvm.org/svn/parrot/revision?rev=31512
barney In PDD09 the 'Control stack' is mentioned. Is there still such a thing? 14:36
14:41 hercynium joined 14:44 Debolaz joined
dalek r31513 | bernhard++ | trunk: 14:51
: [C] A saner error message when dumping the dynamic environment stack
diff: www.parrotvm.org/svn/parrot/revision?rev=31513
r31514 | julianalbo++ | trunk: 15:03
: fix pod item for library.c:Parrot_get_runtime_path
diff: www.parrotvm.org/svn/parrot/revision?rev=31514
15:09 Hinrik joined
dalek r31515 | julianalbo++ | trunk: 15:16
: update headerizer of include/parrot/key.h
diff: www.parrotvm.org/svn/parrot/revision?rev=31515
15:21 Theory joined, Hinrik joined 15:26 ruoso joined
dalek r31516 | bernhard++ | trunk: 15:41
: Mention the correct ticket in TODO comment
diff: www.parrotvm.org/svn/parrot/revision?rev=31516
15:44 Zaba joined
dalek r31517 | julianalbo++ | trunk: 15:49
: fix imcc headerizer problem, RT#57690, and headerize imcc files
diff: www.parrotvm.org/svn/parrot/revision?rev=31517
15:50 Hinrik joined 16:01 Hinrik joined
dalek r31518 | cotto++ | trunk: 16:05
: [pipp] avoid using a win32 reserved word for my own nefarious purposes
diff: www.parrotvm.org/svn/parrot/revision?rev=31518
cotto parrotvm.org is suddenly serving blank pages 16:08
moritz suspects feather apache f*ckup
NotFound cotto: yes, I noticed one hour or so ago. 16:09
particle (vmware unity mode)++ 16:12
moritz parrotmv links now work again for me 16:15
NotFound Still blank for me. 16:16
cotto still b0rked 16:20
moritz for me it shows the page now, but without CSS 16:22
16:24 jhorwitz joined 16:54 Hinrik joined 17:00 Lorn joined 17:04 Wknight8111 joined 17:18 Zaba_ joined 17:28 jq joined 17:50 apeiron joined
pmichaud #ps in 22. 18:08
18:09 rurban joined 18:12 tewk joined 18:18 Ivatar joined
pmichaud #ps in 5. 18:25
PerlJam o/~ it's the final countdown o/~ 18:26
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
moritz erm, minutes ;)
barney Pipp being alive: www.youtube.com/watch?v=NnA24EQJYI8 18:28
NotFound Too much #ps, I want a #wii
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
PerlJam preparse to lurk
er, prepares
18:30 tewk_ joined
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, johbar joined, tewk left
chromatic kj, do you track bugs and syntax changes made to IMCC? 18:39
18:40 rurban_ joined
chromatic dmknopp's CLA arrived; do your magic. 18:40
dmknopp :-) 18:42
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?
dalek r31519 | pmichaud++ | trunk:
: [rakudo]: spectest-regression.csv update: 193 files, 4381 passing tests
diff: www.parrotvm.org/svn/parrot/revision?rev=31519
chromatic r30841 for example. 18:45
kj I can't seem to find that bug... 18:47
chromatic It's a commit, not a ticket.
kj oh right.
well no I don't really track commits to imcc 18:48
I think you made a change recently
something with autoconverting I to Ns when overflowing?
chromatic That too.
kj how can I check out a commit?
chromatic www.parrotvm.org/svn/parrot/revision?rev=xxxxx 18:49
www.parrotvm.org/svn/parrot/revision?rev=30841
kj chromatic: for that particular commit, that can not happen in pirc I think (if that is what you mean...?) 18:50
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.
kj right, i see
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.
chromatic I'll try to notify you.
particle svn log compilers/imcc/ will give you hints
kj ok, thanks. I'll keep an eye.
usually i always check out the logs on IMCC whenever I update my parrot. 18:53
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]
rurban purl: seen leo?
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
barney cotto: For Pipp on Linux I get segfaults in src/hash.c:373 Does it work under Win32 ? 18:55
rurban leo_: don't you want to try your luck with RT #58368? 18:56
oops, it's rt.perl.org/rt3//Public[…]lay.html?id=59410 really 18:57
dalek r31520 | pmichaud++ | trunk: 18:58
: [rakudo]: Correct name of t/spec/S05-modifier/ignorecase.t
diff: www.parrotvm.org/svn/parrot/revision?rev=31520
rurban ../../parrot.exe -o befunge.pbc befunge.pasm 18:59
error:imcc:syntax error, unexpected IDENTIFIER, expecting PARROT_OP ('save')
in file 'flow.pasm' line 33
included from 'befunge.pasm' line 1
anybody knows how 'save' should be converted to now? 19:00
DietCoke rails his fist at rakudo's spectest progress. 19:01
chromatic Normal calling conventions, I thought.
DietCoke it's not a drop in replacement, though.
if they're specifically using the old user stack, you need to convert the calls to be normal sub calls.
dalek r31521 | moritz++ | trunk: 19:02
: [pynie] implement some builtins
: * len, list, range, str
: * added .namespace [] at top of funcs.pir
: * add tests (13-builtins.t)
: * update MANIFEST and CREDITS
diff: www.parrotvm.org/svn/parrot/revision?rev=31521 19:03
r31522 | moritz++ | trunk: 19:05
: [pynie] implement for. Patch courtesy by isop++
diff: www.parrotvm.org/svn/parrot/revision?rev=31522
DietCoke AndyA: ping 19:06
AndyA Hello :)
19:06 gmansi joined 19:12 Zaba joined
barney AndyA: Is it worth looking at frama-c.cea.fr/index.html ? 19:13
moritz isop++ # pynie patches
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 en.wikipedia.org/wiki/List_of_tools...analysis#C
dalek r31523 | kjs++ | trunk: 19:15
: [pirc/new] fix bug in [target=parrotop] rule. (else clause didn't have braces!)
diff: www.parrotvm.org/svn/parrot/revision?rev=31523
r31524 | julianalbo++ | pdd27mmd:
: Fixed integer.pmc default cmp and pmc/integer test
diff: www.parrotvm.org/svn/parrot/revision?rev=31524
DietCoke AndyA++ 19:22
dalek r31525 | kjs++ | trunk: 19:26
: [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.
diff: www.parrotvm.org/svn/parrot/revision?rev=31525
DietCoke -> offline 19:29
19:45 contingencyplan joined
dalek r31526 | kjs++ | trunk: 19:45
: [pirc/new] fix the not-working re-use of argument-checking code. Also implement an operand-count check.
diff: www.parrotvm.org/svn/parrot/revision?rev=31526
r31527 | julianalbo++ | pdd27mmd: 19:47
: fix eq PMC INT
diff: www.parrotvm.org/svn/parrot/revision?rev=31527
Tene svn.perl.org/account is throwing an error 19:48
19:58 contingencyplan joined
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
saying it can't find the shared object.
anyone any ideas? 20:03
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
didn't work, but exporting relative address works
and I see it segfaults! :-(
dalek r31528 | pmichaud++ | rt59410: 20:07
: Create a branch for diagnosing RT#59410.
diff: www.parrotvm.org/svn/parrot/revision?rev=31528
chromatic Hm, the MMD branch needs a merge from trunk. 20:08
NotFound chromatic: the items I fixed have different implementations than trunk. 20:10
chromatic I meant the ExceptionHandler fix I made yesterday. 20:12
20:13 grim_fandango joined
dalek r31529 | kjs++ | trunk: 20:17
: [pirc/new] fix memory freeing. embarrassing mistake...
diff: www.parrotvm.org/svn/parrot/revision?rev=31529
r31530 | kjs++ | trunk: 20:18
: [pirc/new] forgot to remove brace (that's what happens when editing on 1 system and testing on the other :-( )
diff: www.parrotvm.org/svn/parrot/revision?rev=31530
r31531 | kjs++ | trunk: 20:21
: [pirc/new] remove 'return' statement to prevent some code running. NOW the memory issue is fixed.
diff: www.parrotvm.org/svn/parrot/revision?rev=31531
20:24 Zaba_ joined
dalek r31532 | kjs++ | trunk: 20:27
: [pirc/new] fix printing of instructions; don't use stderr if it's not necessary (it prints (flushes) stuff before earlier statements!)
diff: www.parrotvm.org/svn/parrot/revision?rev=31532
r31533 | kjs++ | trunk: 20:49
: [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!
diff: www.parrotvm.org/svn/parrot/revision?rev=31533
r31534 | kjs++ | trunk: 20:54
: [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)
diff: www.parrotvm.org/svn/parrot/revision?rev=31534
r31535 | pmichaud++ | rt59410: 20:56
: Apply loop_control_next.patch from RT #59410. All parrot tests pass.
diff: www.parrotvm.org/svn/parrot/revision?rev=31535
Tene pmichaud: are there any parrot tests that use pct? 21:05
pmichaud Tene: now.
no.
Tene Oh. Okay.
I was confused by your "all tests pass" note.
pmichaud all parrot tests pass, but not rakudo ones.
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.
bacek morning. 21:09
Tene Hi, bacek.
bacek hi Tene
pmichaud: if you'll have time there is patch in #58646 to convert "new Failure" to "!FAIL()" (not mine ;) 21:10
Tene I'm definitely in the mood for some parrot hacking tonight. 21:11
Class should be out in 1.5 hours or so.
pmichaud bacek: RT #58646 is now in my hiveminder list.
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.
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 :-)
NotFound ltm? 21:16
purl somebody said ltm was longest token matching
pmichaud is there a quick command to strip all pod from a file?
particle perl 5 pod? 21:24
perldoc might have one... 21:25
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:26
NotFound PerlJam: sure, you only need to tell someone to organize a parrot convention. 21:28
PerlJam NotFound: or a cruise! Randal does geek cruises, I bet he could whip something up. :) 21:29
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.
pmichaud yes. perl 5 pod
PerlJam bacek: that fails for =begin/=end pairs among other things. 21:32
pmichaud perl 5 pod has =begin/=end pairs?
moritz yes
pmichaud anyway, this particular file doesn't have any.
moritz erm, it has =for editor...=end for or something 21:33
particle search.cpan.org/dist/Pod-Strip/
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
PerlJam search.cpan.org is your friend.
bacek "CPAN is my language of choice" ;)
PerlJam particle: though the docs say it "strips all POD from Perl Code". Pm doesn't have Perl Code. 21:34
particle i don't think pod::simple cares if the file has perl code in it 21:35
pod::strip is a pod::simple subclass
pmichaud $lines =~ s/^=.*?^=cut//gms; 21:37
seems to do it.
chromatic If it's valid POD, that should work. 21:41
moritz might fail for some perl 5 obfus ;) 21:42
PerlJam that works modulo =begin/=end as I mentioned earlier :)
=for will break it too
chromatic Will can fix his own POD.
</subtle>
21:52 Debolaz joined 21:53 Zaba joined 21:54 grim_fandango joined, cognominal joined 21:57 Lorn joined
pmichaud yay! I got the problem down to a single sub. 22:03
well, one sub that when included causes the hang.
moritz scary
whenever I hear about bugs like this I wonder how we could ever got as far as we did ;) 22:05
pmichaud down to two lines of PIR 22:08
22:08 TiMBuS joined
pmichaud down to one line of PIR 22:09
get ready for it....
$N0 *= elems
Tene *= ? 22:10
Are you sure that's the same?
pmichaud I have a program where if I compile with that line commented out, it compiles fine, but if commented out, it hangs.
er
wait
if the line is commented out, compiles fine, if left in, compiling hangs
brb 22:12
Tene pmichaud: interesting.
pmichaud nopaste coming. 22:16
22:17 Lorn joined
nopaste "pmichaud" at 76.183.97.54 pasted "reproducible hang in rt #59410" (12 lines) at nopaste.snit.ch/14198 22:18
pmichaud adding that one subroutine to the beginning of gen_actions.pir is sufficient to get imcc to hang. 22:19
without it, gen_actions.pir compiles just fine.
(gen_actions.pir is the file that is produced from compiling actions.pm with nqp)
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
chromatic They do completely different things. 22:21
pmichaud however, eliminating ":method :multi()" from hanger.pir still results in the hang.
chromatic They're two separate dispatch mechanisms and two separate storage mechanisms.
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.
pmichaud :multi is how we're able to distinguish obj.'foo'($P0) based on the type of $P0 22:23
i.e., foo can be .sub 'foo' :method :multi(_, 'Integer') or .sub 'foo' :method :multi(_, 'String')
chromatic Sure, and I think that's semantically wrong. 22:24
NotFound pmichaud: Changing the name of the .sub has some effect?
moritz chromatic: so how would you make that distinction?
chromatic With multimethods. That's what they're for.
pmichaud do multimethods work in PIR? how are they defined?
moritz and how do multimethods look in PIR?
22:25 Lorn joined
chromatic .sub whatever :multi( T, U, V ) 22:25
.end
moritz but that's a sub, not a method, isn't it?
chromatic Yep.
Different dispatch mechanism.
pmichaud so obj.'whatever'(...) would fail to find it.
moritz which again leads to my question 22:26
pmichaud at any rate, :method :multi is an issue I'd prefer to defer
chromatic multi dispatch has nothing to do with inheritance
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 nopaste.snit.ch/14199
chromatic pmichaud, what happens if you use a named N-reg instead of $N0? 22:28
pmichaud looking at that now. 22:29
Tene pmichaud: have you tried trimming down gen_actions.pir yet?
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.
Tene Right. I'm just wondering if we can produce a smaller failing case.
nopaste "pmichaud" at 76.183.97.54 pasted "named n-reg also hangs" (10 lines) at nopaste.snit.ch/14200 22:30
"pmichaud" at 76.183.97.54 pasted "multiply by constant value does not hang" (11 lines) at nopaste.snit.ch/14201 22:32
chromatic That tickles something in my head. 22:35
particle you ought to get that fixed. 22:36
pmichaud okay, I got it down to two subs.
nopaste "pmichaud" at 76.183.97.54 pasted "this hangs (only two subs)" (40 lines) at nopaste.snit.ch/14202 22:37
pmichaud (I removed the :outer, but it shouldn't really affect things.) 22:38
oh, and there's a .const there... let me strip those.
nopaste "pmichaud" at 76.183.97.54 pasted "this hangs (only two subs, no lexicals or constant lookups)" (40 lines) at nopaste.snit.ch/14203 22:40
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.
pmichaud it's still weird that it's dependent on the *= instruction in the previous sub
NotFound Use kill -s BUS to get a core dump 22:43
chromatic There's probably a cyclical edge somehow. 22:46
pmichaud is compute_dominance_frontiers used for anything besides register allocation...? 22:49
chromatic No. 22:50
pmichaud once again, register allocation is the bane of my Parrot existence.
22:50 peepsalot joined
chromatic Control flow is not easy with continuations, unless you convert everything to CPS. 22:51
The problem is that the runner keeps flipping back and forth between 8 and 9 in the innermost loop of compute_dominators. 22:52
pmichaud what is it about 'myfoo *= $I0' that is affecting dominance in the later sub, though? 22:53
that's what is a little weird.
changing to 'mul' or '+=' doesn't seem to help.
chromatic Register information doesn't get cleared appropriately? 22:54
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
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?
pmichaud the problem is that it only occurs with Tene's PCT patch
oh, I see
but with this PIR we can do it w/o the patch
cool.
chromatic Right.
dalek r31536 | chromatic++ | trunk:
: [PMC] Fixed a memory leak when destroying an AddrRegistry PMC.
diff: www.parrotvm.org/svn/parrot/revision?rev=31536 22:58
nopaste "pmichaud" at 76.183.97.54 pasted "commenting out any of the lines marked 'xxx' allows this to compile" (34 lines) at nopaste.snit.ch/14204 22:59
pmichaud also, reversing the order of the new $P1809, "Undef" and the unless instruction before it allows it to compile. 23:00
gotta join family for dinner... bbl 23:01
nopaste "pmichaud" at 76.183.97.54 pasted "commenting out any of the lines marked 'xxx' allows this to compile (#2)" (34 lines) at nopaste.snit.ch/14205 23:02
NotFound Found the headerizer problem: "static \\n int" instead of "static int"
(Add random words about headerizer here) 23:03
Tene Words like "headerizer is awesome"?
NotFound Maybe
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.
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?
chromatic I can give you a quick overview. 23:05
Tene That would be great, if you have time.
chromatic The alligator divides every compilation unit into basic blocks.
A block is a single block of code between branch points. 23:06
Every entrance and exit point demarcates a block.
NotFound Unfortunately, the problem of the int_overflows was unrelated to the debated problem
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
You also keep track of which registers you use within a block.
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
dalek r31537 | julianalbo++ | trunk: 23:08
: fix imcc/symreg.c:int_overflows() declaration that was fooling headerizer
diff: www.parrotvm.org/svn/parrot/revision?rev=31537
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:09
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
I've been unclear about name/physical register mapping, but I think you get the picture.
Tene I do.
chromatic It's the mapping of name to register that really matters. 23:11
Tene orders chinese and reads imcc.
NotFound Chinese translator? 23:12
Tene no, sesame chicken and fried dumplings 23:13
chromatic My guess is there's something wrong in compute_dominators.
At least, that's the next place to start looking.
23:18 tetragon joined 23:25 mwhudson joined 23:38 Zaba_ joined 23:40 mwhudson joined
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.
Something set that, even though we were trying to disable it universally.
NotFound His value is 0x100 23:47
Tene Really weird things happen with the code if you don't call it. 23:48
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.
NotFound And even weirder if you don't know why you are calling it.
Tene Hmm. Back in an hour. 23:50
chromatic NotFound, I've seen people write: 23:54
#typedef Foo struct Foo 23:55
and with that forward declaration, they use just Foo when declaring the struct later.
If the struct has a pointer to a nested struct, they don't have to use "struct" on the pointer.
It seems cleaner.
NotFound chromatic: yes, is a common usage
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
23:56 dmknopp joined
NotFound BTW, using _SomeStructName is not good, idenifiers starting with an underscore followed by capital are reserved for the C implementation. 23:57
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()