|
Parrot 2.4.0 "Sulfur Crest" Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere Set by moderator on 18 May 2010. |
|||
| plobsing wonders how much it would take to go from winxed to javascript | 00:13 | ||
|
00:16
whiteknight joined
00:23
Coke joined
|
|||
| whiteknight | bacek: TMS is "working"? | 00:29 | |
| whiteknight has a lot of new code to read | 00:33 | ||
|
00:36
mikehh joined
|
|||
| Coke skips review. | 00:38 | ||
|
00:45
tcurtis joined
01:07
kid51 joined
|
|||
| dalek | rrot: r47177 | jkeenan++ | branches/tt1452_configure_debug (5 files): [configure] Config step auto::extra_nci_thunks does not conduct a probe; hence, does not need to be a separate 'auto' step. Merge into init::defaults. |
01:09 | |
| bacek_at_work | whiteknight, yes (fsvo) | ||
| whiteknight | bacek: I see that it copies a lot of logic from gc_inf for now | ||
| bacek_at_work | whiteknight, it was quickest way to get GC skeleton | 01:17 | |
| but TMS logic is brand new :) | 01:18 | ||
| whiteknight, starting from line 539 in gc_tms.c | 01:22 | ||
| whiteknight | yeah, I saw all that. What you have so far looks nice | ||
| bacek_at_work | It's almost one-to-one translation from GCMassacre wiki page. | 01:23 | |
| dalek | rrot: r47178 | jkeenan++ | branches/tt1452_configure_debug/MANIFEST: Update MANIFEST. |
01:26 | |
| rrot: r47179 | jkeenan++ | branches/tt1452_configure_debug/t/steps/auto/msvc-01.t: Update test file to reflect change in handling of verbose debugging output. |
|||
| rrot: r47180 | jkeenan++ | branches/tt1452_configure_debug/t/steps/auto/gmp-01.t: Update test file to reflect change in handling of verbose debugging output. |
|||
| whiteknight | I suggest deprecating the new_s and new_s_i opcodes | ||
| with immutable strings, they are useless | |||
| GeJ | TMS ? | 01:35 | |
| bacek_at_work | GeJ, TriColour Mark & Sweep | 01:39 | |
| dalek | rrot: r47181 | jkeenan++ | branches/tt1452_configure_debug/t/steps/auto/readline-02.t: Update test file to reflect change in handling of verbose debugging output. |
01:43 | |
| GeJ | bacek_at_work: Thanks. time to google. | 01:44 | |
| bacek_at_work | GeJ, trac.parrot.org/parrot/wiki/GCMassacre | 01:45 | |
| plobsing | whiteknight: clone_s_s should probably go to for similar reasons | 01:49 | |
| whiteknight | maybe | 02:15 | |
| It's a similar concept, but I can imagine a situation where maybe we would want two distinct headers pointing to a single buffer | |||
| probably not common, but worth an RFC | 02:16 | ||
| dalek | rrot: r47182 | jkeenan++ | branches/tt1452_configure_debug/config/auto/pcre.pm: Re-order arguments to _evaluate_cc_run() to be consistent with similar subroutines in other steps. |
||
| rrot: r47183 | jkeenan++ | branches/tt1452_configure_debug/t/steps (6 files): Update test file to reflect change in handling of verbose debugging output. |
|||
| tcurtis | To anyone interested in my GSoC: please have a look at my message to parrot-dev if you have a chance. | ||
| GeJ | make fulltest PASS all test on FreeBSD 7 @47181 | 02:17 | |
| whiteknight | tcurtis: I'll give it a complete once-over tomorrow morning | 02:18 | |
| GeJ | bacek_at_work: Sorry, I forgot to report it to you. I checked at home, and unfortunately had previously upgraded my laptop to 7.1 | ||
| so, no 6.x anymore. | |||
| tcurtis | whiteknight: thanks. I have a preference about the matter, but I want to get as much feedback as possible about it before making a decision regarding what to start implementing. | 02:24 | |
| bacek_at_work | GeJ, no worries. It was stale headers in very old svn checkout. | 02:25 | |
| dalek | tracwiki: v12 | jkeenan++ | GCMassacre | 02:33 | |
| tracwiki: Small spelling and grammar corrections | |||
| tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | |||
|
02:39
JimmyZ joined
02:43
bluescreen joined
02:47
JimmyZ_ joined
|
|||
| dalek | rrot: r47184 | jkeenan++ | branches/tt1452_configure_debug (4 files): Continue to modify handling and testing of verbose/debugging output. |
02:49 | |
| bacek_at_work | purl: 107267 + 80912 | 03:04 | |
| purl | 188179 | ||
| cotto | TMS? | ||
| bacek_at_work | purl: 64405 + 513469 | ||
| purl | 577874 | ||
| cotto | TMS is tri-color mark and sweep | ||
| bacek_at_work | cotto, yes. new_pmc_header + mark_and_sweep calls for TMS and MS. | 03:05 | |
| cotto | TMS is also trac.parrot.org/parrot/wiki/GCMassacre | ||
| bacek_at_work | TMS? | ||
| cotto | purl, tms? | ||
| purl | i haven't a clue, cotto | ||
| dalek | rrot: r47185 | jkeenan++ | branches/tt1452_configure_debug (2 files): Update config step and test file to reflect change in handling of verbose debugging output. |
||
| cotto | purl, TMS is tri-color mark and sweep (garbage collection algorithm) | 03:06 | |
| purl | OK, cotto. | ||
| cotto | TMS is also trac.parrot.org/parrot/wiki/GCMassacre | ||
| purl, TMS is also trac.parrot.org/parrot/wiki/GCMassacre | |||
| purl | OK, cotto. | ||
| cotto | purl, TMS is also transcranial magnetic stimulation | ||
| purl | OK, cotto. | ||
| cotto | purl, tms? | ||
| purl | i haven't a clue, cotto | ||
| cotto | purl, TMS? | ||
| purl | cotto: no idea | ||
| cotto | stupid bot | ||
| purl, purl, tms? | |||
| purl | bugger all, i dunno, cotto | ||
| cotto | $purl.stupid(0); | 03:12 | |
| plobsing | , TMS? | 03:13 | |
|
03:13
janus joined
|
|||
| bacek_at_work | .oO ( May be I can add fact-plugin to aloha ) | 03:13 | |
| sorear | let's add tetra-color mark and sweep | 03:22 | |
| cotto | live, maybe, dead and zombie? | 03:24 | |
|
03:24
LoganLK joined
|
|||
| tcurtis | Slightly lighter gray or slightly darker gray, sorear? Or really-black or really-white? | 03:30 | |
| bacek_at_work | We have tetra-color mark in parrot now... | 03:32 | |
| Bloody "constant" zombiez. | |||
| plobsing | bacek_at_work: what actually gets marked constant these days? | 03:33 | |
| (I know that const table entries don't) | |||
| bacek_at_work | they are not marked | 03:34 | |
| at all | |||
| plobsing | I know what constant means to GC. I'm just wondering what is actually using that. | 03:35 | |
| bacek_at_work | ack PObj_constant_FLAG src | wc -l | 03:38 | |
| 51 hit | |||
| dalek | rrot: r47186 | jkeenan++ | branches/tt1452_configure_debug/config/auto/isreg.pm: Update config step and test file to reflect change in handling of verbose debugging output. |
||
| tracwiki: v60 | cotto++ | ParrotQuotes | 03:40 | ||
| tracwiki: we love this code | |||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff | |||
| cotto | bacek_at_work, 28 in trunk after realclean | 03:41 | |
| bacek_at_work | it's 28 more than I would like to see | 03:42 | |
| dalek | rrot: r47187 | jkeenan++ | branches/tt1452_configure_debug/config/init/hints/darwin.pm: Adapt to debug method. |
03:55 | |
| TT #449 closed by plobsing++: [TODO] Migrate non-essential ops to dynops | 04:07 | ||
| TT #449: trac.parrot.org/parrot/ticket/449 | |||
| rrot: r47188 | plobsing++ | branches/constant_unfolding: creating branch to work on constant unfolding |
04:11 | ||
| rrot: r47189 | plobsing++ | branches/ops_massacre: branch has been merged and is no longer needed |
|||
| rrot: r47190 | plobsing++ | trunk/DEPRECATED.pod: remove deprecation notice for TT #449 |
|||
| rrot: r47191 | plobsing++ | branches/constant_unfolding/compilers/imcc (2 files): add constant unfolding stage to ops selection (try_weaken_const_to_temp) |
|||
| plobsing | wooo! constant unfolding works! | 04:12 | |
| bacek_at_work | plobsing, hmmm... What is the reason behind? | 04:14 | |
| plobsing | bacek_at_work: it allows us to eliminate all of those const permutations for rare ops | ||
| also we can ditch the constant folder (which has had issues even recently) | |||
| or move it to elsewhere | 04:15 | ||
| bacek_at_work | makes sense | ||
| plobsing | now all that needs doing is modifying opsc to not emit const variants except for specially marked ops/args | ||
| cotto | Yay! The first modification of opsc that doesn't require a corresponding change in the ops2c perl code! | 04:17 | |
| what's your plan for that, plobsing? | 04:18 | ||
| plobsing | I'm thinking it will be a flag on the op. :gen-const, :hot-const, :hot-potato | 04:19 | |
| it doesn't provide much granularity, but that's fine | |||
| for now, at least | |||
| cotto | we've got a full-blown parser for op signatures. There's no reason not to have :gen-const(1,3,4) or something similar. | 04:20 | |
| other than a little extra code complexity | |||
| plobsing | grumble, grumle, more work, grumble | ||
| cotto | actually it might be easier just to annotate the individual args | 04:21 | |
| do whatever you feel like | 04:22 | ||
| no worries if the first approximation is a little blunt | |||
| plobsing | hmmmm... we already seem to have 'inconst' op args. I wonder if I can build off of those. | 04:24 | |
|
04:36
contingencyplan joined
|
|||
| cotto | fakescience++ | 04:40 | |
| plobsing | 'in' => constant and variable versions; 'invar' => variable only; 'inconst' => constant only? | ||
| s/?// | |||
| fakescience? | |||
| cotto | fakescience.tumblr.com | 04:41 | |
| it provides clear and simple explanations for everyday phenomena | 04:42 | ||
| bacek_at_work | plobsing, +1 for invar | 04:45 | |
| plobsing | +1 for already existing | ||
|
04:47
parthm joined
04:49
TiMBuS joined
|
|||
| dalek | TT #1375 closed by jimmy++: [patch]changed class.pmc to use GET_ATTR syntax | 04:57 | |
| TT #1375: trac.parrot.org/parrot/ticket/1375 | |||
| rrot: r47192 | plobsing++ | branches/constant_unfolding (5 files): kill off 30 find_cclass and find_not_cclass const variant ops as a proof of concept. |
05:01 | ||
| plobsing | wow. killing ops this way is *much* easier than moving things to dynops | 05:02 | |
| cotto | plobsing, you could add the ops to ops.skip if you need a simple poc | ||
| plobsing | just converting the argument specification from in to invar does the trick | 05:03 | |
| cotto | ok | ||
| plobsing | but thanks for the suggestion | ||
| sorear | I have a modest proposal. | ||
| cotto | does that mean that you won't have to hack on opsc? | 05:04 | |
| sorear | Let's eliminate STRING, STRING registers, and _s op variants. | ||
| plobsing | cotto: exactly | ||
| it already exists | |||
| cotto | nice | ||
| plobsing | (prescient ops2c.pl hackers)++ | 05:05 | |
| sorear: why eliminate strings? | |||
| cotto | sorear, are you suggesting that we only use string PMCs? | ||
| sorear | cotto: yes | ||
| STRING has a header, a body, GC fields, and a (actually two) vtables | 05:06 | ||
| cotto | That'll be a tough case to make. It'd be a massive amount of work just to update the code. | ||
| sorear | it's very much like a PMC | ||
| now that immutable strings are in, a lot of stuff which formerly didn't belong to the buffer can now be put in the buffer, shrinking struct STRING to the same size as struct PMC | |||
| cotto: yes. | 05:07 | ||
| plobsing | I think it is still useful to make the distinction. we poke strings in ways we shouldn't be poking PMCs | ||
| cotto | sorear, is this a serious idea yet or are you just toying with it as a thought experiment? | 05:09 | |
| sorear | somewhere in between | 05:11 | |
| plobsing's last comment is the main thing stopping it from being a serious proposal | 05:12 | ||
| I am watching darbelo closely; as the diversity of behaviors of strings increases, the degree of indirection in Parrot_str_ will converge with the vtable api | 05:13 | ||
| plobsing | sorear: my comment might carry less weight than you think. I said "shouldn't be" in stead of "aren't" for a reason. :-/ | 05:20 | |
| sorear | plobsing: I had the concern before your comment | 05:21 | |
| dalek | rrot: r47193 | plobsing++ | branches/constant_unfolding/t/compilers/imcc/imcpasm/opt1.t: skip constant folding tests which no longer work |
05:34 | |
|
05:55
aukjan joined
|
|||
| dalek | kudo: 5c09771 | moritz++ | t/spectest.data: run whatever.t again |
05:56 | |
|
06:12
uniejo joined
06:27
parthm left
06:33
cognominal joined
|
|||
| dalek | rrot: r47194 | plobsing++ | branches/constant_unfolding (6 files): shave off 8 ops by removing const variants of rarely used loadlib, dlfunc, and dlvar ops |
06:57 | |
| sorear | plobsing: the _cclass ops are what powers NQP-rx, fwiw | 07:00 | |
| plobsing | well on the plus side, it got heavy use without breaking | 07:01 | |
| does NQP-rx use find_cclass of find_not_cclass with constant variants in tight loops? | 07:02 | ||
| and would a decent loop invariant lifter be able to optimize the inserted set instructions? | |||
| sorear | find_cclass *is* a tight loop | 07:04 | |
| any loop which contains find_cclass is once removed from being tight | 07:05 | ||
| plobsing | like I mentioned in the email, I chose those ops because I hadn't seen them before and they each had 16 variants (which is way to big). | 07:06 | |
| we could just as easily enable certain arguments of those ops to efficiently handle constants. | 07:07 | ||
| sorear | NQP only uses find_[not_]?cclass $I11, <constant>, <reg>, $I0, <reg> | 07:10 | |
| s/I0/I10/ | |||
| I doubt that a single instance of constant unfolding is going to make a huge difference here | |||
| especially if IMCC is smart enough to re-use the same unfolded IREG | 07:11 | ||
| plobsing | sorear: that's the punchline. we have no register allocator | ||
| sorear | umm | ||
| how does .local work | |||
| plobsing | it grabs the next available register | 07:12 | |
| that is also how allocating temps works | |||
| IIUC | |||
| sorear | so if I have 500 unfoldable ops, I have a 500 word frame? | ||
| plobsing | that assumes only 1 constant unfolded per op, but yes. | 07:13 | |
| sorear | *snrk* | ||
| plobsing | the idea of unfoldable ops is to make them only the uncommon ones | ||
| plus, constant unfolding would be a great idea if only we had a decent optimizer. | 07:14 | ||
|
07:15
fperrad joined
|
|||
| plobsing | loop-invariant lifting (temp registers containing constants are invariant), register allocation (temp registers are short lived), constant folding (for ops that can be const folded, ie: don't fold rand()) | 07:15 | |
| those can all alleviate or eliminate the consts of the unfolding | |||
| s/consts/costs/ | 07:16 | ||
| sorear | I presume you are talking about Lorito here | 07:17 | |
| cotto | see khairul | 07:18 | |
| seen khairul | |||
| purl | khairul was last seen on #parrot 2 days, 15 hours, 5 minutes and 17 seconds ago, saying: cotto_work: what do you mean? [May 28 16:13:29 2010] | ||
| plobsing | eSure. Or maybe someone gets fed up and writes a simple optimizer (not full Lorito). Or maybe once we decouple IMCC from its optimizer fully (unfolding reduces dependancy on folding) we can get IMCC's optimizer working to some degree. | 07:19 | |
| s/eSure/Sure/ | |||
|
07:19
fperrad_ joined
|
|||
| sorear | Oh | 07:19 | |
| cotto | phew. I thought I was in the dot com boom again. | ||
| sorear | I see. | ||
| Well, you can approximate that | 07:20 | ||
| plobsing | no. we've been through eX. the latest fad is iX. To be ahead of the curve, we should start prefixing things with 'o' | ||
| sorear | Suppose no op in a function has more than 3 unfolded parameters | 07:21 | |
| Allocate 3 registers - perhaps I36, I37, I38 | |||
| cotto | plobsing, like oauth? ;) | ||
| plobsing | or -Ofun | ||
| sorear | Use them | ||
| plobsing | sorear: that requires cross-communication between instruction selections increasing coupling in an already over-coupled IMCC | ||
| sorear | oh. | 07:22 | |
| plobsing | the right answer is to have a register allocator | ||
| sorear | how much mangling are we expecting IMCC to do? | ||
| I feel like bytecode is the wrong level to do loop-invariant code motion | |||
| plobsing | If IMCC doesn't find an op it will: | ||
| sorear | it should be on some sort of tree form | 07:23 | |
| plobsing | 1) try and swap certain g[et] for l[et] | ||
| sorear | but, goto | ||
| nevermind | |||
| plobsing | 2) weaken constants to temps | ||
| 3) weaken intvals to numvals | |||
| 4) some const folding that I want to eliminate | 07:24 | ||
| const folding still happens when you would have to do both const => temp and int => num | |||
| eg: $N0 = sqrt 1 | |||
| but it would be easy enough to require sqrt 1.0 | |||
| moritz | does IMCC fold the sqrt at compile time too? | 07:25 | |
| plobsing | currently, yes. I think that should only happen if you ask it to optimize. | ||
| const folding is still a little buggy. I fixed one of them a week or two ago. | 07:26 | ||
| sorear | but IMCC doesn't rearrange instructions or move branches around or anything crazy like that? | ||
| moritz remembers | |||
| plobsing | sorear: it has code to do that, but noone in their right mind runs IMCC at -O2 | 07:27 | |
| sorear | wait a second | ||
| aren't you the big IMCC *fan* here? | |||
| plobsing | I think it has *potential* | ||
| more like "don't throw the baby out with the dishwater" than "this is awesome" | 07:28 | ||
| I think if we got things straightened out a little, some of IMCC's optimizer passes could be made useful. | 07:29 | ||
| For example -O1 doesn't break too much of parrot fulltest. It does however, take >1 hour (I gave up) to compile Rakudo. | |||
| cotto | ouch | 07:30 | |
| sorear | what does -O1 and -O2 do? | ||
| cotto | break parrot a little and a lot | ||
| plobsing | -O1 enables some "lighter" optimizations like constant folding, -O2 enables the graph-coloring register allocator | 07:31 | |
| or did until I ripped it out | |||
| but stuff on that order | |||
| sorear | does -O2 do anything now? | ||
| plobsing | it probably does. there's a lot it can do with the liveness graph. | 07:32 | |
| dead-code elimination is -O2 methinks | |||
| the problem with -O1 is that it isn't single pass. there's a loop that watches for no change (assumed progress). I think certain inputs can make the optimizations work against each other. | |||
| moritz | maybe try to run each optimization only once? | 07:33 | |
| the output will not be ideal, but probably better than now | |||
| plobsing | yes. that's one of the things I might try. But first I'd like to decouple the parser from the optimizer slightly. | 07:34 | |
| ideally, I could make the optimizer a separate program (I'd probably call it pbc_to_pbc for lack of a better name). | 07:35 | ||
| I may have caught whiteknightitis (the inability to come up with entertaining names for projects) | 07:36 | ||
| moritz | depessimize :-) | ||
| plobsing | it's a shame demoronize is taken | 07:37 | |
| sorear | you could call it demoronise | 07:38 | |
| cotto | pbc_demoronizatinator? | ||
| sorear | birdbrain | 07:39 | |
| cotto | fastinator | ||
| plobsing | +1 to birdbrain | ||
| fastinator? really? are you even trying anymore? | |||
| make-parrot-go-faster-program | 07:40 | ||
| cotto | birdbrain has its charm | ||
| whoever starts hacking on it gets to decide the name | |||
| plobsing | exactly. My parrot calendar is pretty full with putting out fires ATM, so that project is likely vapourware for a while at least. | 07:41 | |
| cotto | we have many fires to choose from | 07:42 | |
| GeJ | clock? | 07:47 | |
| cotto | purl? | 07:48 | |
| purl | yes, cotto? | ||
| cotto | clock? | ||
| purl, clock? | |||
| purl | wish i knew, cotto | ||
| cotto | purl, purl? | ||
| purl | cotto: i haven't a clue | ||
| cotto | the bot's definitely broken | ||
| karma bacek | |||
| purl | bacek has karma of 2700 | ||
| cotto | at least that's working | ||
| karma purl | |||
| purl | purl has karma of 8972 | ||
| cotto | purl-- | ||
| purl | cotto: huh? | ||
| plobsing | (purl)-- | 07:49 | |
| cotto | purl-- ajfdlksa;jflsk | ||
| purl | cotto: huh? | ||
| cotto | asdkfjhskjd purl-- ajfdlksa;jflsk | ||
| plobsing | karma purl | ||
| purl | purl has karma of 8970 | ||
| cotto | karma purl | ||
| purl | purl has karma of 8970 | ||
| GeJ | ok, roughly 1AM. I still have 6h hours to fix my code. | ||
| tcurtis | (purl)-- | ||
| karma purl | |||
| purl | purl has karma of 8969 | ||
| cotto | purl, status | ||
| purl | Since Sun May 30 08:59:35 2010, there have been 152 modifications and 43 questions. I have been awake for 22 hours, 50 minutes, 14 seconds this session, and currently reference 844319 factoids. Addressing is in optional mode. | ||
| plobsing | botsmack | ||
| GeJ | botsnack? | 07:50 | |
| purl | thanks GeJ :) | ||
|
07:51
parthm joined
|
|||
| cotto | tcurtis, I appreciate your epic posts to parrot-dev. | 07:57 | |
| tcurtis++ | 07:58 | ||
| tcurtis | Thanks, cotto. "Epic", eh? I like that. Sounds much better than "excessively long and possibly containing mistakes because it's too long to pay full attention all throughout proofreading." | 08:03 | |
| dalek | rrot: r47195 | plobsing++ | branches/constant_unfolding/src/ops/core.ops: [codetest] fix up docs after last ops removal |
08:04 | |
| bacek | ~~ | 08:20 | |
| cotto | <> | ||
|
08:20
khairul joined
|
|||
| cotto | khairul, ping | 08:21 | |
| dalek | rrot: r47196 | khairul++ | branches/gsoc_instrument (3 files): Added method to get the values for op args. Added PARROT_EXPORT to key_string function annotation in src/key.c |
||
| rrot: r47197 | khairul++ | branches/gsoc_instrument/examples/library (2 files): Rewrote tracer.pir in nqp and removed older pir example. |
|||
| khairul | cotto: pong | ||
| cotto | khairul, is there a difference in your instrument pmc code between supervisor and the interp that's passed to all functions via PARROT_INTERP? | 08:22 | |
| I don't see the reason to keep ->supervisor around if using INTERP/interp would have the same effect. | 08:24 | ||
| khairul | yup, there's no difference. its an artifact for get_pointer. i'll remove that soonish. i don't think i use it anywhere else though. checking. | 08:25 | |
| cotto | ok | ||
| khairul | i remember now, i needed it to get a reference to the supervisor interp in the runcore. | 08:29 | |
| cotto | Have you run any big chunks of code under instrumentation? It'd be interesting to see if the potential speed advantage of an op table vs the PMC arrays you have now is worthwhile. | 08:30 | |
| khairul | yup... | ||
| mostly i run those in examples/pir | |||
|
08:31
mberends joined
|
|||
| khairul | i got real 3m27.883s, user 2m26.525s sys 0m4.760s running tracer.nqp on examples/pir/mandel.pir | 08:32 | |
| in comparison to real 2m28.807s user 0m36.826s sys 0m3.256s for the trace runcore. | 08:33 | ||
| cotto | what about the default runcore? | 08:34 | |
| khairul | that, is no comparison. 0m0.096s real | 08:35 | |
| cotto | might be worthwhile to play with overriding the op table | 08:36 | |
|
08:37
cosimo joined
|
|||
| khairul | op tables are shared amongst all the interpreters right? | 08:37 | |
| cotto | not sure | 08:39 | |
|
08:42
parthm left
|
|||
| dalek | rdinal: c84be84 | fperrad++ | src/classes/File.pir: File is now a dynpmc, so load it |
08:49 | |
| cotto | khairul, it looks like there's only one copy of the op lib unless you explicitly make another. | 08:56 | |
| It looks like the op lib is a global too, so wheee | 08:58 | ||
| if it'd make life less painful for you, you could bring up making the op lib non-static | 09:00 | ||
| at next #ps | |||
| I wouldn't expect that it needs to be static but I haven't taken a shot at changing the code yet. | |||
| also not sure what implications that'd have for the work plobsing++ is doing on dynfixups | 09:05 | ||
| lots of questions | 09:06 | ||
| probably workable though | |||
| g/night | |||
| khairul | hrm... | ||
| dalek | rdinal: 8d9d275 | fperrad++ | setup.pir: refactor additional tests with runtests from distutils (instead of Perl5 prove) |
||
| khairul | nite | ||
| i'll think it through first and discuss with you tmr. | |||
|
10:03
mikehh joined
|
|||
| dalek | rrot: r47198 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Don't initialize freshly allocated List_Item. List.append will do it. |
10:17 | |
| rrot: r47199 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Skip marking of 'constant' objects |
|||
|
10:24
whiteknight joined
|
|||
| dalek | rrot: r47200 | bacek++ | branches/gc_massacre/include/parrot/settings.h: Eat your own food - use TMS as default GC. |
10:34 | |
| rrot: r47201 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Implement mark blocking in TMS |
|||
| rrot: r47202 | bacek++ | branches/gc_massacre/src/gc/list.c: Decrement list count on List.remove |
|||
| rrot: r47203 | bacek++ | branches/gc_massacre/src/gc/system.c: Made Memory_Pools even more optional during trace_memory_block |
|||
| rrot: r47204 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: More fixes to TMS |
|||
| rrot: r47205 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Invoke M&S earlier during allocating of new pmc header. |
|||
| rrot: r47206 | bacek++ | branches/gc_massacre/include/parrot/pobj.h: Add POBJ_grey_FLAG |
|||
| rrot: r47207 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Don't remark grey objects. |
|||
| rrot: r47208 | bacek++ | trunk (2 files): Disable building of dynops for corevm |
10:51 | ||
| rrot: r47209 | bacek++ | branches/gc_massacre (18 files): Merge branch 'master' into gc_massacre |
|||
| kudo: aebd0c5 | (Solomon Foster)++ | src/core/metaops.pm: Extend hyper to handle nested lists / arrays. Patch courtesy of Prakash |
11:14 | ||
| rdinal: 25498b0 | fperrad++ | src/classes/File.pir: some opcodes are gone |
11:27 | ||
| rrot: r47210 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Disable debug output. |
11:41 | ||
|
11:51
tetragon joined
|
|||
| dalek | rrot: r47211 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: More checks of pointer in is_pmc_ptr. |
11:58 | |
| rrot: r47212 | bacek++ | branches/gc_massacre/src/gc/list.c: Use classical algorithm to remove item from list. |
|||
| rrot: r47213 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.c: Fix PoolAllocator.is_owned. |
|||
| rrot: r47214 | bacek++ | branches/gc_massacre/src/gc/list.c: Simplify List.append |
|||
| rrot: r47215 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Add more assertions into tms_mark_and_sweep |
|||
|
12:05
clinton joined
|
|||
| bacek | seen chromatic | 12:23 | |
| purl | chromatic was last seen on #parrot 1 days, 14 hours, 10 minutes and 59 seconds ago, saying: That seems workable. [May 29 22:12:45 2010] | ||
| bacek | slacker... | ||
| dalek | rrot: r47216 | bacek++ | branches/gc_massacre/src/gc (3 files): Add more debug to catch list brokage |
12:31 | |
|
12:31
JimmyZ joined
|
|||
| whiteknight | how do I get the stdout FileHandle in current parrot? | 12:39 | |
|
12:40
lucian joined
|
|||
| bacek | whiteknight, step 1 - checkout gc_massacre branch. step 2 - gdb --args ./parrot --gc-debug t/compilers/imcc/syn/labels.t | 12:40 | |
| After fixing assert failure you'll reach nirvana and filehandle will appear in your hands | 12:41 | ||
|
12:41
aloha joined
12:44
khairul joined
12:47
aloha joined
|
|||
| dalek | rrot: r47217 | bacek++ | branches/gc_massacre/src/gc (2 files): Remove unused List.prepend |
12:47 | |
|
12:49
aloha joined,
kid51 joined
|
|||
| bacek | aloha, kid51 | 12:54 | |
|
12:55
bacek joined
13:02
aloha joined
13:03
aloha joined
|
|||
| bacek | aloha, TMS? | 13:09 | |
| aloha | bacek: No clue. Sorry. | ||
| bacek | aloha, TMS is TriColor Mark & Sweep | ||
| aloha | bacek: Okay. | ||
| bacek | aloha, TMS? | ||
| aloha | bacek: TMS is TriColor Mark & Sweep | ||
| bacek | aloha, TMS is also trac.parrot.org/parrot/wiki/GCMassacre | ||
| aloha | bacek: Okay. | ||
| bacek | aloha, TMS? | ||
| aloha | bacek: TMS is TriColor Mark & Sweep or trac.parrot.org/parrot/wiki/GCMassacre | ||
| bacek | purl, TMS? | 13:10 | |
| purl | i haven't a clue, bacek | ||
| bacek | purl, TMS is TriColor Mark & Sweep | ||
| purl | OK, bacek. | ||
| bacek | purl, TMS? | ||
| purl | bacek: bugger all, i dunno | ||
| bacek | meh | ||
| aloha, aloha? | |||
| aloha | bacek: No clue. Sorry. | ||
| bacek | aloha, aloha is little purl sister which can memoize things | 13:11 | |
| aloha | bacek: Okay. | ||
| bacek | aloha, aloha? | ||
| aloha | bacek: aloha is little purl sister which can memoize things | ||
| bacek | aloha, no, aloha is <reply>I'm little purl's sister which can memoize things | 13:18 | |
| aloha, aloha? | |||
| aloha | bacek: aloha is little purl sister which can memoize things | ||
| bacek | aloha, aloha? | 13:19 | |
| aloha | bacek: aloha is little purl sister which can memoize things | ||
| moritz | aloha! | 13:20 | |
|
13:20
aloha joined
|
|||
| bacek | stupid bot... | 13:20 | |
| aloha, aloha? | |||
| aloha | bacek: aloha is little purl sister which can memoize things | ||
| bacek | aloha, forget aloha | ||
| aloha | bacek: I forgot about aloha. | ||
| bacek | aloha, aloha is <reply>I'm little purl's sister which can memoize things | ||
| aloha | bacek: Okay. | ||
| bacek | aloha, aloha? | 13:21 | |
| aloha | bacek: I'm little purl's sister which can memoize things | ||
| bacek | much better | ||
| aloha, moritz? | |||
| aloha | bacek: Search me, bub. | ||
| bacek | aloha, moritz is great! | ||
| aloha | bacek: Okay. | ||
| bacek | aloha, moritz? | ||
| aloha | bacek: moritz is great! | ||
| bacek | :) | 13:22 | |
|
13:22
jsut_ joined
|
|||
| bacek | Anyway, main purpose of this silly bot is tab completion :) | 13:25 | |
| msg chromatic If you want to help with GC massacre - step 1 - checkout gc_massacre branch. step 2 - gdb --args ./parrot --gc-debug t/compilers/imcc/syn/labels.t | 13:27 | ||
| purl | Message for chromatic stored. | ||
| bacek | msg chromatic I manage to fail with implementing of linked list. labels.t asserting on list ownershit... | 13:29 | |
| purl | Message for chromatic stored. | ||
| kid51 | Hmm. Either the 'make smolder_coretest' is seriously out of date ... or we have just suffered massive errors. | 13:30 | |
| smolder.plusthree.com/app/projects/...ails/34153 | |||
| I suspect the former | |||
| moritz | kid51: I think 'make coretest' has some dependency problems... mikehh talked about it before | 13:31 | |
| kid51 | I was able to run 'make coretest' yesterday and resolve most problems. | 13:32 | |
| bacek | I think I fixed it in latest commit in trunk... | ||
| dalek | kudo: 7a2ede9 | (Solomon Foster)++ | src/core/metaops.pm: Simple implementation of hyper on hashes. |
||
| kid51 | Only one I couldn't handle was: trac.parrot.org/parrot/ticket/1666 | 13:33 | |
| bacek | Actually no. I broke it even more. | 13:34 | |
| kid51 | Indeed: smolder.plusthree.com/app/projects/...ails/34154 Regular smolder | 13:35 | |
| dalek | rrot: r47218 | jkeenan++ | branches/tt1452_configure_debug (2 files): Update config step and test file to reflect change in handling of verbose debugging output. |
13:38 | |
| kid51 | Do we indeed want to "Disable building of dynops for corevm" (r47208 commit message) ? | ||
| bacek | kid51, yes. opsc depends on NQP/PCT | 13:39 | |
| kid51 | Okay. Is the problem in make corevm or make coretest? | ||
| nopaste | "kid51" at 192.168.1.3 pasted "Recent change in makefiles/root.in" (23 lines) at nopaste.snit.ch/20768 | 13:41 | |
| bacek | kid51, "coretest" | 13:46 | |
| corevm should not include PCT/NQP/* | |||
| coretest depends on dynops | |||
| dynops depends on opsc | 13:47 | ||
| opsc implemented in NQP | |||
| NQP is not part of corevm | |||
| chicken and egg problem... | |||
| Anyway, coretest should not include dynops | 13:49 | ||
|
13:49
ruoso joined
|
|||
| mikehh | bacek, kid51: a lot of tests in coretest did depend on dynops, and now fail | 13:53 | |
| we seriously now need to consider which tests should be in coretest now | 13:54 | ||
| dalek | rrot: r47219 | bacek++ | trunk/t/compilers/imcc/syn/tail.t: Don't use printerr in test to avoid dependency on opsc for dynops. |
||
| rrot: r47220 | bacek++ | trunk/t/op/interp.t: Use stdout to avoid dependency on dynops. |
|||
| rrot: r47221 | jkeenan++ | branches/tt1452_configure_debug/config/auto/cpu/i386/auto.pm: Update config step and test file to reflect change in handling of verbose debugging output. |
|||
| bacek | mikehh, at least dynpmc should not be in coretest | 14:00 | |
| mikehh | bacek: quite a few dynpmc tests were in coretest | 14:01 | |
| bacek: in fact I think all were | 14:02 | ||
| bacek | indeed | ||
|
14:03
plobsing joined
|
|||
| mikehh | and since plobsing's masscree a lot more stuff has been moved there | 14:03 | |
| and a who;le bunch of tests are failing make test too | 14:07 | ||
|
14:09
PacoLinux joined
|
|||
| dalek | rrot: r47222 | jkeenan++ | branches/tt1452_configure_debug/config/auto/cpu (2 files): Update config step and test file to reflect change in handling of verbose debugging output. |
14:11 | |
| rrot: r47223 | jkeenan++ | branches/tt1452_configure_debug/config/auto/cpu/ppc/auto.pm: Continue to adapt config steps to new approach to verbose/debugging output. |
|||
| rrot: r47224 | bacek++ | trunk/t/pmc (3 files): Remove dependencies on dynops to be able to run tests in coretest |
|||
| rrot: r47225 | jkeenan++ | branches/tt1452_configure_debug/config/auto/memalign.pm: Update config step and test file to reflect change in handling of verbose debugging output. |
|||
| rrot: r47226 | bacek++ | trunk/t/pmc/eval.t: Migrate most of the test to dynopsless variant to avoid dependency on opsc. |
14:28 | ||
| rrot: r47227 | NotFound++ | trunk/t/pmc/resizablepmcarray.t: tests for RPA splice with negative offset |
|||
| rrot: r47228 | bacek++ | trunk/lib/Parrot/Harness/DefaultTests.pm: Remove dynpmcs from coretest. They are not belong to this stage of testing |
|||
| mikehh | bacek: better but still failing a whole bunch of tests | 14:32 | |
| dalek | rrot: r47229 | NotFound++ | trunk/t/pmc/resizableintegerarray.t: test for RIA shift from empty |
14:44 | |
| rrot: r47230 | jkeenan++ | branches/tt1452_configure_debug/config/gen (2 files): Update config step and test file to reflect change in handling of verbose debugging output. |
|||
| rrot: r47231 | jkeenan++ | branches/tt1452_configure_debug/config/gen/opengl.pm: Move a 'die' statement closer to where its death condition is determined. |
15:01 | ||
|
15:03
patspam joined
|
|||
| kid51 | In 'make test', now getting one failure in t/pmc/eval.t and one in t/pmc/threads.t | 15:04 | |
| smolder.plusthree.com/app/projects/...ails/34155 | 15:06 | ||
| dalek | kudo: 4f9ca44 | (Solomon Foster)++ | src/core/metaops.pm: Handle single-arg hash hypers as well. |
15:09 | |
|
15:14
Coke joined
15:19
khairul joined
15:21
jsut joined
15:24
integral joined
15:29
Myhrlin joined
15:53
zostay joined
16:37
athomason joined
16:39
szabgab joined,
Infinoid joined,
dmagnus_ joined,
Tene joined,
krunen joined,
Maddingue joined,
nnunley joined,
cotto joined,
GeJ joined,
treed joined,
bacek_at_work joined,
dngor joined,
slavorg joined,
sri joined,
tewk joined,
Ryan52 joined,
ascent joined,
knewt joined,
ttbot joined,
moritz joined,
arnsholt joined,
silug joined,
TonyC joined,
nopaste joined,
darbelo joined,
simcop2387 joined,
spinclad joined,
Util_ joined,
pmichaud joined,
cotto_work joined,
TimToady joined,
preflex joined,
particle joined,
jnthn joined,
sorear joined,
Patterner joined,
janus joined,
contingencyplan joined,
cognominal joined,
mberends joined,
cosimo joined,
mikehh joined,
whiteknight joined,
lucian joined,
bacek joined,
aloha joined,
PacoLinux joined,
patspam joined,
NotFound joined,
ruoso joined,
purl joined
16:53
kid51 joined
|
|||
| kid51 | Just got over an unusual Net outage: Couldn't reach my own web site/server; could reach google, nytimes, etc. Couldn't do IRC. | 17:11 | |
| cotto | I think the chicken/egg problem can be partially solved by checking in the dynpmc generated files. | 17:21 | |
| the only problem with that is that the dynpmc makefiles are known to be goofy | |||
| darbelo | dynpmc makefiles should be generated, like we do for the core pmcs. | 17:22 | |
| In fact, most of that config step could be reused for that purpose. | 17:23 | ||
| cotto | they are partially generated | ||
| dalek | tracwiki: v61 | cotto++ | ParrotQuotes | ||
| tracwiki: bacek might have a hidden agenda | |||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff | |||
| darbelo | The .in file (And hence most dep info) is still human-made. | 17:24 | |
| cotto | that's why I say partially | 17:25 | |
| darbelo | The makefile for core pmcs has less humans involved. | ||
| cotto | it's definitely something that we should be able to generate easily. | ||
| bonus points for doing it in nqp | |||
| darbelo | NQP at Configure time? Urgh. | 17:26 | |
| dalek | rrot: r47232 | jkeenan++ | branches/tt1452_configure_debug (2 files): Update config step and test file to reflect change in handling of verbose debugging output. |
17:29 | |
|
17:32
joeri joined
|
|||
| NotFound | Don't you think that ops that are so needed to test core must be in core? | 17:37 | |
|
17:47
tcurtis joined
17:51
aukjan joined
|
|||
| cotto | whiteknight, interesting tool. Is it on github or something? | 18:02 | |
| whiteknight | cotto: not yet. Hacked it together this morning. It's extremely limited | ||
| dalek | rrot: r47233 | jkeenan++ | branches/tt1452_configure_debug (2 files): Update config step and test file to reflect change in handling of verbose debugging output. |
18:03 | |
| whiteknight | it's basically the world's worse home-brew "parser" for the worlds smallest subset of PIR | ||
| cotto | I thought it'd be something like that. | ||
| whiteknight | my goal is to use this tool to find a reasonably small subset of PIR that lets us do the things we need to do, and then we call it "Lorito" | 18:05 | |
| cotto | I'm not convinced that a mere subset of pir would be sufficient for what we want Lorito to do. | 18:06 | |
|
18:11
gbacon joined
|
|||
| whiteknight | cotto: I'm also adding in some C-specific features, like the ability to declare a variable as a C type instead of an INSP, and ability to call a C function | 18:12 | |
| so, not a true subset of existing PIR | |||
| cotto | Using C-specific features sounds like it'll limit our future jitting possibilities. | 18:20 | |
| whiteknight | cotto: the idea being that anything we can do in C, we can do in ASP | 18:21 | |
| ASM | |||
| calling funcs, dereferencing pointers, etc | |||
| so long as the ops stay atomicish, there's no problem | |||
| cotto | bad typo there | 18:22 | |
| ;) | |||
| so you're thinking of a subset of pir with some C-sauce added | 18:23 | ||
| how would it work with nqp or other hlls? | |||
| part of the charm of Lorito is that it loosens the limits of which language we can use to implement core functionality | 18:24 | ||
| dalek | nxed: r482 | julian.notfound++ | trunk/winxedst1.winxed: add missing optimize step to NewExpr and use new instead of root_new in new |
18:30 | |
| rrot: r47234 | jkeenan++ | branches/tt1452_configure_debug/config/inter/libparrot.pm: Delete commented-out code. |
18:36 | ||
|
18:50
clinton joined
|
|||
| dalek | kudo: cde6abe | moritz++ | src/core/system.pm: enable argumentless sleep(); closes RT #57294 |
19:04 | |
|
19:09
Themeruta joined
19:14
bluescreen joined
|
|||
| dalek | nxed: r483 | julian.notfound++ | trunk/winxedst1.winxed: fix: predef die has void result |
19:25 | |
| nxed: r484 | julian.notfound++ | trunk/winxedst0.cpp: use const REGnone in stage 0 for predef void return type, like in stage 1 |
19:30 | ||
| whiteknight | cotto: this is an exploratory exercise. Start with a very simple "compiler" here, and add operations until we can recreate all the C code that we need in Parrot (or, the part of Parrot that Lorito will be used for) | 19:40 | |
| at that point, we say that set of operations is the list of operations Lorito needs to support | 19:41 | ||
| the only thing that's "PIR" about this is the syntax, and even then I'm taking some liberties for ease | |||
| cotto | ok | 19:45 | |
| what's the tool written in? | |||
| GeJ | Good morning everyone. | 19:46 | |
| moritz | rakudo: say :(3).perl | 19:47 | |
| sorry, wrong channel | |||
| darbelo wants to write ops in LOLCODE. | 19:48 | ||
| whiteknight | cotto: pure PIR | 19:50 | |
| not pretty PIR | 19:51 | ||
| let me jam it up on github for perusal | |||
| github.com/Whiteknight/subpir2c | 19:53 | ||
| cotto: op bodies are in oprules.pir, the main driver is subpir.pir | |||
| darbelo | Line oriented conversion? Ew. | 19:55 | |
| The PIR is not particularly ugly, though. | 19:56 | ||
|
20:02
Psyche^ joined
|
|||
| cotto | it's hard to have especially ugly pir | 20:03 | |
| dalek | nxed: r485 | julian.notfound++ | trunk/winxedst1.winxed: allow new with a string constant as class name, too much special cases but |
20:04 | |
| darbelo | Is that a challenge? | 20:05 | |
| ;) | 20:06 | ||
| whiteknight | darbelo: I wanted to use NQP, but when I had my idea I figured it would be faster to just do line-based PIR conversion than it would be to ask the questions I would need about adding a C-code generator to an NQP-RX grammar | 20:07 | |
| NotFound | An obfuscated PIR contest? | ||
| darbelo | whiteknight: Makes sense for a proptotype, but it's going to get limiting if you want to push it further. | 20:08 | |
| whiteknight | darbelo: of course. It's only a stupid prototype. I put it together in about 2 hours this morning as proof-of-concept | 20:09 | |
| a proper NQP-RX grammar and custom code generator would be ideal | |||
| there is a lightning storm happening here now, I may lose power | |||
| darbelo | Dont worry, tt happens to all electricity wilding superheroes eventually. | 20:10 | |
| It'll come back in an issue or two. | 20:11 | ||
| sorear | we need to figure out allison's problems with NQP-rx too | ||
| darbelo | .oO( allison has problems with NQP-rx ? ) |
20:12 | |
| Boy am I out of at least one loop. | |||
| sorear | darbelo: allison replied to tcurtis on parrot-dev@, saying that PIR was much superior to NQP-rx for writing optimization passes or something like that | 20:14 | |
| lists.parrot.org/pipermail/parrot-d...04349.html | 20:15 | ||
| scroll down to "hopelessly byzantine" | |||
| darbelo | The part that says "Which is *not* to say that PIR is the best tool for the job"? | 20:16 | |
| sorear | yes | ||
| darbelo | Okay. | 20:17 | |
| jnthn | lol...I've had the exact opposite experience writing stuff in NQP rather than PIR. :-/ | 20:19 | |
| (Get stuff done much quicker, less hassle, easier to maintain, easier for others to hack on...) | 20:20 | ||
| cotto | I much prefer nqp after getting over its quirks, but I can't rule out that it might not be better than straight pir for some tasks. | 20:26 | |
| multis will be nice | 20:27 | ||
| jnthn | Yeah, I think some recent things went in that aim at getting some multi support for nqp. | ||
| dalek | rrot: r47235 | NotFound++ | trunk/t/pmc/resizablebooleanarray.t: tests for RBA set negative size and get with negative index out of range |
20:30 | |
|
20:31
theory joined
20:49
eternaleye joined
21:05
confound joined
21:48
lucian_ joined
|
|||
| bacek | aloha, humans | 22:21 | |
| darbelo | aloha, botmaker | 22:22 | |
| bacek++ # Tab completion bot. | 22:23 | ||
| Coke | you were too lazy to type "aloha"? | 22:27 | |
| Coke is confused. | |||
| bacek | Coke, yes of course! | ||
| aloha, Coke | |||
|
22:54
Chandon joined
|
|||
| tcurtis | Is there a way to distinguish between PBCs intended to be loaded and used as libraries and PBCs intended to be executed as main programs? | 23:01 | |
| cotto | I'm going to make a "hi" bot. | ||
| darbelo | tcurtis: programatically? I don't think so. | ||
| cotto | I'd say that you could look for a :main but I think those get marked by default if there's not an explicit one. | 23:02 | |
| darbelo | An explicitly marked :main sub is a pretty good hint in PIR; | ||
| But I'0m not sure that's preserved into the PBC | |||
| cotto | I don't know if it'd be completely reliable. | 23:03 | |
| darbelo | ... or what cotto said... | ||
| I need to stop typing into one window while looking at another. | |||
| There is also the chance that the file is a library, but can be run standalone with a 'test' main. | 23:06 | ||
| Java programmers are fond of that trick, and PIR would allow them to keep using it here. | 23:07 | ||
| NotFound | darbelo: it does, actually. | 23:08 | |
| cotto | we could add explicit metadata if the information were important enough | ||
| pbc_merge --library -o libfoo.pbc foo.pbc bar.pbc buz.pbc | 23:09 | ||
| darbelo | A 'fake main' is at the top of the file it runs "as intended" without explicit marking. | ||
| cotto | tcurtis, why do you ask? | 23:11 | |
| tcurtis | Actually, what I was thinking of wouldn't need anything to be done on the PBC. My idea is that if you are just compiling something to be ran as a program rather than loaded as a library, some more aggressive optimizations could be performed that might break its ability to be used as a library(e.g. removing dead globals and subs). I suppose ensuring it isn't accidentally loaded could be done by inserting an :init sub that throws. | ||
| NotFound thinks that lately people looks more interested in breaking things than in make things work. | 23:13 | ||
| darbelo hasn't broken anything yet. | |||
| tcurtis: The only way to make sure "This won't be used as a library" is to ask the programmer. | 23:14 | ||
| dalek | rrot: r47236 | bacek++ | branches/gc_massacre/src/gc (2 files): Move ListItem.owner under ifndef NDEBUG condition |
23:15 | |
| rrot: r47237 | bacek++ | branches/gc_massacre/src/gc (2 files): Add List.check for validating list |
|||
| rrot: r47238 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Split objects and black_objects during mark. Comment out free_pmc_header. It's dangerous |
|||
| darbelo | Also people can build lots of little pbc's and then merge them into one big one. In that case you'll never see all of the PAST, and won't know what optimizations are 'safe' fro that piece of code. | 23:17 | |
| tcurtis | Good point. | 23:19 | |
| darbelo | Of course, when the programmer knows he won't be doing any of that stuff (maybe he's just going to make the whole thinkg into a fakecutable), he can be explicit and ask you to optimize wildly. | 23:22 | |
| cotto | a fakecutable definitely won't be used as a library | 23:23 | |
| darbelo | Exactly, but that information is not available at the PAST level. | 23:24 | |
| tcurtis | darbelo: Obviously, the compiler user would need to specify when to do such aggressive optimizations. My "how to make sure this isn't used as a library" thought was geared to making sure that no one mistakenly tries to load_bytecode the generated PBC. | ||
| darbelo | tcurtis: Just make the optimization is documented as "don't do that if you want a lib" ;) | 23:25 | |
| NotFound | Why not? | ||
| There are lots of conceivable usages that may want to load programs with main. | 23:26 | ||
| darbelo | Then when people mistakenly load_bytecode the thing we get to point and laugh if it breaks. | ||
| "Only do crazy shit when explicitly asked" is a good motto for an optimizer, IMHO. | 23:27 | ||
| tcurtis | NotFound: I'm talking about optimizations that involve doing things like changing the signature of subs, removing unused globals and subs, etc. If you're trying to use the generated PBCs as a library, everything might work fine. Or the sub you are trying to use might have been optimized away and you get an exception for null PMC in invoke(). | ||
|
23:28
tetragon joined
|
|||
| whiteknight | tcurtis: might be worthwhile to add some flags to functions for the optimizer to read | 23:30 | |
| manually flag functions which are API functions, and ones which are internal-only, inlineable, etc | 23:31 | ||
| NotFound | Yeah, I want a flag "Don't touch me" | ||
| Set on by default. | |||
| darbelo | .sub 'main' :go-wild-on-me-cowboy | 23:33 | |
| whiteknight | i like the idea, but the wording should be a little less sexual | 23:34 | |
| darbelo | .sub 'main' :optmize-me-like-you-would-your-dog | ||
| whiteknight | i said less sexual. And maybe you shouldn't have a dog | 23:35 | |
| darbelo | It's actully (paraphrased) shakespeare ;) | 23:37 | |
| cotto | because Shakespeare was never sexual | 23:39 | |
| darbelo | After a quick googling I notice that (once stripped of round-trip translation artifacts) it should be ":optmize-me-but-as-your-spaniel" | ||
| It's art, dude. | 23:40 | ||
| tcurtis | .sub 'main' :internal or similar would be nice, although it has the disadvantage of each HLL having to have a representation for :internal(although immediate blocks like those used for if and such could probably be marked :internal by default(or at least by default by the HLL compiler upon constructing them)). | 23:41 | |
| darbelo | :inline or :inlineable could be used as well. Even if they lack that shakespearean touch I was looking for. | 23:44 | |
| whiteknight | being able to attach that flag to a whole namespace would be good | ||
| or a whole file | 23:45 | ||
| cotto | I don't know if pbc would have a nice existing mechanism to do that | ||
| darbelo | I though he was transforming PAST trees? | 23:46 | |
| All he needs is for the compiler (who should be quite knowledgeable about the language it's compiling) to mark the proper nodes as :thoroughly-optmizable | 23:47 | ||
| cotto | My brain got confused about which layers we're talking about. | 23:48 | |
| dalek | rrot: r47239 | bacek++ | branches/gc_massacre/src/gc (2 files): Add List.is_owned for precise check in GC.is_pmc_ptr |
23:49 | |
| rrot: r47240 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Increment marks_run after mark. |
|||
| rrot: r47241 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Add commented out precise check in GC.is_pmc_ptr |
|||
| rrot: r47242 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c: Don't mark constant PObj |
|||
| NotFound | I think that storing information in the pbc about what optimizations or wathever has been done is unnecessary. If you want to be sure about if a function has been optimized out or not, just look for it. | 23:50 | |