Author: petdance
Date: Sat Jun 16 18:50:40 2007
New Revision: 19053
Modified:
trunk/include/parrot/inter_call.h
trunk/src/inter_call.c
Log:
Adding more NN restrictions
Modified: trunk/include/parrot/inter_call.h
==============================================================================
--- trunk/include/parrot/inter_call.h (original)
+++ trunk/include/parrot/inter_call.h Sat Jun 16 18:50:40 2007
@@ -70,7 +70,9 @@
/* HEADERIZER BEGIN: src/inter_call.c */
-PARROT_API void Parrot_convert_arg( Interp *interp, call_state *st /*NN*/ )
+PARROT_API void Parrot_convert_arg( Interp *interp /*NN*/,
+ call_state *st /*NN*/ )
+ __attribute__nonnull__(1)
__attribute__nonnull__(2);
PARROT_API int Parrot_fetch_arg( Interp *interp /*NN*/,
@@ -122,12 +124,17 @@
__attribute__nonnull__(2)
__attribute__nonnull__(3);
-PARROT_API void parrot_pass_args( Interp *interp,
- parrot_context_t *src_ctx,
- parrot_context_t *dest_ctx,
- opcode_t *src_indexes,
- opcode_t *dest_indexes,
- arg_pass_t param_or_result );
+PARROT_API void parrot_pass_args( Interp *interp /*NN*/,
+ parrot_context_t *src_ctx /*NN*/,
+ parrot_context_t *dest_ctx /*NN*/,
+ opcode_t *src_indexes /*NN*/,
+ opcode_t *dest_indexes /*NN*/,
+ arg_pass_t param_or_result )
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ __attribute__nonnull__(5);
PARROT_API void Parrot_PCCINVOKE( Interp* interp,
PMC* pmc,
@@ -135,37 +142,51 @@
const char *signature,
... );
-PARROT_API void Parrot_process_args( Interp *interp,
- call_state *st,
- arg_pass_t param_or_result );
+PARROT_API void Parrot_process_args( Interp *interp /*NN*/,
+ call_state *st /*NN*/,
+ arg_pass_t param_or_result )
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2);
-opcode_t * parrot_pass_args_fromc( Interp *interp,
+opcode_t * parrot_pass_args_fromc( Interp *interp /*NN*/,
const char *sig,
opcode_t *dest,
parrot_context_t *old_ctxp,
- va_list ap );
+ va_list ap )
+ __attribute__nonnull__(1);
int Parrot_store_arg( Interp *interp, call_state *st /*NN*/ )
__attribute__nonnull__(2);
-void* set_retval( Parrot_Interp interp, int sig_ret, parrot_context_t *ctx );
+void* set_retval( Interp *interp /*NN*/,
+ int sig_ret,
+ parrot_context_t *ctx /*NN*/ )
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
+
FLOATVAL set_retval_f( Interp *interp /*NN*/,
int sig_ret,
- parrot_context_t *ctx )
- __attribute__nonnull__(1);
+ parrot_context_t *ctx /*NN*/ )
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
INTVAL set_retval_i( Interp *interp /*NN*/,
int sig_ret,
- parrot_context_t *ctx )
- __attribute__nonnull__(1);
+ parrot_context_t *ctx /*NN*/ )
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
-PMC* set_retval_p( Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx )
- __attribute__nonnull__(1);
+PMC* set_retval_p( Interp *interp /*NN*/,
+ int sig_ret,
+ parrot_context_t *ctx /*NN*/ )
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
STRING* set_retval_s( Interp *interp /*NN*/,
int sig_ret,
- parrot_context_t *ctx )
- __attribute__nonnull__(1);
+ parrot_context_t *ctx /*NN*/ )
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(3);
/* HEADERIZER END: src/inter_call.c */
Modified: trunk/src/inter_call.c
==============================================================================
--- trunk/src/inter_call.c (original)
+++ trunk/src/inter_call.c Sat Jun 16 18:50:40 2007
@@ -684,7 +684,7 @@
}
static void
-too_few(Interp *interp, const call_state * const st, const char * const action)
+too_few(Interp *interp, const call_state *st /*NN*/, const char *action /*NN*/)
{
const int max_expected_args = st->params;
const int min_expected_args = max_expected_args - st->optionals;
@@ -699,7 +699,7 @@
}
static void
-too_many(Interp *interp, const call_state * const st, const char * const
action)
+too_many(Interp *interp, const call_state *st /*NN*/, const char *action
/*NN*/)
{
const int max_expected_args = st->params;
const int min_expected_args = max_expected_args - st->optionals;
@@ -714,7 +714,7 @@
}
static void
-null_val(int sig, call_state *st)
+null_val(int sig, call_state *st /*NN*/)
{
switch (sig & PARROT_ARG_TYPE_MASK) {
case PARROT_ARG_INTVAL:
@@ -736,18 +736,15 @@
* STRING* name, [INPS] actual_arg, int opt_arg_flag
*/
static void
-check_named(Interp *interp, call_state *st, const char *action)
+check_named(Interp *interp /*NN*/, call_state *st /*NN*/, const char *action
/*NN*/)
{
int i;
int n_named = -1;
for (i = st->first_named; i < st->dest.n; ++i) {
- INTVAL idx;
-
/* verify that a name exists */
- INTVAL sig = st->dest.sig = SIG_ITEM(st->dest.u.op.signature, i);
- if (sig & PARROT_ARG_NAME)
- {
+ const INTVAL sig = st->dest.sig = SIG_ITEM(st->dest.u.op.signature, i);
+ if (sig & PARROT_ARG_NAME) {
INTVAL arg_sig;
int last_name_pos;
/* if slurpy then no errors, return */
@@ -769,6 +766,7 @@
continue;
}
else if (arg_sig & PARROT_ARG_OPTIONAL) {
+ INTVAL idx;
null_val(arg_sig, st);
idx = st->dest.u.op.pc[i];
store_arg(st, idx);
@@ -782,9 +780,8 @@
continue;
}
else {
- STRING *param;
- idx = st->dest.u.op.pc[last_name_pos];
- param = PARROT_ARG_CONSTANT_ISSET(sig)
+ const INTVAL idx = st->dest.u.op.pc[last_name_pos];
+ STRING * const param = PARROT_ARG_CONSTANT_ISSET(sig)
? st->dest.ctx->constants[idx]->u.string
: CTX_REG_STR(st->dest.ctx, idx);
real_exception(interp, NULL, E_ValueError,
@@ -799,7 +796,7 @@
}
static void
-init_call_stats(call_state *st)
+init_call_stats(call_state *st /*NN*/)
{
st->n_actual_args = st->src.n; /* initial guess, adjusted for :flat args
*/
st->optionals = 0;
@@ -811,13 +808,13 @@
PARROT_API
void
-Parrot_process_args(Interp *interp, call_state *st, arg_pass_t param_or_result)
+Parrot_process_args(Interp *interp /*NN*/, call_state *st /*NN*/, arg_pass_t
param_or_result)
{
int has_arg, n_named;
int err_check = 1;
call_state_item *src, *dest;
- const char *action = (param_or_result == PARROT_PASS_RESULTS) ? "results"
: "params";
+ const char * const action = (param_or_result == PARROT_PASS_RESULTS) ?
"results" : "params";
/* Check if we should be throwing errors. This can be configured separately
* for parameters and return values. */
@@ -893,9 +890,9 @@
* 2nd: Positional :slurpy
*/
if (dest->sig & PARROT_ARG_SLURPY_ARRAY && !(dest->sig & PARROT_ARG_NAME))
{
- PMC *array = pmc_new(interp, enum_class_ResizablePMCArray);
+ PMC * const array = pmc_new(interp, enum_class_ResizablePMCArray);
- INTVAL idx = st->dest.u.op.pc[dest->i];
+ const INTVAL idx = st->dest.u.op.pc[dest->i];
assert(idx >= 0);
/* Must register this PMC or it may get collected when only the struct
* references it. */
@@ -975,7 +972,7 @@
PARROT_API
void
-Parrot_convert_arg(Interp *interp, call_state *st /*NN*/)
+Parrot_convert_arg(Interp *interp /*NN*/, call_state *st /*NN*/)
{
/* register key args have to be cloned */
if ((st->src.sig & PARROT_ARG_TYPE_MASK) == PARROT_ARG_PMC)
@@ -1027,8 +1024,8 @@
PARROT_API
void
-parrot_pass_args(Interp *interp, parrot_context_t *src_ctx, parrot_context_t
*dest_ctx,
- opcode_t *src_indexes, opcode_t *dest_indexes, arg_pass_t
param_or_result)
+parrot_pass_args(Interp *interp /*NN*/, parrot_context_t *src_ctx /*NN*/,
parrot_context_t *dest_ctx /*NN*/,
+ opcode_t *src_indexes /*NN*/, opcode_t *dest_indexes /*NN*/,
arg_pass_t param_or_result)
{
call_state st;
PMC* src_signature;
@@ -1069,7 +1066,7 @@
*/
opcode_t *
-parrot_pass_args_fromc(Interp *interp, const char *sig,
+parrot_pass_args_fromc(Interp *interp /*NN*/, const char *sig,
opcode_t *dest, parrot_context_t *old_ctxp, va_list ap)
{
call_state st;
@@ -1081,8 +1078,8 @@
}
static int
-set_retval_util(Interp *interp /*NN*/, const char *sig, parrot_context_t *ctx,
- call_state *st)
+set_retval_util(Interp *interp /*NN*/, const char *sig, parrot_context_t *ctx
/*NN*/,
+ call_state *st /*NN*/)
{
opcode_t * const src_pc = interp->current_returns;
int todo = Parrot_init_arg_op(interp, ctx, src_pc, &st->src);
@@ -1104,7 +1101,7 @@
* handle void, and pointer (PMC*, STRING*) return values
*/
void*
-set_retval(Parrot_Interp interp, int sig_ret, parrot_context_t *ctx)
+set_retval(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx /*NN*/)
{
call_state st;
@@ -1127,7 +1124,7 @@
*/
INTVAL
-set_retval_i(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx)
+set_retval_i(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx /*NN*/)
{
call_state st;
@@ -1144,7 +1141,7 @@
* handle FLOATVAL return value
*/
FLOATVAL
-set_retval_f(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx)
+set_retval_f(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx /*NN*/)
{
call_state st;
@@ -1161,7 +1158,7 @@
* handle STRING return value
*/
STRING*
-set_retval_s(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx)
+set_retval_s(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx /*NN*/)
{
call_state st;
@@ -1178,7 +1175,7 @@
* handle PMC return value
*/
PMC*
-set_retval_p(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx)
+set_retval_p(Interp *interp /*NN*/, int sig_ret, parrot_context_t *ctx /*NN*/)
{
call_state st;
@@ -1237,8 +1234,8 @@
case PARROT_ARG_PMC:
CTX_REG_PMC(ctx, reg_offset) = va_arg(*list, PMC*); break;
default:
- real_exception(interp, NULL, E_IndexError,
- "Parrot_PCCINVOKE: invalid reg type");
+ real_exception(interp, NULL, E_IndexError,
+ "Parrot_PCCINVOKE: invalid reg type");
}
}
}