half-pie" released! | Test CallSignature PMC | pcc_reapply branch still needs your love! trac.parrot.org/parrot/wiki/Callin...nsOverview
Set by moderator on 6 October 2009.
00:00 quek joined 00:06 Zak joined
allison Tene: it's after 1am here, so I'm wrapping up. The logic is in place, I'll work on debugging the last bits tomorrow (unless you beat me to it) 00:16
chromatic I get lots more than 70 failures.
darbelo chromatic: did you --buildframes=0 ? 00:17
00:17 quek left
chromatic Oh, no. Hang on. 00:17
00:18 quek joined
dalek rrot: r41779 | bacek++ | trunk/src/pmc/sub.pmc:
[cage] Don't use C strings in Sub.get_regs_used.
00:18
rrot: r41780 | bacek++ | trunk/src/runcore/profiling.c:
[cage] Reduce scope for C string in runcore_profile_init.
cotto_work on which platforms is buildframes=0 necessary? 00:22
non-x86/x64?
darbelo non-darwin x86
the frame builder only knows about x86 and braks on darwin. 00:23
s/braks/breaks/
chromatic Much better.
Let's see if this fixes any tests. 00:26
Tene cotto_work: buildframes=0 is only needed on platforms that would normally try to use the remnants of the jit to build frames.
cotto_work oic
dalek rrot: r41781 | chromatic++ | branches/pcc_reapply/src/call/args.c:
[pcc] Fixed compiler warnings in fill_results() -- especially switching *over*
00:28
cotto_work what's needed to make make test run tests in parallel? I've set TEST_JOBS=9 and am passing -j to make 00:29
chromatic That should do it, if you have a Test::Harness 3.14 or newer.
Maybe 3.10 or newer.
cotto_work thanks 00:30
there it is.
00:31 payload joined
cotto_work I don't like how more recent versions of Test::Harness omit the total number of failed tests. 00:34
00:34 bacek joined
cotto_work It appears there's still an old Parrot release in CPAN: search.cpan.org/~mdiep/parrot-0.4.11/ 00:37
darbelo s/old/ancient/ 00:38
cotto_work easy typo. the letters are right next to each other. 00:39
darbelo :)
It has ** UNAUTHORIZED RELEASE ** in big, bold, red letters. 00:42
He has better marketing than us...
mikehh pcc_reapply - make spectest_smolder #28774 at r41781 - Ubuntu 9.04 amd64 00:44
6,436 ok, 67 failed, 100 todo, 162 skipped and 1 unexpectedly succeeded
chromatic Did r41781 clear up your warnings, mikehh? 00:45
mikehh chromatic: yes - the last run was g++ - and as I am on amd64 don't need buildframes=0 00:46
using the same config options as I use in trunk 00:47
chromatic Did it change the test count at all?
mikehh +6 tests
dalek rrot: r41782 | darbelo++ | trunk/config/gen/crypto/digest_pmc.in:
Kill several unnecessary strstart uses with one stone.
kudo: 1b83557 | moritz++ | t/spectest.data:
we pass t/spec/S06-signature/introspection.t, jnthn++
shorten dalek's url is at xrl.us/bfrd3s
mikehh 25 of the test failures are in t/oo/composition.t which drops out in test 21 - I think it segfaults 00:50
Parse errors: Bad plan. You planned 45 tests but ran 20 00:51
chromatic Tene, allison, some of the t/pmc/sub.t failures are in :immediate subs that don't return anything. If they return something, they get replaced with the cached value. Something's not returning PMCNULL in those cases appropriately. 00:52
Tene chromatic: can you write a minimal test case?
I'll look at it immediately, if so. 00:53
chromatic t/pmc/sub_37.pir
Tene on it. 00:54
mikehh ok 20 - class has a method
Null PMC access in elements()
current instr.: 'conflict_resolution_by_exclusion' pc 815 (t/oo/composition.t:204)
called from Sub 'main' pc 83 (t/oo/composition.t:29)
Tene chromatic: what is :postcomp ? 00:55
darbelo post-compilation?
chromatic Run this sub after compiling the whole file.
Tene Ah, not required to make it fail.
mikehh the other problem test for me id t/op/calling.t
t/op/calling.t (Wstat: 4864 Tests: 95 Failed: 19)
Tene if it's :immediate and :postcomp, it just runs twice.
mikehh Failed tests: 35, 47, 52-55, 57-59, 61, 72, 74, 81-82
84, 88-89, 93, 95 00:56
chromatic It *should* run twice, yes.
It doesn't, because the :immediate run doesn't return PMCNULL.
Tene Right, okay.
chromatic Although....
Want a forehead slapper? 00:57
cotto_work prepare for facepalm... 00:58
chromatic The problem's in run_sub(). src/packfile.c:670.
I'll give you a moment to think about it.
Tene I don't understand any of the packfile stuff. 00:59
chromatic That's irrelevant.
mikehh PMC *retval;
chromatic Uninitialized value. 01:00
Pointer to that value passed into PCC.
If PCC doesn't set the pointed-to value....
Tene Ah, nice.
chromatic ... which it doesn't....
dalek rrot: r41783 | chromatic++ | branches/pcc_reapply/src/packfile.c:
[pcc] Initialized the PMC return value in run_sub() to PMCNULL explicitly.

