Author: tewk
Date: Fri Jun 8 13:03:19 2007
New Revision: 18883
Modified:
branches/pmc2c/lib/Parrot/Pmc2c/PMC/delegate.pm
Log:
[Pmc2c Branch] trying to get delegate right.
Modified: branches/pmc2c/lib/Parrot/Pmc2c/PMC/delegate.pm
==============================================================================
--- branches/pmc2c/lib/Parrot/Pmc2c/PMC/delegate.pm (original)
+++ branches/pmc2c/lib/Parrot/Pmc2c/PMC/delegate.pm Fri Jun 8 13:03:19 2007
@@ -26,10 +26,11 @@
sub pre_method_gen {
my ( $self ) = @_;
+ my $selfname = $self->name;
# vtable methods
foreach my $method ( @{ $self->vtable->methods } ) {
my $vt_method_name = $method->name;
- next unless exists $ok->{$vt_method_name};
+ #next unless exists $ok->{$vt_method_name};
next unless $self->normal_unimplemented_vtable($vt_method_name);
my $new_default_method = $method->clone();
my ( $func_ret, $ret_suffix, $args, $sig ) = $self->signature($method);
@@ -40,9 +41,11 @@
STRING *meth = CONST_STRING(interp, "$vt_method_name");
PMC *sub = Parrot_find_vtable_meth(interp, pmc, meth);
- if (PMC_IS_NULL(sub))
- /* return SUPER($super_args); */
- vtable_meth_not_found(interp, pmc, "$vt_method_name");
+ if (PMC_IS_NULL(sub)) {
+ PIO_printf(interp, "Delegate %Ss - $vt_method_name\\n",
pmc->vtable->whoami );
+ return SUPER($super_args);
+ /* vtable_meth_not_found(interp, pmc, "$vt_method_name"); */
+ }
${func_ret}Parrot_run_meth_fromc_args$ret_suffix(interp, sub, pmc, meth,
"$sig"$args);
EOC
$new_default_method->type(Parrot::Pmc2c::Method::VTABLE);