# HG changeset patch # User anatofuz # Date 1611640326 -32400 # Node ID ff670811f17a4098310af4402229da81f3755655 # Parent e656a5d80d1c78a82d1e671c7dd0843de81b8ee8 use gotometa->() diff -r e656a5d80d1c -r ff670811f17a src/parallel_execution/generate_stub.pl --- a/src/parallel_execution/generate_stub.pl Tue Jan 26 14:36:55 2021 +0900 +++ b/src/parallel_execution/generate_stub.pl Tue Jan 26 14:52:06 2021 +0900 @@ -604,7 +604,7 @@ my ($filename, $inputCbCFile) = @_; open my $in,"<",$filename or die("can't open $filename $!"); - findMetaPM($filename); + my $generateMeta = findAndLoadMetaPM($filename); my $fn; if ($opt_o) { @@ -907,7 +907,7 @@ }; print $fd generateInterfaceGearef($_, $currentCodeGearName, $filename, $parsed, \%filename2EachCodeGearArgs, \%localVarType, $context_name); my $next = "$parsed->{next}->$parsed->{method}"; - print $fd $parsed->{prev},generateMeta($context_name, $next); + print $fd $parsed->{prev},$generateMeta->($currentCodeGearName, $context_name, $next); next; } elsif(/^(.*)par goto (\w+)\((.*)\);/) { debug_print("generateDataGear",__LINE__, $_) if $opt_debug; @@ -1007,9 +1007,9 @@ if ($hasParGoto) { print $fd "${prev}Gearef(${arg_context}, TaskManager)->taskList = ${arg_context}->taskList;\n"; print $fd "${prev}Gearef(${arg_context}, TaskManager)->next1 = C_$next;\n"; - print $fd ${prev},generateMeta(${arg_context}, "C_$next"); + print $fd ${prev},$generateMeta->($currentCodeGearName, ${arg_context}, "C_$next"); } else { - print $fd "${prev}goto meta(${arg_context}, $next);\n"; + print $fd ${prev},$generateMeta->($currentCodeGearName, ${arg_context}, $next); } next; } @@ -1022,7 +1022,7 @@ print $fd $_; next; } else { - print $fd "${prev}goto meta(${arg_context}, C_$next);\n"; + print $fd ${prev},$generateMeta->($currentCodeGearName, ${arg_context}, "C_$next"); next; } } elsif(/^.*(struct|union)?\s([\w<>]+)\*\s(\w+)\s?[=;]/) { # TODO: FIX!! # see also comment local val collent @@ -1336,17 +1336,20 @@ #my $goto_meta = "${prev}goto meta(${context_name}, $next->$method);\n"; sub generateMeta { - my ($context, $next) = @_; + my ($currentCodeGear, $context, $next) = @_; return "goto meta($context, $next);\n"; } -sub findMetaPM { - my ($filename) = @_; +sub findAndLoadMetaPM { + my $filename = shift; my $project_dir_name = dirname $filename; my $metapm = "$FindBin::Bin/$project_dir_name/meta.pm"; unless (-f $metapm) { - #print "[info] not found $metapm\n"; - return; + #default case + return sub { + my (undef, $context, $next) = @_; + return "goto meta($context, $next);\n"; + }; } load $metapm;