|
parrot.org/ - clean up those smolders for the release! Set by moderator on 20 October 2008. |
|||
|
00:09
AndyA joined
00:33
bacek joined
|
|||
| bacek | hi there | 00:38 | |
|
01:07
tetragon joined
01:34
Ontolog joined
|
|||
| Croke | sydney... alias? damian? | 01:37 | |
| bacek | Croke? | 01:49 | |
| Tene | msg pmichaud If you check out the "!PMC_IS_NULL(iter) && VTABLE_get_bool(interp, iter)" loop in scheduler.c's Parrot_cx_find_handler_local, you'll see that it's never true for the second exception | 02:01 | |
| purl | Message for pmichaud stored. | ||
| Tene | This looks to be because context->handlers is always null | 02:03 | |
|
02:03
Robrt left
02:04
Ademan joined
|
|||
| Tene | Both calls to pcxfhl get the same context. | 02:06 | |
| The difference is that the first time through, it has a valid ->handlers | |||
|
02:10
allison_ joined
|
|||
| cotto | Netherlands++ #nerdiest currency ever | 02:12 | |
| Tene | anyone know how I can set a watch on memory location in gdb? | 02:20 | |
|
02:38
dmknopp left
02:48
petdance joined
02:58
allison_ joined
03:18
tetragon joined
03:42
bacek_ joined
03:53
Psyche^ joined
04:53
allison_ joined
|
|||
| cotto | Tene, watch 0xcafef00d | 05:46 | |
| You can watch a symbolic name, but the breakpoint will be disabled once the variable goes out of scope. | 05:47 | ||
| tewk | watch *(int*) 0xcafef00d sets a hardward watch and is much faster. | 05:57 | |
| cotto | happy! | 05:59 | |
|
06:05
MariachiElf joined
06:29
bacek_ joined
06:31
Bzek joined
07:27
uniejo joined
07:59
Ademan_ joined
08:31
cognominal joined
08:46
iblechbot joined
08:52
masak joined
09:21
cosimo joined
09:37
Lorn joined
10:09
kj joined
|
|||
| dalek | r32246 | julianalbo++ | trunk: | 10:14 | |
| : fix for 't' string passing in jitted nci | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32246 | |||
|
10:20
tomyan joined
|
|||
| dalek | r32247 | masak++ | trunk: | 10:37 | |
| : [rakudo] implemented .contains and ACCEPTS in Hash (RT #60234) | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32247 | |||
| masak | rakudo: sub alwaystrue { return 1 }; say 0 ~~ alwaystrue | 11:00 | |
|
11:00
ruoso joined
|
|||
| masak misses some kind of evalbot | 11:15 | ||
|
11:20
Ontolog joined
|
|||
| szabgab | if I recall yesterday someone said that he has trouble installing wxPerl on Gentoo | 12:09 | |
| I just IM-ed the guy who says he is the maintainer and he asked for bug reports on bugs.gentoo.org | 12:10 | ||
|
13:03
tetragon joined
13:09
Lorn joined
|
|||
| Infinoid | I didn't have a problem installing wxPerl, I just had a problem with their forcing a really old version of it. | 13:16 | |
| and I still haven't gotten it working after having rolled my own packages with newer versions... so I'm not really sure what the solution is yet | 13:21 | ||
|
13:22
gryphon joined
|
|||
| Croke | is there a channel for padre somewhere? | 13:28 | |
| (I don't see one here or on freenoe) | 13:29 | ||
| PerlJam | heh, my ubuntu upgrade keeps saying "about 34 minutes remaining" then "about 2 hours remaining" then "about 9 hours remaining", then back to 30-something minutes. | ||
| dalek | r32248 | rurban++ | pdd30_install: | 13:32 | |
| : [cage] fix svn props | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32248 | |||
| Croke | karma padre? | 13:39 | |
| purl | padre has karma of 2 | ||
| Croke | wow. padre is not responding. =-) | 13:40 | |
| szabgab | Croke: no channel so far | 13:44 | |
| but often on #win32 chatting with Alias and sometimes tsee | |||
| tewk | pmichaud,tene: ncigen is broken, what ::=>; changes do I need to make | 14:07 | |
| particle | what broke? | 14:08 | |
| tewk | 'Method 'type' not found for invocant of class 'c99AST;TypeDef | 14:11 | |
| make test doesn't run anymore. | 14:12 | ||
| particle | a standard pct error | ||
| hrmm, i'll have a look | |||
| tewk | src/c99AST.pir has my custom ast in it. | 14:13 | |
| particle | ok, i see struct and typedef test failures | 14:15 | |
|
14:22
PacoLinux joined
14:30
ben joined
14:34
grim_fandango joined
14:37
notbenh joined
14:42
Limbic_Region joined
14:48
polyglotbot joined
|
|||
| Tene | lolcode: VISIBLE "OH HAI EVRYONE IM BACK!!!" | 14:49 | |
| polyglotbot | No output (you need to produce output to STDOUT) | ||
| Tene | Ooo... segfault! | ||
| That's... awkward. | |||
| particle | tewk: $work has me chasing other bugs, but ncigen is on my list | 14:50 | |
| Tene | Let's try rebuilding parrot... | ||
| tewk | particle: thanks | 15:02 | |
|
15:03
rdice joined
|
|||
| tewk | 'Method 'type' not found for invocant of class 'c99AST;TypeDef make me think it has something to do with the way I define my AST classes in c99AST.pir, I modeled them after PAST nodes. | 15:06 | |
| 'type' should be inherited from c99AST::VarDecl | 15:07 | ||
| correction c99AST::Node inherits from PCT::Node | |||
| so I guess "I modeled them after PCT nodes" | 15:08 | ||
| Tene looks a bit at ncigen | 15:10 | ||
| looks like I've fixed it, checking a bit more... | 15:13 | ||
|
15:15
gaz joined
|
|||
| Tene | Still one test failure that I don't quite understand. | 15:18 | |
|
15:19
allison_ joined
|
|||
| dalek | r32249 | tene++ | trunk: | 15:21 | |
| : [ncigen]: NameSpace updates | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32249 | |||
| Tene prods tewk | 15:23 | ||
| tewk | Tene++, there might have been a failure or two | 15:25 | |
| NotFound | tewk: did you see my last nci fix? | 15:26 | |
| tewk | NotFound: yes | 15:28 | |
| NotFound++, | |||
| Croke | anyone here know mod_rewrite? | 15:29 | |
| PerlJam | Croke: just what I read from google :) | ||
| pmichaud | I know a bit. | ||
| Tene | I know a little bit | ||
| Croke | when doing a rewrite, do you have access to the hostname or just the path? | ||
| I want to do a rewrite substituting part of the hostname into part of the path. | 15:30 | ||
| Ah. ubuntuforums.org/archive/index.php/t-83594.html | |||
| can I use %{HTTP_HOST} in the substitution? | 15:31 | ||
| (trying to get foo-asdf.bar.baz/frob/stuff to map to http;//foo-asdf.bar.baz/frob-foo/stuff | 15:32 | ||
| pmichaud | yes, you have the host name | ||
| I have an example of that, I think | |||
| Croke | (my problem is, I think, that I only want part of the hostname. | 15:33 | |
| pmichaud | doing a partial substitution might be tricky, though. | ||
| Croke | ... though that doesn't matter, I think. | ||
| yah, nevermind. =-) | |||
| thank you. =-) | |||
| particle | RewriteCond %{HTTP_HOST} ^subdomain.website.com$ [OR] | 15:35 | |
| RewriteCond %{HTTP_HOST} ^www.subdomain.website.com$ | |||
| RewriteRule ^(.*)$ http://www.website.com/~subdomain/ [R=301,L] | |||
| do you need it for multiple subdomains? | 15:36 | ||
| szabgab | Croke: I opened #padre on irc.perl.org, let see if someone is coming | ||
| pmichaud | In addition to plain text, the Substition string can include | 15:37 | |
| 1. back-references ($N) to the RewriteRule pattern 2. back-references (%N) to the last matched RewriteCond pattern | |||
| so yes, there's a way to do a backreference to the RewriteCond | |||
| so you can do | |||
| dalek | r32250 | tewk++ | trunk: | ||
| : [NCIGEN] a couple more :: -> ; fixes | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32250 | |||
| pmichaud | RewriteCond %{HTTP_HOST} ^([^-]*).* | 15:38 | |
| and then | |||
| RewriteRule ^/frob /frob-%1 | 15:39 | ||
| particle | is that first star greedy? | ||
| pmichaud | they normally are, yes. | ||
| (they're pcre) | |||
| you could require the -, as in | |||
| RewriteCond %{HTTP_HOST} ^([^-]*)-.* | |||
| that would cause the rewrite to not occur if the hostname doesn't have a hyphen in it | 15:40 | ||
| probably don't need that trailing .* anyway | |||
| particle | yeah | ||
| Croke | we can just use the full hostname in the sub; that's fine. just trying to map something that is typically meant for a standalone installation to work with some crazy reverse proxy setup they're using here. | 15:42 | |
| (I'm in app dev. I shouldn't have to help out the server guys with this. =-) | |||
| rewritecond lets you mangle the hostname? hurm. | 15:43 | ||
| pmichaud | rewritecond lets you grab parts of the hostname for later mangling | 15:44 | |
| (mangling takes place in rewriterule) | |||
| or, more precisely, you can use rewritecond to capture things that you later wish to use in your mangling :-) | 15:45 | ||
| Croke | I think this is enough information to make the server guys dangerous. excellent. | 15:47 | |
| pmichaud++ | 15:48 | ||
| jonathan | hi hi | 15:52 | |
|
15:59
grim_fandango_ joined,
Theory joined
|
|||
| jonathan | pmichaud: Any news yet on if you want/can have a Rakudo hacking one side of the Parrot summit? | 16:00 | |
| pmichaud | checking. :-) | ||
|
16:04
grim_fandango__ joined
|
|||
| pmichaud | if so, it would probably be the day before. | 16:05 | |
| currently I arrive at SJC at 2:30pm | 16:07 | ||
| I could change it so that I arrive there around 10:10am | |||
| changing my existing ticket costs $180, though. | |||
| (cancelling and rebooking might be cheaper -- haven't checked that yet.) | |||
| Tene | I might be able to move my flight earlier too... I'll have to remember to check that when I get home. | 16:08 | |
| tewk | I'm comming in at noon | 16:09 | |
| pmichaud | anyway, I expect that meeting Friday before might be better than Monday after. | ||
| Everyone's arriving on Friday anyway, we might as well make use of the Friday afternoon/evening. | |||
| and it doesn't incur an extra hotel stay | |||
| in your (jonathan's) case, you might arrive on thursday, so you have some rest time | 16:10 | ||
| tewk | I saw that pmichaud was coming in the early afternoon, so I booked a noon flight | ||
| pmichaud | then we could meet up early-ish on friday. | ||
| jonathan | Yes, arriving on Thursday would maybe be better. | 16:12 | |
| Don't want to be exhausted for the summit! | 16:13 | ||
| pmichaud | I'll see if I can move my flight to earlier on Friday. At any rate, I suspect friday will be the better meetup-hacking day, unless the summit organizers decide to try to do a friday event of some sort. (I wouldn't advise it -- we can certainly do something sat evening if that's the case.) | ||
|
16:24
jq joined
|
|||
| pmichaud | changing my ticket will cost $180, and would give us an extra 4 hours. I suspect it might be better to simply stick with my existing ticket, but plan to meet up about 4pm on Friday and spend the afternoon/evening hacking. | 16:30 | |
| (I hack much better in the evening anyway.) | 16:31 | ||
| jonathan | Sure, and I will have had a bit of chance to adjust to the timezone. | ||
| OK. | |||
| pmichaud | next we just need to figure out where we're all staying, but particle++ is reportedly working on that :-) | 16:32 | |
| Tene | No, he already took care of it. The wiki says he's renting a van, remember? | 16:33 | |
| ;) | |||
| particle | check the wiki, i've updated hotel info | 16:34 | |
| kj | jonathan: when you're flying? | 16:35 | |
|
17:02
mj41 joined
17:14
chromatic joined
17:15
chromatic joined
|
|||
| jonathan | kj: NOt sure yet - will look soon. | 17:20 | |
|
17:39
ab5tract joined
17:42
jq joined
18:23
gryphon joined
18:36
gryphon joined
|
|||
| Croke | chromatic: did you fix -t4 ? | 19:12 | |
| ah. I was running against an old version. | 19:13 | ||
| chromatic | I haven't touched it yet. | 19:14 | |
| tewk | Croke: which version. If it isn't ancient, it might be helpful to run a bisect. | 19:15 | |
| Knowing where to look is half the battle | |||
| Tene <3 git-bisect. | 19:16 | ||
| tewk | Croke: even has his own svn-biset I believe, where is it again? | 19:17 | |
| Croke | a version which involved local changes which was never committed. | 19:18 | |
| I just didn't re-make after svn revert-ing. | |||
| tewk | ah | 19:19 | |
| Croke opens a ticket with whatever information he has. | |||
| which isn't much, but at least gives a way to reproduce the bug. | 19:22 | ||
| Croke chromatics: "but a pir-only version would be helpful" | |||
|
19:29
LimbicRegion joined
19:33
Limbic_Region joined
19:49
peepsalot joined
|
|||
| Croke | quiet today. hope everything is getting all their neighborhood kids sugared up. | 19:53 | |
| s/everything/everyone/ | |||
| Croke wonders what the hell happened to his brain. | |||
| Tene | Nah, I'm in an airport in PHL. | 19:54 | |
| Croke | brains? | 20:02 | |
| purl | NO BRAINS FOR YOU! NEXT! | ||
|
20:17
rdice joined
|
|||
| jonathan happily lives in a country that, some of the expat community aside, doesn't do Haloween. :-) | 20:17 | ||
| cotto | I don't care for the costumes, but the candy is nice. | 20:19 | |
| jonathan | It not being haloween never stopped me eating candy. ;-) | ||
|
20:24
gryphon joined
|
|||
| cognominal | jonathan++ # Haloween has contaminated France | 20:34 | |
| chromatic | As if you could tell. | 20:36 | |
| szbalint | nov 1st is the day of the dead here | 20:37 | |
|
20:38
bacek joined
|
|||
| szbalint | people go to cemeteries usually, visit the graves of dead loved ones | 20:38 | |
| it clashes quite badly with the import haloween stuff | 20:39 | ||
| chromatic | Take a shotgun and aim for the head. | 20:40 | |
| NotFound | But... today is not christmas? | ||
| Croke | hah | 20:41 | |
| NotFound | (For those that are not *real* programmers (I hope there is no such people here) ): 31oct == 25dec | 20:42 | |
| Croke | (day of the dead) was happy to see una ofrenda at my kids school. | 20:43 | |
| (here in anglo suburbia) | 20:46 | ||
|
20:46
Lorn joined
|
|||
| szbalint | (hungary's day of the dead just shares a common name with the mexican day of the dead - it's entirely a separate thing) | 20:46 | |
| Croke | oh, sure, confuse me. | 20:47 | |
| jonathan | Tomorrow is a national holiday here - All Saint's Day. | ||
| Croke | chromatic: -t4 goes squirrely in Parrot_Context_get_info | ||
| NotFound | jonathan: all people in the country are saints? | ||
| szbalint | I think it is ment to be the day of the saints which otherwise have no special day | 20:48 | |
| or something like that :) | |||
| jonathan | I think so, yes. :) | ||
| Erm, that was in response to szbalint, not NotFound. That can't be true. I live here. :-) | 20:49 | ||
| szbalint | ah, you're in slovakia right? For some reason I always think of the UK when seeing your nick :) | 20:50 | |
| jonathan | Yes, I live in Slovakia now. But originally I'm from the UK. | 20:52 | |
| NotFound | That explains all. You are not saint because you are foreign ;) | ||
| jonathan has been foreign for the last year. :-) | 20:54 | ||
| Croke gets closer... | 20:55 | ||
| NotFound | Croke: tcl does not compile with c++, and checking why I see that in C is giving warnings that looks like real problems. | 20:58 | |
| src/binary.c | cc1: warning: ./include: No such file or directory | 20:59 | ||
| Croke | probably not getting compiler flags set properly when the makefile is created. | 21:05 | |
| NotFound | I realclean and reconfigure | ||
| jonathan | particle: Have worked out what flight to take. | ||
| And updated page with (current) exact cost. | |||
| NotFound | Croke: I don't see any rule in Makefile related to src/binary.c | 21:06 | |
| jonathan | I'll go from Vienna rather than Bratislava - takes a little longer to get to, but is much cheaper. | ||
| NotFound | Croke: if the default rule is used, there is a: CC_INC = -I./include that can be the reason for the message. | 21:08 | |
| Croke | have to run now, but have narrowed down the -t4 stuff to Parrot_full_sub_name's invocation of Parrot_ns_get_name | 21:11 | |
| ... which does a PCCINVOKE to get some information rather than just look it up in a hash, which may be what screws us up. | |||
| -> halloween | |||
| NotFound | Croke: I think the Makefile problem is the lack of the rule .c$(o) | 21:14 | |
|
21:18
dolmen joined
|
|||
| NotFound | Mmmm... no. The rule is present, but is not exactly the same as the main | 21:18 | |
| I've got it: the CC_INC = @cc_inc@ expands to a value intended to use from the parrot root, not from languages/tcl | 21:26 | ||
| chromatic | That's true. | 21:27 | |
| NotFound | And the solution is... ? | ||
| chromatic | Use a Tcl-specific include there? | 21:30 | |
| NotFound | -I../../include ? | 21:31 | |
| chromatic | Seems reasonable. | ||
| NotFound | Simpler solution: drop it. The parrot include directory is already included elsewhere :? | 21:35 | |
| particle | jonathan++ for the update | 21:36 | |
| NotFound | The other problems where PMCNULL used instead of NULL with STRING * | 21:38 | |
| purl: paset? | 21:39 | ||
| purl | notfound: bugger all, i dunno | ||
| NotFound | purl: paste? | ||
| purl | i think paste is (see: nopaste) or like glue but a little safer to sniff. or nopaste.snit.ch:8001/ or scsys.co.uk:8001/ anywhere shadowpaste is or mmm, sticky paste or You there! Eating the paste. or <see> 2 girls, 1 paste | ||
| nopaste | "NotFound" at 213.96.228.50 pasted "tcl fixes" (43 lines) at nopaste.snit.ch/14439 | ||
| NotFound | Croke: ping | 21:41 | |
| chromatic | Looks sane to me. | 21:49 | |
| jonathan | particle: Basically, I'm in the position now where if I can get it confirmed my travel can be funded, I can come. | 21:53 | |
| particle: Do I have to fill some grant application in, or contact someone, or...? | 21:54 | ||
| allison | jonathan: filling out the survey wiki page is the official application process, which I see you've done | 21:56 | |
| mmmm... I see <pre> tags break the parrot.org template | 21:58 | ||
| jonathan | allison: Ah. That's refreshingly unbeaurocratic. :-) | 21:59 | |
| A month in Russia makes you forget how simple things *can* be. ;-) | |||
| allison | jonathan: :) | ||
| Croke | NotFound: pong | 22:00 | |
| NotFound | Croke: see the nopaste | ||
| Croke | NotFound: does src/binary.c cause a build failure? | 22:01 | |
| or just warnings? | |||
| NotFound | Croke: warnings in C, failure in C++ | ||
| Croke | as I just updated that to prevent an infinite loop somewhere. | 22:02 | |
| NotFound | Croke: but returning PMCNULL when must be NULL looks like a serious problem, anyway. | ||
| Croke | Oh, It's quite likely I fixed it wrong. | 22:04 | |
| can you add the src/binary.c one as a patch to the partcl queue so I don't lose it? | |||
| NotFound | I'll try, but I'm not familiarized with code.google.com | 22:05 | |
| Croke | partcl? | 22:06 | |
| purl | partcl is, like, tcl on parrot or code.google.com/p/partcl | ||
| Croke | NotFound: code.google.com/p/partcl/issues/entry | ||
| applied the other bit and added your nick to CREDITS | |||
| And after halloween, I'll check it out and see if I can fix it the right way. | 22:07 | ||
| -> | |||
| (thanks)\\ | |||
| NotFound | 69, nice number | 22:09 | |
| Andy | rakudo.org needsa favicon.ico | 22:20 | |
|
22:29
TiMBuS joined
22:59
davidfetter joined,
masak joined
|
|||
| dalek | r32251 | allison++ | pdd22io: | 23:09 | |
| : [pdd22io] Keep revision history of old UNIX I/O file under new names. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32251 | |||
|
23:10
tetragon joined
|
|||
| dalek | r32252 | allison++ | pdd22io: | 23:11 | |
| : [pdd22io] Converted UNIX I/O for filehandles to new architecture. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32252 | |||
| r32253 | allison++ | pdd22io: | 23:23 | ||
| : [pdd22io] Partial conversion of UNIX I/O for sockets. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32253 | |||
| r32254 | allison++ | pdd22io: | 23:26 | ||
| : [pdd22io] Keep revision history of old Windows I/O file under new names. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=32254 | |||
| masak | happy November, everyone! | 23:28 | |
| jonathan | November! :-D | 23:29 | |
| It's Christmas soon. | |||
| tetragon | Not November yet in Toronto | 23:30 | |
| chromatic | tetragon, Oct 31 == Dec 25 | ||
| masak | tetragon: you'll like it, just wait :) | ||
| jonathan: btw, nice to have you back. | |||
| jonathan | Nice to be back. Am refreshed and ready for action. :-) | ||
| tetragon brandishes the fork from the BSD stuff she wore to the office | |||
| chromatic | Though if you asked me "Hey chromatic, do you know the difference between November and Dec?" I would have to say "Apparently not." | ||
| masak | jonathan: sounds excellent. | ||
| jonathan | Do I even want to know how many tickets are in the Rakudo RT queue now... | 23:31 | |
| masak whistles innocently | |||
| jonathan | :-) | ||
| Will dig back into Rakudo next week. | |||
| masak | aye. | ||
| I'll do my best to help. | 23:32 | ||
| chromatic | jonathan, if Rakudo scares you, how about PCC? | ||
| jonathan | Me too. :-) | ||
| PCC as in...the calling conventions? | |||
| chromatic | Yes. | ||
| jonathan | inter_call.c is one of the bits of Parrot that I occasionally try to fit into my head...and then fail. | 23:33 | |
| Are they in need of changes, fixes, optimizations...or? | |||
| chromatic | In particular, I wonder if it's necessary to create a new FixedIntegerArray PMC for subs where the type and number of arguments is static at compile time, rather than freezing a constant PMC into the bytecode. | ||
| Though I do remember you adding arity support to subs a while back. Do we use that? | |||
| jonathan | The FixedIntegerArray PMC represents the signature. | 23:34 | |
| The arity stuff looks at this PMC, yes. | |||
| We use it to see the types of the arguments, and their flags. | 23:35 | ||
| By "create a new one", what do you mean? | |||
| chromatic | I'm thinking of ways to reduce GCable elements in calls. | ||
| jonathan | Oh. | ||
| I didn't think we created one during the calling? | |||
| I thought that we just had one as a constant PMC. | |||
| Or are you talking about calls from C? | 23:36 | ||
| e.g. PCCINVOKE and Parrot_PCCINVOKE? | 23:37 | ||
| Those do I suspect (or could believe) create one per call. | |||
| chromatic | PCCINVOKE for sure. | ||
| jonathan | Aha, OK. | ||
| I thought you meant call from one PIR sub to another PIR sub, in which case we should not be allocating these. | 23:38 | ||
| chromatic | Like you, I can't keep src/inter_call.c in my head. | ||
| Right. In theory, we shouldn't. | |||
| jonathan | We don't have to, I figured a while ago there were ways to optimize it in the future, but it felt more optimization-ish and thus was a "worry about it later" thing. :-) | ||
| (Shouldn't have to allocate during PCCINVOKE, that is.) | 23:39 | ||
| Theory sneezes | |||
| chromatic | In Theory, it's too dark to read. | ||
| jonathan hands Theory a tissue | |||
| Theory wipes | |||
| jonathan | chromatic: One option is to have a static (at a C level) variable per callsite, when we use PCCINVOKE inside a PMC. | 23:40 | |
| And stash the array in that. | |||
| chromatic | I realize we're brainstorming, but static variables... yick. | ||
| jonathan | And just have some logic. "Do we have it?" | ||
| OK, I'll be more abstract. | 23:41 | ||
| We have some thingy that per callsite stores the fixed PMC array that we build from the signature. :-) | |||
| But actually the cost in Parrot_PCCINVOKE is muchly, I suspect, the building of the signature. | |||
| chromatic | Is it the caller or callee signature? | ||
| jonathan | From the character array. | 23:42 | |
| Caller. | |||
| chromatic | Does it get modified? | ||
| jonathan | No. | ||
| chromatic | Sounds cacheable. | ||
| jonathan | Right, that's what I was failing to say. :-) | ||
| chromatic | "PP->I" => FixedIntegerArray PMC | 23:43 | |
| jonathan | Yup. And if we can do that process once... | ||
| It's FTW. | |||
| chromatic | Throw an Orcish Maneuver into PCCINVOKE, and everyone's happy. | ||
| jonathan | Since those are C strings, maybe we can even use their memory addresses as cache keys rather than the string itself, but it depends how much the strings are shared across the Parrot binary. | 23:44 | |
| chromatic | Let's just use a cstring Hash. | ||
| jonathan | That works too. | ||
| chromatic | That way external code can use the cache too. | ||
| jonathan | It'd cache more correctly. | ||
| True. | 23:45 | ||
| Good point. | |||
| allison | before you head too far down this direction, the signature integer array is going away entirely, replaced by a CallSignature PMC | ||
| chromatic | These strings will tend to run between two and ten characters long anyway, so hashing time is minimal. | ||
| jonathan | allison: We'll still want to build that from the PI->P style strings, I suspect. | ||
| allison | but, the CallSignature PMC is a container for the arguments, and so different for each call | ||
| jonathan | erm. | ||
| You plan to create a new GC-able object per call? | 23:46 | ||
| allison | and, yes, it is built from PI->P style strings | ||
| jonathan | This sounds very much like the Perl 6 idea of a capture holding the arguments... | ||
| allison | jonathan: yes, but only one. that's 2-3 fewer GC-able objects per call than we create now | ||
| jonathan | What do we create per call now? | 23:47 | |
| allison | jonathan: it is very like it, CallSignature is a subclass of Capture (for the moment) | ||
| jonathan | From PIR to PIR, I thought about nothing. | ||
| Other than a RetContinuation PMC which we generally recycle. | |||
| chromatic | Sounds right. | ||
| allison | currently, we create a integer args array, an integer returns array | ||
| jonathan | We don't create them *per-call*. | 23:48 | |
| From PIR to PIR. | |||
| Per call site, yes. Not per call. | |||
| allison | on the static calls, true, they're constants | 23:49 | |
| jonathan | Where static call = the calls from one PIR sub to another = the common case. | ||
| allison | (those aren't the only ones, but I'd have to dig up that code again) | ||
| jonathan | Do you think we'll be able to re-cycle these CallSignature PMCs as an optimization in the future? | 23:50 | |
| (Obviously, replacing their contents...) | |||
| Or see them as something that we can even optimize away the creation of? | 23:51 | ||
| chromatic | Or cache? | ||
| purl | cache is 1 => for that cached cursor? | ||
| allison | jonathan: GC is recycling objects | ||
| jonathan we keep the PMC headers allocated, and reuse them | 23:52 | ||
| jonathan | allison: I think we are talking about recycling in a different way. Here I mean, we don't have a CallSignature get collected at all. | ||
| allison | having it GC'd is an advantage | ||
| chromatic | Single-bucket GC (even concurrent or iterative) is lousy at recycling lots of frequently-recycled headers. | 23:53 | |
| jonathan | Indeed. | ||
| chromatic | Turn off RetCont recycling sometime and see how much slower things go. | ||
| Alternately, write a C compiler that never stack allocates and always heap allocates. | |||
| jonathan | Right. I am talking here about doing some recycling of these in the same meaning as we recycle RetConts. | ||
|
23:54
Andy joined
|
|||
| allison | it would be possible to have a lightweight signature recycling similar to RetConts, though I'm not sure either recycling scheme will hold up well under concurrency | 23:54 | |
| chromatic | Where we use PMCs as we would automatic variables in C, we can occasionally improve performance dramatically. | ||
| allison | (I suspect they'll be a disaster in concurrency) | ||
| jonathan | Oh, I'd expect to keep a cache or bunch of them to recycle per interpreter. | 23:55 | |
| chromatic | The only problem in concurrency is 1) if the GC isn't concurrency safe, which is a disaster elsewhere or 2) if other threads/processes/LWPs use the same PMC at the same time | ||
| jonathan | Not recycle them across 'em. | ||
| allison | all of this is predicated on the idea that we will continue to have an embarrassingly slow, non-generational, non-incremental GC | ||
| which isn't a good assumption | |||
| chromatic | All of this is predicated on the idea that all PMCs come from the same PMC pool. | 23:56 | |
| allison | yes, non-generational (generational would have a "young" pool swept frequently) | ||
| jonathan | I don't think that assuming some day we'll have such a blazingly fast GC we can just allocate as many short-lived objects as we like is much of a better idea to predicate stuff on... | ||
| chromatic | That presumption only works if you can ensure that nothing in the older generation refers to anything in the younger generation. | 23:57 | |
| allison | chromatic: the problem with concurrency is that the custom recycled objects have a different lifetime than ordinary GC'd objects, so while ordinary GC may be made safe for concurrency, the custom GC may not | 23:58 | |
| chromatic: for collecting, yes | |||
| chromatic | add_pmc_to_free_pool() does need to be effectively atomic, but it should be atomic anyway. | 23:59 | |
| allison | and with CallSignatures you can guarantee it, they're short-lived and purely internal | ||
| chromatic | See #1 in How To Screw Up Concurrency in Your GC above | ||
| jonathan | That's just adding something to a linked list. If there's a CAS operation portably available, then it can be done atomically. | ||
| chromatic | You need a lock around two pointer swaps. | ||