| 52 | |
| 53 | == CallSignature PMC Refactor == |
| 54 | |
| 55 | * Refactor CallSignature to store arguments as a typed array, instead of as a PMC array. The types we know from the signature, so can store and retrieve the elements in a type-safe way. (Suggestion from IRC discussion was to use a union for the value storage.) This will reduce the number of PMCs created, since integer, number, and string arguments can be stored directly instead of boxed in PMCs. |
| 56 | |
| 57 | * Refactor CallSignature to store arguments directly in CallSignature data structure, instead of creating two additional PMCs (array for positionals and hash for named) to hold them. This refactor can be done at the same time as the typed array refactor. |
| 58 | |
| 59 | * Refactor CallSignature to no longer store returns at all (after the args/returns unification above). Returns will reuse the arg/param call signature object, or create a new one. |
| 60 | |
| 61 | * Refactor CallSignature to merge it with Context, only need one PMC to hold all that information. (Question: what's the implication of this combined with the previous refactor? Do returns get passed out in the same struct members that the arguments came in on?) |