Re: [svn:parrot] r21891 - branches/pdd15oo/src/pmc

2007-10-06 Thread chromatic
On Friday 05 October 2007 14:02:32 [EMAIL PROTECTED] wrote:

 Author: allison
 Date: Fri Oct  5 14:02:31 2007
 New Revision: 21891

 Modified:
branches/pdd15oo/src/pmc/namespace.pmc

 Log:
 [pdd15oo] The namespace PMC adds methods and vtable overrides to the class
 if it's associated with a class.

 Modified: branches/pdd15oo/src/pmc/namespace.pmc
 ===
=== --- branches/pdd15oo/src/pmc/namespace.pmc (original)
 +++ branches/pdd15oo/src/pmc/namespace.pmcFri Oct  5 14:02:31 2007
 @@ -182,6 +182,7 @@
  Parrot_NSInfo *nsinfo= PARROT_NSINFO(SELF);
  PMC   *vtable= nsinfo-vtable;
  Parrot_sub*sub   = PMC_sub(value);
 +PMC * const classobj = VTABLE_get_class(interp, SELF);

  /* Handle vtable methods with two underscores at the start. */
  if (sub-vtable_index == -1) {
 @@ -202,9 +203,14 @@
  /* Insert it. */
  VTABLE_set_pmc_keyed_int(INTERP, vtable,
  sub-vtable_index, value);
 +
 +/* Insert it in class, if there is a class */
 +if (!PMC_IS_NULL(classobj) 
 PObj_is_class_TEST(classobj)) +   
 VTABLE_add_vtable_override(interp, classobj, key, value); }

Is there a reason why classobj would *not* be a class if it's not PMCNULL?  I 
don't understand this additional test.

-- c


Re: pdd15oo: load_bytecode and :method subs

2007-10-06 Thread Allison Randal

Allison Randal wrote:

Patrick R. Michaud wrote:

In pdd15oo, there seems to be an issue about using load_bytecode
to load :method subs after a class has been created.


Working now for both load_bytecode and the eval case.


One problem: with this change, every named method is inserted into the 
class associated with its namespace. As specified, it throws an 
exception when you try to readd a method of the same name, unless you 
explicitly tell it to override the old method (this metamodel enforces 
more than the previous one).


That's all good, except that PGE::P6Regex has a routine 
'compile_p6regex' that regenerates the same method named '_regex' in the 
PGE::Grammar namespace for every anonymous rule (every rule that has no 
name and no grammar specified). PGE::P5Regex has the same problem.


The attached patch creates the rule's method in a randomly numbered 
faux-anonymous class, instead of PGE::Grammar. This gets the tests to 
pass again, but it's not a permanent solution. You probably want to use 
 :anon methods, or delete the '_regex' method from the class when 
you're done with it.


There's a similar problem in t/compilers/pge/06-grammar.t, which keeps 
recompiling a test rule named 'main', into the class Simple::Test.


I'll look at it more tomorrow.

Allison
Index: compilers/pge/PGE/P6Regex.pir
===
--- compilers/pge/PGE/P6Regex.pir   (revision 21905)
+++ compilers/pge/PGE/P6Regex.pir   (working copy)
@@ -36,7 +36,12 @@
 adverbs['grammar'] = $S0
 goto with_grammar
   adverb_grammar_1:
-adverbs['grammar'] = 'PGE::Grammar'
+$P0 = new 'Random'
+$I0 = $P0
+$S0 = $I0
+$S0 = 'PGE::Grammar::Anon' . $S0
+adverbs['grammar'] = $S0
+#adverbs['grammar'] = 'PGE::Grammar'
   with_grammar:
 $I0 = exists adverbs['name']
 if $I0 goto with_name


[perl #46137] [TODO] The text in an instruction after ':' is a label isn't it? (PDB_hasinstruction)

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46137]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46137 


 In src/debug.c:PDB_hasinstruction() has the todo item:

