|
www.parrot.org | Parrot 1.6.0 "half-pie" released: PCC branch hackathon all $localtime Saturday | Testing priorities: pcc_reapply branch Set by moderator on 30 September 2009. |
|||
| darbelo | Heisenbugs! Whee! | 00:01 | |
|
00:02
allison joined
|
|||
| Whiteknight | good evening allison | 00:03 | |
| darbelo | Out of memory panic. Nice. | 00:04 | |
| Austin | Whiteknight, I know there is (or used to be) code in the parrot tests that "knew" when it was being run in different test modes. | ||
| nopaste | "darbelo" at 200.49.154.173 pasted "Seemingly inocent bt" (47 lines) at nopaste.snit.ch/18171 | 00:05 | |
| Austin | 77 mb? | ||
| darbelo | what? | 00:06 | |
| Austin | The allocation that failed. | ||
| Whiteknight | okay, next failure now: Parrot_pcc_build_sig_object_from_op is trying to access an index in an FPA that's out of bounds | 00:07 | |
| darbelo | Austin: Yes. 77mb is too big. | 00:09 | |
| Austin | Is that the "seemingly innocent" part. | ||
|
00:10
whoppix joined
|
|||
| darbelo | No, the seemingly inocent part is the actual call chain up to the point where it runs out of memory. | 00:10 | |
| Whiteknight | extract_named_arg_from_op is using raw_index incorrectly | 00:11 | |
| Austin | Oh. | ||
| Whiteknight | Everywhere else is using raw_index as a register index number, but extract_named_arg_from_op is using it as an index into the sig | 00:12 | |
| darbelo | It's trying to open a packfile (the includes in line 1 and 2 of that file's :main) and dies with out of mem while trying to allocate the string that holds the error message. | ||
| s/open a packfile/load_bytecode a file/ | 00:13 | ||
| Whiteknight | "PiSnPoIpSnPoIpSnPoIp" | 00:14 | |
| that's a function signature | |||
| try saying that 5 times fast | |||
| darbelo | Is that 10 arguments? | 00:15 | |
| If that function is in parrot code I'm *so* going to cut it into pieces. | 00:17 | ||
| Whiteknight | Pi is the invocant, Sn is an argument name, not an argument | 00:20 | |
| so 6 args, three of which are named | |||
| no | |||
| three named optional arguments | |||
|
00:20
cognominal joined
|
|||
| Whiteknight | src/pmc/exporter.pmc:import | 00:20 | |
| Austin | What's PoIp ? | 00:21 | |
| Whiteknight | o is optional, p is opt_flag | 00:22 | |
| so pmc :optional\\n int :opt_flag | |||
| Austin | ah | ||
| Whiteknight | big letters are P S N I, little letters are the flags | 00:23 | |
| and believe it or not, these are much saner then how sigs used to be | |||
| Austin | So SnPoIp is string-named optional pmc with accompanying flag? | ||
| GeJ | Good morning everyone | ||
| clock? | |||
| darbelo | I keep getting this stuff mixed up with NCI signatures in my head. | ||
| purl | GeJ: LAX: Fri 5:23pm PDT / CHI: Fri 7:23pm CDT / NYC: Fri 8:23pm EDT / LON: Sat 1:23am BST / BER: Sat 2:23am CEST / IND: Sat 5:53am IST / TOK: Sat 9:23am JST / SYD: Sat 10:23am EST / | ||
| Austin | morning gej | ||
| darbelo | An timezones be added to purl's clock? | 00:24 | |
| Whiteknight | Austin: exactly | 00:25 | |
| hello GeJ! | |||
| GeJ: What day is it where you are? | |||
| darbelo | He said morning. | ||
| I'm guessing saturday. | |||
| Whiteknight | allison: ping | 00:26 | |
| GeJ | technically it's PCC hackathon day | ||
| Whiteknight | GeJ: So get a'hackin'!! | ||
| Austin | ChST -- Chamorro Standard Time. | ||
|
00:26
hercynium joined
|
|||
| GeJ | darbelo: I usually fool everybody with that. I'll assume it's always morning for someone on IRC. | 00:26 | |
| Whiteknight | ah nevermind, allison unping | 00:27 | |
| Austin | Guam! "Where America's Day Begins." | 00:28 | |
|
00:28
rhr joined
|
|||
| GeJ | checking branches/pcc_reapply out | 00:28 | |
| that's the one right? | 00:29 | ||
| Whiteknight | yessir | ||
| ah, I think I found it! | |||
| darbelo | GeJ: Was it you that had a failing FreeBSD box after the kill-next_for_GC merge? | ||
| darbelo afk | |||
| GeJ | yup. but not anymore. Whatever you did, thanks. | 00:30 | |
| Whiteknight | nopaste? | ||
| purl | hmmm... nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or trac.parrot.org/parrot/browser/tru...nopaste.pl | ||
|
00:30
cognominal joined
|
|||
| nopaste | "whiteknight" at 69.249.176.251 pasted "Anybody else see what I see?" (2 lines) at nopaste.snit.ch/18172 | 00:30 | |
| GeJ | Well, for one, I have no idea of what I'm looking at. | 00:34 | |
| Whiteknight | haha, it's part of the new PCC awesomeness | 00:35 | |
| GeJ | ../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pir --output=PGE/builtins_gen.pir PGE/builtins.pg | ||
| shift_string() not implemented in class 'String' | |||
| *br0tch*. | |||
| Whiteknight | but the important part is that all other arguments in that function call are passed as pointers, while the string names are not | ||
| which causes segfault fun anytime a C-based PMC method is called with named arguments | 00:36 | ||
| GeJ | that's what I get on my bug-magnet FreeBSD box while trying to build pcc_reapply. | ||
| Whiteknight | GeJ: yeah, lots of failures | 00:37 | |
| darbelo | GeJ: you should stick to "make corevm" and "make coretest" for now. | 00:38 | |
| A full parrot is unlikely to build before the core's fixed. | 00:39 | ||
| Whiteknight | I've got two fixes coming in that should have a beneficial effect | 00:40 | |
| darbelo | Whiteknight++ | ||
| dalek | rrot: r41625 | whiteknight++ | branches/pcc_reapply/lib/Parrot/Pmc2c/PCCMETHOD.pm: [pcc] named argument name strings in C-based PMCs were not being filled correctly because we were missing an ampersand on them. Fix that. |
00:41 | |
| rrot: r41626 | whiteknight++ | branches/pcc_reapply/src/call/pcc.c: [pcc] raw_index is the index into the register arrays, NOT the index into the arg flags FIA. fix the issue |
|||
| nopaste | "dukeleto" at 69.64.235.54 pasted "Primes.pasm runtime (in seconds) across released versions of Parrot and trunk (r41609)" (13 lines) at nopaste.snit.ch/18173 | 00:47 | |
| dukeleto | nice work peeps, trunk is fastest | ||
| there was a huge jump in performance between 1.2 and 1.3 | 00:49 | ||
| roughly 20x speed improvement for primes.pasm | 00:50 | ||
|
00:50
quek left
|
|||
| darbelo | Aha! I think I found the source of the invalid STRINGs in the io subsystem. | 00:51 | |
| Austin | Isn't undef supposed to stringify to "" (empty string) ? | 00:52 | |
| darbelo | undef's supposed to stringify? | 00:53 | |
| treed | I wouldn't expect it to stringify at all? | ||
| treed is decidedly not a perl person, though. | |||
| darbelo leaves for a while. | 00:55 | ||
| Laters! | |||
|
00:55
darbelo left
00:58
quek joined,
kid51 joined
01:00
quek left
01:01
patspam joined
01:02
whoppix joined
|
|||
| kid51 | During the outage, I pasted this 'make coretest' output from the pcc_reapply branch: nopaste.snit.ch/18174 | 01:03 | |
|
01:04
quek joined
|
|||
| Whiteknight | Parrot_pcc_fill_params_from_c_args is definitely filling arguments incorrectly | 01:04 | |
| dukeleto | Coke: ping! | 01:05 | |
|
01:05
quek left
01:06
quek joined
|
|||
| Whiteknight | or, it's getting bad signature information | 01:07 | |
|
01:07
quek left
01:08
quek joined
01:10
quek left
|
|||
| Whiteknight | In the pattern SnPoIp, the opt_flags are being marked as positional arguments and iterated that way | 01:10 | |
| when that's clearly not what it's supposed to be (it's a flag on a named arg in this case) | |||
|
01:10
quek joined
01:11
quek left
|
|||
| Whiteknight | well, actually I don't know in that case what the Ip should be listed as | 01:14 | |
| PiSnPoIpSnPoIpSnPoIp is being processed as if it has 3 positional arguments | 01:23 | ||
| so I'm not sure where those are coming from | |||
|
01:24
whoppix_ joined
|
|||
| dalek | TT #1088 created by Austin_Hastings++: Multidispatch 'concatenate_str' does not handle LHS undef | 01:26 | |
|
01:29
quek joined
|
|||
| bacek | o hai | 01:29 | |
| Whiteknight | I think I've got it | 01:32 | |
| hello bacek | |||
| happy hackathon day! | |||
| bacek | Whiteknight: not for me. It's "Happy Kids day" | ||
| Whiteknight | bacek: that's a good day too! | 01:33 | |
| technically I'm coding yesterday, but I'm starting hackathon day early | |||
|
01:35
quek left
01:36
quek joined
|
|||
| dukeleto | hola | 01:37 | |
|
01:38
quek left,
quek joined
01:41
joeri left
01:43
quek left,
quek joined
|
|||
| Coke | dukeleto: pong | 01:47 | |
| Whiteknight | ...lots of little fixes... | 01:50 | |
| dalek | rrot: r41627 | whiteknight++ | branches/pcc_reapply/src/call/pcc.c: [pcc] move around the logic for handling optionals. Named params can be optional too, but the fill_params_* functions were short circuiting when a named argument was found and were not setting the correspondig opt_flag. This fixes that issue |
01:52 | |
| Coke | anyone who has committed to partcl, do you have a github id? | 01:56 | |
|
01:58
TiMBuS joined
02:01
rhr joined,
whoppix_ joined
|
|||
| Coke | crud, I think I missed dukeleto. | 02:06 | |
| dukeleto++ | |||
| dalek | kudo: f529b41 | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex cosec and acosec. |
02:18 | |
| shorten | dalek's url is at xrl.us/bfpwhz | ||
| dalek | kudo: 54c4564 | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex cotan and acotan. |
||
| shorten | dalek's url is at xrl.us/bfpwh3 | ||
| dalek | kudo: 16a2810 | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex sinh and asinh. |
||
| shorten | dalek's url is at xrl.us/bfpwh7 | ||
| dalek | kudo: fc29434 | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex cosh and acosh. |
||
| shorten | dalek's url is at xrl.us/bfpwh9 | ||
| dalek | kudo: d5b578b | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex tanh and atanh. |
||
| shorten | dalek's url is at xrl.us/bfpwib | ||
| dalek | kudo: 396f318 | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex sech and asech. |
||
| shorten | dalek's url is at xrl.us/bfpwid | ||
| dalek | kudo: 7bfbe77 | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex cosech and acosech. |
||
| shorten | dalek's url is at xrl.us/bfpwif | ||
| dalek | kudo: 197b1e1 | (Solomon Foster)++ | src/setting/ (3 files): Full support for Complex cotanh and acotanh. |
||
| shorten | dalek's url is at xrl.us/bfpwih | ||
| dalek | kudo: e976f23 | (Solomon Foster)++ | t/spectest.data: Update the spectest to run the new trig tests. |
||
| shorten | dalek's url is at xrl.us/bfpwij | ||
| Coke | darbelo: ping. | ||
| darbelo? | |||
| purl | darbelo is Daniel Arbelo Arrocha <mailto:arbelo@gmail.com> | ||
|
02:24
kid51 joined
|
|||
| dalek | rrot: r41628 | whiteknight++ | branches/pcc_reapply/src/pmc/capture.pmc: [pcc] fix some of the mark logic in Capture PMC to just make sure that everything that I think should be getting marked is actually getting marked |
02:25 | |
|
02:26
quek left
|
|||
| Coke | dukeleto? | 02:27 | |
| purl | somebody said dukeleto was still employeed. i "made the cut" in our CEO's words | ||
|
02:29
quek joined
02:30
kid51 joined
02:36
janus joined
02:40
whoppix_ joined
02:41
quek left,
quek joined
02:44
quek left,
quek joined
02:47
kid51 joined
02:48
cconstantine joined
|
|||
| diakopter | Coke? | 02:54 | |
| purl | Coke is probably Will Coleda <mailto:will@coleda.com> or perpetually annoyed. or magical ticket robot or (if Diet), something that turns into formaldehyde in my blood. | ||
| Coke | hio | 02:59 | |
|
03:00
whoppix joined
|
|||
| Whiteknight | urg, this PCC argument processing state machine is a big pain | 03:00 | |
| purl msg allison Parrot_pcc_fill_params* has a lot of problems, especially with optional parameters. I committed a fix earlier but it isn't enough. When filling args there's a difference between "the last storage space was an optional arg" and "we actually had a value to put there". Two meanings, but we only have one flag | 03:07 | ||
| purl | Message for allison stored. | ||
| Coke | relax your mind: www.cesmes.fi/ | 03:08 | |
| nopaste | "Whiteknight" at 69.249.176.251 pasted "example patch for allison++" (126 lines) at nopaste.snit.ch/18175 | 03:09 | |
|
03:10
darbelo_ joined
|
|||
| Whiteknight | purl msg allison check out nopaste.snit.ch/18175 for an example of what I am talking about. Incomplete, but shows one way we could account for the different issues here. | 03:10 | |
| purl | Message for allison stored. | ||
| darbelo_ | Coke: pong | ||
| Whiteknight | and with that, I need me some sleep | 03:11 | |
| goodnight | |||
|
03:13
rhr joined
|
|||
| darbelo_ | purl: msg Coke I'm "darbelo" on github if that is what you were going to ask me. | 03:14 | |
| purl | Message for coke stored. | ||
| Coke | msg dukeleto darbelo is darbelo on github. | ||
| purl | Message for dukeleto stored. | ||
| darbelo_ | Coke: ping | 03:27 | |
|
03:30
whoppix joined
|
|||
| darbelo_ | Oh. Nevermind | 03:31 | |
| Coke: un-ping | |||
| dalek | rrot: r41629 | mikehh++ | branches/pcc_reapply/lib/Parrot/Pmc2c/Method.pm: fix some codetest errors - trailing whitespace and cuddled else |
03:55 | |
|
04:03
quek left
04:04
whoppix joined,
TonyC joined
04:05
Zak joined
04:07
quek joined
04:14
theory joined
04:19
quek left
04:20
whoppix joined
04:34
zak_ joined
04:47
Zak joined
04:48
kyle_l5l joined
05:02
whoppix joined
05:09
Zak joined
05:48
tokuhirom________ joined
|
|||
| dalek | rrot: r41630 | pmichaud++ | branches/pct-rx/compilers/pct/src/Regex (2 files): [pct-rx]: Refactor Cursor.!matchify, add Cursor.!subrule, other cleanups. |
05:51 | |
|
06:22
ZeroForce joined
|
|||
| dalek | rrot: r41631 | pmichaud++ | branches/pct-rx/compilers/pct/src/Regex (2 files): [pct-rx]: Add Cursor.!literal, P6Regex.quantmod. |
06:23 | |
|
07:17
iblechbot joined
07:50
quek joined
07:58
quek left
07:59
quek joined
08:04
quek left,
quek joined
08:10
quek left,
quek joined
08:34
bacek joined
08:35
Khisanth joined
08:44
quek left
08:46
quek joined
08:58
quek left
09:00
quek joined
09:04
quek left
09:05
quek joined
09:10
quek left,
quek joined
09:16
quek left
09:17
quek joined
09:38
quek left
09:43
Austin joined
09:57
darbelo joined
10:06
whoppix joined
10:24
Whiteknight joined
|
|||
| darbelo | Ugh. freeze and io are so entangled it hurts. | 10:28 | |
| Whiteknight | happy hackathon day! | 10:33 | |
| ...now if only we can get this argment procesing stuff to work | 10:37 | ||
| Austin | Create a new branch, called UN. Just pretend the arguments don't happen. | 10:53 | |
|
11:00
joeri joined
|
|||
| mikehh | hi Whiteknight | 11:01 | |
| Whiteknight | hello mikehh | ||
| mikehh | I still fail to build in the pcc_reapply branch - PGE fails with shift_string() not implemented in class 'String' | 11:03 | |
| Whiteknight | yeah, that's expected | ||
| you need to "make corevm" to just build parrot and not the rest of the library, and then "make coretest" to test it | 11:04 | ||
| mikehh | I have been using make corevm coretest etc and make codetest works | ||
| Whiteknight | there is some functionality missing still that PGE requires | ||
| ok | |||
|
11:21
einstein joined
|
|||
| Whiteknight | okay, there is something wrong with the set_args op | 11:27 | |
| er, maybe not. nevermind | 11:29 | ||
| dalek | rrot: r41632 | whiteknight++ | branches/pcc_reapply/src/call/pcc.c: [pcc] two changes to the arg-handling code: 2) Some changes to the arg filling code to handle named optional params. There is a semantic mixup between 'have storage available for an optional' and 'have an actual value to use in it'. This fix is not perfect and probably needs to be rethought. Net result is a handful of new passing subtests, especially in t/pmc/class.t where I am focusing my current debugging |
11:42 | |
| Whiteknight | there is definitely a problem with the counting of positional elements | 11:54 | |
| I just don't know what that problem is yet | |||
| allison | Whiteknight: it's not really a semantic mixup, it's just the fact that we have two lists: the available arguments and the requested parameters | 11:56 | |
| Whiteknight: coordinating between the two is the task of this chunk of code | |||
| Whiteknight | right, there was a little bit of a mixup in there though | ||
| r41632 fixes the mixup and adds a few passing tests (though I don't like the solution) | 11:57 | ||
| the one flag got_optional was pulling double-duty: trying to tell when we had an optional container to fill, and when we had a value to put in it | |||
| What I'm tracking down now is a problem with overflow in positional arguments. | 12:00 | ||
| mikehh | you get a codetest failure on the last commit - line length # /home/mhh/pcc_reapply/src/call/pcc.c:1237: 102 cols | ||
| Whiteknight | src/call/pcc.c:1014 "if (positional_index >= positional_elements) {..." positional_elements is the number passed, not expected. So this exception never triggers | 12:01 | |
| allison | Whiteknight: (re: got optional) makes sense | ||
| mikehh | I am also getting assert args failures with: | 12:02 | |
| purl | okay, mikehh. | ||
| mikehh | # unused assert macros found: | ||
| # /home/mhh/pcc_reapply/include/parrot/call.h: Parrot_pcc_get_call_sig_raw_args | |||
| # /home/mhh/pcc_reapply/include/parrot/call.h: Parrot_pcc_get_call_sig_raw_returns | |||
| # /home/mhh/pcc_reapply/include/parrot/call.h: Parrot_pcc_set_call_sig_raw_args | |||
| # /home/mhh/pcc_reapply/include/parrot/call.h: Parrot_pcc_set_call_sig_raw_returns | |||
| # 4 unused assert macros found in total. | |||
| I was looking at them but can't quite figure out where they come from | 12:03 | ||
| Whiteknight | mikehh: probably need to make headerizer to get them to disappear | 12:04 | |
| mikehh | tried that - no svn diff | ||
| Whiteknight | well that's weird | ||
|
12:05
cconstantine joined
|
|||
| mikehh | let me try again | 12:05 | |
| allison | mikehh: they were defined before, but no longer used. The headerizer should remove them. | ||
| mikehh | ok - I have something odd - will check again | 12:06 | |
| Whiteknight | in Parrot_pcc_fill_params_from_op, call_object is the CallSignature with passed-in parameters, and raw_sig is the list of expected containers? | 12:07 | |
| well, raw_sig is the list of flags of expected containers? | 12:08 | ||
| allison | mikehh: looks like it's a bug in the headerizer, it doesn't remove sections if the file doesn't exist | ||
| the file was src/call/callsignature.c | |||
| mikehh: if you just delete that whole section of include/parrot/call.h, it should take care of it | 12:09 | ||
| Whiteknight: yes, but we don't need to store that on the call signature anymore | 12:10 | ||
| mikehh | just did a clean checkout - something was wrong - we'll see now | 12:14 | |
| Whiteknight | urg, some of these results make no sense | 12:17 | |
| allison | mikehh: well, those headers are in mine too, and not removed by running headerizer | 12:19 | |
|
12:29
kid51 joined
|
|||
| nopaste | "kid51" at 70.85.31.226 pasted "pcc_reapply: 'make' failure between 41626 and 41632" (664 lines) at nopaste.snit.ch/18179 | 12:39 | |
| dalek | rrot: r41633 | allison++ | branches/pcc_reapply/t/pmc/parrotobject.t: [pcc] Updating error message on incorrect number of arguments. |
12:40 | |
| kid51 | Hmm, that paste did not capture all the output. | ||
|
12:41
jsut_ joined
|
|||
| kid51 | 'make corevm' actually completed; but 'make smolder_coretest' failed quickly | 12:45 | |
| nopaste | "kid51" at 70.85.31.226 pasted "pcc_reapply: early termination for 'make smolder_coretest' at 41632" (82 lines) at nopaste.snit.ch/18180 | 12:47 | |
|
12:47
sjn left
|
|||
| mikehh | kid51 - I get that failure when I try make world - PGE fails with shift_string() not implemented in class 'String' | 12:53 | |
| dalek | rrot: r41634 | allison++ | branches/pcc_reapply/t/pmc/sub.t: [pcc] Updating error message for parameter count mismatch. |
||
| mikehh | make corevm coretest works though | 12:54 | |
| kid51 | Yes, but that doesn't generate a Smolder report. | 12:58 | |
| So the question arises: Should 'smolder_coretest' be changed from: | 12:59 | ||
| smolder_coretest : test_prep | |||
| purl | somebody said test_prep was the 'make' target on which 'make test' immediately depends and is currently equivalent to 'make' | ||
| kid51 | $(PERL) t/harness $(EXTRA_TEST_ARGS) --core-tests --archive --send-to-smolder | ||
| to: | |||
| smolder_coretest : corevm | |||
| $(PERL) t/harness $(EXTRA_TEST_ARGS) --core-tests --archive --send-to-smolder | |||
| darbelo | kid51: +1 | 13:00 | |
| purl | 1 | ||
| darbelo | purl: die in a fire. | ||
| purl | HALP | ||
| kid51 | I think I'll make that change in the pcc_reapply branch, at least for this period of intense concentration on core tests in that branch. | 13:01 | |
| dalek | rrot: r41635 | jkeenan++ | branches/pcc_reapply/config/gen/makefiles/root.in: Change 'make' target 'smolder_coretest' to depend on 'corevm' rather than 'test_prep' (which in turn depends on 'all'). This will enable Smolder reporting equivalent to 'make corevm coretest'. |
13:04 | |
| purl | dalek: that doesn't look right | ||
|
13:06
jsut joined
13:08
cconstantine joined
|
|||
| kid51 | I just posted to list about this. | 13:10 | |
|
13:10
cconstantine joined
|
|||
| kid51 | Here's the Smolder report at 41632: smolder.plusthree.com/app/public_pr...ails/28482 | 13:14 | |
| shorten | kid51's url is at xrl.us/bfp6v4 | ||
|
13:19
jsut_ joined
|
|||
| Whiteknight | urg, the list of test failures is so daunting | 13:30 | |
| mikehh | I tried deleting the relevant headerizer section in pcc_reapply/include/parrot/call.h and various options including re-doing make headerizer - but it blows up with compilers/imcc/imcparser.c | 13:34 | |
| i had to delete include/parrot/call.h and compilers/imcc/imcparser.c and svn update again | 13:35 | ||
| allison | Whiteknight: but the list of test failures is also half as long as it was 2 days ago :) | 13:46 | |
| Whiteknight: small fixes have a big impact | |||
| Whiteknight | I am convinced that the majority of remaining failures have to do with this argument processing algorithm | 13:51 | |
| allison | Whiteknight: very likely | 13:52 | |
| Whiteknight: though some of them also have to do with return processing | |||
| Whiteknight: at the moment, it's a monolithic mess | 13:53 | ||
| Whiteknight: I'd like to break it down into a more maintainable state | |||
| Whiteknight: and suspect that as we do that, we'll likely uncover the bugs | |||
| mikehh | Whiteknight - if I fix the codetest linelengh errors in src/call/pcc.c is that going to mess you up? | 13:55 | |
| allison | Whiteknight: would you like to walk through one together, and see if we can come up with a good refactoring strategy? | ||
| Whiteknight: step one is to move all the argument handling functions to a separate file, src/call/args.c or somthing like that | 13:59 | ||
| Whiteknight | allison: yes, a walkthrugh to figure out a refactor would be very good | 14:01 | |
| I would have started it myself already, but I didn't want to introduce too many changes | |||
| allison | Whiteknight: changes are fine at this point, we'll have to live with this code for a long time | 14:02 | |
| Whiteknight | if the code gets cleaner, more people will be empowered to modify and improve it | ||
| allison | the next step I'd take is to start breaking down each section into a separate subroutine (like "handle slurpy args", "handle named args", etc) | 14:03 | |
|
14:03
cconstantine joined
|
|||
| allison | that'll make the main subroutine much easier to follow | 14:03 | |
| mikehh | src/call/pcc.c is 4159 line long - that is not good | ||
| Whiteknight | mikehh: get your machete ready, we've got some rubbish to clear | 14:04 | |
| cconstantine | is there a way to :flat arguments in NQP? | ||
| kid51 | mikehh: If you fix the long lines, at least you'll be looking at the code ;-) | 14:05 | |
| allison | Whiteknight: it would be nice to be able to merge Parrot_pcc_fill_params_from_op and Parrot_pcc_fill_params_from_c_args, because the logic is exactly the same | ||
| only the way of accessing values is different for each | |||
| but, the only way I can think to merge them is using function pointers, which is a maintenance headache anyway | 14:06 | ||
| Whiteknight | allison: I had those exact thoughts as well | ||
| allison | it might be possible to reverse the logic | ||
| Whiteknight | I have to disappear for a bit. Pregnant wife craves orange juice and getting it is my only superpower | 14:07 | |
| Whiteknight will be back soonish | |||
| allison | k | ||
| allison has to go pick up a dead laptop, will be back soon too | |||
| dalek | rrot: r41636 | mikehh++ | branches/pcc_reapply/src/call/pcc.c: fix codetest - line length > 100 |
||
|
14:10
einstein joined
|
|||
| einstein | I see that socket.pmc clone function does return SELF; is that correct? | 14:11 | |
|
14:15
jsut joined
|
|||
| einstein | I see that socket.pmc clone function does return SELF; is that correct? shall I open ticket for that one? | 14:23 | |
|
14:23
Psyche^ joined
|
|||
| mikehh | messed something up there | 14:26 | |
| kid51 | mikehh: I think I got it | 14:46 | |
| dalek | rrot: r41637 | jkeenan++ | branches/pcc_reapply/src/call/pcc.c: Fix correction of line lengths. |
||
| kid51 | I've found that, in fixing linelengths, if you have to break an arglist, it's best to do so right after the opening parenthesis. | 14:50 | |
| Although I don't know why breaking in the middle of the arglist caused those problems. | |||
|
14:51
theory joined
|
|||
| mikehh | kid51: yes - you just beat me to it - but I agree - it seems not to like CONST_STRING | 14:52 | |
| kid51 | Were those 3 lines where CONST_STRING is used actually giving linelength errors? | 14:54 | |
| (I reverted to r41632 and made my corrections therefrom.) | 14:55 | ||
| mikehh | kid51: yes make codetest passed linelength but I didn't do a regular make until I had commited and then it failed | 14:57 | |
| mikehh must follow proper procedures | |||
|
14:58
cognominal joined
|
|||
| Whiteknight | back | 14:59 | |
| kid51 | Latest smolder on pcc_reapply branch: smolder.plusthree.com/app/public_pr...ails/28485 | 15:00 | |
| shorten | kid51's url is at xrl.us/bfp96s | ||
|
15:01
slavorg joined
|
|||
| kid51 | pcc_reapply: t/codingstd/c_arg_assert.t has failures; otherwise make codetest passes | 15:01 | |
| kid51 goes to gym | 15:02 | ||
|
15:03
jsut_ joined
15:14
kjeldahl joined
15:23
iblechbot joined
|
|||
| Coke | mikehh: in case it was not clear, CONST_STRING needs to be on one line. | 15:53 | |
| Whiteknight | I don't really understand that restriction | 15:54 | |
| I mean, I follow it, but it seems stupid | |||
| allison | Whiteknight: it is stupid, it's a bug/feature of the way CONST_STRING is parsed and stored | 15:59 | |
| Whiteknight | okay, just so we're all clear | ||
| allison | Whiteknight: I just got back and am thinking of working on return handling next, will that overlap with anything you're working on? | 16:08 | |
| Whiteknight | I don't even know what I am working on right ow | 16:09 | |
| but I will avoid that | |||
| allison | okay, I think I'll start by moving return handling out to a separate file | ||
| Whiteknight | ok | ||
| allison | eventually, I'd like return and parameter handling to be unified, so I'm thinking src/call/args.c | 16:10 | |
| Whiteknight | In passed arguments, positions must be passed first and named must be passed thereafter, right? | ||
| allison | can you think of a better name? | ||
| Whiteknight | args.c is good for now | ||
| allison | Whiteknight: yes, positional, then named | ||
|
16:11
kjeldahl joined
|
|||
| Whiteknight | okay, so if I break up this huge statemachine into two separate loops, that would be good? | 16:11 | |
| allison | one for positionals and one for named? | ||
| will that work with the :lookahead option? | |||
| allison looking for description and failing | 16:12 | ||
| Whiteknight | depends where :lookahead args will be ordered | ||
| will they be after the positionals, or mixed in with them? | |||
| allison | but, IIRC, what patrick needed was a way for a positional parameter to check and see if there was a corresponding named argument | ||
| Whiteknight | right, so fill with a named first, positional otherwise | 16:13 | |
| allison | actually, it should be okay | ||
| Whiteknight | we can still do that in the positional loop | ||
| okay | |||
| allison | because your two loops are going over the parameters | ||
| the arguments are all there ready in the call signature | |||
| (so positional processing can pull from either positional or named arguments with no troubles) | 16:14 | ||
| positional *parameter* processing, that is | |||
| Whiteknight | yeah | ||
| allison | do you have a src/call/args.c already, or should I go ahead and create one? | 16:15 | |
| Whiteknight | create one | 16:26 | |
| This argument processing algorithm is too damn complicated. There's no good way to do this | |||
| Austin | Where is it, whiteknight? | 16:28 | |
| Whiteknight | I don't know if there is a concise description of the algorithm anywhere | ||
| Austin | No, what file is it in? | ||
| Whiteknight | but the current code is in src/call/pcc.c:Parrot_pcc_fill_params_from_op (in the pcc_reapply branch) | 16:29 | |
| Austin | 'kl | ||
| Whiteknight | and Parrot_pcc_fill_params_from_varargs | ||
| allison | Whiteknight: no, there isn't, I started this variation as "it has to handle everything the current system handles" | ||
|
16:29
masak joined
|
|||
| allison | Whiteknight: looking at the old code may be helpful | 16:29 | |
| Whiteknight | yeah, I'm going to have to do that, I think | 16:30 | |
| allison | but, the old code had two completely different strategies for calling from PIR and calling from C, so it's even worse | ||
| Whiteknight | trust me, I have no illusions that I'll be able to salvage much from there | ||
| but getting an idea about how they handle all these options, and handle them in a way that isn't O(n^30) would be good | 16:31 | ||
| dalek | rrot: r41638 | allison++ | branches/pcc_reapply/src/call/args.c: [pcc] Add a new file for argument processing and move the return handling |
16:33 | |
| Austin | Actually, a good question would be "what's the problem?" | ||
| Whiteknight | Austin: It's just a very complicated algorithm | 16:34 | |
| Austin | It is? | ||
| purl | Oh no it isn't! | ||
| Whiteknight | when you consider :named, :optional, :opt_flag, and :slurpy parameters, yes | 16:35 | |
| allison | Whiteknight: the logic itself is fairly straightforward, but once you write out all the details it's a mess | ||
| Whiteknight | yeah, thats what I mean | ||
| allison | and, at the moment they're all lumped in one bunch | ||
| which makes it really difficult to wrap a head around it | 16:36 | ||
| Austin | So what are the rules? | ||
| Is there a pdd that details them? | 16:37 | ||
| allison | Austin: pdd03_calling_conventions.pod specifies what flags it has to support | 16:39 | |
| Whiteknight | I'm running into difficulties with handling optional and opt_flag parameters | 16:43 | |
| allison | Whiteknight: will it mess you up if I go ahead and move the fill_params routines into the new file? | 16:44 | |
| Whiteknight | allison: no. I'm trying to outline an algorithm in pseudocode right now | ||
| ...and failing miserably | |||
| allison | Whiteknight: okay, cool, I'll do it now | ||
| Whiteknight | w00t | ||
| allison | Whiteknight: think of it as a finite state machine | 16:45 | |
| you loop over each param, and take various actions depending on the type of param it is | |||
| we could reverse it and loop over the args instead | 16:46 | ||
| Whiteknight | yeah, I know how to do it. It's structuring and organizing all those actions that is getting complicated | ||
| dalek | rrot: r41639 | allison++ | branches/pcc_reapply (4 files): [pcc] Set up compiling for new arg processing file, and run the headerizer. |
||
| allison | which would have the advantage that the args are always the same whether we're dealing with a PIR or C call | ||
| Whiteknight: okay, I'm moving everything to do with argument/return handling into src/call/args.c, including the various ways of building a call signature object | 16:48 | ||
| Whiteknight | okay, I'll wait for that and update before making any more changes | 16:49 | |
| Austin | Is this mechanism aware of arg-flattening, and generators? Or is that expected to happen before this code is reached? | 16:52 | |
| Whiteknight | flattening happens when the signature is created | ||
| this is the code where the signature is disected | |||
| Austin | Boggle<!> | ||
| Whiteknight | What would make this all marginally easier is if CallSignature was an iterator | 16:53 | |
| Austin | So a CallSignature is a run-time thing? | 16:54 | |
| allison | Whiteknight: CallSignature could become an iterator | ||
| Whiteknight | Austin: yeah, it's a PMC type that's like a combination of Array and Hash (with some additional info) | ||
| Austin | Mkay | ||
| Whiteknight | allison: I'm idly speculating. We would need to be able to iterate separately over named and positionals | ||
| allison | Whiteknight: though, would you really want to different iterations, one over positonal and one over named? | ||
| yes, same thought at same time :) | 16:55 | ||
| Austin | Is that the raw_sig input argument to _from_op? | ||
| allison | Austin: the raw_sig is a fixed integer array of flags | ||
| it's created by IMCC | |||
| Austin | So where's this CallSignature? | 16:56 | |
| allison | and gives the attributes of each argument/parameter/return | ||
| Whiteknight | src/pmc/callsignature.pmc | ||
| allison | Austin: it's purely internal, and acts as the mediator between the various different ways of passing args/returns | ||
| Whiteknight | and it's the PMC * call_object there | ||
| Austin | okay. | 16:57 | |
| Whiteknight | My wife went to the mall alone, came home with a box of marshmallow-covered caramel apples | 16:58 | |
| note to self: pregnant wife doesn't shop alone | 16:59 | ||
| dalek | rrot: r41640 | allison++ | branches/pcc_reapply (3 files): [pcc] Move remaining argument/return handling functions into separate file. |
||
| Austin | So if I say, in PIR, 7 'foo'( $P0 :flat ) then I get a raw_sig that says "you passed 1 positonal+flat" at compile time, and a CallSignature at run time that says ($P0) ? | ||
| *positional | |||
| allison | yes | 17:00 | |
| The CallSignature contains the actual list of arguments passed | |||
| Austin | Should fill_params_from_op be a CallSignature method? | ||
| Whiteknight | no | 17:01 | |
| this is the method-calling code. We would get into an infinite loop | |||
| allison | Austin: no, CallSignature is just one piece of information | ||
| Austin | What's the obverse of a CallSignature? | 17:02 | |
| A CalleeSignature? | |||
| ParamList? | |||
| allison | Whiteknight: I moved the functions over, so update before further work | ||
| Austin: CallSignature is both arguments and return values | |||
| Austin: there is no equivalent for parameters, they just pull from CallSignature | 17:03 | ||
| Austin | Yes, but it is the "given" side -- the "args". Is there a "taking" or "params" side for the recipient? | ||
| Whiteknight | right, call signature contains information from the caller (args and expected returns). The Sig FIA contains information about the callee | ||
| well, contains some information about the callee | |||
| allison | Austin: there are two functions, one to store the arguments in the CallSignature, and one to extract the parameters from the CallSignature | 17:04 | |
| both use CallSignature | |||
| Austin | Ah. | ||
| allison | and, Whiteknight is right, IMCC generates a fixed integer array separately for arguments and parameters, which determines how the args are stored and parameters extracted from CallSignature | 17:05 | |
| Austin | Are the params always registers? | 17:06 | |
| allison | Austin: no, they can also be NCI | 17:08 | |
| Austin | The args, or the params? | ||
| allison | that's why we have two variants on fill_params, one "from_op" and one "from_c_args" | ||
| Austin: both | |||
| Austin | Hmm | 17:09 | |
| allison | any subroutine can be called from PIR or C, and any subroutine can be written in PIR or C | ||
| Austin | Sure. | ||
| dalek | rrot: r41641 | allison++ | branches/pcc_reapply/src/call/pcc.c: [pcc] Delete static function no longer used in this file (usage has moved to |
||
| allison | standardizing on CallSignature in the middle means that the parameter side doesn't have to know anything about how it was called | 17:10 | |
| and the argument side doesn't have to know anything about the subroutine being called | |||
| didn't we remove the JIT? Why does src/frame_builder.c still exist? | 17:14 | ||
|
17:14
kj joined
|
|||
| nopaste | "whiteknight" at 69.249.176.251 pasted "argument processing algorithm outline" (42 lines) at nopaste.snit.ch/18181 | 17:15 | |
| Whiteknight | allison: frame_builder is the only part of JIT that we kept | ||
| dalek | rrot: r41642 | kjs++ | trunk/compilers/pirc/src/pircompunit.h: [pirc] add some more comments to pircompunit.h; I start forgetting what some struct fields are for. |
17:16 | |
| allison | Whiteknight: what was the reasoning? | ||
| Whiteknight | ask chromatic | ||
| there's a branch on github that reimplements the frame_builder using libJIT | |||
| Austin | Why do _count variables use INTVAL? | ||
| allison | ah... it looks like it contains a number of functions that used to be needed for calling NCI, but not needed anymore | 17:17 | |
| darbelo | It gives a startup and nci performace boost IIRC | ||
| allison | Austin: INTVAL is just an int | ||
| Whiteknight | oh yes, it is a big performance win, not having to register all the NCI thunks at startup | ||
| Austin | allison: And optimizing named_count > 0 would be a lot easier if the compiler saw "unsigned" | ||
| kj | Good $(daytime) | 17:18 | |
| Whiteknight | allison: does that algorithm I posted look sane? | ||
| kj | Whiteknight: would it be an idea to create a finite state automaton picture based on that algorithm? | ||
| or is would that be overkill... | 17:19 | ||
| eh, remove some words in that sentence there | |||
| Whiteknight | kj: I wouldn't even know how to go about making a good picture of it, but you're welcome to if you have the means | ||
| more documentation is always a good thing | |||
| allison | Whiteknight: looking now... | ||
| darbelo | allison: You have to watch out for the CAN_BULD_FRAMES #define in the frame builder. A completely different set of functions is used if that isn't available. | 17:21 | |
| allison | Whiteknight: I think you have to say "loop over all parameters and arguments" | ||
| Whiteknight: it's really a two-variable foreach loop | 17:22 | ||
| (a Perl 6 zip operation) | |||
| Whiteknight | yeah, I was figuring that would be the case | ||
| allison | I'd tweak the pseudocode to match | 17:23 | |
| because, you actually need the "next" argument to check the first condition "no more arguments", but "get current argument" is listed after that check | |||
| Whiteknight: (this is a very helpful abstraction, to see it all boiled down to pseudocode) | 17:24 | ||
| Whiteknight | allison: we can know that there are no more arguments without checking the next one, because we have a count of how many we got and how many we've processed | 17:25 | |
| allison | Whiteknight: we don't have a count of named arguments | ||
| only of positionals | 17:26 | ||
| Whiteknight | we have a count of all passed arguments | ||
| (all passed) - (processed positionals) = (all named) | |||
| allison | where is the all passed value coming from? | 17:27 | |
| Whiteknight | VTABLE_elements(interp, raw_sig) | ||
| allison | that's a count of parameters, not arguments | 17:28 | |
| and VTABLE_elements(interp, call_object) is a count of positionals | |||
|
17:28
einstein joined
|
|||
| Whiteknight | I keep getting those words mixed up | 17:28 | |
| okay, let me redo the pseudocode and post it again | 17:29 | ||
|
17:34
buildbot joined
|
|||
| Whiteknight | are we going to support anything like :lookahead :slurpy? | 17:35 | |
| or does that not even make any sense? | |||
| allison | Whiteknight: I'd say no, :slurpy always has to come after all other parameters | ||
| Whiteknight | and what does a named slurpy have for it's signature? | 17:36 | |
| allison | :named :slurpy | ||
| Whiteknight | is that "Pns"? | ||
| allison | or, what do you mean? | ||
| Whiteknight | the signature string. how is a named slurpy listed in the sig string? | ||
| allison | yes, Pns | 17:37 | |
| PARROT_ARG_NAME & PARROT_ARG_SLURPY_ARRAY | |||
| (even though it's a hash) | |||
| Whiteknight | right | ||
| allison | Would love to rename that to PARROT_ARG_AGGREGATE | 17:38 | |
| or PARROT_ARG_COLLECT | |||
| Whiteknight | and how will a lookahead be listed? It has a name, so will it be SnPl? | ||
| allison | next refactor | ||
| Whiteknight | or will it be SnlP? | ||
| (I'm just trying to prepare) | |||
| allison | lookahead is positional | 17:39 | |
| Austin | What's lookahead | ||
| purl | well, lookahead is easy.. it's lookBACK that weirds me out | ||
| allison | Austin: an option that pmichaud requested | ||
| Whiteknight: why is the action for a named arg always 'break'? | 17:40 | ||
| Austin | whiteknight: the pseudocode around "if current arg is lookahead" is broken. Nesting, maybe? | 17:41 | |
| allison: named args mark the end of positionals in the upper loop. | |||
| allison | you mean named parameters? | ||
| Austin | I'll bite: What does lookahead *mean* ? | 17:42 | |
| allison | it means "check to see if there is a named argument for this parameter, otherwise use a positional argument to fill it" | ||
| Austin | No, named args, according to the code. He's filling parameters from args, and if he sees a named arg, it means he can't fill any more params. | 17:43 | |
| Whiteknight | allison: because there are two loops. The first loop is only for positionals, so if we see a named break and enter the next loop | ||
| I'm about to paste a new version with only one loop. One second... | |||
| allison | but, you're not going to see a named arg, because named args are in a different data structure | ||
| Austin | That'll likely change the code :) | 17:44 | |
| nopaste | "whiteknight" at 69.249.176.251 pasted "pseudocode for arg processing for allison++" (41 lines) at nopaste.snit.ch/18182 | ||
| Whiteknight | this is why I want to write some pseudocode right now, to make sure I get all the details correct | 17:46 | |
| don't want to waste time slinging code if it's going to be wron | |||
| allison | Whiteknight: check slurpy before named, since slurpy trumps everything else | ||
| Whiteknight | that's fine too | 17:47 | |
| can :slurpy also be :optional, or is that implied/nonsensical? | 17:49 | ||
| Austin | Is the sequencing rule {positional, optional, @slurpy, named, optional, %slurpy} still in place? | ||
| allison | :slurpy is optional by definition (it takes 0 or more arguments) | ||
| Whiteknight | that's what I figured | ||
| Austin: that's what I believe to be true, yes | 17:50 | ||
| A quick union here {INTVAL, FLOATVAL, STRING *, PMC *} will make a lot of this code much more streamlined | |||
| nopaste | "whiteknight" at 69.249.176.251 pasted "more pseudocode for allison++" (40 lines) at nopaste.snit.ch/18183 | 17:54 | |
| Whiteknight | eventually I'm going to get this right out of sheer luck | 17:56 | |
| nopaste | "allison" at 77.98.130.30 pasted "Simplified algorithm for parameter/argument iteration" (46 lines) at nopaste.snit.ch/18184 | 17:58 | |
| Austin | how expensive is hash delete? | 17:59 | |
| allison | The CallSignature shouldn't be modified (if you're asking about deleting each named argument as it's used) | 18:01 | |
| Austin | nopaste.snit.ch/18185 | ||
| I was thinking shallow-copy + delete | |||
| Whiteknight | that's sort of what I was thinking about with my iterator idea | ||
| allison | Austin: it already is a shallow copy, but there's no advantage to deleting it from the CallSignature | 18:02 | |
| Whiteknight | I think there's benefit to be had by checking opt_flags at the same time as when we check optionals | 18:03 | |
| allison | Austin: nopaste#18185 ends up duplicating a good bit of behavior | ||
| Austin | Speaking of shallow-copy, allison, what's the right way to propose a new/changed set of clone behaviors? | ||
| allison | Austin: optional or non is mainly a question of what error condition to set | 18:04 | |
| Austin | Yeah, but clarity is worth something for my very small brain. Like, I can see that I missed setting the opt flags. | 18:05 | |
| allison | Austin: a mailing list message is often a good way to start a discussion | ||
| Austin | I'll send the message, then. Thanks. | ||
| allison | Whiteknight: your pseudocode is still mixing up arguments and parameters | 18:06 | |
| "if current arg is slurpy" | 18:07 | ||
| args are never slurpy, params are | |||
| Whiteknight | yeah | ||
| allison | "if current arg is named" should actually be checking if current param is named | ||
| same with optional and opt_flag | 18:08 | ||
| the check for "no more arguments" can just go at the start of the loop, instead of repeating it before the loop and at the end of the loop | |||
| actually.... | 18:09 | ||
| Austin | Does the code support opt_flag for named params? | ||
| Whiteknight | yessir | ||
| allison | Austin: yes | ||
| so, the question of whether to fetch from positional or named arguments is determined by the type of the parameter | 18:10 | ||
| Austin | Okay. Lookahead. | ||
| purl | i guess lookahead is easy.. it's lookBACK that weirds me out | ||
| allison | so, make "check next argument" a function instead of part of the loop | ||
| Austin | Lookahead means "this parameter has a name and a position, and if the named setting is available, use that, else use the corresponding positional", correct? | 18:11 | |
| Whiteknight | allison: okay, so what does that function take and what does it return? | ||
| allison | Austin: yes | ||
| Austin | Can lookaheads be optional? | ||
| (Of course) | 18:12 | ||
| allison | Austin: yes, it can be "take the named if you've got it, else the positional, else nothing" | ||
| Whiteknight: it takes the call sig, and the current index, and returns a PMC | |||
| Whiteknight | returns a PMC? wouldn't it need to return a union of P, N, S, I? | 18:13 | |
| allison | (alternatively, it can have 4 variants that return an INT, NUM, STRING, or PMC) | ||
| Whiteknight: the thing is, all args are currently stored as pmcs | |||
| Whiteknight: though, an early optimization is likely to be to make it possible to store them directly as the lower types | 18:14 | ||
| Whiteknight | Okay, I guess I didn't realize hat | ||
| okay, return a PMC it is | |||
| Austin | nopaste.snit.ch/18186 | 18:15 | |
| allison | Austin: there are no default values | 18:16 | |
| Austin | For lookaheads? | ||
| allison | Austin: that's what the opt_flag is for, to prevent you from looking at garbage | ||
| Austin: no defaults for any kind of parameters | 18:17 | ||
| Austin | The current code sets things to 0/0.0/NULL/PMCNULL if no value is provided. | ||
| Whiteknight | that's only if we don't pass enough arguments and if error checking is turned off | 18:18 | |
| Austin | Okay. | ||
| allison | Whiteknight: of course, if we put "fetch the next argument" into a function, we lose the advantage of automatic boxing and unboxing | ||
| Austin | So call it a feature: optionals now have a sane default value. | 18:19 | |
| allison | Austin: it's extra work, which means extra execution cost | ||
| Austin: and not necessary | |||
| Austin | How not necessary? | 18:21 | |
| allison | Austin: the opt_flag tells you if you got an argument in that parameter | 18:23 | |
| Austin | And when you don't check it? | ||
| allison | Whiteknight: I like the idea of separating out the storage of the argument into the parameter context out from the parameter/argument processing (from most recent nopaste), it has the potential to simplify the process as it goes along | 18:24 | |
| Austin: you have to check it anyway to know if you were passed a 0 or just got a 0 by default | 18:25 | ||
| so, there's really no point in setting the default 0 | |||
| Whiteknight | allison: in your pseudocode, how do we know when we have run out of arguments? Are we keeping a counter? | 18:26 | |
| allison | Austin: various HLLs will set their own defaults, and will use opt_flag to know when they need to set a default | ||
| Whiteknight: second check in the infinite loop is "if there are not more arguments" | |||
| Whiteknight | right, how do we check that? | 18:27 | |
| Austin | allison: I'm not thinking about HLL's. I'm thinking about people who are stumbling their way into PIR from "I'm trying to do scheme" or "I need to parse SQL" | ||
| allison | Whiteknight: you can only check it for positionals | ||
| Whiteknight: which is why I started think of pushing the argument checking down to the point were you actually want an argument | 18:29 | ||
| Whiteknight | there's a disconnect inside my mind about how we get all the necessary pieces of information together at once | ||
| allison | Austin: all they need to know is "check opt_flag to see if you got an argument" | ||
| Austin: there is no "when they don't check it" | |||
| Whiteknight: which information? | 18:30 | ||
| for each parameter we need: its flags, the value from CallSignature | 18:31 | ||
| (and error checking if there is no available value) | |||
| Whiteknight | how are named arguments stored in the CallSignature? | 18:32 | |
| allison | Whiteknight: in a hash | ||
| string keyed access on the CallSignature fetches a named argument | |||
| integer keyed access fetches a positional argument | |||
| Whiteknight | okay, I think I'm starting to pick up what I was missing | 18:34 | |
| allison | the logic is simpler if "store the current arg in the destination context" is a function instead of part of the loop | 18:35 | |
| Whiteknight | Why in Parrot_pcc_fill_params_from_op do we need the opcode_t* from the caller? | ||
| wait, before that. What is raw_params? | 18:36 | ||
| that's the piece of this little puzzle that I don't understand | |||
| allison | it's a pointer to the place in the opcode where the parameter list is given | 18:37 | |
| it's necessary for actually storing the arguments into the appropriate registers | |||
| Whiteknight | so a pointer to the get_args opcode in the callee? | ||
| allison | no, a pointer to the get_params opcode | ||
| Whiteknight | urg, that | 18:38 | |
| allison | (this is parameter side, not argument side) | ||
| Whiteknight has a very tenuous grasp on the english language | |||
| allison | the arguments were already extracted from get_args into the CallSingature | ||
| Signature | |||
| purl | Signature is parsed before hand | ||
| allison | arguments and parameters are often muddled up in the literature, so it's quite understandable | 18:39 | |
| if there were other words to describe them, I'd use them | |||
| Whiteknight | so infinite loop. We get the flags for the current parameter, then we get the value of the current parameter as a PMC or a STRING/PMC pair if it's a named? | 18:41 | |
| "value of the current argument" | |||
| then we get the storage location of the first suitable parameter, and stuff it in there | 18:42 | ||
| allison | yes | ||
| Austin | Is there any valid semantics for opt_flag on a slurpy parameter? | ||
| Whiteknight | Austin: no | ||
| slurpy is optional by default | |||
| allison | no, slurpy parameter is always an array or hash, though it may be empty | ||
| Whiteknight | (see, I've managed to retain some information today!) | ||
| Austin | Thanks. | ||
| And is lookahead + slurpy invalid, I hope? | 18:43 | ||
| allison | Austin: yes, they're semantically incompatible | ||
| Austin | You left args.c out of the makefile, I think | 18:44 | |
| mikehh | You got this bunh of things you want to pass (the arguments) which you are going to put in their appropriate places (the parameters) | 18:45 | |
| bunch | |||
| allison | Austin: it's in the makefile | ||
| Austin: re-run Configure.pl | |||
| Austin | Update got it | 18:46 | |
| Is there a target test case for this? | 18:48 | ||
| allison | Austin: for lookahead? | ||
| Austin | No, for functionality and performance of arg filling | ||
| allison | Austin: there are lots of test cases, but none specifically designed to exercise all the option flags | 18:49 | |
| Austin | What about performance? | ||
| Is there a make-a-million-calls test, or something? | |||
| allison | Austin: not yet | ||
| Austin | ten thousand? | 18:50 | |
| one hundred? | |||
| libparrot.so: undefined reference to `SETATTR_Key_next_key' | |||
| What's that? | 18:51 | ||
| purl | that is probably how it does it. | ||
| Austin | args.c needs #include ../pmc/pmc_key.h | 18:53 | |
| nopaste | "allison" at 77.98.130.30 pasted "A new variation, assuming that "get next arg" checks whether an arg is available" (38 lines) at nopaste.snit.ch/18187 | ||
| Austin | make coretest is the only target that works right now, yes? | 18:55 | |
| mikehh | make codetest also | ||
| Austin | mikehh++ | ||
| Thanks | |||
| mikehh | make corevm | ||
| Austin | Got a bunch of failures. | 18:56 | |
| allison | Austin: 414 last I checked | ||
| Austin | Don't know yet. | ||
| My machine is old. | |||
| mikehh | not even make corevm at the moment - fails on src/call/args.c | 18:58 | |
| Austin | update, mikehh | ||
| And check that #include | |||
| allison | mikehh: update and rerun Configure.pl | 18:59 | |
| dalek | rrot: r41643 | allison++ | branches/pcc_reapply/src/call/args.c: [pcc] Move header file with the function that used it. |
||
| Whiteknight | allison: how do we determine if we've passed more named arguments then we have parameters for? | 19:01 | |
| or do we ignore named overflow like that? | |||
| Austin | Call vtable_elements on the hash | 19:02 | |
| Whiteknight | can't get directly to the hash, at least not without breaking encapsulation I think | ||
| allison | Whiteknight: at the moment, we can't | 19:04 | |
| Whiteknight: they're silently ignored | |||
| Whiteknight | ok | ||
| allison | The complete alternative way of approaching this problem would be to start by iterating over the arguments passed | 19:05 | |
| Whiteknight | I like that idea if there is a sane way to iterate over named parameters too | 19:06 | |
| without the param_flags, there's no way to know if the named parameters exist | 19:07 | ||
| ...unless we can disect the CallSignature and get direct access to the underlying array and hash storage | 19:08 | ||
| allison | Whiteknight: it would have to be a hash iterator for the named arguments | 19:09 | |
| Whiteknight | or implement an iterator-like interface on CallSignature with shift_pmc (for positionals) and shift_string (for named) | ||
| allison | Whiteknight: yes, that would be cleaner | ||
| Austin | WhiteKnight is the pmc master! | 19:10 | |
| allison | Whiteknight: really don't want anyone poking into the internals of the CallSignature, as it prevents later optimizations | ||
| Whiteknight | The problem there comes with :lookahead objects, we would need to be able to look into the hash and remove an item from the iteration so we don't double count it | ||
| allison | Whiteknight: it would also be good to avoid the cost of creating additional Iterator PMCs for the array and hash | ||
| Whiteknight | right, that's why I like the idea of shoehorning the shift_* interface into CallSignature | 19:11 | |
| mikehh | oh manifest_tests also runs (fails) fixed | ||
| allison | I suppose the named arguments could be an ordered hash | ||
|
19:12
darbelo left
|
|||
| dalek | rrot: r41644 | mikehh++ | branches/pcc_reapply/MANIFEST: run perl tools/dev/mk_manifest_and_skip.pl |
19:13 | |
| allison | oh, but not Parrot's current ordered hash, since it doesn't give you "keys in order" it only gives you "values in order" or "values by key" | 19:14 | |
| Whiteknight | urg | ||
| mikehh | codetest fails - there are now 7 unused assert macros in include/parrot/call.h - passes the rest of codetest | 19:15 | |
|
19:17
kurahaupo joined
|
|||
| Austin | which function creates the raw signature? | 19:18 | |
| allison | Whiteknight: okay, I think I've got how to do code reuse between the _from_op and _from_c_args variations | ||
| Whiteknight: each calls 2 functions "fetch next arg" and "store next arg" | 19:19 | ||
| mikehh | I have no idea how to fix the 'no unused assert macros" problem with call.h - when I ran make headerizer before it didn't do anything | ||
| allison | mikehh: that should be gone now, I deleted those call signatures | ||
| mikehh: the problem is that the headerizer searches source files first, then writes the header files | 19:20 | ||
| Whiteknight | allison: I'm working on pseudocode right now for an arguments-based iteration | ||
| It's already much easier to understand | |||
| allison | mikehh: so, once the source file is gone, it no longer knows to remove the corresponding header entries | ||
| kurahaupo | Good morning everyone. | 19:21 | |
| As Bacek suggested last week, I've been redoing some tests from PMC to PIR, starting with t/pmc/resizeableintegerarray.t. Anyway, I noticed some gaps in the test coverage, and now I think I've found a bug: resizing an array down and up again doesn't erase the preallocated memory. | 19:22 | ||
| What's the procedure? Do I just submit a bugfix as part of my patch to replace the tests? | 19:23 | ||
| allison | kurahaupo: we don't provide guarantees to the user on whether shrinking the size of the array will change the memory allocated | 19:24 | |
| kurahaupo | $P0 = new ['ResizableIntegerArray'] | ||
| $P0 = 10 | |||
| $P0[7] = 23 | |||
| $P0 = 5 | |||
| $P0[9] = 0 | |||
| Is it supposed to be that way? | 19:25 | ||
| allison | kurahaupo: the size allocations are only a suggestion to resizable arrays | ||
| kurahaupo: it will always allocate space for an element | 19:26 | ||
| kurahaupo: yes, it's supposed to be that way | |||
| kurahaupo: the fixed size arrays are the ones that force you to stick within the declared size | |||
| nopaste | "whiteknight" at 69.249.176.251 pasted "argument-based iteration processing for allison++" (50 lines) at nopaste.snit.ch/18188 | ||
| kurahaupo | This is for a resizeable array | 19:27 | |
| Whiteknight | allison: this pseudocode has a few more lines, but is much simpler conceptually | ||
| allison | yes, it does simplify things | ||
| need a check inside "get next positional parameter slot" in case it's a named parameter slot | 19:28 | ||
| kurahaupo | allison: what are the "visible semantics" for increasing the size of an array? I thought it was supposed to be zero-filled (in the case of an integerarray) | ||
| ^are^should be | |||
|
19:28
cconstantine joined
|
|||
| allison | kurahaupo: for an integer array, yes, if you try to access an element that hasn't been set, it should return 0 | 19:29 | |
| Whiteknight: ah, I see, your check is for NULL | 19:30 | ||
| kurahaupo | allison: This doesn't work then: set array size to 10, set element 7 to some value, reduce array size to 5, increase array size to 10, check that element 7 is now zero ... | ||
| allison | Whiteknight: it's actually "get next parameter flag" | ||
| kurahaupo: resizable integer arrays don't pay attention to setting the size | 19:31 | ||
| kurahaupo: they just silently ignore it | |||
| kurahaupo: that was considered less disruptive than throwing an exception | 19:32 | ||
| kurahaupo | allison: That's not exactly obvious behaviour, given that it responds to resizing in all other respects. | ||
| Push/pop/shift/unshift/elements all work as expected | 19:33 | ||
| Whiteknight | allison: whatever we call it. We need to get the register index and the metadata about the storage location. For ease I'm grouping it as one thing | ||
| allison | Whiteknight: jumping ahead to the optional flag while processing the optional argument is a headache | 19:36 | |
| Whiteknight: it's easier to just iterate over the opt_flag as an ordinary parameter | |||
| Whiteknight: but, that's an implementation detail. | 19:37 | ||
| Whiteknight: if setting parameters is made sufficiently modular, it won't be a headache anymore, it'll be a simple function call | |||
| Whiteknight: how would this code handle opt_flag parameters where no optional was passed? | 19:38 | ||
| Whiteknight | allison: but that's the thing, we're not iterating over the parameters, we're iterating over the args | ||
| we can do parameters in any order we want | |||
| at that point it's just updating a counter | 19:39 | ||
| allison | Whitekight: the headache is in storing, not in accessing | ||
| Whiteknight | I'm not sure what you mean | ||
| allison | Whiteknight: the question stands, if we're iterating over the arguments, we'll never know when we skipped an optional argument | 19:40 | |
| Whiteknight: so there's no way to mark the opt_flag as false | |||
| Whiteknight | but we have param_flags. We're sort of iterating over both, just letting the argument iteration take precidence | ||
| for any given parameter we have a flag that says "this is optional" | 19:41 | ||
| and we can associate that with a register number | |||
| allison | Whiteknight: there's no handling here for "we have more positional parameters, but no more arguments" | 19:42 | |
| Whiteknight: well, there is, but it doesn't look for optional parameters | 19:43 | ||
| Whiteknight: it can be handled by duplicating the "mark all remaining opt_flag parameters" code after both the positional and named loops | 19:45 | ||
| Whiteknight | okay, we can do that | 19:47 | |
| brb, I need to run a quick errand | |||
| nevermind, nowhere to go | 19:48 | ||
| allison | Whiteknight: or, pull that loop up inside the other... | 19:49 | |
| Whiteknight | if we have a "get next parameter slot" and a "put back parameter slot" we can lookahead more easily | 19:50 | |
| allison | Whiteknight: it's "get next parameter flag" rather than slot | 19:51 | |
| Whiteknight | and then we lookahead so long as we find slots that are what we're looking for | ||
| right, I'm conflating the two | |||
| nopaste | "allison" at 77.98.130.30 pasted "cleanup, down to 2 loops, clarified slot, made the logic for parameter/arg checking the same between positional and named" (50 lines) at nopaste.snit.ch/18189 | 19:52 | |
| Whiteknight | it's not just finding the next flag, it's finding the next *suitable* flag | 19:53 | |
| allison | Whiteknight: what I didn't add is checking whether the flag is the right kind of flag | ||
| Whiteknight | but besides that, this looks good | ||
| right | |||
| allison | Whiteknight: aye | ||
| Whiteknight | where "if no parameter flag" is "if no suitable parameter flag" | ||
| I like this much better | 19:54 | ||
| allison | Whiteknight: which is easy to check in named, but there's no flag for positional | ||
| I like it better too | 19:55 | ||
| Whiteknight | we can create a mask of flags that we want and a mask of flags that we don't want | ||
| allison | it's easier to follow, and has a better parallel between the PIR and C cases | ||
| Whiteknight | :lookahead is a problem, but not one we need to address immediately | 19:56 | |
| allison | Whiteknight: parameter checking in general is harder here too | ||
| (argument checking is easy) | 19:57 | ||
| Whiteknight | well that's the way it's going to be, whichever we don't iterate over directly will be harder to work with | ||
| allison | yup | ||
| now to see if I can apply all this to return arguments | 20:09 | ||
| Whiteknight | yeah | 20:28 | |
|
20:44
plobsing joined
|
|||
| bacek | Good morning | 20:44 | |
| kurahaupo | Morning bacek | 20:45 | |
| bacek | kurahaupo: G'Day | ||
| allison | Whiteknight: there is a way to iterate over a hash without creating an Iterator, though it's not pretty. See dissect_aggregate_arg in src/call/args.c | 20:46 | |
| plobsing | hello | 20:49 | |
| Whiteknight | allison: already looking at it | ||
| plobsing | i am interested in adding the libjit nci changes I have at github.com/plobsing/parrot-libjit | 20:51 | |
| bacek | is pcc_reapply open for commits? | 20:59 | |
| allison | bacek: yes | 21:00 | |
| bacek | allison: ok | ||
| dalek | rrot: r41645 | bacek++ | branches/pcc_reapply/src/call/pcc.c: [care] Remove unused set_context_sig_params and _results functions |
21:03 | |
| allison | bacek: ah, if you're interested in removing unused code, I can point you at a lot more | 21:04 | |
| dalek | rrot: r41646 | bacek++ | branches/pcc_reapply/src/call/pcc.c: [cage] Remove unused count_signature_elements function |
21:06 | |
| bacek | allison: It's too early for me to start thinking. So I just warming up :) | 21:07 | |
| dukeleto | 'ello | 21:08 | |
| allison | bacek: pretty much all the static functions in src/call/pcc.c are candidates for removal | ||
| bacek | allison: indeed. | 21:09 | |
| allison | bacek: correction, that's really all | ||
| bacek: and anything that calls them | |||
|
21:09
ruoso joined
|
|||
| dalek | rrot: r41647 | bacek++ | branches/pcc_reapply (2 files): [cage] Remove unused Parrot_init_ret_nci and Parrot_init_args_nci functions |
21:10 | |
| bacek | allison: give me half-an-hour. I'll kill them all. | ||
| allison | bacek: I want to say "anything that isn't Parrot_pcc_invoke... or Parrot_PCCINVOKE" in that file (scanning to double-check) | ||
| bacek | Parrot_PCCINVOKE is deprecated, isn't it? | 21:11 | |
| allison | bacek: confirmed on removing all but the Parrot_pcc_invoke functions | 21:16 | |
| bacek | allison: ok | ||
| bah... Last bits from JIT blocking total removal of this functions... | 21:18 | ||
| allison | bacek: and yes, Parrot_PCCINVOKE is replaced by Parrot_pcc_invoke_method_from_c_args, which is currently identical | ||
| bacek: nope, those functions from src/frame_builder.c can be removed too | |||
| bacek | allison: emitm_call_cfunc(pc, Parrot_init_arg_nci); | 21:19 | |
| frame builder should be updated to new implementation anyway | |||
| allison | bacek: it's the set_nci_* and get_nci_* | ||
| (that can be removed entirely) | 21:20 | ||
| bacek | allison: I removed them already. And commented out emitm_call_cfunc(pc, Parrot_init_arg_nci); | ||
| allison | bacek: yes, that part will need to be updated | 21:21 | |
| bacek: (calling Parrot_init_arg_nci there wouldn't work anymore anyway) | |||
|
21:22
jan joined
|
|||
| bacek | allison: indeed. "frame builder should be updated to new implementation anyway" :) | 21:22 | |
| allison | bacek: aye | 21:23 | |
| dalek | tracwiki: v100 | dukeleto++ | Languages | ||
| tracwiki: trac.parrot.org/parrot/wiki/Langua...ction=diff | |||
| shorten | dalek's url is at xrl.us/bfqbki | ||
| allison | bacek: looks like that whole function Parrot_jit_build_call_func will need a serious workover | 21:24 | |
|
21:30
preflex joined
21:44
kthakore joined
22:09
kid51 joined
22:15
Tene joined
|
|||
| Tene | O HAI GUYZ | 22:15 | |
| nopaste | "kid51" at 70.85.31.226 pasted "pcc_reapply: build failure at 41647" (344 lines) at nopaste.snit.ch/18190 | 22:22 | |
| "bacek" at 110.175.160.228 pasted "Patch for review for allison++" (148 lines) at nopaste.snit.ch/18191 | 22:23 | ||
| kid51 | Death rattle begins at line 186 of src/frame_builder.c | ||
| GeJ | bacek: your last commit says Remove unused Parrot_init_ret_nci and Parrot_init_args_nci functions. Fresh build complains about those two missing in src/frame_builder.c | 22:24 | |
| nevermind, kid51 beat me to it. | |||
| allison | bacek: sensible, it will save on repeating the code between each of the Parrot_call_sub* variants | ||
| kid51 | GeJ++ You tied the failure to a commit! | 22:25 | |
| bacek | allison: ok. I'll commit it. | ||
| allison: How Parrot_call_method_* should be updated? | |||
| dalek | rrot: r41648 | bacek++ | branches/pcc_reapply/src/frame_builder.c: Make frame_builder.c buildable but broken |
22:26 | |
| allison | bacek: the same as the others, but with Pi added to the front of the signature | 22:27 | |
| bacek | allison: and do we need PARROT_CALLING_START/END macros back? | ||
| allison | Parrot_pcc_invoke_from_sig_object works for subs and methods | 22:28 | |
| bacek: no, all of these functions are deprecated and will be replaced with a single function | |||
| bacek | allison: ok. | 22:29 | |
| allison | bacek: it's only temporary to have all this silly code duplication | ||
| bacek | allison: yeah. But I trying to wrap my head around new functions. | ||
| allison | bacek: yeah, it is a wholesale replacement, lots of changes to the internal interface | 22:30 | |
| Tene | Looks like I'm getting linking errors when compiling miniparrot. undefined reference to set_nci_* | 22:34 | |
| nopaste | "kid51" at 70.85.31.226 pasted "pcc_reapply: build failure at 41648" (505 lines) at nopaste.snit.ch/18192 | 22:35 | |
| Tene | Yeah, that. | ||
| purl | Sure, that. | ||
| bacek | Try r41649 | 22:36 | |
| dalek | rrot: r41649 | bacek++ | branches/pcc_reapply/src/frame_builder.c: Comment out more stuff in frame_builder.c |
||
| Tene | bacek: WFM | 22:37 | |
| bacek | allison: Parrot_call method usually invoked with "Pi..." signature, correct? So I have to skip 2 first chars in signature? | ||
| kid51 | make completes at r41649 | 22:39 | |
| allison | Parrot_call_method used its own bizarre signature strings | ||
| bacek | allison: ouch... | 22:40 | |
| allison | bacek: (that's why they're deprecated) | ||
| bacek: that is, the return argument was first (which is why we increment it) | 22:41 | ||
| bacek | so, skip first char, prepend "Pi" to signature, build sig_object, append "->[T]", invoke? | ||
| allison | bacek: that should do it | ||
| bacek | allison: ok. | ||
| allison | bacek: you may have to remove an O argument, if it was passing one | ||
| bacek | allison: can you give example of signature? | 22:42 | |
|
22:43
jimk joined
|
|||
| allison | bacek: was just looking for one, and of course there are no calls to Parrot_call_method in the repository (not even tests) | 22:43 | |
| bacek | allison: yeah... That why I'm little bit stuck | ||
| allison | implement it as if there's no signature element for the object | ||
| (just like Parrot_call_sub | 22:44 | ||
| ) | |||
| we'll run testing with external users | |||
| it's very possible that no one has ever used Parrot_call_method*, in which case we'll just rip it out after 2.0 and not worry about it | |||
| japhb | Austin, ping | 22:47 | |
| Austin | pong | ||
| 'sup? | |||
| japhb | I've pushed a version of Plumage that can be told to ignore failures in a build stage. | ||
| In particular, you can ./plumage --ignore-fail=test install Close | |||
| Austin | sweet/ | ||
| . | |||
| japhb | ... except it only *appears* to work for me, because I appear to get a non-functional parrot-close binary. | 22:48 | |
| Can you take a look? | |||
| Austin | If only I could do the same thing in development. :| | ||
| japhb | heh | ||
| Austin | Probably. The trunk doesn't work at the moment. | ||
| I'd say you're getting it right. | |||
| japhb | ah. Well, that would explain things | ||
| nopaste | "bacek" at 110.175.160.228 pasted "Parrot_call_method patch for allison" (58 lines) at nopaste.snit.ch/18193 | ||
| Austin | Where does plumage put its downloads? | 22:49 | |
| japhb | Austin, well, is there a branch that's working? Maybe it's time to teach Plumage about pulling particular branches and/or revs .... | ||
|
22:49
allison joined
|
|||
| japhb | Austin, at the moment, within the current directory. That's on the short list to fix. | 22:49 | |
| Austin | That's fine. I'll test plumage to make sure that the breaks work the same way. | 22:50 | |
| And no, there's no branch that builds with a current parrot. | |||
| Sorry. | |||
| I'll see what I can produce, though. | 22:51 | ||
| japhb | Austin, is there one that builds with Rakudo's current required version (r41447)? | ||
| Austin | Nope. | ||
| jimk | Smolder on branch: smolder.plusthree.com/app/public_pr...ails/28492 | ||
| shorten | jimk's url is at xrl.us/bfqbs2 | ||
| allison | bacek: Parrot_pcc_build_sig_object_from_varargs won't know what to do with the '0' at the front of the arg_sig | ||
| Austin | You have to get in the way-back machine to find a good parrot. | ||
| japhb | d'oh! | ||
| Austin | japhb++ | ||
| Good job getting so far so fast with plumage. | 22:52 | ||
| japhb | Thank you. :-) | ||
| allison | bacek: but if you remove arg_sig[0] = 0; and allocate arg_sig as strlen(signature)+1 it should be good | ||
| bacek | allison: can you give me example of Parrot_call_method signature? | 22:53 | |
| allison | vP | ||
| a void return and a PMC argument | |||
| bacek | ok | ||
| allison | or PP, a PMC return and a PMC argument | ||
| that is, assume it's the same as Parrot_call_sub | |||
|
22:53
kid51 joined
|
|||
| bacek | char *arg_sig = (char*)malloc(strlen(signature)+2); | 22:53 | |
| arg_sig[0] = 'P'; | |||
| arg_sig[1] = 'i'; | |||
| arg_sig[2] = 0; | |||
| strcat(arg_sig, signature + 1); | |||
| japhb | Has parrot carved out a prefs dir yet? ~/.parrot or the like? | 22:54 | |
| Tene | allison: you able to point me in the right direction on a failing test to diagnose in pcc_reapply? | ||
| japhb: no | |||
| bacek | allison: is this correct? | ||
| japhb | OK, so: Do I treat plumage as a separate entity, so ~/.plumage/ or ~/.parrot_plumage/ ... or as part of parrot, so ~/.parrot/plumage/ ? | 22:55 | |
| Any opinions? | |||
| allison | since we're removing signature[0] it should only need to allocate one extra character | ||
| Tene: yes, which test? | |||
| Tene: or, are you looking for a test to tackle? | |||
| Tene | allison: the latter | ||
| purl | the latter is, like, better | ||
| Tene | japhb: I think I prefer the last, but just barely | ||
| bacek | allison: plus '\\0' at the end | ||
| Tene | japhb: I kind of dislike the second. | 22:56 | |
| allison | bacek: won't the original char * already have '\\0' at the end? | ||
| japhb | Tene, OK, fair enough. | ||
| bacek | but strlen doesn't count it | ||
| allison | Tene: t/pmc/namespace.t is a matter of fixing the test not to use 'like' | ||
| bacek: ah, yes | |||
| japhb | Any other opinions from the peanut gallery? (It's not like I can't change it later, of course) | ||
| allison | Tene: (this is a general fix, no core tests should use like because no core tests should depend on PGE) | 22:57 | |
| Tene: t/pmc/multidispatch.t is more hairy, it involves getting MMD signature parsing to figure out what to do with flattened argument lists | 22:58 | ||
| Tene: t/pmc/integer.t is another one that needs to not use 'like' | 22:59 | ||
|
22:59
Khisanth joined
|
|||
| japhb | Tene: did you ever get around to coding that tree-like data structure merge function? | 23:00 | |
| Tene | japhb: No. | ||
| japhb | Tene, OK, np. | ||
| Just wanted to make sure I wasn't going to duplicate something you'd written but just not pushed. ;-) | |||
| dalek | rrot: r41650 | bacek++ | branches/pcc_reapply/src/extend.c: Update Parrot_call_sub_ret_* function to use new PCC |
23:02 | |
| rrot: r41651 | bacek++ | branches/pcc_reapply/src/extend.c: Rework Parrot_call_method to use new API. There is no tests for this functions and I couldn't find any HLL which uses them. |
|||
| rrot: r41652 | bacek++ | branches/pcc_reapply (4 files): [cage] Remove bunch of unused functions |
|||
| allison | Tene: t/oo/metamodel.t is looking for a 'fail' subroutine that doesn't seem to exist | ||
| Tene | Does anyone object to the name 'throws_substring' for a text-comparison workalike to 'throws_like'? | 23:04 | |
| allison | Tene: sounds like a good idea | 23:05 | |
| Tene: with arguments for start position and length? | |||
| Tene: (maybe optional named arguments?) | 23:06 | ||
| Tene | allison: might be useful... doesn't look like anyone needs that functionality right now, so I'm not going to implement it, though. | 23:07 | |
| allison | Tene: is the substr from start to end of passed string then? | 23:08 | |
| Tene | allison: I was just going to pass it to index_i_s_s | ||
| "is the passed text a substring of the text of the exception, if any? | |||
| allison | Tene: just checking "does this substring appear somewhere inside the larger string"? makes sense | 23:09 | |
| Tene | Yes. | ||
| allison | Tene: yeah, that's all that's really needed | 23:10 | |
|
23:13
Zak joined
23:14
ZeroForce joined
|
|||
| nopaste | "kid51" at 70.85.31.226 pasted "t/pmc/*.t using 'throws_like()'" (3 lines) at nopaste.snit.ch/18194 | 23:16 | |
|
23:18
quek joined
|
|||
| dalek | rrot: r41653 | allison++ | branches/pcc_reapply/t/op/annotate.t: [pcc] Undo double pop on the exception handler (likely a merge problem). |
23:22 | |
| bacek | allison: can you check r41654? Looks like it's better to move this constants assignment inside invoke_from_sig_object. | 23:31 | |
| dalek | rrot: r41654 | bacek++ | branches/pcc_reapply/src/extend.c: Propogate constants to context. Claim few more passing tests. |
||
| rrot: r41655 | tene++ | branches/pcc_reapply (5 files): Add 'substring' and 'throws_substring' functions to Test::More |
23:35 | ||
| Tene | allison: those three tests now all pass. | ||
| allison | Tene: excellent! | 23:40 | |
| purl plays air guitar | |||
| dalek | rrot: r41656 | bacek++ | branches/pcc_reapply/t/op/cc_state.t: [t] Update test to reflect current error message from PCC. |
23:41 | |
| Tene | I can't figure out where oo/metamodel.pt is expecting to find a 'fail' method... it doesn't include anything that would define it. | ||
| I can add one in very easily, though. | 23:42 | ||
| allison | Tene: it's possible that the failure code has just never been called | 23:44 | |
| Tene | Hmm. True. | ||
| allison | Tene: or that Test::More had a fail function a long time ago | ||
| Tene | committed | 23:45 | |
| I'll look at t/pmc/multidispatch now | 23:47 | ||
| dalek | rrot: r41657 | tene++ | branches/pcc_reapply/t/oo/metamodel.t: Add a fail sub to oo/metamodel.t so that it can fail properly |
23:48 | |
| nopaste | "bacek" at 110.175.160.228 pasted "Fix handling of null CallSignature in fill_returns for allison" (14 lines) at nopaste.snit.ch/18195 | 23:51 | |
| dalek | tracwiki: v7 | allison++ | CallingConventionsOverview | 23:56 | |
| tracwiki: trac.parrot.org/parrot/wiki/Callin...ction=diff | |||
| shorten | dalek's url is at xrl.us/bfqbxt | ||
| allison | bacek: yes, that's the right fix | ||
| bacek | allison: committed. | 23:57 | |
| dalek | rrot: r41658 | bacek++ | branches/pcc_reapply/src/call/args.c: Fix handling null CallSignature in Parrot_pcc_fill_returns_* functions. |
||
|
23:58
davidfetter joined
|
|||
| bacek | Found good Configure.pl option: --buildframes=0 | 23:59 | |