[svn:parrot] r44940 - branches/pcc_hackathon_6Mar10/src/call
chromatic at svn.parrot.org
chromatic at svn.parrot.org
Mon Mar 15 17:47:41 UTC 2010
Author: chromatic
Date: Mon Mar 15 17:47:38 2010
New Revision: 44940
URL: https://trac.parrot.org/parrot/changeset/44940
Log:
[PCC] Tided code; no functional changes.
Modified:
branches/pcc_hackathon_6Mar10/src/call/args.c
Modified: branches/pcc_hackathon_6Mar10/src/call/args.c
==============================================================================
--- branches/pcc_hackathon_6Mar10/src/call/args.c Mon Mar 15 14:47:12 2010 (r44939)
+++ branches/pcc_hackathon_6Mar10/src/call/args.c Mon Mar 15 17:47:38 2010 (r44940)
@@ -496,9 +496,9 @@
ARGIN(PMC * const raw_sig), ARGIN(opcode_t * const raw_args))
{
ASSERT_ARGS(Parrot_pcc_build_sig_object_from_op)
- PMC *call_object;
PMC * const ctx = CURRENT_CONTEXT(interp);
- PMC *new_sig = PMCNULL;
+ PMC *new_sig = PMCNULL;
+ PMC *call_object;
INTVAL *int_array;
INTVAL arg_count;
INTVAL arg_index = 0;
@@ -1015,24 +1015,25 @@
}
/* First iterate over positional args and positional parameters. */
- arg_index = 0;
- param_index = 0;
+ arg_index = 0;
+ param_index = 0;
positional_args = VTABLE_elements(interp, call_object);
+
while (1) {
INTVAL param_flags;
/* Check if we've used up all the parameters. */
if (param_index >= param_count) {
- if (arg_index >= positional_args) {
- /* We've used up all the arguments and parameters, we're done. */
+ /* We've used up all arguments and parameters; we're done. */
+ if (arg_index >= positional_args)
break;
- }
else if (err_check) {
/* We've used up all the parameters, but have extra positional
* args left over. */
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many positional arguments: %d passed, %d expected",
- positional_args, param_index);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too many positional arguments: %d passed, %d expected",
+ positional_args, param_index);
}
return;
}
@@ -1048,21 +1049,23 @@
if (param_flags & PARROT_ARG_SLURPY_ARRAY) {
PMC *collect_positional;
- /* Can't handle named slurpy here, go on to named argument handling. */
+ /* Can't handle named slurpy here, go to named argument handling */
if (param_flags & PARROT_ARG_NAME)
break;
if (named_count > 0)
Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION,
- "named parameters must follow all positional parameters");
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must follow all positional parameters");
collect_positional = Parrot_pmc_new(interp,
- Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
+ Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
+
for (; arg_index < positional_args; arg_index++) {
VTABLE_push_pmc(interp, collect_positional,
- VTABLE_get_pmc_keyed_int(interp, call_object, arg_index));
+ VTABLE_get_pmc_keyed_int(interp, call_object, arg_index));
}
+
*accessor->pmc(interp, arg_info, param_index) = collect_positional;
param_index++;
break; /* Terminate the positional arg loop. */
@@ -1075,11 +1078,13 @@
if (param_flags & PARROT_ARG_NAME) {
STRING *param_name;
if (!(param_flags & PARROT_ARG_STRING))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must have a name specified");
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must have a name specified");
param_name = PARROT_ARG_CONSTANT_ISSET(param_flags)
- ? accessor->string_constant(interp, arg_info, param_index)
- : *accessor->string(interp, arg_info, param_index);
+ ? accessor->string_constant(interp, arg_info, param_index)
+ : *accessor->string(interp, arg_info, param_index);
+
named_count++;
param_index++;
if (param_index >= param_count)
@@ -1093,10 +1098,10 @@
VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
}
- else if (named_count > 0) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must follow all positional parameters");
- }
+ else if (named_count > 0)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must follow all positional parameters");
/* Check for :lookahead parameter goes here. */
@@ -1104,23 +1109,23 @@
switch (PARROT_ARG_TYPE_MASK_MASK(param_flags)) {
case PARROT_ARG_INTVAL:
*accessor->intval(interp, arg_info, param_index) =
- VTABLE_get_integer_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_integer_keyed_int(interp, call_object, arg_index);
break;
case PARROT_ARG_FLOATVAL:
*accessor->numval(interp, arg_info, param_index) =
- VTABLE_get_number_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_number_keyed_int(interp, call_object, arg_index);
break;
case PARROT_ARG_STRING:
*accessor->string(interp, arg_info, param_index) =
- VTABLE_get_string_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_string_keyed_int(interp, call_object, arg_index);
break;
case PARROT_ARG_PMC:
*accessor->pmc(interp, arg_info, param_index) =
- VTABLE_get_pmc_keyed_int(interp, call_object, arg_index);
+ VTABLE_get_pmc_keyed_int(interp, call_object, arg_index);
break;
default:
Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid parameter type");
+ EXCEPTION_INVALID_OPERATION, "invalid parameter type");
break;
}
@@ -1166,9 +1171,11 @@
break;
if (err_check)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too few positional arguments: %d passed, %d (or more) expected",
- positional_args, param_index + 1);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too few positional arguments: "
+ "%d passed, %d (or more) expected",
+ positional_args, param_index + 1);
}
/* Go on to next argument and parameter. */
@@ -1178,8 +1185,8 @@
/* Now iterate over the named arguments and parameters. */
while (1) {
- STRING *param_name = NULL;
- INTVAL param_flags;
+ STRING *param_name = NULL;
+ INTVAL param_flags;
/* Check if we've used up all the parameters. We'll check for leftover
* named args after the loop. */
@@ -1189,10 +1196,10 @@
param_flags = raw_params[param_index];
/* All remaining parameters must be named. */
- if (!(param_flags & PARROT_ARG_NAME)) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must follow all positional parameters");
- }
+ if (!(param_flags & PARROT_ARG_NAME))
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must follow all positional parameters");
if (arg_index < positional_args) {
PMC *arg_sig;
@@ -1201,13 +1208,15 @@
/* We've used up all the positional parameters, but have extra
* positional args left over. */
- if (VTABLE_get_integer_keyed_int(interp, arg_sig, arg_index) & PARROT_ARG_NAME) {
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named arguments must follow all positional arguments");
- }
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many positional arguments: %d passed, %d expected",
- positional_args, param_index);
+ if (VTABLE_get_integer_keyed_int(interp, arg_sig, arg_index) & PARROT_ARG_NAME)
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named arguments must follow all positional arguments");
+
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too many positional arguments: %d passed, %d expected",
+ positional_args, param_index);
}
/* Collected ("slurpy") named parameter */
@@ -1215,6 +1224,7 @@
PMC * const collect_named = Parrot_pmc_new(interp,
Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
PMC * const named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
+
if (!PMC_IS_NULL(named_arg_list)) {
INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
INTVAL named_arg_index;
@@ -1224,12 +1234,13 @@
STRING * const name = VTABLE_get_string_keyed_int(interp,
named_arg_list, named_arg_index);
- if ((PMC_IS_NULL(named_used_list)) ||
- !VTABLE_exists_keyed_str(interp, named_used_list, name)) {
+ if ((PMC_IS_NULL(named_used_list))
+ || !VTABLE_exists_keyed_str(interp, named_used_list, name)) {
VTABLE_set_pmc_keyed_str(interp, collect_named, name,
VTABLE_get_pmc_keyed_str(interp, call_object, name));
/* Mark the name as used, cannot be filled again. */
- if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
+ /* named_used_list only created if needed. */
+ if (PMC_IS_NULL(named_used_list))
named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
VTABLE_set_integer_keyed_str(interp, named_used_list, name, 1);
named_count++;
@@ -1243,11 +1254,13 @@
/* Store the name. */
if (!(param_flags & PARROT_ARG_STRING))
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "named parameters must have a name specified");
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "named parameters must have a name specified");
+
param_name = PARROT_ARG_CONSTANT_ISSET(param_flags)
- ? accessor->string_constant(interp, arg_info, param_index)
- : *accessor->string(interp, arg_info, param_index);
+ ? accessor->string_constant(interp, arg_info, param_index)
+ : *accessor->string(interp, arg_info, param_index);
if (!STRING_IS_NULL(param_name)) {
/* The next parameter is the actual value. */
@@ -1260,7 +1273,8 @@
if (VTABLE_exists_keyed_str(interp, call_object, param_name)) {
/* Mark the name as used, cannot be filled again. */
- if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
+ /* named_used_list only created if needed. */
+ if (PMC_IS_NULL(named_used_list))
named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
named_count++;
@@ -1269,23 +1283,23 @@
switch (PARROT_ARG_TYPE_MASK_MASK(param_flags)) {
case PARROT_ARG_INTVAL:
*accessor->intval(interp, arg_info, param_index) =
- VTABLE_get_integer_keyed_str(interp, call_object, param_name);
+ VTABLE_get_integer_keyed_str(interp, call_object, param_name);
break;
case PARROT_ARG_FLOATVAL:
*accessor->numval(interp, arg_info, param_index) =
- VTABLE_get_number_keyed_str(interp, call_object, param_name);
+ VTABLE_get_number_keyed_str(interp, call_object, param_name);
break;
case PARROT_ARG_STRING:
*accessor->string(interp, arg_info, param_index) =
- VTABLE_get_string_keyed_str(interp, call_object, param_name);
+ VTABLE_get_string_keyed_str(interp, call_object, param_name);
break;
case PARROT_ARG_PMC:
*accessor->pmc(interp, arg_info, param_index) =
- VTABLE_get_pmc_keyed_str(interp, call_object, param_name);
+ VTABLE_get_pmc_keyed_str(interp, call_object, param_name);
break;
default:
Parrot_ex_throw_from_c_args(interp, NULL,
- EXCEPTION_INVALID_OPERATION, "invalid parameter type");
+ EXCEPTION_INVALID_OPERATION, "invalid parameter type");
break;
}
@@ -1305,8 +1319,8 @@
assign_default_param_value(interp, param_index, param_flags,
arg_info, accessor);
- /* Mark the option flag for the parameter to FALSE, it was filled
- * with a default value. */
+ /* Mark the option flag for the parameter to FALSE;
+ * it was filled with a default value. */
if (param_index + 1 < param_count) {
const INTVAL next_param_flags = raw_params[param_index + 1];
@@ -1316,13 +1330,15 @@
}
}
}
- /* We don't have an argument for the parameter, and it's not optional,
- * so it's an error. */
+
+ /* We don't have an argument for the parameter, and it's not
+ * optional, so it's an error. */
else {
if (err_check)
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too few named arguments: no argument for required parameter '%S'",
- param_name);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too few named arguments: "
+ "no argument for required parameter '%S'", param_name);
}
}
@@ -1339,23 +1355,27 @@
return;
named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
+
if (!PMC_IS_NULL(named_arg_list)) {
const INTVAL named_arg_count = VTABLE_elements(interp, named_arg_list);
if (PMC_IS_NULL(named_used_list))
return;
- /* The 'return' above is a temporary hack to duplicate an old bug,
- * and will be replaced by the exception below at the next
+
+ /* The 'return' above is a temporary hack to duplicate an old
+ * bug, and will be replaced by the exception below at the next
* deprecation point, see TT #1103
- Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
- "too many named arguments: %d passed, 0 used",
- named_arg_count);
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_INVALID_OPERATION,
+ "too many named arguments: %d passed, 0 used",
+ named_arg_count);
*/
+
if (named_arg_count > named_count) {
/* At this point we know we have named arguments that weren't
* assigned to parameters. We're going to throw an exception
- * anyway, so spend a little extra effort to tell the user *which*
- * named argument is extra. */
+ * anyway, so spend a little extra effort to tell the user
+ * *which* named argument is extra. */
INTVAL named_arg_index;
/* Named argument iteration. */
@@ -1375,6 +1395,7 @@
}
}
+
/*
=item C<static void assign_default_param_value(PARROT_INTERP, INTVAL
More information about the parrot-commits
mailing list