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 | | |