[svn:parrot] r49309 - branches/generational_gc/lib/Parrot/Pmc2c/PMC
bacek at svn.parrot.org
bacek at svn.parrot.org
Sat Sep 25 00:58:32 UTC 2010
Author: bacek
Date: Sat Sep 25 00:58:31 2010
New Revision: 49309
URL: https://trac.parrot.org/parrot/changeset/49309
Log:
Fix generating of WB vtable.
Modified:
branches/generational_gc/lib/Parrot/Pmc2c/PMC/WB.pm
Modified: branches/generational_gc/lib/Parrot/Pmc2c/PMC/WB.pm
==============================================================================
--- branches/generational_gc/lib/Parrot/Pmc2c/PMC/WB.pm Sat Sep 25 00:58:16 2010 (r49308)
+++ branches/generational_gc/lib/Parrot/Pmc2c/PMC/WB.pm Sat Sep 25 00:58:31 2010 (r49309)
@@ -79,6 +79,7 @@
my $parameters = join ', ',
map { s/(\s*\S+\s*\*?\s*)//; $_ }
split (/,/, $vt_method->parameters);
+ $parameters = ', ' . $parameters if $parameters;
my $method = Parrot::Pmc2c::Method->new(
{
@@ -93,11 +94,11 @@
my $ret = return_statement($method);
my $body = <<"EOC";
/* Switch vtable here and redispatch to original method */
- Parrot_gc_write_barrier(interp, _self);
VTABLE *t = _self->vtable->wb_variant_vtable;
_self->vtable->wb_variant_vtable = _self->vtable;
_self->vtable = t;
- return _self->vtable->$name(interp, $parameters);
+ Parrot_gc_write_barrier(interp, _self);
+ return _self->vtable->$name(interp, _self $parameters);
EOC
# don't return after a Parrot_ex_throw_from_c_args
More information about the parrot-commits
mailing list