|
Parrot 3.0.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Deprecations as data, merge/cleanup, AutomatedHLLTesting, clean up false test failures | Schedule next weekend's Summit: doodle.com/4phzuaiahkgd3ie5 Set by moderator on 22 January 2011. |
|||
|
00:15
kid51 joined
|
|||
| dalek | rrot: 09d0567 | jkeenan++ | config/gen/makefiles/root.in: Add 'test_prep' prerequisite to several testing targets so that user can call them after configuration and get a parrot executable with which to run the tests. |
01:02 | |
| rrot: 727bbd2 | jkeenan++ | / (2 files): Parrot_Test.t needs parrot executable, so we need to add 'test_prep' prerequisite to 'perl_tests' target. |
01:26 | ||
|
01:45
hudnix joined
02:00
whiteknight left
02:03
whiteknight joined
|
|||
| plobsing | ping whiteknight | 02:05 | |
| whiteknight | pong | ||
| how are you tonight, plobsing? | 02:06 | ||
| plobsing | can I kill Parrot_run_native() and the enternative op? they're in embed.c | ||
| whiteknight | plobsing: kill with prejudice | 02:07 | |
| plobsing | \\o/ goodbye global variable! | ||
| whiteknight | and if your mighty hellfire damages the surrounding code, so be it | 02:08 | |
| plobsing | the only thing it will damage is large swaths of (old) embedding tests. not sure if you care about those. | ||
| whiteknight | ...no | 02:09 | |
| kill those too | |||
| did you get my email from earlier? | 02:11 | ||
| KaeseEs | how much traffic does the mailing list tend to get btw? | ||
| whiteknight | KaeseEs: not too much | 02:12 | |
| plobsing | whiteknight: no sorry. I was out of commission most of today. will read now. | ||
| whiteknight | okay, no rush | 02:13 | |
|
02:32
wagle left
02:34
wagle joined
|
|||
| whiteknight | plobsing: I'm heading off to bed now. We can chat tomorrow or whenever | 02:48 | |
| plobsing | ok | 02:49 | |
|
02:49
whiteknight left
03:09
hudnix left
|
|||
| dalek | rrot: df1c5ac | plobsing++ | compilers/imcc/ (4 files): string constants are stored separate from (and before) PMC constants now |
03:28 | |
| rrot: ca961cb | plobsing++ | src/ops/core_ops.c: ops2c --core |
|||
| rrot: 986fa1b | plobsing++ | / (7 files): eliminate Parrot_run_native, enternative, and run_native (old embed API, non-reentrant) |
|||
| rrot: d7b03e7 | plobsing++ | src/ops/core (2 files): CONST_STRING() -> Parrot_string_new_constant |
|||
| rrot: 2cac97d | plobsing++ | t/src/ (2 files): eliminate/fix tests depending on Parrot_run_native |
|||
| rrot: 476000d | plobsing++ | t/compilers/opsc/06-opsfile.t: update opcount in test |
|||
| ttbot | Parrot 986fa1b5 i386-linux-thread-multi make error tt.taptinder.org/file/cmdout/889.txt (tt.taptinder.org/buildstatus/pr-Parrot) | 03:30 | |
| plobsing | ah, ttbot my old nemesis. we meet again. | 03:35 | |
| dalek | rrot: 26aa06e | plobsing++ | / (5 files): eliminate unused wrapper__ opcode |
04:01 | |
|
04:11
kid51 left
|
|||
| dalek | rrot: de77515 | plobsing++ | t/compilers/opsc/06-opsfile.t: update core ops count in test |
05:18 | |
| rrot: 2f0d61c | plobsing++ | / (3 files): remove remaining references to Parrot_run_native |
|||
| rrot: 2bc2128 | plobsing++ | / (4 files): remove remaining references to enternative and wrapper__ |
|||
|
05:45
Patterner left,
Psyche^ joined,
Psyche^ is now known as Patterner
05:51
rurban_ joined
05:55
rurban left,
rurban_ is now known as rurban
07:51
fperrad joined
08:16
fperrad_ joined
08:19
fperrad left
08:20
fperrad_ is now known as fperrad
09:27
theory left
09:31
fperrad_ joined
09:34
fperrad left,
fperrad_ is now known as fperrad
|
|||
| dalek | rrot: be3c419 | (Gerd Pokorra)++ | tools/release/ (2 files): fix typo remove not allowed comma for crow program |
09:57 | |
|
09:58
cogno joined
10:16
cogno left
|
|||
| dalek | a: d9c8363 | fperrad++ | t/lua-TestMore: update submodule lua-TestMore |
10:17 | |
| a: c45c4d3 | fperrad++ | t/lua-TestMore: update submodule lua-TestMore |
10:50 | ||
|
11:09
cogno joined
11:13
aantn joined
|
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#4814) fulltest) at 3_0_0-196-gbe3c419 - Ubuntu 10.10 i386 (g++-4.5) | 11:16 | |
|
11:18
cogno left,
cogno joined
11:34
whiteknight joined
11:47
fperrad_ joined
11:49
fperrad left
11:50
fperrad_ is now known as fperrad
11:55
jan left
|
|||
| dalek | a: b77264b | fperrad++ | lua/lib/luaaux.pir: now, parrot is strict with string encoding |
12:17 | |
| TT #1872 closed by mikehh++: t/pmc/fixedstringarray.t fails coretest 64 bit with g++-4.5 | |||
| TT #1872: trac.parrot.org/parrot/ticket/1872 | |||
| TT #1987 created by mikehh++: Warnings from make headerizer | 12:33 | ||
| TT #1987: trac.parrot.org/parrot/ticket/1987 | 12:34 | ||
|
12:41
jan joined
12:44
kid51 joined
|
|||
| dalek | rrot/whiteknight/imcc_interfaces: bd68dbf | Whiteknight++ | compilers/imcc/main.c: remove old section of imcc_run which was handling the -r arguments. That's in the frontend now |
12:46 | |
| rrot/whiteknight/imcc_interfaces: ffd1f41 | Whiteknight++ | frontend/parrot/main.c: start rearranging the frontend code, adding in some stub logic to properly handle -r and -o from the frontend instead of in IMCC |
|||
| rrot/whiteknight/imcc_interfaces: 6e800f9 | Whiteknight++ | frontend/parrot/main.c: +func docs |
|||
| rrot/whiteknight/imcc_interfaces: 2f0411b | Whiteknight++ | src/embed/api.c: Add a new prototype API function to write a PackFile PMC out to a .pbc file. This will be used to implement the -o and -r commandline options in the front-end |
|||
| rrot/whiteknight/imcc_interfaces: 9aac389 | Whiteknight++ | include/parrot/api.h: headerize |
|||
| rrot/whiteknight/imcc_interfaces: fa228c7 | Whiteknight++ | / (3 files): handle -o and -r options from the frontend. delete some code in IMCC that checked them for errors, that wrote packfiles out to file, etc. Some tests fail, look mostly like tests for exact text of error message |
|||
|
12:46
cogno left
|
|||
| dalek | TT #1873 closed by jkeenan++: Windows2000 version requirement impeded build | 13:06 | |
| TT #1873: trac.parrot.org/parrot/ticket/1873 | |||
| p-rx/nom: e282329 | jonathan++ | src/HLL/Grammar.pm: Get two of the cheats into HLL::Grammar proper. This first one adds .O (just a wrapper around the PIR) and the second translates .panic into NQP. |
13:08 | ||
| kid51 | whiteknight: ping | 13:14 | |
|
13:14
fperrad_ joined
13:17
fperrad left
13:18
fperrad_ is now known as fperrad
13:19
aantn left
|
|||
| dalek | TT #30 closed by jkeenan++: make shared libparrot with an already installed shared libparrot | 13:22 | |
| TT #30: trac.parrot.org/parrot/ticket/30 | |||
| TT #1123 closed by jkeenan++: Make Test errors on OS X 10.6.1 | |||
| TT #1123: trac.parrot.org/parrot/ticket/1123 | |||
| whiteknight | kid51: pong | 13:33 | |
| kid51 | Andrew, you are set up to be the automatic assignee for certain categories of Trac tickets, including 'docs'. | 13:35 | |
| I wonder whether you really want to take something like ... | |||
| whiteknight | I am set up for some categories. I don't know which ones | ||
| I know I'm set up for the embedding/extending stuff. Docs may have been an old thing | |||
| kid51 | ... TT #1976 | 13:36 | |
| whiteknight | no, that's probably something for dukeleto | ||
| kid51 | I was re-reading one of your blog posts from about Nov 21 yesterday. It seemed to suggest that that was when you took over several categories. | 13:37 | |
| whiteknight | I probably don't want to be automatic assignee for docs | ||
| kid51: I did take over a few categories around then, but I think I was already set up for a handful previously | |||
| kid51 | Can you go to the admin interface and check which categories are assigned to you? | ||
| whiteknight | okay | ||
| done | 13:41 | ||
|
13:48
cogno joined
|
|||
| dalek | rrot: a823c01 | (Gerd Pokorra)++ | tools/release/templates.json: change the text output a little bit |
13:50 | |
|
13:51
rurban_ joined
13:55
rurban left,
rurban_ is now known as rurban
|
|||
| whiteknight | ooh, I have a commit coming up that rips out a LOT of dead IMCC code | 14:01 | |
|
14:08
JimmyZ joined,
cogno left
|
|||
| dalek | p-rx/nom: 250d2a3 | jonathan++ | src/HLL.pir: Re-shuffle include order so that for the earlier bootstrap stages the old cheats in HLL::Grammar take precedence. |
14:09 | |
| p-rx/nom: a0f4265 | jonathan++ | src/HLL/Grammar.pm: Add LANG, MARKER, MARKED. Partial ports to NQP, with some embedded PIR still. |
|||
|
14:44
cogno joined
|
|||
| dalek | TT #1988 created by jkeenan++: lib/Parrot/Pmc2c/PMCEmitter.pm: Is this file useless? | 14:45 | |
| TT #1988: trac.parrot.org/parrot/ticket/1988 | |||
| p-rx/nom: 583c7bf | jonathan++ | src/HLL/Grammar.pm: Add EXPR and related, plus ternary, to HLL::Grammar. |
14:46 | ||
| p-rx/nom: 659a99f | jonathan++ | src/HLL/Grammar.pm: Get the remaining HLL::Grammar cheats put into NQP bodies, and in one case just port entirely to PIR. In theory, this should be all that's needed to switch Grammar/Actions over to 6model. In reality, there's some bug(s) somewhere. :-( |
15:02 | ||
|
15:08
cogno left
15:40
cogno joined,
kid51 left
|
|||
| dalek | rrot/whiteknight/imcc_interfaces: 661f90d | Whiteknight++ | / (25 files): remove the PASM emitter from IMCC. It has never worked, the RT ticket it pointed to was WONTFIX, and the error message was obnoxious. Remove tests which relied on the feature. We have no more tests for the IMCC optimizer, but it's stable and devs aren't exactly lining up to modify it. |
15:51 | |
|
16:01
cogno left
16:07
mberends joined
16:59
JimmyZ left
|
|||
| dalek | p-rx/nom: 3887fc5 | jonathan++ | src/ (3 files): Switch grammars over to 6model. This includes changes to get protoregexes working again. Sadly, due to some other bug, much is still broken. |
17:20 | |
| p-rx/nom: 28c49b3 | jonathan++ | src/Regex/Cursor2.pir: Unbreak language transitioning - probably a copy-pasto. |
|||
| p-rx/nom: 37173b1 | jonathan++ | src/HLL/Grammar.pm: Fix a translate-o in HLL::Grammar.LANG. |
|||
| p-rx/nom: 5763b4a | jonathan++ | t/nqp/45-smartmatch.t: Skip some tests that are Parrot-dependent and could never work in a portable NQP. |
|||
| p-rx/nom: 43af670 | jonathan++ | src/NQP/Actions.pm: Avoid trying to emit meta-object calls for methods/regexes that are written outside of a package; cleans up the last issues with the tests and mostly unbreaks NQP setting compilation. |
|||
|
17:36
theory joined,
nwellnhof joined
|
|||
| dalek | rrot/whiteknight/imcc_interfaces: b7727ba | Whiteknight++ | compilers/imcc/ (3 files): remove unnecessary write_pbc field from imcc_info_t |
17:48 | |
| rrot/whiteknight/imcc_interfaces: b53d916 | Whiteknight++ | / (6 files): move IMCC preprocess logic into it's own interface function, and call it from the frontend. |
|||
| rrot/whiteknight/imcc_interfaces: 8c2d323 | Whiteknight++ | / (4 files): rearrange the signatures for some IMCC functions so they aren't taking a PMC** argument to output to |
|||
| rrot/whiteknight/imcc_interfaces: c86db10 | Whiteknight++ | frontend/parrot/main.c: remove old localization code. This is handled in the IO system now |
|||
| Heuristic branch merge: pushed 600 commits to parrot/nwellnhof/gc_dynamic_threshold by nwellnhof | 18:08 | ||
|
18:29
cogno joined
|
|||
| whiteknight | I'm having too much fun ripping up this old IMCC code | 18:29 | |
| hard to believe this is work | |||
| tadzik | ...ing? | 18:31 | |
| whiteknight | no, it works just fine | 18:32 | |
| jnthn | 600 commits? Glad the heuristic merge tracking is implemented! | 18:33 | |
| tadzik | I mean, did you mean "hard to believe this works"? | 18:34 | |
| whiteknight | tadzik: No, I can't believe this is work. Like, people get paid for this | 18:37 | |
| but I'm having too much fun | |||
| dalek | rrot/whiteknight/imcc_interfaces: a5ef678 | Whiteknight++ | compilers/imcc/main.c: move all input file logic into the determine_input_file_type function, where it belongs. rip out dead code relating to -r and -o options. imcc_run is small enough to fit on a single screen of code |
18:39 | |
| rrot/whiteknight/imcc_interfaces: 2c11c10 | Whiteknight++ | compilers/imcc/main.c: merge compile_to_bytecode into imcc_run. We now have a much clearer picture of what is required to compile a file with IMCC |
|||
| rrot/whiteknight/imcc_interfaces: 4187a2f | Whiteknight++ | compilers/imcc/main.c: misc cleanups and consolidations |
|||
|
18:41
cogno left
19:00
cogno joined
19:11
cogno left
19:18
cogno joined
19:33
cogno left
|
|||
| dukeleto | ~~ | 19:38 | |
| tadzik | o/ | 19:40 | |
| dukeleto | tadzik: wazzup? | 19:43 | |
| tadzik | dukeleto: learning your favourite math analysis :) | 19:44 | |
| cotto | ~ | 19:47 | |
| seen kid51 | 19:48 | ||
| aloha | kid51 was last seen in #parrot 6 hours 10 mins ago saying "Can you go to the admin interface and check which categories are assigned to you?". | ||
| dalek | rrot: dff0be2 | plobsing++ | src/p (3 files): silence headerizer warnings |
19:49 | |
| dukeleto | tadzik: hilbert spaces? | 19:54 | |
| cotto: mornin' | |||
| cotto | hi dukeleto | 19:55 | |
| tadzik | dukeleto: nah. Integrals on circles, Laurent series, differential equations using the "Operator method" (Laplace transformata) | ||
| dukeleto | tadzik: i named my cat after Cauchy's Integral Theorem :) | 19:58 | |
| tadzik | so how do you call him? | ||
| dukeleto | her name is Cauchy, and I used to joke that she left a resiude at each pole, but thankfully she doesn't :) | ||
| residue, even | |||
| dukeleto ruins the joke | |||
| dalek | p-rx/nom: 125d4ab | jonathan++ | src/setting/Hash.pm: Unbreak setting compilation. |
19:59 | |
| p-rx/nom: 910fcac | jonathan++ | src/NQP/ (2 files): Only add the return exception handler when there's a return statement in a routine. On Parrot, adding one to a sub that doesn't use it makes the invocation over 3 times more costly; since EXPR and so forth are now wrapped in NQP subs, we really need to save on this. |
|||
| p-rx/nom: 6a1bb2a | jonathan++ | src/metamodel/reprs/P6opaque. (2 files): A little sloppy programming saw every attribute get/bind in P6opaque accidentally cause the creation of two GC-ables. This brings that down to zero, as it was intended to be. |
|||
| dukeleto | tadzik: i assume lots of math jargon is different across English to Polish, so some jokes may not translate well | ||
| tadzik | dukeleto: a second ago 3 persons laughed at it :) | ||
| dukeleto | cotto: thanks for shedding a tear in my direction about the gcc bug | 20:00 | |
| cotto | ;( | 20:01 | |
| dukeleto | tadzik: what are you hacking on? | ||
| tadzik: can you commit the script you used to generate deprecated.json ? | 20:02 | ||
| tadzik: we are thinking that we want to use YAML instead, since it is easier for humans to edit and read. And source code still seems to get written by meatbags | |||
| cotto | At least it isn't another 323 | ||
| tadzik | dukeleto: I don't want to share that source code :( | ||
| unless I must (: | 20:03 | ||
| nwellnhof | cotto: i'd consider 323 a Linux bug. | ||
| tadzik | and I'm not hacking on anything, I have this math exam tomorror | ||
| cotto | a disadvantage is that we'll need a yaml parser | ||
| tadzik | isn't there a JSON parser in Parrot? | 20:04 | |
| dalek | rrot: 2d5b09b | nwellnhof++ | src/hash.c: Zero the correct amount of memory when expanding hashes This fixes linear hash iteration. Strange that this hasn't been noticed before. |
||
| cotto | tadzik, there is one for json | 20:05 | |
| tadzik | wklej.org/id/463001/ -- this is this horrible script | ||
| dukeleto | tadzik: i have written code at least 100 times worse than that :) | 20:06 | |
| tadzik | the 'depr2' is an output of `pod2text DEPRECATED.pod` | ||
| ...how is _that_? :) | |||
| dukeleto: it's the "I'm lazy and I want this done" code ;) | 20:07 | ||
| dukeleto | tadzik: gotcha | ||
| cotto | That's good. We have lots of "this is ugly and I want to make it better" people. | ||
| dukeleto | cotto: do we want to use YAML if parrot doesn't have a YAML parser yet? | ||
| cotto: we can just use Perl 5's YAML.pm, it won't become a dependency, since it is only developers that will generate that file | 20:08 | ||
| cotto | I can pretty easily imagine myself getting annoyed with json's lack of multi-line strings. | ||
| wfm | |||
| dukeleto | cotto: and I want to make a web interface to deprecated.(json|yaml), so it is easy for people to say "tell me which code is deprecated for this github project" or something like that | 20:09 | |
| cotto | especially since we won't have to write it | ||
| dukeleto, awesome | |||
| dukeleto really should be working on his TPF grant | |||
| nwellnhof: how did you find that bug? | |||
| nwellnhof: i don't see a test in that commit. Is that hard to test? | 20:10 | ||
| nwellnhof | dukeleto: one of the new tests in hashiterator.t broke when i was hacking on GC related stuff | 20:11 | |
| cotto | dukeleto, gcc.gnu.org/bugzilla/buglist.cgi?qu...mp+warning | 20:12 | |
| cotto makes a note for future reference | |||
| whiteknight | what's interesting about that bug is that I don't get the warning on every API function, even though every API function calls setjmp in the same way through a macro | 20:18 | |
| weird | |||
| cotto | whiteknight, is it safe to say that Parrot_pf_get_current_code_segment and Parrot_pf_get_current_packfile, which return interp->code and interp->initial_pf, should never return NULL? | 20:19 | |
| dalek | rrot: 2cb55d9 | cotto++ | / (4 files): silence remaining headerizer warnings |
20:32 | |
| cotto | plobsing, don't forget to bump PBC_COMPAT when removing an op. | 20:36 | |
| dalek | rrot: 6b0ed4c | mikehh++ | src/packfile/output.c: fix codetest failure - linelength, update copyright and fix header documentation |
||
|
20:40
slavorg left
|
|||
| plobsing | cotto: with dynops mapping, we no longer need that coarse-grained mechanism for tracking oplib changes. we can use a mechanism for oplib versioning, all the parts are there, with the exception of ops2c, which has no syntax for specifying the version. | 20:43 | |
| dalek | TT #1987 closed by cotto++: Warnings from make headerizer | 20:45 | |
| TT #1987: trac.parrot.org/parrot/ticket/1987 | |||
| cotto | plobsing, ok. What would a new mechanism look like? | 20:48 | |
| whiteknight++ # die "damnit" | 20:50 | ||
| plobsing | cotto: no idea. we just need some way of specifying the version that gets into the op_lib_t. | 20:51 | |
|
20:51
Kovensky left,
Kovensky joined
|
|||
| plobsing | probably a statement in the ops file | 20:51 | |
| cotto | op_lib_t only knows about parrot version, not bytecode, Maybe we need to move that out of pbcversion.h. | 20:53 | |
|
20:53
slavorg joined
|
|||
| plobsing | op_lib_t has a major, minor, and patch. those are for the oplib itself. | 20:53 | |
| that way you don't try to load an incompatible version of a dynoplib | 20:54 | ||
| currently they are tied to parrot version for core and zeroed for dynops. that is LTA. | 20:55 | ||
| dalek | p-rx/nom: 5d9c643 | jonathan++ | src/metamodel/how/NQPClassHOW.pm: Fix a really silly bug in method cache construction. |
20:56 | |
| p-rx/nom: 1e0c709 | jonathan++ | src/metamodel/rakudoobject.c: A cleaned up version of the method finding code. No functional changes, was just easier to reassure myself this bit wasn't the problem by factoring it this way, when hunting the issue fixed in the previous commit. |
|||
| NotFound | whiteknight: I think the throw/rethrow thing is fixable, factoring the common part of throw and rethrow out of the throw functions, calling that common part from the rethrow ones, and cleaning the iterators and backtraces in the non common part of the throw functions. | 21:02 | |
| dalek | p-rx/nom: e11a117 | jonathan++ | src/stage0/ (5 files): Update the bootstrap to use 6model during the parsing all the way through the build. At this point, there's still a bunch of clean-up work to do to eliminate the old cursor and the rename Cursor2 back to just Cursor. |
21:03 | |
| rrot: 8208489 | nwellnhof++ | t/pmc/hashiterator.t: [t] Improve hashiterator.t Now there's a better chance to trigger the condition fixed by my previous commit. |
21:04 | ||
| nwellnhof | dukeleto: that's the best i can do | ||
| dukeleto | whiteknight: i have been told that the ANSI 89 C standard is ambiguous about what happens when setjmp/longjmp happens, and each compiler does whatever they want | ||
| nwellnhof++ | |||
| sorear | NotFound: I'm pretty sure your last comment to #1981 was meant to go on #1978 | 21:15 | |
| NotFound | sorear: uh... Epic historial fail. | 21:17 | |
|
21:18
plobsing1 joined
21:23
plobsing left
|
|||
| dalek | p-rx/nom: ff8c915 | moritz++ | build/PARROT_REVISION: bump PARROT_REVISION to something non-ancient |
21:25 | |
| p-rx/nom: 1401ec6 | jonathan++ | build/gen_parrot.pl: Apply gen_parrot.pl fix as also found in Rakudo's gen_parrot.pl to avoid a Win32 issue. |
21:30 | ||
| jnthn | Hm. I'm guessing Parrot_gc_allocate_fixed_size_storage doesn't give back zeroed out memory? | 21:44 | |
| sorear | Why should it? | 21:45 | |
| sbrk gives back zeroed memory because free pages can contain other users' sensitive data | |||
| but everything in the Parrot process trusts everything else | |||
| jnthn | sorear: I wasn't really saying it should or shouldn't. | 21:46 | |
| sorear: Just trying to get confirmation that it did. | 21:47 | ||
| or didn't | |||
| :) | |||
| Found now in the source where it's clear that it doesn't. | |||
| plobsing1 | my understanding is that it could eventually, but it hasn't been a high priority | ||
| jnthn | plobsing1: It doesn't matter to me either way, tbh. | 21:48 | |
| plobsing1: I can easily clear it. | |||
|
21:49
plobsing1 is now known as plobsing
|
|||
| plobsing | we have functions for zeroed memory somewhere IIRC | 21:50 | |
| jnthn | plobsing: Yes, I was using one of them before. | ||
| plobsing: But wasn't using the fixed size allocator before | |||
| Hmm. An unscientific initial result says it shaves 5%-10% off the nqp-rx test suite. | 21:51 | ||
| (over malloc) | 21:52 | ||
| Given parsing allocates a LOAD of cursors, which are all the same size, it'll get a good hit rate I guess. | |||
| nwellnhof | and there's still a bit room for improvement in the fixed size allocator. | 21:53 | |
|
21:53
rurban_ joined
|
|||
| jnthn | Nice. :) | 21:54 | |
|
21:55
rurban left,
rurban_ is now known as rurban
|
|||
| dalek | p-rx/nom: f508992 | jonathan++ | src/metamodel/reprs/P6opaque.c: Switch from malloc to the fixed size allocator for object bodies. |
21:56 | |
|
22:31
PacoLinux left
22:52
Limbic_Region joined
22:53
nwellnhof left
|
|||
| whiteknight | jnthn: the fixed-size allocator shaves 5% off the nqp-rx test suite for you? | 23:11 | |
| jnthn | whiteknight: It wasn't very scientific. | 23:13 | |
| It seems consistently about that much faster over a few runs. | |||
| whiteknight | still, I'm very happy about any positive results there. that was my design originally and I'm glad to see it's not completely stupid | ||
| as nwellnhof mentioned there are some opportunities to improve it | 23:14 | ||
| jnthn | whiteknight: Every 6model object allocation now is malloc-less; it's a PMC heaeder and then a body allocated with the FSA. | ||
| Well, every one using the P6opaque REPR, which is the common case at the moment. | |||
| whiteknight | awesome | ||
| jnthn | It's almost certainly a win at parse time. | ||
| When loads of cursor objects are created. | |||
| whiteknight | right | 23:15 | |
| cursors are PMCs? | 23:19 | ||
| jnthn | Cursors are objects | 23:20 | |
| 6model objects live inside a PMC but it's a shim. | |||
| At heart, 6model on Parrot cares about what PMCs are just the same as it cares about what CLR objects are in the CLR implementation, or JVM objects are in the JVM implementation. They're the language the VM speaks so it has to deal with them. | 23:24 | ||
| whiteknight: BTW, were you looking at exceptiony stuff of late? | 23:26 | ||
| If so, see gist.github.com/792205 if you have a moment. | |||
| Summary: the way to do return exception handlers carries some serious overhead. | 23:27 | ||
| Even when no exception is ever thrown. | |||
| NotFound | jnthn: if you want to be able to catch a exception, you should set up a handler. | 23:33 | |
| jnthn | NotFound: HuH/ | ||
| NotFound: That's what the code does. How should it do it correctly/more efficiently? | 23:34 | ||
| 'foo' is with no handler. 'bar' is the same thing but sets up a handler, which in the end is never used (a quite common case). | |||
| And just setting up the handler makes things 3-4 times slower. | 23:35 | ||
| NotFound | Sorry, english fail. I mean, that's the way is supposed to work. The overhead is required by design, | ||
| jnthn | Then the design is wrong. | ||
| Wasting time at runtime to set up something that exists statically is really not helpful from a performance perspective. :( | 23:36 | ||
| NotFound | If the function does not need the handler, the compiler should be able to optimize it out. | ||
| jnthn | Well, yes, I've put in a change to do that in nqp-rx. I'm not sure we can do that so easily in full-blown Perl 6. | 23:37 | |
| But I think my point still stands. The .Net CLR manages to keep exception regions as static meta-data rather than having per-invocation setup work. | |||
|
23:38
luben joined
|
|||
| NotFound | The ExceptionHandler probably can be a const PMC, the push_eh must be at runtime, with the current design. | 23:39 | |
|
23:40
fperrad left
|
|||
| jnthn | I'm not sure which of those two carries the main cost. Could be worth looking into. | 23:40 | |
| NotFound | push_eh is not as cheap as it can be. | 23:41 | |
| cotto | ooc, when exception handers are in use, is it the common case to have more than one exception hander active at once? | 23:45 | |
| jnthn | cotto: In what scope? Within the current block? | ||
| cotto: From a Perl 6 point of view, the commonest case is just one (the return exception handler). | 23:46 | ||
| Of course, there's plenty of them "active" up the call chain, but only one liable to be hit at a given point in time. | |||
| whiteknight | jnthn: Yes, we've known for a while that ExceptionHandlers should be able to be const'd and not rebuilt every time | 23:47 | |
| cotto | ok. I'm just thinking about optimization possibilities. | ||
| NotFound | cotto: that is one of weak points. We don't optimize the one handler case. | ||
| cotto | No. I was noticing that. | 23:48 | |
| plobsing | why can't we simply define a range of bytecode as being handled by an exception handler similar to how annotations work? | 23:49 | |
| NotFound | cotto: I've looked at that several times, but haven't found a way yet,. | ||
| jnthn | plobsing: That's basically what the CLR does, fwiw. | 23:50 | |
| plobsing | I stole the idea from dan's blog | ||
| jnthn | :) | ||
| cotto | NotFound, that'd still be papering over the problem. It'd be nice if we could do what plobsing is talking about. | ||
| NotFound | RFCs welcome | 23:51 | |
| plobsing | fwiw, I suspect actually throwing exceptions would become more expensive in the general case under such a strategy | ||
| cotto | That's not such a big deal if exceptions are exceptional. | 23:52 | |
| NotFound | I suspect that control exceptions aren't exceptional in some langauges. | 23:53 | |
| cotto | I don't think they are in nqp-rx. | 23:54 | |
| jnthn | Yeah, control exceptions can be very normal. | 23:56 | |
| At the moment, though, setting up an exception handler seems to cost 2-3 times as much as a sub invocation. | |||
| So if there's a slight cost increase for throwing, the end result could still be a notable win. | 23:57 | ||
| luben | Parrot exceptions are full continuations, they are not cheap | 23:58 | |
| whiteknight | plobsing: in NCI, what does the signature "PJt" mean? | ||
| the P and J I understand, the t not so much | |||
| plobsing | t = c string | 23:59 | |
| null terminated | |||
| automagical. bad idea. | |||
| whiteknight | plobsing: Oh, obviously. What's the symbol for a Parrot string? S? | ||