[svn:parrot] r44952 - branches/pcc_hackathon_6Mar10/src/call

bacek at svn.parrot.org bacek at svn.parrot.org
Tue Mar 16 07:31:33 UTC 2010


Author: bacek
Date: Tue Mar 16 07:31:33 2010
New Revision: 44952
URL: https://trac.parrot.org/parrot/changeset/44952

Log:
Save/restore old call_object in invoke_sub.

Modified:
   branches/pcc_hackathon_6Mar10/src/call/pcc.c

Modified: branches/pcc_hackathon_6Mar10/src/call/pcc.c
==============================================================================
--- branches/pcc_hackathon_6Mar10/src/call/pcc.c	Tue Mar 16 07:06:17 2010	(r44951)
+++ branches/pcc_hackathon_6Mar10/src/call/pcc.c	Tue Mar 16 07:31:33 2010	(r44952)
@@ -77,7 +77,9 @@
     ASSERT_ARGS(Parrot_pcc_invoke_sub_from_c_args)
     PMC    *call_obj;
     va_list args;
-    char *arg_sig, *ret_sig;
+    char   *arg_sig, *ret_sig;
+    PMC    *old_call_obj = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
+
     Parrot_pcc_split_signature_string(interp, sig, &arg_sig, &ret_sig);
 
     va_start(args, sig);
@@ -89,7 +91,7 @@
     Parrot_pcc_fill_params_from_varargs(interp, call_obj, ret_sig, &args,
             PARROT_ERRORS_RESULT_COUNT_FLAG);
     va_end(args);
-
+    Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_call_obj);
 }
 
 
@@ -226,6 +228,7 @@
     PMC    *sub_obj;
     va_list args;
     char *arg_sig, *ret_sig;
+    PMC    *old_call_obj = Parrot_pcc_get_signature(interp, CURRENT_CONTEXT(interp));
     Parrot_pcc_split_signature_string(interp, signature, &arg_sig, &ret_sig);
 
     va_start(args, signature);
@@ -247,6 +250,7 @@
     Parrot_pcc_fill_params_from_varargs(interp, call_obj, ret_sig, &args,
             PARROT_ERRORS_RESULT_COUNT_FLAG);
     va_end(args);
+    Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_call_obj);
 }
 
 


More information about the parrot-commits mailing list