GSoC 2014 - Report 6

Hey everyone!

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...);
and
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! :)