[svn:parrot] r41916 - in branches/pcc_reapply: include/parrot src/call

bacek at svn.parrot.org bacek at svn.parrot.org
Sun Oct 18 01:42:39 UTC 2009


Author: bacek
Date: Sun Oct 18 01:42:39 2009
New Revision: 41916
URL: https://trac.parrot.org/parrot/changeset/41916

Log:
Expose parse_singature_string. It will be required for fixing Continuation.invoke

Modified:
   branches/pcc_reapply/include/parrot/call.h
   branches/pcc_reapply/src/call/args.c

Modified: branches/pcc_reapply/include/parrot/call.h
==============================================================================
--- branches/pcc_reapply/include/parrot/call.h	Sun Oct 18 01:02:07 2009	(r41915)
+++ branches/pcc_reapply/include/parrot/call.h	Sun Oct 18 01:42:39 2009	(r41916)
@@ -335,6 +335,18 @@
         FUNC_MODIFIES(* parent)
         FUNC_MODIFIES(* tailcall);
 
+PARROT_CAN_RETURN_NULL
+void Parrot_pcc_parse_signature_string(PARROT_INTERP,
+    ARGIN(STRING *signature),
+    ARGMOD(PMC **arg_flags),
+    ARGMOD(PMC **return_flags))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        __attribute__nonnull__(4)
+        FUNC_MODIFIES(*arg_flags)
+        FUNC_MODIFIES(*return_flags);
+
 #define ASSERT_ARGS_Parrot_pcc_build_sig_object_from_op \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -378,6 +390,12 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(parent) \
     , PARROT_ASSERT_ARG(tailcall))
+#define ASSERT_ARGS_Parrot_pcc_parse_signature_string \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(signature) \
+    , PARROT_ASSERT_ARG(arg_flags) \
+    , PARROT_ASSERT_ARG(return_flags))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/call/args.c */
 

Modified: branches/pcc_reapply/src/call/args.c
==============================================================================
--- branches/pcc_reapply/src/call/args.c	Sun Oct 18 01:02:07 2009	(r41915)
+++ branches/pcc_reapply/src/call/args.c	Sun Oct 18 01:42:39 2009	(r41916)
@@ -2299,6 +2299,30 @@
 
 /*
 
+=item C<void Parrot_pcc_parse_signature_string(PARROT_INTERP, STRING *signature,
+PMC **arg_flags, PMC **return_flags)>
+
+Parses a signature string and creates call and return signature integer
+arrays. The two integer arrays should be passed in as references to a
+PMC.
+
+=cut
+
+*/
+
+PARROT_CAN_RETURN_NULL
+void
+Parrot_pcc_parse_signature_string(PARROT_INTERP, ARGIN(STRING *signature),
+        ARGMOD(PMC **arg_flags), ARGMOD(PMC **return_flags))
+{
+    const char *s = Parrot_string_cstring(interp, signature);
+    *arg_flags    = PMCNULL;
+    *return_flags = PMCNULL;
+    parse_signature_string(interp, s, arg_flags, return_flags);
+}
+
+/*
+
 =item C<void Parrot_pcc_merge_signature_for_tailcall(PARROT_INTERP, PMC *
 parent, PMC * tailcall)>
 


More information about the parrot-commits mailing list