[svn:parrot] r44894 - trunk/src/pmc
chromatic at svn.parrot.org
chromatic at svn.parrot.org
Fri Mar 12 03:53:09 UTC 2010
Author: chromatic
Date: Fri Mar 12 03:53:04 2010
New Revision: 44894
URL: https://trac.parrot.org/parrot/changeset/44894
Log:
[PMC] Tightened the code in CallContext's get_pmc VTABLE; no functional changes.
Modified:
trunk/src/pmc/callcontext.pmc
Modified: trunk/src/pmc/callcontext.pmc
==============================================================================
--- trunk/src/pmc/callcontext.pmc Fri Mar 12 03:38:36 2010 (r44893)
+++ trunk/src/pmc/callcontext.pmc Fri Mar 12 03:53:04 2010 (r44894)
@@ -695,39 +695,27 @@
GET_ATTR_num_positionals(INTERP, SELF, num_positionals);
type_tuple = Parrot_pmc_new_init_int(interp,
- enum_class_ResizableIntegerArray, num_positionals);
+ enum_class_FixedIntegerArray, num_positionals);
while (c) {
+ INTVAL type;
+
switch (CELL_TYPE_MASK(c)) {
- case INTCELL:
- VTABLE_set_integer_keyed_int(interp, type_tuple,
- i, enum_type_INTVAL);
- break;
- case FLOATCELL:
- VTABLE_set_integer_keyed_int(interp, type_tuple,
- i, enum_type_FLOATVAL);
- break;
- case STRINGCELL:
- VTABLE_set_integer_keyed_int(interp, type_tuple,
- i, enum_type_STRING);
- break;
+ case INTCELL: type = enum_type_INTVAL; break;
+ case FLOATCELL: type = enum_type_FLOATVAL; break;
+ case STRINGCELL: type = enum_type_STRING; break;
case PMCCELL:
- {
- PMC *pmc_arg = CELL_PMC(c);
- if (PMC_IS_NULL(pmc_arg))
- VTABLE_set_integer_keyed_int(interp, type_tuple,
- i, enum_type_PMC);
- else
- VTABLE_set_integer_keyed_int(interp, type_tuple, i,
- VTABLE_type(interp, pmc_arg));
+ type = PMC_IS_NULL(CELL_PMC(c))
+ ? enum_type_PMC
+ : VTABLE_type(interp, CELL_PMC(c));
break;
- }
default:
Parrot_ex_throw_from_c_args(interp, NULL,
EXCEPTION_INVALID_OPERATION,
"Multiple Dispatch: invalid argument type!");
}
+ VTABLE_set_integer_keyed_int(interp, type_tuple, i, type);
i++;
c = NEXT_CELL(c);
}
@@ -738,6 +726,7 @@
return type_tuple;
}
+
/*
=item C<void set_attr_str(STRING *key, PMC *value)>
More information about the parrot-commits
mailing list