else if (*c == ':') {
/* this is a label. XXX right? */

We just need to check here that the text after a ':' denotes a label.
This function could also do with some more expressive variable names than
'h' and 'c'.


[perl #46139] [TODO] Do more in the parrot debugger

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46139]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46139 


In src/debug.c:GDB_P() there is the todo item:

 * TODO more, more

What exactly needs to be done is a good question, however, needs more work.


[perl #46141] [TODO] Move gdb breakpoints to the debugger interpreter

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46141]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46141 


In src/debug.c there is the todo item:

/* TODO move these to debugger interpreter
 */
 static PDB_breakpoint_t *gdb_bps;

 I think this means to move gdb breakpoints into the parrot debugger
 interpreter.


[perl #46143] [TODO] Handle removing breakpoints in debugger

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46143]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46143 


 In src/debug.c:GDB_B() there is the todo item:

* XXX We can't remove the breakpoint yet, executing the next ins
* most likely fails, as the length of the debug-brk stmt doesn't
* match the old opcode
* Setting a breakpoint will also fail, if the bytecode os r/o


[perl #46145] [TODO] Perform bounds checking in GDB_B()

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46145]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46145 


In src/debug.c:GDB_B() there is the todo item:

/* HACK alarm  pb 45 is passed as the integer not a string */
/* TODO check if in bounds */
pc = interp-code-base.data + (unsigned long)s;


[perl #46147] [TODO] Print out more information about the macro in imcc

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46147]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46147 


In compilers/imcc/main.c:do_pre_process() there is the todo item:

/* TODO: print out more information about the macro */


[perl #46149] [TODO] Parrot_runcode and/or imcc_run_pbc should return a value

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46149]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46149 


In compilers/imcc/main.c:imcc_run_pbc() there is the todo item:

/* XXX no return value :-( */
Parrot_runcode(interp, argc, argv);


[perl #46153] [TODO] Check for regular file in Parrot_readbc()

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46153]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46153 


In src/embed.c:Parrot_readbc() there is the todo item:

* TODO check for regular file


[perl #46155] [TODO] Is usage of mem_sys_free() ok in Parrot_readbc()?

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46155]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46155 


In src/embec.c:Parrot_readbc() there is the todo item (with context):

#ifdef PARROT_HAS_HEADER_SYSMMAN

if (fd = 0) {
close(fd);   /* the man page states, it's ok to close a mmaped file */
}
#else
/* XXX Parrot_exec uses this
 mem_sys_free(program_code); */
#endif

Should mem_sys_free() be called here?


[perl #46157] [TODO] Stop depending upon typed namespaces in internal_ns_keyed()

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46157]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46157 


In src/global.c:internal_ns_keyed() there is the todo item:

/* TODO - stop depending on typed namespace */


[perl #46159] [TODO] Match HLL of enclosing namespace in internal_ns_keyed()?

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46159]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46159 


In src/global.c:internal_ns_keyed() there is the todo item:

/* TODO - match HLL of enclosing namespace? */


[perl #46161] [TODO] Use the untyped interface in Parrot_find_global_n()

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46161]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46161 


In src/global.c:Parrot_find_global_n() there is the todo item:

XXX - For now this function prefers non-namespaces, it will eventually
entirely use the untyped interface.


[perl #46163] [TODO] Parrot's default namespaces should be fully typed

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46163]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46163 


In src/global.c:Parrot_find_global_n() there is the todo item:

* XXX - we should be able to use 'get_pmc_keyed' here,
* but we can't because Parrot's default namespaces are not
* fully typed and there's a pseudo-typed interface that
* distinguishes 'get_pmc_keyed' from 'get_pointer_keyed';
* the former is for NS and the latter is for non-NS.


[perl #46165] [TODO] Implement method cache invalidation in Parrot_store_global_cur()

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46165]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46165 


In src/global.c:Parrot_store_global_cur() there is the todo item:

/* FIXME - method cache invalidation should occur */


[perl #46167] [TODO] Replace temporary hack for method cache invalidation with decent implementation

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46167]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46167 


In src/global.c:Parrot_store_global_k() there is the todo item:

* XXX - temporary hack to notice when key is actually a string, so that
* the legacy logic for invalidating method cache will be called; this
* is not good enough but it avoids regressesions for now


[perl #46169] [TODO] Method cache invalidation should be a namespace function

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46169]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46169 


 In src/global.c:Parrot_store_global_s() there is the todo item:

/* FIXME - method cache invalidation should be a namespace function */
Parrot_invalidate_method_cache(interp, str_key, globalname);


[perl #46171] [TODO] Parrot_find_name_op() should walk up the scopes

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46171]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46171 


In src/global.c:Parrot_find_name_op() there is the todo item:

TODO - THIS IS BROKEN - it doesn't walk up the scopes yet - TODO


[perl #46177] [TODO] GC should lower CHUNKED_CTX_MEM threshold when collecting continuations

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46177]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46177 


In src/gc/regsiter.c there is the todo item:

TODO GC has to lower this threshold when collecting continuations.


[perl #46179] [TODO] Remove GC code depending upon -D40 before parrot 1.0

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46179]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46179 


In src/gc/register.c:clear_regs() there is the todo item:

/* depending on -D40 we set int, num to garbage different garbage
 * TODO remove this code for parrot 1.0


[perl #46181] [TODO] Who clears ctx-current_object created in init_context()?

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46181]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46181 


In src/gc/register.c:init_context() there is the todo item:

 ctx-current_object = NULL; /* XXX who clears it?  */


[perl #46183] [TODO] Move stacks into the interpreter?

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46183]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46183 


In src/gc/register.c:init_context() there is the todo item:

ctx-reg_stack = old-reg_stack; /* XXX move into interpreter? */
ctx-user_stack = old-user_stack;   /* XXX move into interpreter? */


[perl #46185] [TODO] Create specialised context for contexts due to self-recursive calls

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46185]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46185 


In src/gc/register.c:Parrot_alloc_context() there is the todo item:

* TODO (OPT) if we allocate a new context due to a self-recursive call
*  create a specialized version that just uses caller's size


[perl #46187] [TODO] Work out what todo item means in parrot_gc_context()

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46187]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46187 


In src/gc/register.c:parrot_gc_context() there is the todo item:

LVALUE_CAST(char *, ctx.bp) = interp-ctx_mem.threshold -
sizeof (parrot_regs_t);
/* TODO */

It is unclear what one has to do here, so the first thing to do is to work
out what the todo is there to do.


[perl #46191] [TODO] Process exceptions properly in init_context()

2007-10-06 Thread via RT
# New Ticket Created by  Paul Cochrane 
# Please include the string:  [perl #46191]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46191 


In src/gc/register.c:init_context() there is the todo item:

ctx-ref_count = 0; /* TODO 1 - Exceptions !!! */

I think this means to handle exceptions wrt reference counts correctly, but
I'm really not sure.


Re: [perl #46099] [TODO] Check for existing parent classes in add_parent()

2007-10-06 Thread Klaas-Jan Stol
I think it should be something like this:

  /* RT46099 Check we don't already have this parent. */

 /* If we have already added a method with this name... */
if (VTABLE_exists_keyed_str(interp, _class-all_parents,
VTABLE_name(interp, parent))) {
real_exception(interp, NULL, E_NotImplementedError,
This class already has this parent.);
}

can't test this, parrot does not build in pdd15 branch.
it should be more or less like this, based on impl of add_attribute.

the headerfile classobject.h is missing in the branch, while it is there in
trunk. Is this right?

btw, the type of exception should be changed, also for other methods.


hth
kjs

On 10/5/07, via RT Paul Cochrane [EMAIL PROTECTED] wrote:

 # New Ticket Created by  Paul Cochrane
 # Please include the string:  [perl #46099]
 # in the subject line of all future correspondence about this issue.
 # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46099 


 In src/pmc/class.pmc:add_parent() there is the todo item:

 /* XXX Check we don't already have this parent. */



Re: [perl #45935] [TODO][IMCC] syntax for assignment/creating objects

2007-10-06 Thread Klaas-Jan Stol
On 10/2/07, via RT Klaas-Jan Stol [EMAIL PROTECTED] wrote:

 # New Ticket Created by  Klaas-Jan Stol
 # Please include the string:  [perl #45935]
 # in the subject line of all future correspondence about this issue.
 # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=45935 


 hi,

 a code snippet like this:

 the_value = new 'Type'
 the_value = 42

 is in my eyes not clear. It seems as if the first line creates an object,
 and it seems to be discarded on the second line, as some value is assigned
 to the_value.

 some time ago (months, maybe  1 year?) there was a discussion about
 different assignment operators for setting/assigning. I remember :=
 being
 mentioned.
 I don't recall whether it was about the issue, or that it was about the
 ops
 set and assign.

 I think this syntax could be improved, to make it more clear that the
 value
 42 is assigned to the newly created object.

 kjs



as a note-to-self, maybe this is an idea:

.local pmc a,b,c
a = new 'Integer'
set a = 42

So, instead of a=42, you need to use the op.
It reads kinda natural, set a to 42, but it's a bit longer to type.

likewise, this could be done for assign as well
assign b = c

Also, the aforementioned := could be introduced, like so:
a := new 'Integer' # assign a new object to a
a = 42 # set some value to a
a := b # assign value in b to a

I'm not really sure if assigning another pmc and creating a new pmc can both
be considered assignment, thus using the := assignment operator; in
other words, would this be more consistent?

Just some thoughts.
kjs


Re: [perl #45935] [TODO][IMCC] syntax for assignment/creating objects

2007-10-06 Thread Allison Randal

Klaas-Jan Stol (via RT) wrote:


a code snippet like this:

the_value = new 'Type'
the_value = 42

is in my eyes not clear. It seems as if the first line creates an object,
and it seems to be discarded on the second line, as some value is assigned
to the_value.


The key thing to keep in mind is that '=' is not an operator in PIR, 
it's just syntactic sugar for human convenience. Those two lines are 
actually:


 new the_value, 'Type'
 set the_value, 42

These apply two simple rules of An '=' followed by an opcode means the 
 result argument is the first argument to the opcode and Any other 
'=' (that's not a sub or method call) is the 'set' opcode, and the 
result argument is the first argument to 'set'.


The different behavior is a result of calling different opcodes. Each 
individual opcode decides whether it has assignment or binding behavior.


Allison


Re: Parallel GC for parrot - does it make sense?

2007-10-06 Thread Maria Fedotova
Thanks, Will!

I succeeded to merge Harmony tree into my local copy:
$ svn propget svn:externals src/gc
gen http://svn.apache.org/repos/asf/harmony/enhanced/drlvm/trunk/vm/gc_gen/src

Then I fixed Manifest.pm to process external entries correctly and
started to understand that MANIFEST is used mainly for bundling of the
product. It seems to me that it is not used for Makefile generation.
Is it true that config/gen/makefiles/root.in is hand-written?

Thanks!


On 10/6/07, Will Coleda [EMAIL PROTECTED] wrote:

 On Oct 5, 2007, at 1:35 PM, Maria Fedotova wrote:

  Hello folks,
 
  I wonder if the community would be interested in attaching another
  garbage collector to the parrot VM. For example, Apache Harmony
  contains implementation of a parallel garbage collector [1] which is
  quicker on modern multi-core and SMP systems.
 
  If you think this may be technically feasible, I wonder if there are
  any legal issues which prevent Apache-licensed component to be used
  with the code licensed under artistic license.
 
  I'm currently looking at tools/dev/mk_manifest_and_skip.pl to add GC
  files to the build process. I'm also trying to dig up how
  --gc=config option of Configure.pl works.

 This script automatically generates MANIFEST and MANIFEST.SKIP based
 on what's checked into the repository; If files are added to the
 repo, running this tool automatically adds them.

  [1] http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/
  gc_gen/
 
  With best regards,
  Masha
 

 --
 Will Coke Coleda
 [EMAIL PROTECTED]





externals_fix.patch
Description: Binary data


Re: Parallel GC for parrot - does it make sense?

2007-10-06 Thread chromatic
On Saturday 06 October 2007 13:49:21 Maria Fedotova wrote:

 I succeeded to merge Harmony tree into my local copy:
 $ svn propget svn:externals src/gc
 gen
 http://svn.apache.org/repos/asf/harmony/enhanced/drlvm/trunk/vm/gc_gen/src

 Then I fixed Manifest.pm to process external entries correctly and
 started to understand that MANIFEST is used mainly for bundling of the
 product. It seems to me that it is not used for Makefile generation.
 Is it true that config/gen/makefiles/root.in is hand-written?

Yes, that's exactly right.  After you make the change, re-run perl 
Configure.pl and you'll get new Makefiles.

It should be *fairly* easy to modify, but if you run into trouble there should 
be someone in #parrot on irc.perl.org who can help you.

-- c


use more $Id$: Was: Re: [svn:parrot] r21940

2007-10-06 Thread Will Coleda
Not to pick on James here. There are a LOT of files where we put the  
name of the file *in* the file; this becomes a maintenance burden,  
especially with duplication, refactoring, renaming...


I noticed this when trying to do some cleanup in the t/ directory  
some months ago. For example, in the cut at the end,
are NAME  SYNOPSIS necessary here at all? They are just boilerplate  
that's going to bitrot; We can write the SYNOPSIS once at a toplevel  
doc somewhere. The NAME is just the path; you obviously know the path  
if you ran the perldoc to see it.


Any thoughts?

$ head -20 t/oo/composition.t
#!perl
# Copyright (C) 2007, The Perl Foundation.
# $Id: /parrot/offline/t/oo/composition.t 7681  
2007-09-06T12:28:44.077679Z coke  $


use strict;
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
use Parrot::Test tests = 10;

=head1 NAME

t/oo/compositon.t - test role composition

=head1 SYNOPSIS

% prove t/oo/compositon.t

=head1 DESCRIPTION




On Oct 6, 2007, at 9:24 PM, [EMAIL PROTECTED] wrote:


/t/configure/039-run_single_step.t


--
Will Coke Coleda
[EMAIL PROTECTED]




Re: [perl #44353] [BUG] Configure.pl: verbose-step option not workingwith named step

2007-10-06 Thread James E Keenan

Allison Randal wrote:



Simplification is a good idea. I suspect most people would rather type 
some short unique value for the option than the text of the description 
anyway.


In the reconfigure/ branch, I have figured out how to do this with the 
--fatal-step option 
(https://rt.perl.org/rt3/Ticket/Display.html?id=45525).  I will soon 
be proposing a patch to trunk for --fatal-step, and it would be great 
if --verbose-step and --fatal-step could work in the same manner.


Agreed on wanting consistency here.

I should note that currently you can also specify --verbose-step=53 
and have step # 53, and only #53, execute verbosely.  How that would 
be affected I haven't yet thought through?


Given a choice between the two, I'd rather see the step number in the 
non-verbose output:


 53)  Loading platform and local hints files...done.

than see the step name:

 inter::progs:  Loading platform and local hints files...done.

So, how about we make both --fatal-step and --verbose-step accept either 
a step number or step name. 



Didn't I hear someone recently remark, Simplification is a good idea?  ;-)

This is doable, but it will take me at least 9 separate test files to 
thoroughly test it.


Re: Parallel GC for parrot - does it make sense?

2007-10-06 Thread Stefan Parvu

Hi,

Allison Randal wrote:
It's worth exploring, and may lead to other experiments in parallel GC.. 
Parrot allows multiple different GC systems, so you shouldn't encounter 
significant problems on the Parrot side, but if you do, let us know and 
we'll fix them. I don't know if Harmony's parallel GC was designed to be 
plugged into other systems, though, so you may need to write a wrapper 
around it (which may lose some of the speed gains).


What is the future of Parrot and GC systems ? Are we gonna have in near 
future similar GCs what the JVM has at this moment:


 - serial collector
 - parallel collector
 - concurrent collector ?

That would be good since you can adjust your application for different 
loads. As well that would increase the time spent how to tune and do 
maintenance for your app so documentation would be valuable. Im curious, 
is Parrot a generational type of VM (objects are allocated in 
generations), similar as the popular JVM ?


Rgds,
Stefan


Re: Parallel GC for parrot - does it make sense?

2007-10-06 Thread Stefan Parvu


The three schemes currently implemented are generational, stop-the-world 
mark-and-sweep, and incremental mark-and-sweep. The generational GC 
implementation is not complete yet. The default GC scheme at the moment 
is stop-the-world mark-and-sweep. For the 1.0 release the default will 
likely be either incremental or generational, depending on which proves 
to be the most stable and best performance on average across common use 
cases.


We will definitively need good documentation for this part:

 - Parrot VM tuning, is it needed, why and when ?

 - Parrot and JVM, a simple face-to-face comparative description will 
help a lot of folks coming from Java land and as well sysadmins which 
are maintaining the JVM options for app servers, for instance. For 
instance, this would be very interesting how Parrot VM will be 
configured to run Perl 6...


 - Parrot's VM options should try to stay as a small set, good 
documented and not expand in dozens hard to maintain and hard to understand.


Thanks for message,
Stefan