More research.

1.  Here is the output of a recent run in trunk of coverage analysis on the 
code underlying 
tools/build/pmc2c.pl:

[parrot] 517 $ PERL5OPT=-MDevel::Cover=-db,coverage/pmc2c prove 
t/tools/pmc2cutils/*.t 
"$@"
t/tools/pmc2cutils/00-qualify........Devel::Cover: Can't open -e for MD5 
digest: No such file 
or directory
t/tools/pmc2cutils/00-qualify........ok 1/10Subroutine prederef redefined at 
/Users/jimk/
work/parrot/t/tools/pmc2cutils/../../../lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/t/tools/pmc2cutils/../../../lib/
Parrot/Pmc2c/STMRef.pm line 34.
t/tools/pmc2cutils/00-qualify........ok                                      
t/tools/pmc2cutils/01-pmc2cutils.....ok 1/26Subroutine prederef redefined at 
/Users/jimk/
work/parrot/lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm 
line 34.
t/tools/pmc2cutils/01-pmc2cutils.....ok                                      
t/tools/pmc2cutils/02-find_file......ok 1/7Subroutine prederef redefined at 
/Users/jimk/
work/parrot/lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm 
line 34.
t/tools/pmc2cutils/02-find_file......ok                                      
t/tools/pmc2cutils/03-dump_vtable....ok 9/12Subroutine prederef redefined at 
/Users/jimk/
work/parrot/lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm 
line 34.
t/tools/pmc2cutils/03-dump_vtable....ok                                      
t/tools/pmc2cutils/04-dump_pmc.......ok 113/117Subroutine prederef redefined at 
/Users/
jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm 
line 34.
t/tools/pmc2cutils/04-dump_pmc.......ok                                      
t/tools/pmc2cutils/05-gen_c..........ok 66/68Subroutine prederef redefined at 
/Users/jimk/
work/parrot/lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm 
line 34.
t/tools/pmc2cutils/05-gen_c..........ok                                      
t/tools/pmc2cutils/06-print_tree.....ok 33/55Subroutine prederef redefined at 
/Users/jimk/
work/parrot/lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm 
line 34.
t/tools/pmc2cutils/06-print_tree.....ok                                      
t/tools/pmc2cutils/07-open_file......ok 1/23Subroutine prederef redefined at 
/Users/jimk/
work/parrot/lib/Parrot/Pmc2c/STMRef.pm line 10.
Subroutine raw_deref redefined at 
/Users/jimk/work/parrot/lib/Parrot/Pmc2c/STMRef.pm 
line 34.
t/tools/pmc2cutils/07-open_file......ok                                      
All tests successful.
Files=8, Tests=318, 132 wallclock secs (109.62 cusr +  9.16 csys = 118.78 CPU)

2.  Here is the output of 'ack prederef lib/Parrot/':

lib/Parrot/OpTrans/CGP.pm:11:C<Parrot::OpTrans::CGoto> to provide 
predereferenced 
register addressing
lib/Parrot/OpTrans/CGP.pm:70:#  define opcode_to_prederef(i, op)   \\
lib/Parrot/OpTrans/CGP.pm:94:   goto **(cur_opcode = opcode_to_prederef(interp, 
$addr))";
lib/Parrot/OpTrans/CGP.pm:121:    return "goto **(cur_opcode = 
opcode_to_prederef(interp,
lib/Parrot/OpTrans/CPrederef.pm:12:to provide basic functionality for 
predereferenced run 
loops (switch,
lib/Parrot/OpTrans/CPrederef.pm:39:#define REL_PC ((size_t)(cur_opcode - 
interp->code-
>prederef.code))
lib/Parrot/OpTrans/CPrederef.pm:69:    return "opcode_to_prederef(interp, 
$addr)";
lib/Parrot/OpTrans/CPrederef.pm:79:    return "opcode_to_prederef(interp, 
pop_dest
(interp))";
lib/Parrot/OpTrans/CSwitch.pm:11:to provide a mixture of predereferenced 
register 
addressing and a
lib/Parrot/OpTrans/CSwitch.pm:78:#  define opcode_to_prederef(i, op)   (op ? \\
lib/Parrot/OpTrans/CSwitch.pm:112:               cur_opcode = 
opcode_to_prederef(interp, 
$addr);
lib/Parrot/OpTrans/CSwitch.pm:141:              cur_opcode = 
opcode_to_prederef(interp, 
dest);
lib/Parrot/OpTrans.pm:86:C<opcode_t>, but the prederef runops core uses an 
array of 
C<void*> to
lib/Parrot/Pmc2c/Ref.pm:25:=item C<prederef($method)>
lib/Parrot/Pmc2c/Ref.pm:32:sub prederef {
lib/Parrot/Pmc2c/Ref.pm:88:    my $pre        = $self->prederef($method);
lib/Parrot/Pmc2c/SharedRef.pm:13:=item C<prederef($method)>
lib/Parrot/Pmc2c/SharedRef.pm:20:sub prederef {
lib/Parrot/Pmc2c/StmRef.pm:10:sub prederef {

3.  Here is the output of 'ack raw_deref lib/Parrot/':

lib/Parrot/Pmc2c/Ref.pm:47:=item C<raw_deref($method)>
lib/Parrot/Pmc2c/Ref.pm:54:sub raw_deref {
lib/Parrot/Pmc2c/Ref.pm:90:    my $deref      = $self->raw_deref($method);
lib/Parrot/Pmc2c/StmRef.pm:34:sub raw_deref {

Would the warnings emitted while running 'prove' with Devel::Cover be due to 
the fact that 
both Parrot::Pmc2c::Ref and Parrot::Pmc2c::StmRef define prederef() and 
raw_deref() -- and 
that the latter inherits from the former?

[parrot] 520 $ rhead lib/Parrot/Pmc2c/StmRef.pm 
package Parrot::Pmc2c::STMRef;
use base 'Parrot::Pmc2c::Ref';

Thank you very much.

kid51
lib/Parrot/OpTrans/CGP.pm:11:C<Parrot::OpTrans::CGoto> to provide 
predereferenced register addressing
lib/Parrot/OpTrans/CGP.pm:70:#  define opcode_to_prederef(i, op)   \\
lib/Parrot/OpTrans/CGP.pm:94:   goto **(cur_opcode = opcode_to_prederef(interp, 
$addr))";
lib/Parrot/OpTrans/CGP.pm:121:    return "goto **(cur_opcode = 
opcode_to_prederef(interp,
lib/Parrot/OpTrans/CPrederef.pm:12:to provide basic functionality for 
predereferenced run loops (switch,
lib/Parrot/OpTrans/CPrederef.pm:39:#define REL_PC ((size_t)(cur_opcode - 
interp->code->prederef.code))
lib/Parrot/OpTrans/CPrederef.pm:69:    return "opcode_to_prederef(interp, 
$addr)";
lib/Parrot/OpTrans/CPrederef.pm:79:    return "opcode_to_prederef(interp, 
pop_dest(interp))";
lib/Parrot/OpTrans/CSwitch.pm:11:to provide a mixture of predereferenced 
register addressing and a
lib/Parrot/OpTrans/CSwitch.pm:78:#  define opcode_to_prederef(i, op)   (op ? \\
lib/Parrot/OpTrans/CSwitch.pm:112:               cur_opcode = 
opcode_to_prederef(interp, $addr);
lib/Parrot/OpTrans/CSwitch.pm:141:              cur_opcode = 
opcode_to_prederef(interp, dest);
lib/Parrot/OpTrans.pm:86:C<opcode_t>, but the prederef runops core uses an 
array of C<void*> to
lib/Parrot/Pmc2c/Ref.pm:25:=item C<prederef($method)>
lib/Parrot/Pmc2c/Ref.pm:32:sub prederef {
lib/Parrot/Pmc2c/Ref.pm:88:    my $pre        = $self->prederef($method);
lib/Parrot/Pmc2c/SharedRef.pm:13:=item C<prederef($method)>
lib/Parrot/Pmc2c/SharedRef.pm:20:sub prederef {
lib/Parrot/Pmc2c/StmRef.pm:10:sub prederef {

Reply via email to