| 5 | | * Add a :lookahead option for Sub parameters. A lookahead parameter takes a named argument preferrably, takes a positional otherwise. |
| | 5 | * There's a huge hodge-podge of functions that do basically the same thing. Trim these down to a logical set that handle the basic cases. (calling from PIR, calling from C, calling from a CallSignature PMC). |
| | 6 | |
| | 7 | * Converge on one calling convention for all invocation. Different entry points for calling from PIR, C, or CallSignature PMC. Different exit points, depending on whether the call is a Sub (Closure, Contintuation, etc) or a CFunction. But same code pattern, and same core routines for all. |
| | 8 | |
| | 9 | * Refactor to remove code duplication between the various dispatch systems. |
| | 10 | |
| | 11 | * Standardize on PCC-style signature description strings throughout the system, instead of different signature description strings for different calling APIs. Excludes NCI signatures. |
| | 12 | |
| | 13 | * Enable dispatching by CallSignature PMC everywhere. |
| | 14 | |
| | 15 | * Add adverb modifier "i" to signature string for an invocant. |
| | 16 | |
| | 17 | * Add lots of documentation about signature strings, CallSignature, dispatch, etc |
| | 18 | |
| | 19 | * Change the default vtable function generator for Object PMC to generate 'Parrot_pcc_invoke_sub_from_c_args' calls instead of 'Parrot_runops_fromc_args*' calls. |
| | 20 | |
| | 21 | == Invoke Refactor == |
| | 22 | |
| | 23 | * VTABLE_invoke is inconsistent between different sub-like PMCs. For most subs it simply sets up the environment for invocation, and selects the first opcode instruction of the sub as the next 'opcode_t *' for 'runops'. For NCI subs it actually invokes the function pointer. The disjoint means that NCI subs can't be invoked from C argument lists the same way as all the other subs (because the regular C argument list passing can only happen *after* VTABLE_invoke has been called to set up the environment, but NCI requires the arguments to be passed *before* the call to VTABLE_invoke). |
| | 24 | |
| | 25 | * VTABLE_invoke can't really be overridden from PIR, because it requires direct access to low-level interpreter data structures. See #103 |
| | 26 | |
| | 27 | == Lookahead Refactor == |
| | 28 | |
| | 29 | * Add a :lookahead option for Sub parameters. A lookahead parameter takes a named argument preferably, takes a positional otherwise. |
| | 30 | |
| | 31 | == Params/Returns Unification Refactor == |
| | 32 | |
| | 33 | * Refactor PASM calling code so that set_returns is called before get_results |
| | 34 | |
| | 35 | * Unify argument passing and returns passing to use a single codepath. |
| | 36 | |
| | 37 | * Optimize PCC dispatch (refactor to slim down the code). |
| | 38 | |
| | 39 | == Misc or Old items == |
| 11 | | * There's a huge hodge-podge of functions that do basically the same thing. Trim these down to a logical set that handle the basic cases. (calling from PIR, calling from C, calling from a CallSignature PMC). |
| 12 | | |
| 13 | | * Converge on one calling convention for all invocation. Different entry points for calling from PIR, C, or CallSignature PMC. Different exit points, depending on whether the call is a Sub (Closure, Contintuation, etc) or a CFunction. But same code pattern, and same core routines for all. |
| 14 | | |
| 15 | | * VTABLE_invoke is inconsistent between different sub-like PMCs. For most subs it simply sets up the environment for invocation, and selects the first opcode instruction of the sub as the next 'opcode_t *' for 'runops'. For NCI subs it actually invokes the function pointer. The disjoint means that NCI subs can't be invoked from C argument lists the same way as all the other subs (because the regular C argument list passing can only happen *after* VTABLE_invoke has been called to set up the environment, but NCI requires the arguments to be passed *before* the call to VTABLE_invoke). |
| 16 | | |
| 17 | | * VTABLE_invoke can't really be overridden from PIR, because it requires direct access to low-level interpreter data structures. See #103 |
| 18 | | |
| 19 | | * Standardize on PCC-style signature description strings throughout the system (instead of different signature description strings for NCI, PCC, and regular subs). |
| 20 | | |
| 21 | | * Refactor to remove code duplication between the various dispatch systems. |
| 22 | | |
| 23 | | * Optimize PCC dispatch (refactor to slim down the code). |
| 24 | | |
| 25 | | * Enable dispatching by CallSignature PMC everywhere. |
| 26 | | |