parrot.org/ - clean up those smolders for the release!
Set by moderator on 20 October 2008.
jonathan (See papers on practical lock freedom...) 00:00
chromatic Or an atomic two pointer swaps, yes.
allison At the moment we actually have to register the CallSignature for non-collection, and then explicitly free it for collection, because it isn't attached to any standard GC root-set 00:01
chromatic We don't have a way of allocating a PMC that we know is short-lived, purely internal, and never referred to after the allocating function returns.
jonathan www.cl.cam.ac.uk/research/srg/netos/lock-free/ has some great material.
chromatic ... although I wonder if... dirty hack... constant_pmc_new() + constant_pmc_free()....
allison it may be that part of moving to a generational scheme is adding one small internal-only pool
chromatic The problem with adding one small internal-only pool is the same problem with adding a constant pool. 00:02
00:02 ruoso joined
chromatic Any aggregate PMC allocated from that pool has to contain only GCable elements from the same or similar pools. 00:02
Otherwise, we always have to sweep the aggregates in those pools, which is O(n + c) 00:03
allison chromatic: which isn't the case here, since CallSignature will contain PMC arguments passed into the call
another possiblility is to have CallSignature stored in the registers 00:04
chromatic If we had automatic_pmc_new/automatic_pmc_free, that might work too.
allison hmmm... that's possible 00:05
jonathan allison: so will set_params build a CallSignature?
chromatic Saves the easy-to-get-wrong fun of registering/unregistering in the right place.
allison anyway, my basic point is just that if we're pouring effort into optimizing GC-able elements, I'd rather see the effort go into improving the overall GC features, than to add yet-another-way of sneaking around the problems in the existing GC 00:06
Croke NotFound++ patch in my inbox.
chromatic Point taken, but if we can get Tcl or Rakudo 20% faster with an hour of work now, we can save lots of people more work later on. 00:07
allison jonathan: in theory, yes, though at the moment it's only being used as a more efficient replacement for the PCCINVOKE code path
jonathan Aha, OK.
chromatic Part of the PCCINVOKE caching would mean refactoring the Build Me PMCs code into its own function.
jonathan allison: Are you working on those changes at the moment? 00:08
Or is it already in?
allison jonathan: already in
jonathan I need to look at all of the MMD stuff too and see how I need to update the Perl6MultiSub PMC.
allison jonathan: see inter_call.c Parrot_pcc_invoke_sub_from_sig_object
jonathan OK, will do. 00:09
00:09 bacek joined, AndyA joined
allison also, calling_conventions branch which is taking it the next step of replacing Parrot_PCCINVOKE 00:09
jonathan OK. 00:10
00:12 notbenh joined, wayland76 joined
wayland76 tewk++ 00:12
00:13 wayland76 left
Croke tcl slowwwwwwww 00:13
speaking of gc, is the GSOC work merged in?
chromatic No, WK wants to redo it more incrementally. 00:15
allison chromatic: agreed on the desirability of speed up (that and easier code maintenance is the core goal of the CallSignature transition), but if it's an hour spent that'll just be ripped out in a few weeks, it doesn't seem like a worthwhile hour 00:16
Croke I'd feel comfy if there was a plan for speedup, even if we can't speed anything up now. 00:20
chromatic: (redo it) Since that's not happening, can he write up a plan so that someone else might tackle it?
chromatic Seems reasonable. 00:21
Or you can whack him in the head when he returns from his honeymoon.
Croke chromatic: did you see my note about -t4?
chromatic allison, anything over a 5% speed improvement now for an hour's worth of work seems like an improvement if the branch takes more than four weeks to land. 00:22
Croke, I did. Did you find anything further in the infostr() function?
Croke have to run now, but have narrowed down the -t4 stuff to Parrot_full_sub_name's invocation of Parrot_ns_get_name 00:23
(resend)
which is probably because it does a PCCINVOKE using the current interpreter. 00:24
chromatic Ah, I see. 00:25
jonathan That sounds reasonable.
I had to do some presevation of stuff inside invoke when implementing Perl6MultiSub.
If Parrot_full_sub_name assumes certain things ain't going to change and they are changed by an intervening call, or more likely the profiling code makes that assumption, there's scope for trouble. 00:26
chromatic That's probably it. 00:27
Croke jonathan: sounds like you can fix it!
=-)
jonathan :-P 00:28
Not familiar with the profiling code, but I expect the fix would look like the same thing I did in Perl6MultiSub. Can take a look at weekend maybe. 00:29
jonathan is a bit tired for debugging at the moment.
Croke checks out p6ms
Croke goes blind. 00:30
jonathan It's not that bad! :-P 00:32
See in the invoke vtable method.
Croke IANACP.
jonathan Ah.
Croke ah. I see where you save off and restore. that looks cultable 00:33
should I put it in Parrot_ns_get_name? Or around the call in full_sub_name?
jonathan I suspect maybe even further out, in the profiling code that calls full_sub_name. 00:34
Like, in the profiling code.
Though I suspect in full_sub_name would work.
And woudln't do any harm.
If you put it there, be sure to add a comment about why we're doing it. 00:35
Croke I put it in full_sub_name for now. 00:40
seems to work for the -t4 case; trying a make test. 00:41
jonathan cool
00:42 dolmen joined
Croke jonathan++ 00:46
dalek r32255 | allison++ | pdd22io: 00:50
: [pdd22io] Converted Windows I/O for filehandles to new architecture.
diff: www.parrotvm.org/svn/parrot/revision?rev=32255
00:50 Ademan joined
jonathan Croke++ # fixing stuff 00:51
dalek r32256 | allison++ | pdd22io: 00:52
: [pdd22io] Cleaning up local C strings in 'open'.
diff: www.parrotvm.org/svn/parrot/revision?rev=32256
r32257 | allison++ | pdd22io: 00:57
: [pdd22io] Partial conversion of Windows I/O for sockets.
diff: www.parrotvm.org/svn/parrot/revision?rev=32257
Croke jonathan: all I did was copy you. 01:06
but thanks. =-)
dalek r32258 | allison++ | pdd22io:
: [pdd22io] Keep revision history of old generic, portable I/O file under new name.
diff: www.parrotvm.org/svn/parrot/revision?rev=32258
Croke now I can use this to figure out what partcl is invoking.
jonathan dobre 01:12
Croke ... running with -t4 on even the smallest spect test is still several thousand lines of tcl (in the test library itself). zzzzz. 01:14
$ wc -l join.trace 4590548 join.trace 01:21
so, that's a lot of trace. 01:22
but with all that, with my patch, -t4 worked.
jonathan++ again for doing all the hard work.
01:31 bacek joined
Croke Not surprisingly I spend all my time in PGE, TGE, and code generated by them. 01:36
$ wc -l join.trace 4590548 join.trace 01:38
er, 192044 - # Calling sub 'parrot;PGE;Match;new'
jonathan wow
But we know PGE has forthcoming major optimizations. 01:39
Croke also:
192044 - # Calling sub 'parrot;PGE;Match;new'
damnit.
101603 - # Calling sub 'parrot;TGE;Tree;_lookup_id'
103794 - # Calling sub 'parrot;PGE;Match;_failcut'
jonathan _failcut - this may be one that gets called less after proto-regexes.
Croke ... it is very depressing to be told things are -going- to be faster. =-) 01:40
jonathan At least there's a concrete plan for how this is going to be faster. 01:47
dalek r32259 | allison++ | pdd22io: 01:49
: [pdd22io] Converted generic, portable I/O for filehandles to new architecture.
diff: www.parrotvm.org/svn/parrot/revision?rev=32259
Croke now if only I had real profiling information. =-)
01:59 Andy joined
nopaste "Croke" at 72.228.52.192 pasted "last N entries when running join.test" (60 lines) at nopaste.snit.ch/14440 02:02
dalek r32260 | allison++ | pdd22io: 02:07
: [pdd22io] Function name cleanup on flag conversion.
diff: www.parrotvm.org/svn/parrot/revision?rev=32260
jonathan has a ticket to go see Opeth in December. w00t. 02:08
02:10 Aisling joined 02:11 jq joined
dalek r32261 | allison++ | pdd22io: 02:16
: [pdd22io] Add common I/O functions shared between all I/O function sets.
diff: www.parrotvm.org/svn/parrot/revision?rev=32261
02:35 Theory joined
bacek hi there 03:42
03:52 Psyche^ joined 04:39 gmansi joined
dalek r32262 | allison++ | pdd22io: 05:10
: [pdd22io] Add I/O header files for specific platforms.
diff: www.parrotvm.org/svn/parrot/revision?rev=32262
r32263 | allison++ | pdd22io: 05:14
: [pdd22io] Add headerizer block for io/common.c to main I/O header file io.h.
diff: www.parrotvm.org/svn/parrot/revision?rev=32263
r32264 | allison++ | pdd22io: 05:17
: [pdd22io] Move one stray remaining socket function to win32_socket.c, add stubs
: for 'pipe' and 'peek', and catch a few old-style calls.
diff: www.parrotvm.org/svn/parrot/revision?rev=32264
r32265 | allison++ | pdd22io: 05:18
: [pdd22io] Move a stray socket function over from win32.c.
diff: www.parrotvm.org/svn/parrot/revision?rev=32265
r32266 | allison++ | pdd22io: 05:20
: [pdd22io] Clean up a few old SHIM arguments, change the name of 'pipe' to
: 'open_pipe', and add a stub function for 'peek'.
diff: www.parrotvm.org/svn/parrot/revision?rev=32266
r32267 | allison++ | pdd22io: 05:21
: [pdd22io] Add a stub function for 'pipe'.
diff: www.parrotvm.org/svn/parrot/revision?rev=32267
07:00 Bzek joined 07:33 grim_fandango joined 08:21 iblechbot joined 09:16 bacek joined, masak joined
masak pmichaud: In src/classes/Mapping.pir, there's a TODO listing .exists, but in Hash.pir which extends Mapping.pir, .exists is already implemented. Should the method perhaps be moved to Mapping.pir? 09:48
...or have all these been superceded by the latest :exists change? 09:49
10:28 mj41 joined
masak would it be unreasonable to make autoincrement work on Complex values? 10:38
cognominal with what semantic? 10:45
I can see at least two.
incrementing the real part. 10:46
masak aye
that's what I had in mind.
cognominal hum, vocabulary lacks me for the second
masak :)
well, I see `++` as sugar for `+= 1`
cognominal if you see the complex like a vector, you may want to increment its length by one 10:47
masak cognominal: I thought you would say that :)
cognominal that's the second semantic
masak cognominal: don't see how that would be useful
for one, it can make gaussian integers non-integral
cognominal nothing useful, except for the sake of arguing
masak I'd say the first semantic won from the outset :) 10:48
I was mainly wondering if there'd be a reason not to DWIM in this case.
I don't think there is, but I wanted to check.
cognominal thx for making me discovering gaussian integers 10:55
masak hehe 10:56
they are a strange name for an obvious idea 10:57
cognominal yea, but I did not know of their properties
that makes me discover that a mathematical field translate to corps (body) in French 10:59
masak sounds reasonable 11:07
it does in Swedish too, IIRC
11:51 cognominal joined 12:20 cognominal joined 12:45 jan joined 12:48 kid51 joined 13:43 tetragon joined
dalek r32268 | kjs++ | trunk: 14:00
: [pirc/new] change some data structures, finish linear scan register allocator (needs a lot of testing).
: + code needs cleanups.
diff: www.parrotvm.org/svn/parrot/revision?rev=32268
14:13 dmknopp joined 14:15 justin joined 15:13 Lorn joined
dalek r32269 | kjs++ | trunk: 15:17
: [pirc/new] forgot to remove cpp comments. codetest didn't scream...
diff: www.parrotvm.org/svn/parrot/revision?rev=32269
15:26 kj joined 15:35 jq joined 16:16 iblechbot joined
dalek r32270 | julianalbo++ | trunk: 16:30
: avoid repeating string comparaisons and creation in Parrot_cx_delete_handler_local
diff: www.parrotvm.org/svn/parrot/revision?rev=32270
r32271 | julianalbo++ | trunk: 16:35
: fix c++/no c bug in r32270
diff: www.parrotvm.org/svn/parrot/revision?rev=32271
NotFound Sorry
dalek r32272 | coke++ | trunk: 16:45
: RT#60268 : fix -t4; certain debug information changed the state of the interpreter;
: guard in a similar fashion to jonathan++'s perl6's multisub invoke() method.
diff: www.parrotvm.org/svn/parrot/revision?rev=32272
17:13 tetragon joined
dalek r32273 | masak++ | trunk: 17:22
: [rakudo] implemented .end in any-list.pir
diff: www.parrotvm.org/svn/parrot/revision?rev=32273
17:35 tetragon joined 17:43 allison joined 18:24 jsut joined 18:44 chromatic joined
dalek r32274 | allison++ | pdd22io: 18:57
: [pdd22io] Keeping the revision history of the I/O API functions under the new name.
diff: www.parrotvm.org/svn/parrot/revision?rev=32274
NotFound Someone has tested the opengl examples recently? 19:08
dalek r32275 | fperrad++ | trunk: 19:24
: [Lua]
: - add a test for RT #60292
diff: www.parrotvm.org/svn/parrot/revision?rev=32275
jonathan has build failure on Win32 19:29
src\\sub.c(324) : error C2065: 'returns_signature' : undeclared identifier
ah, found it 19:32
NotFound Mmmm... that function is violating C90
jonathan: let me fix it 19:33
opengl examples are failing for me since the jitted nci commit 19:36
jonathan NotFound: already fixed 19:38
NotFound Ok
dalek r32276 | jonathan++ | trunk: 19:39
: [core] Re-order things to fix compilation errors due to C90 violation.
diff: www.parrotvm.org/svn/parrot/revision?rev=32276
NotFound Building with --jitcapable= 0 works, that confirms is a jit nci fault 19:53
20:23 mberends joined
tewk NotFound: what is failing nci jit? 20:34
NotFound tewk: opengl examples
Not sure, but I think the fail is on passig float args. 20:36
tewk examples/opengl /?
NotFound Yes.
tewk I just get blank windows 20:37
NotFound Black for me.
tewk right,
NotFound It must not be a double to float conversion in 'f' args? Or is done in emit_fstps? 20:40
tewk fstps does the conversion 20:54
I'd expect callbacks to be untested 20:56
chromatic Good opportunity to add some. 20:57
NotFound Callbacks seem to work, I put say instructions instead callback functions of the examples, and they are shown.
chromatic The NCI tests could use more work. 21:01
tewk I didn't write them, what would you like to see? 21:02
chromatic Something similar to the OpenGL code that doesn't work, to see where things go wrong. 21:05
tewk I'm adding a ttt test to expose the mysql NCI bug we say 21:06
I have no idea why the OpenGL code isn't working.
I'm going to dump all the NCI signatures used during the opengl example 21:07
then build a test harness for them
chromatic Sounds good.
Checking that the values round-trip sounds sensible.
tewk Yeah thats what I'm planning on 21:08
dalek r32277 | tewk++ | trunk: 21:25
: [NCI] ttt test for double freeing of char* copies
diff: www.parrotvm.org/svn/parrot/revision?rev=32277
japhb My IRC client pinged me for the OpenGL references ... I'll pull and build, and then I can help if needed. 23:26
dalek r32278 | julianalbo++ | trunk: 23:34
: add a nci signature for mysql
diff: www.parrotvm.org/svn/parrot/revision?rev=32278
japhb OK, I'm getting the same black window problem with the OpenGL examples.
NotFound Back in black
japhb pulling and building on x86_64 to make sure the problem is the JIT code 23:35
NotFound japhb: you just need to build with --jitcapable=0
japhb OK, will try that on the ia32 23:37
Confirmed on ia32 -- turning off JIT makes it work again. 23:42
x86_64 is still pulling; it's been a while since I synced on that box. :-)
Reading back, it sounds like tewk's on the trail ... tewk, ping me if you need anything from me. 23:44
23:50 purl joined
japhb x86_64 confirmed to work normally -- I assume because it's not NCI JIT capable yet. 23:59