Camelia, the Perl 6 bug

IRC log for #parrot, 2009-07-03

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 Infinoid I honestly don't see what the big deal is.  You copy a pointer value to another pointer, that's assignment.  I'm ok with using '=' for that, even if it's a pointer to some higher level construct and ends up smelling like "binding" to that higher layer
00:02 Whiteknight in PMCs, we're going to do all exactly the same things as we're doing with C now, just with festive NQP syntax instead of C
00:03 Whiteknight still low-level pointer monkeying, etc
00:03 Infinoid Mardi Gras NQP?
00:03 Infinoid If I understand it correctly (and I'm probably not as up to speed as others in here), I'm imagining something very much like a traditional asm language.  No complex (struct-like or string-like) values anywhere, all that stuff is done by higher layers.
00:03 Infinoid pmichaud: If that's a broken design, I'd love to be corrected before it's too late
00:09 Theory joined #parrot
00:13 * jonathan -> sleep, night all
00:14 Whiteknight goodnight
00:35 cotto night
00:43 cotto Whiteknight, nice work on the blog entry.  That makes it much clearer how nqp could work.
00:44 Whiteknight just food for thought
00:44 cotto tasty food
00:54 Whiteknight signing off now, talk to you later
00:58 cotto pmichaud, ping
00:59 pmichaud cotto: pong
00:59 pmichaud Infinoid: the difference becomes very apparent with something like   $P0[0] = $P1
00:59 pmichaud that's actually a bind.  There's not really an assignment equivalent in PIR (yet?)
01:00 pmichaud jonathan: I wonder if we should start running spectests with gc disabled.  That would (1) increase speed and (2) avoid the false errors.
01:02 cotto pmichaud, I'm thinking about how nqp will need some changes to make it suitable for use in PMCs and ops that could conflict with its current use.
01:02 Infinoid I don't think L1 will have []
01:03 cotto It seems like we'll need two different but similar languages called nqp for the two purposes, which wouldn't be good for maintenance.
01:03 cotto Is there a nice way to avoid that?
01:04 Infinoid nqasm
01:04 pmichaud cotto: it depends on the changes.  So far I haven't see anything concrete.  Or the things I've seen discussed so far, it's "oh yes, NQP can do that"
01:04 pmichaud for example, being able to specify int registers is just  "my int $foo"
01:05 cotto What about calling C functions, which will probably be special-cased using a special namespace?
01:05 pmichaud I don't see a problem with that.
01:05 pmichaud If nothing else, we just import the C functions.
01:06 pmichaud in Perl 6, "all's fair if you predeclare"
01:06 pmichaud so if we have a declaration that says  "foo is really a C function", then NQP can dtrt with it.
01:07 pmichaud and I think it could be *really nice* to have a way to directly call C functions from NQP
01:07 pmichaud just like I think it's a really good idea to have the ability to request int/string/num registers
01:09 pmichaud To me, one of the primary reasons for asking "how would we implement a PMC in NQP" is not necessarily because we expect to use NQP, but because it gets us to start asking "What do we really need" as opposed to "How do we solve it in C?"
01:09 pmichaud (although I do think NQP can be made robust enough to handle it)
01:10 pmichaud it's to get us to ask ourselves "what should a PMC specification look like, if it's not C?"
01:10 cotto There's value in that.
01:10 pmichaud and if it works... imagine how nice it will be to be able to generate custom PMCs in NQP (especially for language designers :-)
01:10 pmichaud there's one other piece to this puzzle to remember
01:11 pmichaud one of the somewhat explicit goals of Perl 6 is to be able to interface more directly with other libraries (such as C)
01:11 pmichaud so Perl 6 syntax really is intended to have the ability to define things that correspond to C-structs
01:11 pmichaud we just haven't seen many examples of it yet (for want of implementations on which it's even possible)
01:13 pmichaud one of the lessons I learned in our experiments in TGE was that people's ability to use it was quickly limited by syntax (which at the time was limited to PIR)
01:13 cotto Maybe we should add UnManagedStruct to the list of PMCs to mock, since it'll be a pretty good test of how well we can interface with an arbitrary C struct.
01:13 pmichaud so when I found a way to do the transformations using a primitive form of Perl 6 (what ultimately became NQP), I jumped at it.
01:14 pmichaud Coming up with a way to mock UnManagedStruct would be a Huge Win on several fronts.
01:14 pmichaud Especially if we could then do something like it in Rakudo.
01:15 pmichaud Because then people could more easily start building interfaces to C libraries from Rakudo :-)
01:15 pmichaud dinnertime here -- bbl
01:16 cotto That's nuts.
01:16 cotto (in a good way)
01:25 Andy joined #parrot
01:27 AndyA joined #parrot
01:29 cotto Hmmm.  I've heard of C++ and C#, but apparently now there's a C##, or at least some employer thinks there is.
01:30 * skids thinks "D"s mistake was not naming itself "D-"
01:32 skids What's "mock" ?
01:34 cotto In this context, it means to come up with code that could implement the PMC.
01:35 cotto i.e. make sure the language is capable of doing that
01:35 skids Thanks.
01:35 pmichaud cotto: for Perl 6's take on C-like structs, perhaps look at Synopsis 9, "Compact structs"
01:40 * cotto looks
01:41 skids Also "Compact Arrays" towards the top
01:41 cotto I wonder what it'd take to make class_init completely dynamic.
01:42 cotto That'd make pure-L1 PMCs much easier.
01:43 kid51 joined #parrot
01:51 dalek rakudo: f59630e | pmichaud++ | build/PARROT_REVISION:
01:51 dalek rakudo: Bump PARROT_REVISION to current parrot head.  Some spectests fail
01:51 dalek rakudo: on -G related errors, but we gain the ability to have utf8 arguments
01:51 dalek rakudo: from the command line.  For at least a couple of days we'll accept
01:51 dalek rakudo: the failures in hopes that Parrot folks can better track it down.
01:51 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​59630e67843f3d44d439706e6bedf33de410b7b
02:03 Theory joined #parrot
02:05 dukeleto joined #parrot
02:30 zak_ joined #parrot
02:42 janus joined #parrot
03:19 Zak joined #parrot
03:43 hercynium joined #parrot
03:50 allison joined #parrot
04:27 jdv79 limbic?!
04:27 purl it has been said that limbic is just that:)
04:33 Zak joined #parrot
05:11 amuck joined #parrot
05:12 cotto bacek_at_work, ping
05:15 cotto nm.  I'll catch you later.
05:21 dalek parrot: r39869 | petdance++ | trunk/src/io/unix.c:
05:21 dalek parrot: consting
05:21 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39869/
05:27 zak_ joined #parrot
06:07 uniejo joined #parrot
06:09 pjcj_ joined #parrot
06:13 UltraDM joined #parrot
06:16 uniejo joined #parrot
06:16 iblechbot joined #parrot
06:25 bacek_at_work clock?
06:25 purl bacek_at_work: LAX: Thu 11:25pm PDT / CHI: Fri 1:25am CDT / NYC: Fri 2:25am EDT / LON: Fri 7:25am BST / BER: Fri 8:25am CEST / IND: Fri 11:55am IST / TOK: Fri 3:25pm JST / SYD: Fri 4:25pm EST /
06:29 Theory joined #parrot
06:39 Theory joined #parrot
07:38 mberends joined #parrot
07:39 mikehh make fulltest PASS, also pre/post config, smolder at r39869 - Ubuntu 9.04 amd64
07:48 MoC joined #parrot
07:49 zak_ joined #parrot
07:51 mikehh I am getting - Method 'succ' not found for invocant of class 'Method' in tests including t/00-parrot/04-op-cmp.t  and t/01-sanity/04-if.t  using parrot r39869
07:53 mikehh plus quite a few spectests
07:53 dukeleto joined #parrot
08:02 chromatic joined #parrot
08:28 iblechbot joined #parrot
09:04 bacek joined #parrot
09:04 bacek o hai
09:52 masak joined #parrot
10:10 dalek TT #805 created by MoC++: Undefined reference error upon building on Windows
10:12 HG` joined #parrot
10:25 nopaste "bacek" at 114.73.166.104 pasted "Whiteknight, I almost caught problem with hashes." (68 lines) at http://nopaste.snit.ch/17101
10:25 bacek Anyone with strong gc-fu around?
10:44 Infinoid Where was expand_hash called from?
10:46 Infinoid I don't think my gc-fu is very strong, but it is an area I've been staring at for the last few days :)
10:55 bacek parrot_hash_put
10:55 Infinoid I could keep asking you for the next frame, but it might be easier if you just nopaste the backtrace
10:56 bacek http://nopaste.snit.ch/17101
10:56 Infinoid I think something holds a reference to this Hash without marking it
10:56 bacek I suspect "C stack"
10:56 AndyA joined #parrot
10:56 Infinoid thanks, but I don't see the rest of the backtrace in that nopaste
10:57 Infinoid ok, if it's on the C stack without being detected, that is a big problem
10:57 Infinoid that would be a bug in our basic set detection
10:58 bacek My guts feelings that objects on C stack didn't get PObj_live flag cleared before gc run
10:58 bacek And VTABLE_mark didn't get called for "live" objects
10:59 Infinoid well, the objects on the C stack are really just pointers, the objects still live in their arenas, and PObj_live should be cleared for everything in all arenas
10:59 Infinoid If we were allocating actual PObj structures on the stack, that would be different
10:59 nopaste "bacek" at 114.73.166.104 pasted "full bt" (31 lines) at http://nopaste.snit.ch/17102
10:59 Infinoid (but we don't do that.  Yet.)
11:02 Infinoid ok.  That Hash is the "parent_overrides" ATTR of a Class PMC, which should have marked it
11:02 Infinoid Maybe the Class PMC itself wasn't marked
11:03 bacek (gdb) p classobj->flags & 524288
11:03 bacek $16 = 0
11:03 bacek 524288 is PObj_live flag
11:04 bacek but looks like it's stale from previous GC run
11:07 Infinoid we're never calling any vtable functions in that class, but I think its attr struct should also have been freed if it were GCed
11:11 Infinoid here's something I never understood (which may or may not be related to your problem): base classes like Object have mark() functions, and Object's marks the Class.  But subclasses can declare their own mark() function, and they apparently are not required to call SUPER().
11:11 Infinoid The GC doesn't even try to walk the class inheritance stack, it just calls VTABLE_mark(), so the superclass mark function never gets called.  Won't that cause problems?
11:12 bacek hmm... It can be.
11:12 Infinoid I always sort of figured "if it were really a bug, lots more things would break, but things seem to be working well".  But I still don't see how they work
11:12 jonathan The class VTABLE mark will mark its parents list.
11:13 Infinoid I can see that if it calls SUPER(), but not all mark functions seem to
11:14 bacek there is only on pmc inherited from Class - PMCProxy.
11:14 bacek And it properly mark all members afaiu
11:15 Infinoid In this case, your PMC is inherited from Object, and the Object has a reference to the Class for its get_class function
11:15 Infinoid the Object mark function marks the Class.  But my question was, is Object.mark ever being called
11:16 Infinoid if the Class object was GCed, that suggests the answer is "no"
11:16 Infinoid Is classobj->vtable set to deadbeef?
11:17 bacek no
11:17 bacek oookeeey.
11:17 Infinoid ok, so I'm wrong.
11:17 bacek I've added     PARROT_ASSERT(hash->gc_mark_runs >= interp->arena_base->gc_mark_runs);
11:17 bacek into parrot_hash_put
11:17 Infinoid I like your strategy. :)
11:18 bacek Divide and conquer!
11:18 bacek All fails lead to packfile's do_sub_pragma
11:18 bacek do_sub_pragmas
11:19 bacek Looks like (freezed?) strings in PBCs aren't thawed properly
11:24 * bacek hate precise GCs more and more with every minute...
11:30 Infinoid "precise"?
11:34 bacek isn't is noun for "precisely"?
11:35 bacek In GC word it's opposite to "conservative"
11:43 Infinoid oh, I understood it to mean the opposite of "inaccurate"
11:44 bacek "conservative" GC is pretty "inaccurate" :)
11:44 Infinoid true :)
11:54 bacek ok, I have to sleep on this problem...
11:54 bacek see you tomorrow.
11:54 bacek my tomorrow :)
12:11 kid51 joined #parrot
12:14 masak joined #parrot
12:27 ruoso joined #parrot
12:43 eternaleye joined #parrot
12:44 allison joined #parrot
12:48 skids joined #parrot
13:32 Whiteknight joined #parrot
13:39 AndyA joined #parrot
13:42 dalek parrot: r39870 | fperrad++ | trunk/config/auto/gcc.pm:
13:42 dalek parrot: [config]
13:42 dalek parrot: don't overload the variable 'sym_export' when already set by hints (mswin32 or cygwin)
13:42 dalek parrot: see TT #805
13:42 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39870/
13:48 dalek TT #805 closed by fperrad++: Undefined reference error upon building on Windows
13:58 Whiteknight Infinoid: ping
13:59 mberends left #parrot
14:11 Infinoid Whiteknight: hi
14:12 Whiteknight Infinoid: do any work on that pipes patch since last I saw it?
14:12 Infinoid no.  been wrestling with the GC since then
14:15 Whiteknight ah, okay
14:15 Whiteknight I just didn't want to commit something if you had a patch coming through
14:15 Infinoid no, please feel free
14:16 amuck_ joined #parrot
14:16 Infinoid the pmc=0x2 bug has been peeking out randomly for a while now, I really want to kill it
14:16 Whiteknight bacek found some really interesting bugs yesterday with regards to hashes and the gC
14:17 Whiteknight so I wonder if that has anyting to do with it
14:18 Infinoid yeah, he pasted http://nopaste.snit.ch/17101 and http://nopaste.snit.ch/17102 this morning
14:18 Infinoid to me that looks almost as though the Class wasn't being marked, yet it's still alive
14:25 Whiteknight hmmm
14:42 dalek parrot: r39871 | jkeenan++ | trunk/config (8 files):
14:42 dalek parrot: [config] Modify config/init/hints/*.pm files to eliminate use of $(SHARE_EXT) and
14:42 dalek parrot: $(SOVERSION).  Modify config/inter/libparrot.pm to change 'libparrot' to
14:42 dalek parrot: 'libparrot_for_makefile_only'.  Make similar change in
14:42 dalek parrot: config/gen/makefiles/root.in.  This should eliminate $(SHARE_EXT) and
14:42 dalek parrot: $(SOVERSION) in lib/Parrot/Config/Generated.pm and config_lib.pasm and, hence,
14:42 dalek parrot: output of parrot_config.  See https://trac.parrot.org/parrot/ticket/797.
14:42 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39871/
14:49 MoC joined #parrot
15:04 dalek rakudo: 6a4d66a | pmichaud++ | docs/spectest-progress.csv:
15:04 dalek rakudo: spectest-progress.csv update: 412 files, 11546 passing, 90 failing
15:04 dalek rakudo: Failure summary:
15:04 dalek rakudo:     S05-grammar/parse_and_parsefile.t aborted 6 test(s)
15:04 dalek rakudo:     S05-metasyntax/regex.rakudo aborted 17 test(s)
15:04 dalek rakudo:     S12-enums/basic.rakudo 27 - short name of the enum without parenthesis is an enum
15:04 dalek rakudo:     S16-filehandles/io.rakudo aborted 62 test(s)
15:04 dalek rakudo:     S32-num/rand.rakudo aborted 4 test(s)
15:04 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​a4d66a94a5ee901454069a918e4fa825a905f9d
15:06 davidfetter joined #parrot
15:11 gaz joined #parrot
15:23 Whiteknight this backtrace is amazing really
15:23 Tene does anybody know about issues with nci and :slurpy?
15:23 Whiteknight Tene: I wasn't aware of any issues with that
15:24 Whiteknight (of course, I don't think I've seen any examples of it either)
15:48 whoppix joined #parrot
15:52 Tene erm... and :flat
15:54 jonathan Tene: Didn't know of them but not surprised by them either...
15:54 nopaste "tene" at 24.10.252.130 pasted "example for Whiteknight++" (15 lines) at http://nopaste.snit.ch/17105
15:55 Tene It works like that, but if you swap which call is commented, it fails with too few arguments passed to NCI function
15:55 Tene any ideas on how to make it work?
15:59 darbelo joined #parrot
16:01 jonathan Tene: 'fraid not, other than digging into the NCI guts
16:02 Tene :(
16:02 jonathan But maybe allison's calling conventions work will fix it.
16:02 jonathan If it ever lands in trunk.
16:02 |MoC| joined #parrot
16:05 kid51 Whiteknight ping
16:05 Whiteknight kid51: pong
16:05 kid51 Hi Andrew!
16:06 kid51 This line in  t/op/io.t:  39804 whiteknight     if $S0 == 'MSWin32' goto tt661_ok
16:06 Limbic_Region joined #parrot
16:06 kid51 We're getting consistent Smolder failures on Win32 on t/op/io.t/
16:06 kid51 Appears that MSWin32 is not yet ready to be un-TODOed.
16:06 Whiteknight okay then
16:07 kid51 Example:  http://smolder.plusthree.com/app/pu​blic_projects/report_details/24452
16:08 kid51 ... which Fran�ois submitted within last half hour.
16:08 Tene :( looks like I'm going to ahave to parse NCI sigs, then...
16:08 Whiteknight okay, I'll TODO it then
16:26 bacek joined #parrot
16:27 [1]Limbic_Region joined #parrot
16:37 Psyche^ joined #parrot
16:48 chromatic joined #parrot
17:03 MoC If I want to report an error in a certain test, which component should I choose?
17:03 MoC (And I do believe that the error is in the test itself, not the code tested.)
17:04 ruoso joined #parrot
17:04 chromatic Is there a component for tests?
17:04 chromatic If not, Parrot or core will work.
17:04 eternaleye joined #parrot
17:05 MoC chromatic: If TGE doesn't stand for something test related, then, no.
17:07 MoC appears like it does not; submitted ticket.
17:08 dalek TT #806 created by MoC++: Test.readdir is not skipped on Win32 even though it appears that it should ...
17:11 dalek TT #807 created by jkeenan++: t/pmc/eval.t:  freeze/thaw test not passing on OpenBSD/AMD 64
17:12 eternaleye joined #parrot
17:13 kid51 MoC:  I was discussing that test file with Whiteknight earlier today.  Based (solely) on Smolder reports, it looked like there were a whole bunch of tests that had been prematurely un-TODOed in that file when OS is mswin32.
17:14 MoC well, the test is skipped on win32 but only if it's compiled with msvc...
17:16 kid51 My error:  What I was speaking about with Whiteknight was t/op/io.t
17:17 MoC Ok.
17:23 amuck_ joined #parrot
17:30 bacek joined #parrot
17:41 allison joined #parrot
17:59 eternaleye joined #parrot
18:04 mberends joined #parrot
18:04 bacek bah!
18:10 dalek decnum-dynpmcs: r100 | darbelo++ | trunk/ (7 files):
18:10 dalek decnum-dynpmcs: Add an 'exceptions' ATTR to hold a mask indicating the conditions we raise an
18:10 dalek decnum-dynpmcs: exception on.
18:10 dalek decnum-dynpmcs: Allow manipulation of this ATTR via get and set METHODS
18:10 dalek decnum-dynpmcs: Modify check_flags_and_throw to use this ATTR.
18:10 dalek decnum-dynpmcs: Disable exceptions for tests that need it.
18:10 dalek decnum-dynpmcs: review: http://code.google.com/p/decnu​m-dynpmcs/source/detail?r=100
18:27 dukeleto_ joined #parrot
19:01 ruoso joined #parrot
19:03 ruoso joined #parrot
19:04 ruoso joined #parrot
19:17 davef joined #parrot
19:39 kid51 joined #parrot
19:55 davef joined #parrot
20:06 mikehh joined #parrot
20:10 davef joined #parrot
20:17 davef topic #parrot
20:33 david joined #parrot
20:36 david left #parrot
20:41 david joined #parrot
20:43 davidfetter joined #parrot
20:43 david Hi, is parrot stable enough to create a subset of the JDBC API on? Can you do this in rakudo and generate PIR?
20:44 chromatic I believe so.
20:45 david What in your opinion is the best approach to take on this: code in Parrot or code in Perl 6 and then 'tune' the generated PIR?
20:46 chromatic I'd try NQP instead.
20:46 chromatic It generates simpler PIR.
20:46 jonathan If you want to write a bit more high level than PIR but Perl 6 is a bit too heavy...yeah, what chromatic beat me to saying. :-)
20:49 david I wanted to play with Perl 6 and databases, saw the Simon Cozens DBDI example and  the Tim Bunce comment about providing a JDBC API at the Parrot level. I was wondering how good a fit Parrot and JDBC are, and whether it's 'hard' to implement or just 'long and boring'?
20:52 chromatic The latter, I suspect.
20:52 chromatic There may be some exciting bugs and some missing features, but mostly it's just a lot of work.
20:53 jonathan That said, it's work that would be *very* much welcomed, I'm sure. I suspect the folks doing web stuff on Rakudo at the moment would really quite like database access.
20:53 mberends david: don't be afraid of 'long and boring', if you break the ice on a facility such as JDBC, there will be plenty of people to fill it out.
20:54 david Are there any NQP/Parrot 'best practices' that would make it easier to integrate at a later date? Is there up-to-date NQP documentation anywhere?
20:56 jonathan It'll probably be in compilers/nqp/ or maybe the Parrot book covers it.
20:56 chromatic There's a section in the Parrot book but it needs editing.
20:56 jonathan docs/book/draft/ch06_nqp.pod
20:58 david What's the best way to develop it, get a github account and develop under the parrot tree? Can you develop standalone Parrot modules a la CPAN?
20:58 chromatic A standalone module should work just fine.
21:01 david Sorry if these are dumb questions - but: is there any standard packaging to develop standalone modules in NQP/Parrot? Is it similar to a CPAN package (MANIFEST, code etc.)?
21:01 chromatic No one's addressed that to my knowledge.
21:04 jonathan david: And they're not dumb questions at all. :-)
21:07 david I noticed when playing with Perl 6 (rakudo) that if I wanted to access particular modules I had to be in the appropriate directory (ie. 'use' complained that it couldn't find the module). Is this just the current state of development or am I doing something wrong?
21:08 pmichaud It's just the current state of development.
21:09 mberends david: try 'export PERL6LIB=/some/dir' etc before executing your code elsewhere
21:09 mberends it's the current temporary workaround
21:09 david OK, so it hasn't got an INC path yet?
21:10 mberends oh yes, there is one too.
21:11 pmichaud @*INC is just initialized by PERL6LIB
21:12 mberends in the top of your program you can write: use v6; BEGIN { @*INC.unshift('/my/module/dir'); }; use MyModule;
21:14 david Are there any modules it finds by default (core perl 6/parrot modules) or should I append each module I needs path to PERL6LIB?
21:15 mberends append each one
21:18 david Thanks. Can you embed Perl 6 in Parrot? I'm thinking about the JDBC code interfacing to different implementations for each database vendor and whether it would be easier for driver developers to develop in Perl 6 or Parrot/NQP.
21:18 jonathan Rakudo Perl 6 runs on top of Parrot
21:19 jonathan It's mostly written in PIR/NQP/Perl 6.
21:19 jonathan In theory (and, to an increasing degree, in practice), you can use libraries written in one langauge from another.
21:20 jonathan There's plenty of way to go on the details, but there's already been proof of concept style examples of it working at least.
21:20 mberends in a PIR program you can for example:   load_bytecode '../perl6.pbc'
21:27 david So would it make more sense to write it in Perl6? Could it then be bun+
21:27 s163m joined #parrot
21:30 jonathan The Perl 6 compiler emits more complex code than you may wish for.
21:30 jonathan But not so bad I guess.
21:32 mberends david: have you read parrot/examples/nci/Mysql.pir for ideas?
21:33 david No - I just saw the Simon Cozens example and looked at the code.
21:54 david Does anyone control namespaces in Perl6/Parrot yet?
21:57 chromatic Not yet.
21:57 pmichaud It's a frontier.
21:59 darbelo If you get there first, it yours.
21:59 david ok. Are traits and all the other Perl 6 oo goodies easily accessible in Parrot?
22:00 pmichaud we're still working on that.
22:03 david Is anyone else working on API's like JDBC where there would need to be multiple vendor specific drivers?
22:05 Psyche^ joined #parrot
22:17 david Thanks for all your help everybody. I think I need to go away and play with it a bit - then I'll be back with more questions :)
22:19 jonathan Have fun, look forward to seeing what you come up with. :-)
22:21 david left #parrot
22:35 rg1 joined #parrot
22:36 bacek joined #parrot
22:40 Austin_Hastings joined #parrot
22:40 Austin_Hastings class PCT::Node extends Capture
22:40 Austin_Hastings woot.
22:53 bacek good morning
22:53 purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
22:56 davidfetter 'sup bacek
23:00 Austin_Hastings ohai bacek
23:00 bacek hi davidfetter, Austin_Hastings
23:01 Austin What are you working on this morning, Bacek?
23:01 bacek Austin: gc...
23:01 Austin Are you patching the existing one, or writing a new one?
23:02 bacek groking existing one.
23:02 * chromatic rolls to assist with bacek's Sanity save.
23:03 chromatic 18, and I'm trained in sanity with a +12, so you get +2 on your save.
23:03 * bacek running in circles screaming
23:03 davidfetter iaaa! iaaa!
23:05 bacek chromatic: any ideas why Class.parent_overrides created with constant_pmc_new???
23:05 chromatic Perhaps to prevent order-of-destruction bugs (though I'm not sure that matters).
23:05 dalek parrot: r39872 | bacek++ | trunk/src/pmc/sub.pmc:
23:05 dalek parrot: [cage][pmc] Mark Sub.namespace_stash in Sub.mark
23:05 dalek parrot: review: https://trac.parrot.org/parrot/changeset/39872/
23:05 chromatic Perhaps because classes are all created as constant, in which case they only get marked once.
23:06 bacek Are constant pmcs marked during gc?
23:07 chromatic They're marked once, but because there's no sweep of the constant pools, they never get unmarked.
23:07 chromatic Thus they may get marked if they're reachable from a non-constant PMC, but they'll never mark their children.
23:08 chromatic If our GC kept liveness markers outside of the PMC headers, we wouldn't have this problem.
23:08 chromatic We'd also be able to sweep more efficiently.
23:08 bacek And parent_overrides is just cache for lookup. Which can be filled with non-constant keys...
23:08 chromatic I don't think it has any non-constant children.
23:09 bacek src/oo.c
23:09 bacek line 539
23:09 chromatic Subs are constant.
23:10 bacek We can pass non-constant STRING* key
23:10 bacek Subs are constant even after unpack from Packfile?
23:10 chromatic Yes.
23:10 chromatic I don't know about the key.
23:11 bacek * TODO use thaw_constants
23:11 bacek src/packfile.c, +3986
23:12 bacek Looks like even Subs after unpacking are not constant anymore..
23:13 chromatic You could throw PARROT_ASSERT(PObj_is_constant_TEST(pmc)) in there.
23:13 chromatic src/oo.c I mean
23:13 bacek PARROT_ASSERT(PObj_is_constant_TEST(name))?
23:14 chromatic Right.
23:15 cotto joined #parrot
23:17 cotto hi
23:17 purl hello, cotto.
23:17 bacek hi cotto
23:19 bacek chromatic: how many kittens will die if I replace parent_overrides with non-constant version?
23:20 Theory joined #parrot
23:20 chromatic Try it with the gc-debug runcore and see.
23:21 GeJ Good morning everyone
23:24 bacek GeJ: good morning
23:24 purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
23:26 bacek chromatic: "make testb" passed
23:26 chromatic Good sign.
23:27 eternaleye joined #parrot
23:27 whoppix joined #parrot
23:35 bacek What the difference between "--gc-debug" and "-R gcdebug"?
23:37 chromatic One of them works and one doesn't, I think.
23:37 bacek :)
23:39 bacek is there shortcut for "-R gcdebug"?
23:42 chromatic I don't believe so.
23:42 nopaste "bacek" at 122.110.58.243 pasted "Aha! Found at least one GC problem!" (37 lines) at http://nopaste.snit.ch/17107
23:53 Theory joined #parrot
23:56 Austin_Hastings joined #parrot

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced