I am happy to announce that my task #2 (https://github.com/parrot/parrot/issues/1080) is now complete and the issue has been closed.
To give a gist of what has been done -
The goal was to optimize the pmc2c compiler, more specifically the PCCMETHODs, by avoiding the run-time overhead of having to call two costly C functions per method call. These C functions were:-
Parrot_pcc_fill_params_from_c_args(interp, _call_object, sig, &_self, args...);
Parrot_pcc_set_call_from_c_args(interp, _call_object, rettype, result);
Our work now omits these calls and also creates fewer temporary PMCs and fewer branches.
My work included implementing a replacement code for Parrot_pcc_set_call_from_c_args() and I also came up with a prototype for Parrot_pcc_fill_params_from_c_args(). However, the latter required additional considerations and very tedious work to deal with the :optional-type signatures. Thankfully, rurban handled this part and also patched-up my code.
Through this task, we have got a performance improvement of around 0.5% for the code and 4%-10% per method call, although we were expecting much more.
I am currently testing the work for bugs and would be starting with a new task this week.
That's all folks! :)