sub doesn't have a return value, the return value will be PMCNULL, not whatever random junk is on the stack that is almost assuredly not a -- and is definitely not the -- valid PMC.
Tene fill_returns_from_c_args needs to be updated to use fill_results 01:04
I don't know how to test the c_args versions, though
01:07 kid51 joined
dalek rrot: r41784 | jkeenan++ | branches/detect_llvm (2 files):
Refactor more code into _handle_component_version_output() and _cleanup_llvm_files(). Add tests to improve coverage.
01:15
mikehh pcc_reapply - make spectest_smolder #28778 at r41783 - Ubuntu 9.04 amd64
bbiab 01:16
01:20 rhr joined 01:26 MoC joined 01:34 darbelo left
dalek rrot: r41785 | jkeenan++ | branches/detect_llvm (2 files):
Refactor code into _handle_native_assembly_output() and add tests.
01:41
chromatic I wonder if t/oo/composition.t fails because NCI hasn't converted yet. 01:50
bacek Yay. As I expected. pcc_reapply much nice, cleaner and _slower_ on op-op invocations. 01:56
micer
nicer
nopaste "bacek" at 114.73.170.127 pasted "callgrind result for simple call." (49 lines) at nopaste.snit.ch/18285 01:57
bacek and it's almost "unfixable" by design. 01:58
(9730587 - 9208895)/9208895 02:07
purl 0.0566508793943247
nopaste "bacek" at 114.73.170.127 pasted "Side-by-side pcc_reapply vs trunk of examples/benchmark/fib.pir" (37 lines) at nopaste.snit.ch/18288 02:14
bacek purl: 12,849,174,523/5,024,202,920 02:15
purl bacek: excuse me?
02:15 TiMBuS joined
bacek purl: 12849174523 / 5024202920 02:15
purl 2.55745532726214
bacek 2.5 times slower on fib.pir
chromatic: good luck with making pcc faster :-/. nopaste.snit.ch/18288
chromatic 2.5 times slower? 02:16
bacek chromatic: yes. I can explain why.
chromatic Go ahead. 02:18
bacek on trunk passing args do direct copying from caller Context to callee Context without creating lots of GC objects.
for op-op invokation
chromatic The CPointer PMC, for example? 02:19
bacek on pcc_reapply for every single call CallSignature created, arguments copied to it, then copied from it to callee Context
yes, CPointer
purl CPointer is very simple and could certainly have more features added (rather than making another PMC that does mostly the same things)
bacek and because VTABLE calls can't be inlined by compiler it adds even more overhead. 02:20
chromatic 52.26% of the fib benchmark is beneath Parrot_set_args_pc. 02:21
bacek chromatic: in trunk?
chromatic Almost all of that is under Parrot_pcc_build_sig_object_from_op.
On the branch.
If we cached those signature objects... we know them at compile time. 02:24
bacek looks about all right. trunk doesn't require to build such complex structure.
CallSignatures can't be constant
chromatic Then we're doing something very, very wrong with a register-based VM.
bacek build_sig_object fill CallSignature with real values. 02:25
chromatic: indeed
02:27 quek left 02:28 quek joined, quek left
bacek anyway, from my pov, trunk's code is much better than branch. At least it faster. 02:29
chromatic Trunk's code is a huge, unmaintainable mess. 02:30
Every time I try to do something with it, I wind up confused and upset.
bacek Because there is a lot of useless functions.
chromatic Not just that. 02:31
purl not just that is it
chromatic There are several different ways to do the same thing, each slightly different.
bacek "a lot of useless functions"
we can just unify them without changing whole param passing algorithm.
purl: 1177-808 02:33
purl 369
bacek 369 lines of code in fill_params in branch. Small, nice and comprehensible function.
chromatic Remember though that trunk doesn't do everything that Rakudo needs, for example.
bacek for example? 02:34
chromatic I don't know the specific details, but something about named parameter passing was very wrong.
bacek It's still wrong. 02:35
chromatic It's a work in progress.
02:35 JimmyZ joined 02:36 janus joined
bacek And after converting contexts to PMC I added introspection function for getting raw signatures. So they are accessible from PIR for manual processing 02:36
already.
chromatic I don't think Rakudo wants to get into that business though.
bacek And Rakudo will have to implement manual processing anyway. To support "sub foo($a where { $_ == 42 })" 02:37
or handle named args with same name
anyway, rl time. 02:38
chromatic We'll have to unify CallSignature and context at some point.
bacek I doubt that we need "CallSignature". 02:39
chromatic Yeah.
bacek set_args can just store pointer to raw signature in Context for "extended handling" 02:41
ah. It's already in Interp.
chromatic We already know signatures for all PIR invocations anyway, and they're by far the most common calls. 02:42
bacek we can just expose current_args from Interp.
"CallSignature" isn't signature only.
It carries values 02:43
chromatic That part I don't understand.
For PIR <-> PIR invocations, that doesn't make sense to me.
bacek CallSignature extend capture. build_sig_object copies values inside
chromatic: I started with it. That's why branch 2.5 times slower 02:44
"Unification for the win"
chromatic Sure, but we also can't fall into the Parrot 2002 - 2006 trap of speed uber alles.
bacek "Parrot 2.0 business ready. You just have to buy few Crays" 02:47
chromatic Remember that the branch isn't finished and no one's done any optimization, though. 02:48
bacek It's not about code optimisation... It's slow by design.
chromatic If we avoid the copy in the standard PIR <-> PIR case, it doesn't have to be slow.
dalek rrot: r41786 | jkeenan++ | branches/detect_llvm (2 files):
Refactor code into _examine_llvm_gcc_version(). Add corresponding tests.
02:49
bacek yeap. But it's unified.
anyway, I really have to go.
See you soon
chromatic au bientot
02:56 joeri left 03:16 plobsing joined 03:18 rhr joined
dalek rrot: r41787 | jkeenan++ | branches/detect_llvm/config/auto/llvm.pm:
Correct misleading error message.
03:18
03:22 TiMBuS joined 04:42 jrtaylor joined 05:12 kyle_l5l joined 05:14 jrtaylor joined 05:49 fperrad joined
dalek rrot: r41788 | fperrad++ | trunk/tools/install/smoke_languages.pl:
[languages] in installed tree, try to find an executable "parrot-lang".
06:03
mikehh pre/post-config, smoke (#28791) PASS, fulltest FAIL at r48788 - Ubuntu 9.04 amd64 06:43
fulltest (testf, testg and testS) (same tests FAIL, same results)
t/compilers/imcc/syn/macro.t - Failed tests: 2-4
t/compilers/imcc/syn/regressions.t - Failed test: 7
06:43 patspam joined
mikehh bahy that's r41788 06:43
chromatic allison, Tene: Parrot_call_sub_ret_* is broken when calling MultiSubs. You can't dereference them to switch the constant table in the current context until you've dispatched to them to figure out the appropriate sub. 06:45
allison chromatic: checking to see if Parrot_call_sub_ret_* have been updated yet... 06:46
chromatic They have; there are notes in there. I think the constant switching code is new.
allison chromatic: yeah, they are using call signatures, taking a look to see when the constant switching was added 06:47
chromatic; (because that should be done inside the sub's invoke, which would delay it until after multisub dispatch 06:48
chromatic Exactly.
With that change in place, t/src/extend.t #16 still fails, but it looks like it fails inside CallSignature processing, which is a much better place to fail at the moment. 06:49
allison chromatic: it was r41654 06:50
chromatic: but no explanation of why other than "reclaiming failing tests" 06:51
chromatic: so it could have been a cosmetic fix for a deeper problem
chromatic It's definitely not correct.
allison chromatic: (that often happens in branch debugging, a quick fix is actually the wrong fix)
chromatic I wonder, though.
When handling incoming arguments, does anything need to access PBC constants of the invokee? 06:52
allison chromatic: are you failing additional tests when you revert the change?
chromatic: bacek put in some code that did
chromatic: but I need to remove it
chromatic I can't get an accurate count of failing tests. Test::Harness stopped summarizing failures for some reason I do not understand.
allison chromatic: it has to do with cloning key args 06:53
chromatic: oh, cotto was complaining about that, said it was related to the version of Test::Harness
chromatic: the current code is cloning the weird register based keys on the param side, when it should do it on the arg side 06:54
chromatic: (and may I say that register based keys are a filthy hack and a premature optimization)
chromatic Wouldn't surprise me. All of PCC seems overcomplex to me. 06:55
allison chromatic: there is absolutely no reason to store the key value as an integer index to a register number
chromatic: no, this is old code
chromatic: which part seems complex? the function pointers or the duplication? 06:56
chromatic: we're kind of half-way between the two at the moment, and I'm not sure which is the lesser of two evils
chromatic I don't mean the current implementation; I understand it's a work in progress. 06:57
allison chromatic: aye totally agreed on the old code
chromatic: the new code is more complex than I'd like it to be
chromatic It seems like it does a lot of work even for the simple case of a caller passing positionals to a callee expecting positionals. 06:58
allison chromatic: if that was all we had, the code would be pretty simple 07:00
chromatic Sure, I understand that. 07:01
allison chromatic: the complexity comes with checking for all the weird options
chromatic: I think we can simplify the maintenance by breaking down the common repeated behaviors into a few smaller functions
chromatic Maintenance isn't my primary concern here. 07:02
allison chromatic: so someone can read over the top level in a few lines
chromatic: ah, but it is, in the sense that it will help us evaluate execution complexity too
chromatic Here's the thing though. 07:03
allison chromatic: the version just before this one was a finite state machine on a fixed integer array
it only checked flags and performed some action based on those flags
this one is more complex, but basically the same idea 07:04
so, a lot of the code never runs
chromatic The amount of code isn't my primary concern.
It's moving lots of data around, trying to decide whether to run code.
allison i.e. you only get the cost of a slurpy if you use a slurpy
yes, the new version of the code moves a lot more data 07:05
chromatic You still have to pay the cost of deciding if you use a slurpy. That's the part that worries me.
allison it had to, to exactly duplicate the semantics of the old calling conventions
deciding if you use a slurpy is still a straight integer check
(more to the point, a bit on an integer check) 07:06
chromatic ... after you've paid the cost of building a CallSignature and moving register values around.
allison yup
chromatic Going from PIR with positionals to PIR with positionals, we don't need any of that. 07:07
allison chromatic: aye, it does increase execution cost in some cases, to vastly reduce it in others 07:08
chromatic Where does it vastly reduce it?
allison chromatic: once we have the code passing all tests, I'd like to run some benchmarks
chromatic: it vastly reduces it in the general pcc case
chromatic Not by the fib.pir benchmark. That's 2.5 times slower on branch versus trunk.
allison chromatic: good to know 07:09
chromatic: what features does it use?
chromatic PIR <-> PIR with positionals
allison okay, I would expect it to be somewhat slower there 07:10
chromatic I shouldn't even pluralize positional. It passes an int and returns an int.
allison though, not that much slower
the advantage of the old system for straight PIR-to-PIR calls is that it did a straight register copy between the two 07:11
(the speed advantage)
chromatic There shouldn't even be a register copy, I think.
allison chromatic: there has to be, since the two use different register sets 07:12
chromatic Unless you mean 1) create a context 2) fill in registers in that context
allison yes, 1) create sub's context 2) copy arg registers from caller context to param registers of sub's context
but that very simplicity was exactly what was killing us in every other type of call 07:13
chromatic I don't think it had to, if we were clever about it.
allison because it meant every thing else had to pretend to be a register-to-register transfer
chromatic Take slurpy, for example. 07:14
Caller passes 10 PMCs.
Callee takes two as params and the rest as slurpy.
For the sake of argument, imagine the calling conventions are P1, P2, ... P10.
Callee says "Oh, slurpy at P3." It creates its own slurpy PMC, gobbling P3. It inserts that slurpy into P3, noting that it also accesses P4 - P10, and sets the counter for number of PMC registers used in passing parameters to note that it's consumed the rest. 07:15
allison what counter? 07:16
purl counter is some dumb thing having to do with the web, cause for immediate kicking.
chromatic Presumably some integer register keeps track of the number of PMC registers used.
allison right, but my question is where is it stored? 07:17
chromatic What is "it" in this context?
allison the note for how many registers were used
the most obvious would be "it just lives inside the param allocation function"
chromatic In an integer register. 07:18
allison but, the information is needed outside the function
chromatic Why is it needed outside the function?
allison chromatic: then how do you determine what register it was stored in
chromatic: what I'm getting at is that we need a record of the call state 07:19
the old system had a call state struct
the new system has call signature objects
but, no matter what we do, we can't get around the fact that we need some way of storing call state information
what was stored where and how, and how to retrieve it on the other side 07:20
chromatic Why does anything outside of the invoked function need to know what register that function maps any parameter to?
allison there's two sides to every call 07:21
and they have to communicate
chromatic That's what calling conventions are for, sure.
allison right
but there's more information than simply dumping a bunch of registers from one side to another 07:22
chromatic Why?
allison (different types of registers for one)
chromatic I'm not playing devil's advocate here.
allison I know
every problem has a certain fundamental level of complexity
I'm trying to explain what that is here
chromatic Why is it not the callee's side to manipulate what it gets into what it wants? 07:23
07:23 iblechbot joined
allison you can move the complexity around, but you can't just make it disappear 07:23
chromatic You can make some of it disappear.
allison chromatic: you can put all the complexity on the callee's side
chromatic: but it makes for much worse code, and doesn't actually reduce the overall complexity 07:24
chromatic That sounds like a generalization.
How does it make the code worse?
allison I'm starting with the generalization
dalek rrot: r41789 | mikehh++ | trunk/config/gen/crypto/digest_pmc.in:
fix commit r48782 for g++ build
07:25
allison foundational complexity:...
there's a certain amount of work that has to be done to deal with caller side options
like :flat to munge incoming arguments
chromatic Okay, let's talk about :flat.
allison or where the arguments came from (registers, constants, C varargs, etc) 07:26
chromatic I want to pass three PMCs to a function.
allison chromatic: let me finish
there is also a certain amount of work that needs to be done to deal with callee side options
like :slurpy
and where the parameters are going to (registers, C varargs, etc) 07:27
it is perfectly possible to have the code for handling the caller side options on the callee side
but, it vastly increases the complexity of that code (I'm talking mainenance) without actually reducing the execution time (since the same total work is being done) 07:28
chromatic: okay, go ahead with :flat
chromatic I want to pass three PMCs to a function.
The first and third are scalar PMCs. The second is an aggregate containing three PMCs. 07:29
The first PMC goes into P1. The items of the second go into P2, P3, and P4. The third goes into P5.
This is all caller side.
The callee sees that it has five PMC parameters in registers P1 through P5.
Does that increase complexity anywhere? 07:30
allison caller side the items would be in P1, P2, P3, not P1-5
chromatic Well it shouldn't.
allison chromatic: but it is, because that's how they're passed in 07:31
chromatic If the caller has the second PMC marked as :flat?
allison what you get on the caller side is exactly what was passed in
something, somewhere has to flatten it out
and, it has to have a place to store what was flattened out
chromatic I say that's the responsibility of the caller side and the storage location is in registers in the context created for the call. 07:32
allison so, yes, what the callee sees is P1-5, not p1-3
that's the mistake the earlier code made
chromatic Why is that a mistake? 07:33
allison let me be clear
we can merge call signatures and contexts
possibly even return continuations 07:34
chromatic I think we have to do the former. I'm all for that.
allison that is, I kind of agree with you
but the old way isn't the right way to get there 07:35
chromatic I agree with that too.
allison okay, in the mean time, I would like to look for ways to speed up CallSignatures for the simple cases 07:36
chromatic If you're telling me that 1) the old code was unmaintainable as-is 2) this current step is a simplification for maintenance 3) our deprecation policy holds us to making bigger simplifications until January 4) it's more important to get this work in progress merged at a stable point than to get it perfect, I agree completely.
allison especially, I'm curious if most of that 2.5 times slow down is in the returns, rather than the calls
chromatic It's both. 07:37
allison chromatic: useful to know
and, yes, that is what I'm saying
not perfect, a step in the right direction
chromatic Mostly it's everything called from the set_args PC op.
allison have you been able to run more complex profile examples yet?
chromatic Not yet.
allison chromatic: ah, that's building the call signature 07:38
chromatic: that could be vastly simplified
chromatic Parrot_pcc_build_sig_object_from_op is the expensive part.
allison chromatic: yes, that doesn't surprise me
chromatic: it's creating quite a few PMCs there too
chromatic That's mostly it, yes.
allison how hard do you think it would be to create a typed array? 07:39
that is, it can store a pmc or string pointer, or directly store an integer or float value
in each array slot?
chromatic It's 12:39 am, so I'm not quite following. 07:40
allison one of the big costs now is that every signature value has to be cast as a PMC
so it can be stored in a ResizablePMCArray
chromatic If you had a ResizableSTUFFArray that kept track of types, that wouldn't be necessary? 07:41
allison if we had a typed array, values could be stored directly (no PMC created)
yes, we have a signature, so we know what type each element should be
chromatic That's easy.
allison and, we're storing them with, for example set_integer, get_integer_native, etc
chromatic Just make a ResizableSTUFFArray which stores a union.
allison chromatic: a union for each value? 07:42
chromatic I guess it wouldn't have to store a union. It could store a pointer.
A union wouldn't hurt anything though. Might be safer too.
allison a blob of memory large enough to hold anything from a pointer to a float
chromatic That's a union, yep.
allison yes
okay, so that's step one on reducing PMCs created 07:43
chromatic We can even make it safe.
allison step two is to hold the array/hash data directly within the CallSignature, rather than having it hold array and hash PMCs
chromatic Right, that's a huge savings right there. 07:44
allison that cuts down two more pmc allocations
chromatic You cut down PMC allocations here by two thirds and you're onto something.
allison the third is eliminating the CPointers for returns (switching over to the same typed array as calls)
07:44 particle left
chromatic For 392,835 calls in this benchmark, we allocate ~2,750,000 PMCs and 392,840 STRINGs. 07:45
allison so, we're left with a single PMC for each call
chromatic Sorry, ~1,180,000 STRINGs.
allison we could make it a struct instead of a PMC, like the old system did
chromatic GC pressure is the biggest problem right now.
allison but, I'm more inclined to merge it with Context, and reduce PMC's that way 07:46
chromatic That seems better long term.
Capture's push_integer is about a third of runtime.
allison that makes sense, as the fib example was all integer arguments, yes? 07:47
chromatic CallSignature inherits that one, right?
Yes.
allison yes, it inherits that one
so, the typed array maybe the first obvious optimization
allison adding notes to the CallingConventions wiki 07:48
chromatic Improving storage within CallSignature seems like a bigger improvement to me.
allison chromatic: well, I'd do both at the same time 07:49
that is, implement the typed storage within CallSignature, rather than as a separate PMC
chromatic Oh, right.
That makes sense. 07:50
My only remaining concern is that it's risky to do these things with tests failing on the branch.
allison chromatic: that's why I haven't started them yet
chromatic: it's too hard to know the source of failing tests
chromatic: but, someone could work on CallSignature independently 07:51
chromatic I'd hate to merge the branch without these optimizations, though.
allison chromatic: that is, take the tests dukeleto has implemented for CallSignature, and use that to prove functional equivalence
chromatic How good are the tests? 07:52
allison and also to demonstrate the speed enhancements
chromatic: a lot better than they were
chromatic: though, there are likely untested cases 07:53
chromatic I'm sure there are.
allison still, it's enough to do the work
chromatic I suppose someone can work on this in a local branch, push it to GH or somewhere as useful, and merge in when it looks reasonable.
allison yup
honestly, they could work on it in a branch of trunk, that just updates CallSignature and the CallSignature tests
it's a strictly isolated part of the system 07:54
it has to provide the same interface to work, but how it works internally is open
chromatic Provided we can get the improved CallSignature tests in a different branch, that seems easiest to me. 07:55
allison yup, copy over t/pmc/callsignature.t
I can create the branch now if anyone's interested in working on it 07:56
chromatic By "anyone" you mean "Hey, you with loads of experience writing and maintaining PMCs and with an understanding of how GC works and mad profiling skills"? 07:57
cotto good reading between the lines 07:58
allison an ideal candidate, but I also don't know how much schedule time you have over the weekend
and, it would have to be this weekend, since our merge deadline for 1.7 is next Tuesday
cotto unlurks briefly 07:59
allison (unless we decide optimizations are important enough to delay the merge)
(which I'm willing to accept)
chromatic I admit a certain sympathy in that direction.
Even though we only support 1.7 for a month, a 2.5x slowdown for common-case function calls is a bitter pill. 08:00
allison I'd still say "merge the week after 1.7"
chromatic s/week/minute/
cotto How likely is it that the branch will be ready to merge before the deadline without those optimizations?
chromatic There's the big unknown.
allison cotto: pretty likely
we're down to 73 failing tests 08:01
chromatic 67
allison last weekend we killed 800+ failing tests
chromatic haz a magic power
allison chromatic++
chromatic It was a facepalm for cotto.
cotto does this magic power involve getting a good summary from recent versions of Test::Harness?
chromatic I said "magic", not "godlike". 08:02
If you update the wiki and get the groundwork in place with dukeleto or whomever, I'll poke at it between battling my blackberries, allison. 08:08
08:09 einstein joined
allison chromatic: by groundwork you mean "create the branch"? 08:09
chromatic create/cause to be created/merge over tests/whichever
I'm saving my brainpower for important things like not losing a toe to the hedge clippers.
allison chromatic: yup, can do, within the hour 08:10
(so it's available whenever you want a break from the evil blackberries) 08:11
chromatic I want that break now, but I want doesn't always gets.
allison and those blackberries'll take to extremes 08:13
chromatic That's rare; _Safe as Milk_ was hard to find when *I* bought a copy in the '90s. 08:14
allison I still haven't managed to find a copy, but I remember it anyway 08:16
mikehh msg bacek - with r41780 in src/runcore/profiling.c line 130 - runcore->profile_fd = fopen(profile_filename, "w"); - profile_filename is unitialised 08:17
purl Message for bacek stored.
08:17 JimmyZ joined
chromatic Get the 12 song version if you can. 08:17
It has the song that's about a car that everyone thinks is about a woman and they look at him weird for it. 08:18
allison ooh, I remember that one
I actually liked it 08:19
allison is currently signing away rights for a company to use my name, voice, likeness, and biographical information in promoting their product 08:20
allison feels vaguely dirty
okay, it's OSCON, so not as bad as it sounds, but still 08:21
chromatic Could be worse; could be like the Head First girl with the embarrassing female itch.
allison ah, the wonders of stock photos
I wonder if that model has died her hair and started wearing glasses or something 08:22
but then, I suppose models don't move in the same circles as technical book readers
chromatic You'd be surprised. 08:23
treed Didn't OSCON just happen?
allison maybe she hooked up with a Java geek who think's it's totally cool she's on the cover of his book
chromatic I can't walk past Abercrombie and Fitch here without seeing particle's shiny visage.
allison treed: yes, this is the contract for next year
treed Ah.
Yeah, I just missed being in the area this year.
treed recently moved to Mountain View. 08:24
allison particle's secret life as a model?
treed Would have liked to come.
Haha. Awesome.
allison treed: ah, Mountain View is a good place
treed tried running rubyspec.
on cardinal, that is
No output!
Clearly that means we're at 100% and nothing remains to be done.
cotto clearly
treed dusts his hands off and goes to do something else.
chromatic I have a spare hedge trimmer. 08:25
treed Actually, there is output.
cotto on to the next big thing
treed [1:23] [inara:/Users/treed/code/rubyspec]% mspec -t ../cardinal/cardinal
This compiler is built with the Parrot Compiler Toolkit, parrot revision 40987.
But that's it.
chromatic Just tell them to stop monkeypatching.
Must be something in their local Kernel:: 08:26
treed Or just that Cardinal really sucks. :-P
allison treed: I'm at about the same place on Pynie
treed I wonder if they have a list of the minimal stuff an implementation must support.
allison treed: the hard thing is, these test suites assume a full working interpreter
treed Well, rubyspec specifically says that it tries to be minimal in the basic support it requires. 08:27
allison treed: with Pynie I have to break their test suite down into smaller bootstrapping tests
treed It specifically mentioned that something was hard to implement in Rubinius and was specifically avoided.
allison treed: so I can get there in stages, and know I'm passing features along the way
treed nods.
Cardinal has its own test suite.
allison does Rubinius have a bootstrapping test suite you can use?
chromatic If you do something similar, treed, you might talk to Rubinius and see about donating bootstrapping tests.
treed Mostly, from my point of view, for regression testing. But we have some tests that were never passing. 08:28
similar in what fashion?
chromatic Extracting bootstrapping tests.
treed I mean, we have tests for basic functionality.
using a very very simple module
And outputting TAP.
mikehh chromatic: I think I first heard that album in about 1972 in Johannesburg in SA - is that the one with "squid eating dough in a polyethelene bag etc." 08:30
allison aye, Rubinius probably would be interested in TAP output
treed It's possible that Rubinius has some tests besides using rubyspec. 08:31
treed checks
allison treed: I converted Pynie's tests to Subunit output, which does the same thing as TAP, but is Python-based
treed nods.
allison s/would/wouldn't/
treed I wrote a TAP harness into our Rakefile.
allison treed: nice!
treed Could probably be abstracted out into a proper module. 08:32
It's pretty basic, and has been specifically adapted to the way I write tests.
chromatic Way before my time, mikehh. The album I'm thinking of is from the heady days of 1996, when I was ceasing to be a professional musician.
treed That is, I have specific shit that happens with TODO and SKIP
And if you have one of those and the comment doesn't mention an issue number, the rakefile will bitch at you.
This is to ensure that everything that is marked todo and skip is known and on the radar. 08:33
Instead of sitting in a file somewhere.
chromatic A powerful aegis. So to speak.
mikehh mind you that might have been Trout Mask Replica
treed trac.parrot.org/parrot/ticket/977h...ticket/977 08:36
shorten treed's url is at xrl.us/bfrffv
treed dammit
trac.parrot.org/parrot/ticket/977
That one. 08:37
purl that one is probably silly to. It's an impl detail, right?
treed It can be closed, but I don't have the ability to close it.
cotto treed, done 08:38
dalek TT #977 closed by cotto++: parrot_config returns with an error about "Invalid Charset"
treed Thanks.
Yeah, rubinius also has unit tests of their own.
maybe I can try those out 08:39
Honestly, it's not like I don't know what needs fixing, though.
Mostly I ran rubyspec out of curiosity.
I was trying to implement Ruby's actual object model, and ran into some problem I couldn't figure out, and that derailed me. 08:40
Then I got busy with the job offer and moving.
Still moving, actually.
cotto treed, good pun
treed But things are calmer now.
Heh.
allison treed: btw, are you at google? 08:41
treed IMVU
Which is in Palo Alto.
allison (mountain view)
treed I just live in Mountain View.
allison ah, makes sense
treed PA is much more expensive.
allison Palo Alto is spendy
yes
and Mountain View is right next door
treed The Facebook effect, as my coworkers call it.
allison :)
treed Turns out that facebook gives employees a stipend of $650 OSLT to live within a mile of the facebook offices. 08:42
So, all the rents are inflated by $650 in that area.
Facebook used to be in the building right next to us.
Looking forward to spending time at the Hacker Dojo now that I'm here. 08:43
08:43 quek joined
treed A place I can go hang out and hack on shit is pretty sweet. 08:43
And maybe I can recruit some more folks.
As I member I could give presentations and such.
allison treed: yeah, it's a very cool idea 08:44
treed A bunch of my co-workers were involved with that stuff and the SHDVs before it. 08:45
I knew a bunch of them from way back.
And used to get really envious of the SHDH parties.
allison the best jobs are the ones with those kinds of connections
it's so much better than wandering into a new office cold 08:46
treed nods.
Lots of really smart people at IMVU. I'm really enjoying the job so far.
Other than the fact that much of my job depends on me coding in Perl5. >_>
Ops guys use Perl, Engineering uses Python/C++.
no love for ruby
allison interesting combination 08:47
treed It's just about who was there to write stuff in the beginning.
because so much of the early stuff was in those languages, the related stuff stayed with those languages.
One guy was ops for the first couple years, and he's really into Perl. 08:48
allison yeah, and then the subsequent hires follow along the same lines, because they have to maintain the existing code
treed Although not enthusiastic about Perl6, sadly.
Yeah.
One of the engineers was trying to get me to subvert ops and start writing stuff in Python.
Because they have to interface with our stuff.
And hate having to interface python to perl.
Usually happens by scraping the output of perl scripts. 08:49
allison a lot of Perl 6 is overkill for ops folks. Will be good to get some books out on the simple subset of Perl 6 that basic perl 5 users actually need)
treed Management doesn't want to spend the effort maintaining APIs in both languages.
Honestly, I'd be enthused to not have to mess around with references.
allison yeah
treed I spent a whole afternoon banging my head into a wall trying to embed arrays in hashes in hashes. 08:50
allison :)
treed Tene finally explained it to me the next morning when I'd calmed down and was able to understand his words.
And it makes sense, historically.
But it's still ass.
My boss looked at me funny for putting arrays in hashes in hashes. 08:51
But it really was the most sensical representation of the data.
there are hosts which have many interfaces which each have two data rates
makes sense to me
I could have made classes for it, but I'm still far from understanding Perl OO.
Hm. 08:52
cardinal's rake smolder takes longer than it did last time I ran it
almost 11 minutes now
I'd be more enthusiastic about converting ops to python if python wasn't so comparatively verbose when doing text munging. 08:53
Which is a lot of what we do.
So perl6 would be really nice.
allison aye, I've noticed the string handling differences between python and perl 08:54
treed Well, mostly it's the 08:55
my_re = re.compile('blahblahblah')
my_re.match(str)
oh, and you have to save the match object
rather than just str =~ /blahblahblah/
Really, I just want the syntactic sugar. 08:56
treed heads to bed. 08:57
purl follows treed
treed okay, purl, but I'm just going to sleep 08:58
allison I think that small low-level distinction explains a lot of why perl is popular for ops work (strings), and python for scientific work (numbers)
treed: g'night
treed night!
mikehh trunk - pre/post-config, smoke (#28795) PASS, fulltest FAIL at r41789 (see TT #1102) - Ubuntu 9.04 amd64 09:00
hey you bunch - no new commits to test for a couple of hours :-} 09:04
allison mikehh: I'll get cracking :) 09:09
(after I create chromatic's branch)
09:48 bacek joined
mikehh rakudo (1b83557) builds on parrot r41789 make test / make spectest_smolder (up to 28713 -> #28801) PASS - Ubuntu 9.04 amd64 09:52
10:03 payload joined
mikehh holy ... rakudo spectest_smolder reports tests as 35,121 ok, 0 failed, 520 todo, 6,851 skipped and 0 unexpectedly succeeded 10:05
10:10 darbelo joined
darbelo thinks IMAGE_IO needs to become a PMC, like, yesterday. 10:14
darbelo wonders if that can be done without deprecating anything. 10:21
dalek rrot: r41790 | allison++ | branches/pcc_optimize_sig:
Creating branch for refactoring calling conventions, to work on trimming down the creation/initialization time and memory footprint of the CallSignature PMC.
10:36
moritz is that the successor of the pcc_reapply branch? or an entirely different beast? 10:38
darbelo moritz: Both? 10:40
purl hmmm... Both is country *and* western or salt and MSG
moritz purl: forget both 10:42
purl moritz: I forgot both
einstein i found a bug in the capture.pmc mark function, it does something which is just imposible 10:48
i uses it's own attributes instead of the array
darbelo einstein: If it's imposible, how can it do it?
;)
allison einstein: could you explain a bit more?
darbelo einstein: you mean the PARROT_CAPTURE(SELF)->data_size ? 10:50
einstein yes the PARROT_CAPTURE(SELF) would be index [2] of the data array 10:51
yes the PARROT_CAPTURE(SELF)->data_size would be index [2] of the data array
10:52 joeri joined
darbelo data_size is an ATTR, it's pre-allocated allong with the two PMC pointers. (Capture uses auto_attrs) 10:53
einstein &(PMC_data_type(SELF, PMC **)[2]) == &(PARROT_CAPTURE(SELF)->datasize), that is the problem 10:54
dalek rrot: r41791 | allison++ | branches/pcc_optimize_sig (2 files):
[pcc] Copying over CallSignature PMC and tests for independent development.
10:55
einstein PMC ** const data = PMC_data_typed(SELF, PMC **); should be something like PARROT_CAPTURE(SELF)->array
darbelo PARROT_CAPTURE(SELF)->array is a (PMC *) not (PMC **) 10:58
dalek rrot: r41792 | allison++ | branches/pcc_reapply/src/pmc/callsignature.pmc:
[pcc] A bit of internal renaming on the CallSignature (they're not "returns"
10:59
darbelo What you want is &(PARROT_CAPTURE(SELF)->array)
allison einstein: ah, you're talking about trunk, not branch 11:00
einstein yes it is the main trunk yes
darbelo Which, coincidentally is the same as PARROT_CAPTURE(SELF)
or PMC_data(SELF) 11:01
purl PMC_data(SELF) is a void *
darbelo Which, as purl pointed out, is the wrong type. 11:02
allison einstein: that has been fixed on the branch
einstein: see trac.parrot.org/parrot/changeset/4...apture.pmc
shorten allison's url is at xrl.us/bfrfor
einstein oh ok then i will do update, it is little week ago i did a update 11:03
allison einstein: well, it hasn't been merged into trunk yet 11:04
einstein ah ok
allison einstein: but it will be in a week or two
einstein ok that is good to know, thanks for the information 11:05
allison einstein: good catch, by the way. that was a non-trivial error 11:06
einstein yes I know, thanks for your help 11:08
11:09 masak joined 11:29 bacek joined
dalek TT #1100 reopened by bacek++: t/src/extend.t: failing in trunk 11:33
rrot: r41793 | bacek++ | trunk/src/call/context.c:
[cage] Initialise Context.current_sub in init_context.
11:37
11:55 mokurai left 12:22 jsut_ joined 12:23 JimmyZ joined
mikehh pcc_reapply - make spectest_smolder #28808 at r41793 - Ubuntu 9.04 amd64 12:51
trunk - pre/post-config, smoke (#28809) PASS, fulltest FAIL at r41793 (see TT #1102) - Ubuntu 9.04 amd64 12:52
13:00 quek left 13:01 kid51 joined 13:06 JimmyZ joined
dalek TT #1100 closed by jkeenan++: t/src/extend.t: failing in trunk 13:13
13:23 ruoso joined
darbelo lapses into a coma. 13:24
kid51 reads scrollback to see what possibly could have induced darbelo's coma 13:29
13:39 workbench joined
darbelo recovers from the coma. 13:39
lack of exitment.
13:42 plobsing joined
JimmyZ .\\miniparrot.exe config_lib.pasm > runtime\\parrot\\include\\config.fpmc 13:47
Malformed string
make: *** [runtime\\parrot\\include\\config.fpmc] Error 1
14:16 Psyche^ joined
dalek rrot: r41794 | jkeenan++ | branches/detect_llvm (2 files):
Refactor four instances of handling verbose output.
14:16
14:26 theory joined
dalek kudo: bd7966f | jonathan++ | src/ (15 files):
Start to store the default value as a closure inside the signature object. Also stub in space for sub-signatures - we don't support them just yet, but it'll be ready for when we do. Also fix a typo that caused constraints introspection to be broken.
14:29
shorten dalek's url is at xrl.us/bfrf5h
dalek kudo: 4cdac8a | moritz++ | perl6.pir:
make backtraces a bit less noisy

obvious.
14:35
purl i guess obvious is redirect to where you want to be
shorten dalek's url is at xrl.us/bfrf6a
dalek kudo: 925fd06 | jonathan++ | src/ (2 files):
Tweak to .constraints to pass another spectest.
14:46
shorten dalek's url is at xrl.us/bfrf7o
dalek rrot: r41795 | jkeenan++ | branches/detect_llvm/t/steps/auto/llvm-01.t:
Test previously unexercised branches.
15:27
Tene ... Huh. 15:29
I go to start working on pcc stuff, and then I fall asleep for 13 hours.
So, um... good morning, all.
kid51 Good morning, tene 15:30
So far, not much sign of a hackathon here today yet
dalek kudo: 3208e7b | jonathan++ | src/parser/actions.pm:
{%h} constructs a Hash, not a closure
15:37
shorten dalek's url is at xrl.us/bfrgct
15:38 einstein joined
jonathan 13 hours...that's...quite some sleep... 15:41
15:45 tetragon joined
jonathan Eww. I'm seeing some lovely segfault/assertion failure in Parrot. 15:47
context.pmc line 66 - Parrot_gc_mark_PMC_alive(INTERP, ctx->current_sub); 15:48
Seems sometimes this pointer is junk.
So trying to mark it explodes.
I actually get it at startup of Rakudo under the debugger...though not under the debugger it doesn't seem to happen.
Others are hitting it occasionally. 15:49
In init_context it appears we don't set the ->current_sub pointer. 15:51
And hey, that clears up the segfault. Whee. 15:56
dalek rrot: r41796 | jonathan++ | trunk/src/call/context.c:
[core] Be sure we don't leave ctx->current_sub uninitialized. While it *usually* will be init'd shortly after context creation, there's no promise of that, and this uninitialized pointer was being hit and followed during a GC run, causing an assertion failure and/or segfault.
16:02
Tene okay, os how can I get a count of failing tests? 16:10
dalek kudo: 27d9f14 | jonathan++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get a fix I just put in for a segfault.
16:11
shorten dalek's url is at xrl.us/bfrggx
dalek rrot: r41797 | tene++ | branches/pcc_reapply/src/call/args.c:
[pcc] Check returns count properly.
16:12
16:13 rhr joined
Tene okay, :flat returns don't work. 16:19
fixing... 16:22
purl rumour has it fixing is good, definitely
Tene LIES. 16:23
16:26 kyle_l5l joined
Tene Hmm. Not sure where to do this correctly. 16:27
allison's pseudocode doesn't mention :flat returns anywhere... maybe she wanted them processed elsewhere? 16:28
dalek tracwiki: v26 | tene++ | CallingConventionsOverview 16:29
tracwiki: fix a minor typo
tracwiki: trac.parrot.org/parrot/wiki/Callin...ction=diff
shorten dalek's url is at xrl.us/bfrgi9
16:32 msmatsko joined
Tene Ahh, they're handled in the sig building. 16:35
dalek p-rx: a0788f8 | pmichaud++ | src/Regex/Cursor-builtins.pir:
Add some builtin subrules to Cursor.
16:41
shorten dalek's url is at xrl.us/bfrgmb
dalek p-rx: 86f5d68 | pmichaud++ | (8 files):
Add lexical $ļæ½.
shorten dalek's url is at xrl.us/bfrgmd
Tene oh, nm, that's for results, not returns... >< 16:43
16:47 payload joined 17:06 einstein joined
Tene okay, the general algorithm I'm going to use is to add a return_subindex INTVAL and then check for :flat every time we fill a result from a PMC, and if so, pull the return_subindex item out of the return and increment that instead of return_index. 17:24
that doesn't seem *too* bad.
Tene jfdi 17:49
allison Tene: sounds reasonable 18:02
18:03 mberends joined 18:04 Patterner joined
Tene allison: thanks. 18:05
dalek tracwiki: v3 | darbelo++ | ItsABughunt 18:30
tracwiki: trac.parrot.org/parrot/wiki/ItsABu...ction=diff
shorten dalek's url is at xrl.us/bfrg22
18:33 chromatic joined
chromatic had dreams of fixing the CallSignature PMC. 18:46
chromatic also had dreams of joining a non-evil law firm and working for a long time before anyone discovered he's not actually a licensed attorney.
Thus you're not getting your CallSignature PMC in the next couple of hours.
allison chromatic: no worries, I'm just getting down to parrot work for today myself 18:57
nopaste "tene" at 24.10.252.130 pasted "allison++: review this patch?" (84 lines) at nopaste.snit.ch/18294 19:02
"tene" at 24.10.252.130 pasted "The same, but with a type check" (87 lines) at nopaste.snit.ch/18295 19:05
allison reviewing second one 19:06
Tene Oops, the second one violates C90
nopaste "tene" at 24.10.252.130 pasted "The same, but doesn't violate C90w" (88 lines) at nopaste.snit.ch/18296 19:07
Tene ... argh
It helps to *test* patches before pasting them.
just a variable name problem. s/aggregate/return_item/ 19:08
I'm not proud of return_index--, but it seemed better than adding guards to every other return_index++
allison Tene: where's the logic that pulls subsequent elements from the array? Oh, I see, you're holding it in place with the return_index-- until it's done with the flattening 19:10
Tene Yeah. Exactly. 19:11
allison Tene: you know, it works, and it's code that'll last 3 months, so I'm cool with it
Tene: looks good in general
Tene Okay, great.
It fails t/compilers/imcc/syn/tail_4.pir though... checking why.
allison Tene: I'm getting 76 failures with the new return code turned on now, is it time to switch it over to being the default? 19:12
Tene Ah, slurpy results don't use it yet.
allison: I don't have any objections.
allison Tene: okay, I'll work the magic on Parrot_pcc_fill_returns_from_op 19:13
Tene Great.
allison Tene: (and then see about Parrot_pcc_fill_returns_from_c_args)
Tene: those shouldn't interfere with the lines you're working on 19:14
Tene No, they shouldn't.
pushing... 19:19
purl it has been said that pushing is the answer
Tene purl: shoving?
purl shoving is the answer or
treed pushing and shoving and pushing and shoving me
Tene no, shoving is the answer to the terrible secret of space! 19:20
purl okay, Tene.
dalek rrot: r41798 | tene++ | branches/pcc_reapply/src/call/args.c:
[pcc] The first step in handling :flat returns.
19:26 einstein joined 19:28 mokurai joined 19:30 ash_ joined
Tene more fixes! 19:32
dalek rrot: r41799 | tene++ | branches/pcc_reapply/src/call/args.c:
[pcc] Add a termination condition to the slurpy-result-filling loop.
19:33
nopaste "tene" at 24.10.252.130 pasted "my test failures" (42 lines) at nopaste.snit.ch/18297 19:36
19:39 darbelo left 19:41 bacek joined
Tene 75 failed for me 19:42
Hmm. Smolder is nice. 19:43
dalek rrot: r41800 | allison++ | branches/pcc_reapply/src/call/args.c:
[pcc] Turn on new return handling code for everyone.
Tene reclaimed 6 tests by fixing a test regex. 19:52
dalek rrot: r41801 | tene++ | branches/pcc_reapply/t/op/cc_params.t:
[pcc] Update a regex in t/op/cc_params.t
19:53
Tene 2two more 19:56
dalek rrot: r41802 | tene++ | branches/pcc_reapply/t/op/cc_state.t:
[pcc] Another test regex fix
mikehh pcc_reapply - make spectest_smolder #28825 at r41800 - Ubuntu 9.04 amd64
Tene smolder server is down? 20:02
back up now, it seems. 20:04
mikehh trunk - pre/post-config, smoke (#28824) PASS,fulltest FAIL at r41800 (see TT #1102) - Ubuntu 9.04 amd64 20:05
dalek a: 10c0499 | fperrad++ | src/ (2 files):
implement trigo hyper
20:09
Tene 67 failed at 41802
shorten dalek's url is at xrl.us/bfrhft
dalek a: 9b5ce12 | fperrad++ | t/lua-TestMore:
update submodule lua-TestMore
20:14
shorten dalek's url is at xrl.us/bfrhf9
mikehh pcc_reapply - the biggest problem tests are t/op/calling.t - Failed 19/95 subtests, t/pmc/exporter.t - Failed 7/12 subtests, t/pmc/threads.t - Failed 5/14 subtests 20:20
and t/oo/composition.t which exits in subtest 21 out of 45 20:21
I get 6,441 ok, 62 failed, 100 todo, 162 skipped and 1 unexpectedly succeeded at r41802 - #28829 20:24
Tene - I am using my normal config options (the same as I use in trunk) on perl Configure.pl - you might want to re-config and realclean 20:32
Tene mikehh: thanks, I'll do that. 20:34
working on composition.t right now.
I think I know what the problem is.
mikehh I've got a codetest line length error I forgot to commit about 13 or so hours ago in src/call/args.c 20:38
of course it has changed a bit since then 20:39
I was working in a different dir 20:40
Tene okay, yes, got composition.t's failure reduced to minimal pir 20:45
bacek Good morning 20:49
20:49 mikehh_ joined
Tene fixed composition.t 20:50
committing.
25 more test passes
allison Tene++
Tene r41803 20:51
dalek rrot: r41803 | tene++ | branches/pcc_reapply/src/call/args.c:
[pcc] Fix a copy/paste error in fill_params for named pmc params.
20:53
rrot: r41804 | bacek++ | trunk/src/runcore/profiling.c:
Revert "[cage] Reduce scope for C string in runcore_profile_init."
Tene when trying a full 'make', we get an error when compiling TGE due to mmd not being updated to deal with 'n' for 'named' in sigs
i don't know what to do with it... don't understand mmd at all. 20:54
in src/multidispatch.c +716 20:55
down to 32 failed. 20:56
allison mmd should ignore named args 21:02
(they don't participate in multiple dispatch, only positional args are signiicant 21:03
f
)
21:04 rhr joined
Tene allison: so if it gets an 'n', it should drop the previous item from the type tuple it's building? 21:05
bacek Tene: just ignore 'n'
it's flag for previous argument 21:06
Tene bacek: it says that the previous argument is named, and allison just said that mmd should ignore named args.
allison Tene: if it gets an 'S', it should check if the next item is an 'n' and stop building if it is
Tene OK.
allison (preventing, rather than undoing)
Tene: similarly for Pf 21:07
(though it may already be doing that)
Tene What is 'f'?
purl 'f' is bottom lip and top teeth
allison :flat
nopaste "tene" at 24.10.252.130 pasted "like this? for allison++" (27 lines) at nopaste.snit.ch/18299 21:09
Tene Well, I'll just try it. No coretests fail because of it, afaict...
allison Tene: wrap the 'S' case in braces (so the INTVAL is declared inside a block) 21:10
bacek :flat should update signature similar to "dissect_aggregate_arg"
Tene Yeah, I got that. It didn't compile otherwise. :)
allison Tene: then do the same for the 'P' case
21:11 mikehh joined
Tene allison: Pf you mean? and are you disagreeing with bacek here? 21:11
allison bacek: mmd is different, dynamically flattened args don't count for mmd
bacek allison: ah, ok
but... why?
allison Tene: Sn and Pf, yes
dalek rrot: r41805 | mikehh++ | branches/pcc_reapply/src/call/args.c:
fix a bunch of line length errors in src/call/args.c
21:12
allison bacek: hrmph... 21:14
purl i guess hrmph is the key word to ambiguosity
allison bacek: there was a reason, but it's pretty late here, and I'm not entirely alert 21:15
Tene allison: want me to add an XXX comment complaining about "Why?"?
allison Tene: you can skip Pf for now
Tene: I'll come back to it
Tene allison: well, the code as it is would just throw an exception on 'f' 21:16
allison Tene: (fix the failures, don't worry about the extras)
Tene I'll make it skip for now, to comply with old behavior.
allison Tene: 'f' will either be ignored, or it will be stripped out of the signature string before it reaches mmd 21:17
Tene: ("ignored" as in, that item not counted for MMD)
Tene so should I terminate sig processing on seeing 'f' or no?
allison Tene: either way, it shouldn't be getting stray 'f's 21:18
Tene: yes, do
Tene: because flats should be processed before MMD if they're going to be
Tene: MMD can't handle unprocessed flats, so just ignores them 21:19
allison recovering previous logic
Tene committed. this doesn't affect any coretests. 21:21
21:21 kid51 joined
allison Tene: yes, figure it probably wouldn't 21:21
nopaste "tene" at 24.10.252.130 pasted "if anyone wants to add a test for it, here you go" (18 lines) at nopaste.snit.ch/18300
dalek rrot: r41806 | tene++ | branches/pcc_reapply/src/multidispatch.c:
[pcc] Stop build mmd type tuples on named and flat parameters
21:22
Tene several of the op/calling.t failures are anti-failures. We're not failing when we should be. 21:24
mikehh pcc_reapply - smolder_coretest #28835 at r41805 - 6,539 ok, 27 failed, 101 todo, 162 skipped and 1 unexpectedly succeeded 21:29
dalek rrot: r41807 | tene++ | branches/pcc_reapply/t/op/calling.t:
[pcc] Update three more error message text tests
21:35
p-rx: b0e696b | pmichaud++ | src/Regex/Cursor.pir:
Remove some obsolete methods from Cursor.
21:36
p-rx: 5ecd319 | pmichaud++ | src/Regex/Cursor.pir:
Partial change of match stack to a cursor stack, update bstack handling.
shorten dalek's url is at xrl.us/bfrhqx
shorten dalek's url is at xrl.us/bfrhqz
dalek p-rx: 7b01e97 | pmichaud++ | src/Regex/Cursor.pir:
Manage cstack on mark_fail.
shorten dalek's url is at xrl.us/bfrhq3
mikehh pcc_reapply - smolder_coretest #28838 at r41807 - 6,542 ok, 24 failed, 101 todo, 162 skipped and 1 unexpectedly succeeded 21:44
Tene allison: still awake? 21:45
dalek rrot: r41808 | tene++ | branches/pcc_reapply/src/call/args.c:
[pcc] Get flags for optional results from the right sig
21:48
chromatic idly wonders if subclasses of CallSignature would make the default case fast and let us replace runtime conditionals with compile-time polymorphism. 21:49
21:56 Whiteknight joined
Tene hi whiteknight 21:57
Whiteknight hello Tene! 21:58
how's the hackathon going?
Tene s'okay. a lot closer.
fill_results is the default now
last I heard, allison was working on making fill_returns_from_c_args use fill_results. 21:59
I think she might be sleeping, though.
we're down to 20-something failures in coretest.
Whiteknight ~20 failures! Awesome
Tene these last failures I'm running into, I don't know what to do with at all.
optional results aren't getting their opt_flag set when the sub doesn't return at all 22:00
tailcalling into an NCI doesn't work.
is anyone using the result_info opcode at all? 22:02
ah, optional results... I bet I can fix those. 22:03
oh, I already did. 22:04
jonathan Tene: I can't remember seeing it used in Rakudo, I can't speak for the rest of the toolchain though. 22:07
Tene The only things using it in the parrot repo are the tests
jonathan Just searched all the Rakudo source tree and didn't find any mentions of it. 22:08
allison Tene: yes, working on fill_returns_from_c_args
Tene: (not sleeping yet)
jonathan Tene: Though I guess unless it was already deprecated, it can't go away. 22:09
allison Tene: I found some other bits while I was reviewing the code, though
Tene another failure: if the sub doesn't have any .params, where can we check for excess args?
Similar to the one I wa slooking at earlier... if the sub doesn't have any .return(), where can we check for excess results or set :opt_flags for results? 22:10
jonathan Tene: I think that is a bug in current Parrot.
Tene: (the first one, that is)
nopaste "allison" at 77.98.130.30 pasted "Fixes for pcc_reapply that I can't commit at the moment because I'm working on another chunk in the same file, for Tene++" (21 lines) at nopaste.snit.ch/18301 22:11
jonathan Tene: So if you ain't checking that, then you've not improved things, but it won't be a regression.
22:13 jsut joined
allison Tene: I finished updating fill_returns_from_c_args a while ago, but I'm getting a segfault in miniparrot config_lib.pasm, so haven't checked it in yet 22:13
Tene: I've tracked the problem as far as the :flat handling code in fill_results
Tene Huh.
dalek rrot: r41809 | tene++ | branches/pcc_reapply/src/call/args.c:
[pcc] two fixes from allison++
22:14
allison Tene: specifically, this line is returning an invalid address (not NULL, or PMCNULL, just illegal) 22:15
1573 PMC *return_item = (constant) ? accessor->pmc_constant(interp, return_info, return_ index)
1574 : *accessor->pmc(interp, return_info, return_index); 22:16
(pardon the strange IRC wrapping)
22:16 bacek joined
Tene Fascinating. 22:16
allison hmmm... pmc_from_varargs returns PMC** 22:19
bacek allison: we need 4 other _from_varargs functions for fill_returns 22:20
allison: scratch it. 22:21
my mistake
allison bacek: we're only using the functions to access the elements passed in from varargs (the same as fill_params)
yeah
bacek: I mean, it would be possible to use functions for both fetching and setting, but we're not at the moment 22:22
bacek allison: we have to review all calls to fill_params_from_c then. Currently params/returns passed slightly inconsistently. 22:23
allison bacek: the function pass them is just a list of varargs, the same for both 22:24
to pass
bacek allison: PCCMETHOD creates different calls for fill_returns and fill_results. Like Parrot_pcc_fill_params_from_c_args(interp, _call_object, "Pi", 22:25
&pmc);
and Parrot_pcc_fill_returns_from_c_args(interp, _call_object, "P",
ret)
allison why is pmc_from_vararg fetching a PMC**?
in the existing code it was fetching a PMC*
bacek because it's passed as PMC**
(in fill_params) 22:26
allison the parameters are passed as PMC** so they can be set with the arg value? 22:27
bacek: then, yes, we do need another set of pointers for fill_results
because they're passed as PMC*
bacek we can adjust PCCMETHOD.pm to pass args and returns consistently 22:28
allison bacek: on the plus side, the same set of function pointers will be used for build_sig_object_from_varargs
bacek I don't see reasons why they inconsistent.
allison bacek: args and returns are passed the same
bacek: it's params and returns that are different 22:29
(because returns are args, not params)
(results are params)
bacek yeah
allison bacek: so, I'll rename the existing functions to X_param_from_c_args, and add X_arg_from_c_args for the new ones 22:32
bacek allison: what about just passing params and returns consistently?
allison bacek: no, they're doing different things 22:33
bacek: an arg/return just passes a simple value
bacek yes, but we can always pass pointers
allison bacek: a param/result passes a pointer to a value
bacek: that's pushing unnecessary complexity on the user and on the code, just to avoid a set of function pointers 22:34
bacek ok
Anyway, those functions are bad. I don't like them at all. 22:35
allison bacek: what, the function pointers?
Tene he means fill_params and fill_results
bacek no, this particular set of functions
foo_from_bar
allison bacek: at least most of the behavior is abstracted into the common fill_params and fill_results now 22:37
bacek: the distinction is limited to a prelude
bacek: and a different signature (one takes a vararg list)
bacek We just need pair of classes with shift_foo for fetching param/returns and push_foo to set arg/results 22:38
then we can avoid copying staff into CallSignature.
22:39 Wolong joined
bacek build_sig_object will just set this fetchers/fillers. 22:39
Tene allison: what error needs to be thrown fro: 'foo'('abc', 'def'=>1, 'ghi', 'jkl'=>1) ? 22:40
allison bacek: we're working on stripping the PMCs constructed during a call down to just the CallSignature, don't want to add more 22:41
mikehh trunk - pre/post-config, smoke (#28839) PASS,fulltest FAIL at r41808 (see TT #1102) - Ubuntu 9.04 amd64
Tene Could it be "too many positional args", or does it need to be "named args must follow all positional args"?
allison Tene: that's "named args must follow all positional args"
bacek allison: we will avoid creating CPointers at all
allison bacek: we'll do that anyway, once we unify the two
chromatic allison, did you put your task notes somewhere? 22:42
allison chromatic: it's open in my browser, not submitted yet, give me a sec and they'll be on trac.parrot.org/parrot/wiki/Callin...nsTasklist 22:43
shorten allison's url is at xrl.us/bfqjf4
chromatic No rush here, I just wanted to see it before you vanished into unconsciousness like I did. 22:44
allison Tene: even if it is too many positional returns (which it may be), that's an error that can be turned off
Tene allison: you mean positional args?
allison Tene: mixing named and positional returns is always an error
Tene: both (returns are args) 22:45
Tene allison: could I throw the error in build_sig instead of fill_params?
allison Tene: yes
Tene: build_sig is the primary arg processor
Tene ah, nm, got it. 22:47
22:52 Wolong joined
allison bacek: ah, the annoyance with separate arg versions of the getter functions is it means we need them for 'from_op' too 22:57
bacek: (because we want to be able to call both without modification)
bacek allison: indeed.
allison bacek: I'll leave them with a consistent signature for now so that's not necessary 22:59
Tene I'm apparently failing some tests that mikeh isn't? 23:07
allison Tene: what are the platform differences? 23:08
chromatic: oh, forgot to submit again, doing it now
Tene Not sure. I see a result from him earlier failing only 24 tests, but I'm failing 26 after this commit, which *fixes* 4 tests for me. 23:09
dalek rrot: r41810 | tene++ | branches/pcc_reapply (2 files):
[pcc] Fail correctly when positional args are passed to slurpy named params
Tene allison: awake to explain some error checking to me? 23:19
allison: I'm running into a problem where it looks like PARROT_ERRORS_PARAM_COUNT_FLAG is on by default in the branch but off by default in trunk. 23:25
nopaste "tene" at 24.10.252.130 pasted "This works in trunk and fails on the branch, unless you uncomment" (11 lines) at nopaste.snit.ch/18302 23:26
Tene If I set err_check to 0 inside the conditional testing that value, then it passes. 23:27
23:29 jrtayloriv joined
allison chromatic: CallSignature refactor notes added in trac.parrot.org/parrot/wiki/Callin...nsTasklist 23:32
shorten allison's url is at xrl.us/bfqjf4
allison Tene: yes?
Tene: I wondered about that, but I checked and it's on by default in trunk too
Tene allison: so why does that snippet of PIr pass in trunk but fail on branch? are extra named args not considered to fall under that? 23:33
allison Tene: that's possible
Tene PGE extensively relies on extra named args not being failures.
allison Tene: then for now they must not be failures in the branch
Tene: we can just comment out that code and put in a deprecation notice 23:34
mikehh pcc_reapply - smolder_coretest #28842 at r41810 - 6,545 ok, 21 failed, 101 todo, 162 skipped and 1 unexpectedly succeeded
Tene so should I change the trailing "if (err_check)" branch in fill_params to if(0) oslt? or just delete it?
dalek tracwiki: v12 | allison++ | CallingConventionsTasklist
tracwiki: trac.parrot.org/parrot/wiki/Callin...ction=diff
shorten dalek's url is at xrl.us/bfrh34
allison Tene: keep the code, but comment it out 23:35
Tene: (not a recommended usual practice, but in this case the right one)
Tene argh embedded comments... can I #if 0 ?
allison Tene: it should have a TT ticket
Tene: yes, #if 0 is okay
Tene: or #ifdef SOME_SENSIBLE_NAME 23:36
Tene it also needs some tests, theoretically.
allison Tene: write them as todo tests for how it should work
Tene allison: after this pending commit, it looks like everything compiles correctly, I think... 23:37
'make' just succeeded for me. I want to realclean and reconfigure just to test, but it looks like we can switch to 'make test' 23:38
It compiled... running 'make smolder_test' right now. 23:41
dalek rrot: r41811 | tene++ | branches/pcc_reapply/src/call/args.c:
[pcc] Don't fail on extra named args
23:42
allison Tene: excellent! 23:44
purl zwooshes
kid51 Hmm. Even when I configure on Linux/i386 with --buildframes=0, I still get 4 more failures than mikehh: smolder.plusthree.com/app/public_pr...ails/28843 23:46
shorten kid51's url is at xrl.us/bfrh5f
jonathan Looks like good progress. Tene++, allison++ 23:47
japhb Infinoid, what's the status of the gitorious parser for dalek? 23:48
Infinoid it needs some help in the bits where it finds the actual commit messages amid the html and (joy of joys) escaped html of its atom feed 23:50
with that done, and (optionally) a bit more scraping to get the changed paths for the end of the first line, it would be done 23:51
japhb Anyone still hacking on it, or is it stalled? 23:53
Infinoid darbelo started it, I took that and hacked a little (the output of that is nopaste.snit.ch/18273) 23:55
he may have hacked more, I don't know.
23:57 patspam joined