[svn:parrot] r36511 - branches/kill_pccinvoke/include/parrot
allison at svn.parrot.org
allison at svn.parrot.org
Mon Feb 9 23:33:52 UTC 2009
Author: allison
Date: Mon Feb 9 23:33:51 2009
New Revision: 36511
URL: https://trac.parrot.org/parrot/changeset/36511
Log:
[pcc] Renaming files for C and Parrot calling conventions for greater
maintenance sanity.
Added:
branches/kill_pccinvoke/include/parrot/call.h (props changed)
- copied unchanged from r36508, branches/kill_pccinvoke/include/parrot/inter_call.h
Deleted:
branches/kill_pccinvoke/include/parrot/inter_call.h
Copied: branches/kill_pccinvoke/include/parrot/call.h (from r36508, branches/kill_pccinvoke/include/parrot/inter_call.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/kill_pccinvoke/include/parrot/call.h Mon Feb 9 23:33:51 2009 (r36511, copy of r36508, branches/kill_pccinvoke/include/parrot/inter_call.h)
@@ -0,0 +1,378 @@
+/* inter_call.h
+ * Copyright (C) 2001-2008, The Perl Foundation.
+ * SVN Info
+ * $Id$
+ * Overview:
+ * Data Structure and Algorithms:
+ * Call argument handling.
+ * History:
+ * Initial version by leo on 2005/07/22
+ * Major changes by mdiep in April 2007
+ * Notes:
+ * References:
+ * pdd03 - Calling Conventions
+ */
+
+#ifndef PARROT_INTER_CALL_H_GUARD
+#define PARROT_INTER_CALL_H_GUARD
+
+typedef enum call_state_mode {
+ /* argument fetching/putting modes */
+ CALL_STATE_SIG = 0x100, /* runops, nci. In case we're interfacing with
+ C and va_lists. */
+ CALL_STATE_OP = 0x200, /* get_, set_ ops. In case we're interfacing
+ with Parrot code and get the signature from
+ call_state_item.u.op. */
+ CALL_S_D_MASK = 0x300, /* src/dest mask */
+
+ CALL_STATE_FLATTEN = 0x400 /* whether we are busy in a :flat argument */
+} call_state_mode;
+
+typedef struct call_state_item {
+ /* We have one call_state_item for both the caller (source,
+ arguments/returns) and the callee (destination, parameters/results). */
+ int mode; /* this specifies:
+ - where we get our arguments from / where we put
+ our parameters (from C code or from set_*,get_*)
+ - if we're in the middle of a :flat */
+
+ union {
+ struct { /* In case the caller (or callee? FIXME) is C */
+ void *ap; /* a ptr to va_list */
+ const char *sig; /* C string describing the type of each argument */
+ } sig;
+
+ struct { /* In case the caller/callee was Parrot code: */
+ opcode_t *pc; /* array of 'indexes' for each argument:
+ - if it's a constant, the constant number
+ - if it's a register, the register number */
+ PMC *signature; /* a PMC array holding a Call_bits_enum_t
+ signature for each argument */
+ } op;
+ } u;
+
+ Parrot_Context *ctx; /* the source or destination context */
+ INTVAL used; /* src: whether this argument has been consumed
+ * (or: whether the previous arg has?) */
+ INTVAL i; /* number of args/params already processed */
+ INTVAL n; /* number of args/params to match.
+ * may include :slurpys and :flats */
+ INTVAL sig; /* type of current arg/param
+ * (counting from 1, the i'th) */
+
+ /* We might encounter a :flat. */
+ /* FIXME bgeron: is this used for :slurpys?
+ * I can't find a reference in slurpy-filling code. */
+
+ PMC *slurp; /* PMC in which to put the args we slurp up
+ * or source from where to flatten */
+ INTVAL slurp_i; /* index of :flat/:slurpy arg/param to match */
+ INTVAL slurp_n; /* number of :flat/:slurpy args/params to match */
+} call_state_item;
+
+typedef struct call_state {
+ call_state_item src;
+ call_state_item dest;
+ UnionVal val;
+ int n_actual_args; /* arguments incl. flatten */
+ int optionals; /* sum of optionals */
+ int params; /* sum of params */
+ int first_named; /* param idx of 1st named */
+ UINTVAL named_done; /* bit mask, 1 if named was assigned */
+ STRING *name; /* name of argument if any */
+ PMC *key; /* to iterate a flattening hash */
+} call_state;
+
+typedef enum arg_pass_t {
+ PARROT_PASS_PARAMS = 0x00,
+ PARROT_PASS_RESULTS = 0x01
+} arg_pass_t;
+
+/* HEADERIZER BEGIN: src/inter_call.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+
+PARROT_EXPORT
+void Parrot_convert_arg(PARROT_INTERP, ARGMOD(call_state *st))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*st);
+
+PARROT_EXPORT
+int Parrot_fetch_arg(PARROT_INTERP, ARGMOD(call_state *st))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*st);
+
+PARROT_EXPORT
+int Parrot_fetch_arg_nci(PARROT_INTERP, ARGMOD(call_state *st))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*st);
+
+PARROT_EXPORT
+int Parrot_init_arg_indexes_and_sig_pmc(PARROT_INTERP,
+ ARGIN(Parrot_Context *ctx),
+ ARGIN_NULLOK(opcode_t *indexes),
+ ARGIN_NULLOK(PMC *sig_pmc),
+ ARGMOD(call_state_item *sti))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(5)
+ FUNC_MODIFIES(*sti);
+
+PARROT_EXPORT
+void Parrot_init_arg_nci(PARROT_INTERP,
+ ARGOUT(call_state *st),
+ ARGIN(const char *sig))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*st);
+
+PARROT_EXPORT
+int Parrot_init_arg_op(PARROT_INTERP,
+ ARGIN(Parrot_Context *ctx),
+ ARGIN_NULLOK(opcode_t *pc),
+ ARGIN(call_state_item *sti))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(4);
+
+PARROT_EXPORT
+int Parrot_init_arg_sig(PARROT_INTERP,
+ ARGIN(Parrot_Context *ctx),
+ ARGIN(const char *sig),
+ ARGIN_NULLOK(void *ap),
+ ARGMOD(call_state_item *sti))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(5)
+ FUNC_MODIFIES(*sti);
+
+PARROT_EXPORT
+void Parrot_init_ret_nci(PARROT_INTERP,
+ ARGOUT(call_state *st),
+ ARGIN(const char *sig))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*st);
+
+PARROT_EXPORT
+void parrot_pass_args(PARROT_INTERP,
+ ARGMOD(Parrot_Context *src_ctx),
+ ARGMOD(Parrot_Context *dest_ctx),
+ ARGMOD_NULLOK(opcode_t *src_indexes),
+ ARGMOD_NULLOK(opcode_t *dest_indexes),
+ arg_pass_t param_or_result)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ FUNC_MODIFIES(*src_ctx)
+ FUNC_MODIFIES(*dest_ctx)
+ FUNC_MODIFIES(*src_indexes)
+ FUNC_MODIFIES(*dest_indexes);
+
+PARROT_EXPORT
+void Parrot_pcc_invoke_from_sig_object(PARROT_INTERP,
+ ARGIN(PMC *sub_obj),
+ ARGIN(PMC *sig_obj))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_EXPORT
+void Parrot_pcc_invoke_method_from_c_args(PARROT_INTERP,
+ ARGIN(PMC* pmc),
+ ARGMOD(STRING *method_name),
+ ARGIN(const char *signature),
+ ...)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*method_name);
+
+PARROT_EXPORT
+void Parrot_pcc_invoke_sub_from_c_args(PARROT_INTERP,
+ ARGIN(PMC *sub_obj),
+ ARGIN(const char *sig),
+ ...)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3);
+
+PARROT_EXPORT
+void Parrot_PCCINVOKE(PARROT_INTERP,
+ ARGIN(PMC* pmc),
+ ARGMOD(STRING *method_name),
+ ARGIN(const char *signature),
+ ...)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*method_name);
+
+PARROT_EXPORT
+void Parrot_process_args(PARROT_INTERP,
+ ARGMOD(call_state *st),
+ arg_pass_t param_or_result)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ FUNC_MODIFIES(*st);
+
+PARROT_EXPORT
+int Parrot_store_arg(SHIM_INTERP, ARGIN(const call_state *st))
+ __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+opcode_t * parrot_pass_args_fromc(PARROT_INTERP,
+ ARGIN(const char *sig),
+ ARGMOD(opcode_t *dest),
+ ARGIN(Parrot_Context *old_ctxp),
+ va_list ap)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*dest);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+void * set_retval(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+FLOATVAL set_retval_f(PARROT_INTERP,
+ int sig_ret,
+ ARGIN(Parrot_Context *ctx))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+INTVAL set_retval_i(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PMC* set_retval_p(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+PARROT_CAN_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+STRING* set_retval_s(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
+#define ASSERT_ARGS_Parrot_convert_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(st)
+#define ASSERT_ARGS_Parrot_fetch_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(st)
+#define ASSERT_ARGS_Parrot_fetch_arg_nci __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(st)
+#define ASSERT_ARGS_Parrot_init_arg_indexes_and_sig_pmc \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx) \
+ || PARROT_ASSERT_ARG(sti)
+#define ASSERT_ARGS_Parrot_init_arg_nci __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(st) \
+ || PARROT_ASSERT_ARG(sig)
+#define ASSERT_ARGS_Parrot_init_arg_op __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx) \
+ || PARROT_ASSERT_ARG(sti)
+#define ASSERT_ARGS_Parrot_init_arg_sig __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx) \
+ || PARROT_ASSERT_ARG(sig) \
+ || PARROT_ASSERT_ARG(sti)
+#define ASSERT_ARGS_Parrot_init_ret_nci __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(st) \
+ || PARROT_ASSERT_ARG(sig)
+#define ASSERT_ARGS_parrot_pass_args __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(src_ctx) \
+ || PARROT_ASSERT_ARG(dest_ctx)
+#define ASSERT_ARGS_Parrot_pcc_invoke_from_sig_object \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(sub_obj) \
+ || PARROT_ASSERT_ARG(sig_obj)
+#define ASSERT_ARGS_Parrot_pcc_invoke_method_from_c_args \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(pmc) \
+ || PARROT_ASSERT_ARG(method_name) \
+ || PARROT_ASSERT_ARG(signature)
+#define ASSERT_ARGS_Parrot_pcc_invoke_sub_from_c_args \
+ __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(sub_obj) \
+ || PARROT_ASSERT_ARG(sig)
+#define ASSERT_ARGS_Parrot_PCCINVOKE __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(pmc) \
+ || PARROT_ASSERT_ARG(method_name) \
+ || PARROT_ASSERT_ARG(signature)
+#define ASSERT_ARGS_Parrot_process_args __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(st)
+#define ASSERT_ARGS_Parrot_store_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(st)
+#define ASSERT_ARGS_parrot_pass_args_fromc __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(sig) \
+ || PARROT_ASSERT_ARG(dest) \
+ || PARROT_ASSERT_ARG(old_ctxp)
+#define ASSERT_ARGS_set_retval __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_set_retval_f __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_set_retval_i __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_set_retval_p __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx)
+#define ASSERT_ARGS_set_retval_s __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(ctx)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
+/* HEADERIZER END: src/inter_call.c */
+
+#define ASSERT_SIG_PMC(sig) \
+ PARROT_ASSERT(PObj_is_PMC_TEST(sig)); \
+ PARROT_ASSERT((sig)->vtable->base_type == enum_class_FixedIntegerArray)
+
+/* XXX Remove interp from this */
+#define ADD_OP_VAR_PART(interp, seg, pc, n) do { \
+ if (*(pc) == PARROT_OP_set_args_pc || \
+ *(pc) == PARROT_OP_get_results_pc || \
+ *(pc) == PARROT_OP_get_params_pc || \
+ *(pc) == PARROT_OP_set_returns_pc) { \
+ PMC * const sig = (seg)->const_table->constants[(pc)[1]]->u.key; \
+ (n) += VTABLE_elements((interp), sig); \
+ } \
+} while (0)
+
+
+#endif /* PARROT_INTER_CALL_H_GUARD */
+
+/*
+ * Local variables:
+ * c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
Deleted: branches/kill_pccinvoke/include/parrot/inter_call.h
==============================================================================
--- branches/kill_pccinvoke/include/parrot/inter_call.h Mon Feb 9 23:33:51 2009 (r36510)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,378 +0,0 @@
-/* inter_call.h
- * Copyright (C) 2001-2008, The Perl Foundation.
- * SVN Info
- * $Id$
- * Overview:
- * Data Structure and Algorithms:
- * Call argument handling.
- * History:
- * Initial version by leo on 2005/07/22
- * Major changes by mdiep in April 2007
- * Notes:
- * References:
- * pdd03 - Calling Conventions
- */
-
-#ifndef PARROT_INTER_CALL_H_GUARD
-#define PARROT_INTER_CALL_H_GUARD
-
-typedef enum call_state_mode {
- /* argument fetching/putting modes */
- CALL_STATE_SIG = 0x100, /* runops, nci. In case we're interfacing with
- C and va_lists. */
- CALL_STATE_OP = 0x200, /* get_, set_ ops. In case we're interfacing
- with Parrot code and get the signature from
- call_state_item.u.op. */
- CALL_S_D_MASK = 0x300, /* src/dest mask */
-
- CALL_STATE_FLATTEN = 0x400 /* whether we are busy in a :flat argument */
-} call_state_mode;
-
-typedef struct call_state_item {
- /* We have one call_state_item for both the caller (source,
- arguments/returns) and the callee (destination, parameters/results). */
- int mode; /* this specifies:
- - where we get our arguments from / where we put
- our parameters (from C code or from set_*,get_*)
- - if we're in the middle of a :flat */
-
- union {
- struct { /* In case the caller (or callee? FIXME) is C */
- void *ap; /* a ptr to va_list */
- const char *sig; /* C string describing the type of each argument */
- } sig;
-
- struct { /* In case the caller/callee was Parrot code: */
- opcode_t *pc; /* array of 'indexes' for each argument:
- - if it's a constant, the constant number
- - if it's a register, the register number */
- PMC *signature; /* a PMC array holding a Call_bits_enum_t
- signature for each argument */
- } op;
- } u;
-
- Parrot_Context *ctx; /* the source or destination context */
- INTVAL used; /* src: whether this argument has been consumed
- * (or: whether the previous arg has?) */
- INTVAL i; /* number of args/params already processed */
- INTVAL n; /* number of args/params to match.
- * may include :slurpys and :flats */
- INTVAL sig; /* type of current arg/param
- * (counting from 1, the i'th) */
-
- /* We might encounter a :flat. */
- /* FIXME bgeron: is this used for :slurpys?
- * I can't find a reference in slurpy-filling code. */
-
- PMC *slurp; /* PMC in which to put the args we slurp up
- * or source from where to flatten */
- INTVAL slurp_i; /* index of :flat/:slurpy arg/param to match */
- INTVAL slurp_n; /* number of :flat/:slurpy args/params to match */
-} call_state_item;
-
-typedef struct call_state {
- call_state_item src;
- call_state_item dest;
- UnionVal val;
- int n_actual_args; /* arguments incl. flatten */
- int optionals; /* sum of optionals */
- int params; /* sum of params */
- int first_named; /* param idx of 1st named */
- UINTVAL named_done; /* bit mask, 1 if named was assigned */
- STRING *name; /* name of argument if any */
- PMC *key; /* to iterate a flattening hash */
-} call_state;
-
-typedef enum arg_pass_t {
- PARROT_PASS_PARAMS = 0x00,
- PARROT_PASS_RESULTS = 0x01
-} arg_pass_t;
-
-/* HEADERIZER BEGIN: src/inter_call.c */
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-
-PARROT_EXPORT
-void Parrot_convert_arg(PARROT_INTERP, ARGMOD(call_state *st))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*st);
-
-PARROT_EXPORT
-int Parrot_fetch_arg(PARROT_INTERP, ARGMOD(call_state *st))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*st);
-
-PARROT_EXPORT
-int Parrot_fetch_arg_nci(PARROT_INTERP, ARGMOD(call_state *st))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*st);
-
-PARROT_EXPORT
-int Parrot_init_arg_indexes_and_sig_pmc(PARROT_INTERP,
- ARGIN(Parrot_Context *ctx),
- ARGIN_NULLOK(opcode_t *indexes),
- ARGIN_NULLOK(PMC *sig_pmc),
- ARGMOD(call_state_item *sti))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*sti);
-
-PARROT_EXPORT
-void Parrot_init_arg_nci(PARROT_INTERP,
- ARGOUT(call_state *st),
- ARGIN(const char *sig))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*st);
-
-PARROT_EXPORT
-int Parrot_init_arg_op(PARROT_INTERP,
- ARGIN(Parrot_Context *ctx),
- ARGIN_NULLOK(opcode_t *pc),
- ARGIN(call_state_item *sti))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(4);
-
-PARROT_EXPORT
-int Parrot_init_arg_sig(PARROT_INTERP,
- ARGIN(Parrot_Context *ctx),
- ARGIN(const char *sig),
- ARGIN_NULLOK(void *ap),
- ARGMOD(call_state_item *sti))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(5)
- FUNC_MODIFIES(*sti);
-
-PARROT_EXPORT
-void Parrot_init_ret_nci(PARROT_INTERP,
- ARGOUT(call_state *st),
- ARGIN(const char *sig))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*st);
-
-PARROT_EXPORT
-void parrot_pass_args(PARROT_INTERP,
- ARGMOD(Parrot_Context *src_ctx),
- ARGMOD(Parrot_Context *dest_ctx),
- ARGMOD_NULLOK(opcode_t *src_indexes),
- ARGMOD_NULLOK(opcode_t *dest_indexes),
- arg_pass_t param_or_result)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*src_ctx)
- FUNC_MODIFIES(*dest_ctx)
- FUNC_MODIFIES(*src_indexes)
- FUNC_MODIFIES(*dest_indexes);
-
-PARROT_EXPORT
-void Parrot_pcc_invoke_from_sig_object(PARROT_INTERP,
- ARGIN(PMC *sub_obj),
- ARGIN(PMC *sig_obj))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
-
-PARROT_EXPORT
-void Parrot_pcc_invoke_method_from_c_args(PARROT_INTERP,
- ARGIN(PMC* pmc),
- ARGMOD(STRING *method_name),
- ARGIN(const char *signature),
- ...)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*method_name);
-
-PARROT_EXPORT
-void Parrot_pcc_invoke_sub_from_c_args(PARROT_INTERP,
- ARGIN(PMC *sub_obj),
- ARGIN(const char *sig),
- ...)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
-
-PARROT_EXPORT
-void Parrot_PCCINVOKE(PARROT_INTERP,
- ARGIN(PMC* pmc),
- ARGMOD(STRING *method_name),
- ARGIN(const char *signature),
- ...)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*method_name);
-
-PARROT_EXPORT
-void Parrot_process_args(PARROT_INTERP,
- ARGMOD(call_state *st),
- arg_pass_t param_or_result)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*st);
-
-PARROT_EXPORT
-int Parrot_store_arg(SHIM_INTERP, ARGIN(const call_state *st))
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-opcode_t * parrot_pass_args_fromc(PARROT_INTERP,
- ARGIN(const char *sig),
- ARGMOD(opcode_t *dest),
- ARGIN(Parrot_Context *old_ctxp),
- va_list ap)
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(*dest);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-void * set_retval(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3);
-
-FLOATVAL set_retval_f(PARROT_INTERP,
- int sig_ret,
- ARGIN(Parrot_Context *ctx))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3);
-
-INTVAL set_retval_i(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-PMC* set_retval_p(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING* set_retval_s(PARROT_INTERP, int sig_ret, ARGIN(Parrot_Context *ctx))
- __attribute__nonnull__(1)
- __attribute__nonnull__(3);
-
-#define ASSERT_ARGS_Parrot_convert_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(st)
-#define ASSERT_ARGS_Parrot_fetch_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(st)
-#define ASSERT_ARGS_Parrot_fetch_arg_nci __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(st)
-#define ASSERT_ARGS_Parrot_init_arg_indexes_and_sig_pmc \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx) \
- || PARROT_ASSERT_ARG(sti)
-#define ASSERT_ARGS_Parrot_init_arg_nci __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(st) \
- || PARROT_ASSERT_ARG(sig)
-#define ASSERT_ARGS_Parrot_init_arg_op __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx) \
- || PARROT_ASSERT_ARG(sti)
-#define ASSERT_ARGS_Parrot_init_arg_sig __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx) \
- || PARROT_ASSERT_ARG(sig) \
- || PARROT_ASSERT_ARG(sti)
-#define ASSERT_ARGS_Parrot_init_ret_nci __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(st) \
- || PARROT_ASSERT_ARG(sig)
-#define ASSERT_ARGS_parrot_pass_args __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(src_ctx) \
- || PARROT_ASSERT_ARG(dest_ctx)
-#define ASSERT_ARGS_Parrot_pcc_invoke_from_sig_object \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(sub_obj) \
- || PARROT_ASSERT_ARG(sig_obj)
-#define ASSERT_ARGS_Parrot_pcc_invoke_method_from_c_args \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(pmc) \
- || PARROT_ASSERT_ARG(method_name) \
- || PARROT_ASSERT_ARG(signature)
-#define ASSERT_ARGS_Parrot_pcc_invoke_sub_from_c_args \
- __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(sub_obj) \
- || PARROT_ASSERT_ARG(sig)
-#define ASSERT_ARGS_Parrot_PCCINVOKE __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(pmc) \
- || PARROT_ASSERT_ARG(method_name) \
- || PARROT_ASSERT_ARG(signature)
-#define ASSERT_ARGS_Parrot_process_args __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(st)
-#define ASSERT_ARGS_Parrot_store_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(st)
-#define ASSERT_ARGS_parrot_pass_args_fromc __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(sig) \
- || PARROT_ASSERT_ARG(dest) \
- || PARROT_ASSERT_ARG(old_ctxp)
-#define ASSERT_ARGS_set_retval __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx)
-#define ASSERT_ARGS_set_retval_f __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx)
-#define ASSERT_ARGS_set_retval_i __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx)
-#define ASSERT_ARGS_set_retval_p __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx)
-#define ASSERT_ARGS_set_retval_s __attribute__unused__ int _ASSERT_ARGS_CHECK = \
- PARROT_ASSERT_ARG(interp) \
- || PARROT_ASSERT_ARG(ctx)
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-/* HEADERIZER END: src/inter_call.c */
-
-#define ASSERT_SIG_PMC(sig) \
- PARROT_ASSERT(PObj_is_PMC_TEST(sig)); \
- PARROT_ASSERT((sig)->vtable->base_type == enum_class_FixedIntegerArray)
-
-/* XXX Remove interp from this */
-#define ADD_OP_VAR_PART(interp, seg, pc, n) do { \
- if (*(pc) == PARROT_OP_set_args_pc || \
- *(pc) == PARROT_OP_get_results_pc || \
- *(pc) == PARROT_OP_get_params_pc || \
- *(pc) == PARROT_OP_set_returns_pc) { \
- PMC * const sig = (seg)->const_table->constants[(pc)[1]]->u.key; \
- (n) += VTABLE_elements((interp), sig); \
- } \
-} while (0)
-
-
-#endif /* PARROT_INTER_CALL_H_GUARD */
-
-/*
- * Local variables:
- * c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
More information about the parrot-commits
mailing list