For the same piece of code, but in a function (so there is no implied
return value) the generated code is:
[ 0] load lr1, undefined(@k0)
[ 3] load lr2, undefined(@k0)
[ 6] load lr1, 5(@k1)
[ 9] mul tr0, lr1, lr1
[ 13] add lr2, tr0, lr1
[ 17] load tr0, undefined(@k0)
[ 20] ret tr0
Which is marginally better, although it would be preferable if we
could remove the unnecessary initialisation of lr1 and lr2
--Oliver
On May 23, 2008, at 5:05 AM, Oliver Hunt wrote:
Hi Gabor,
Without actually know which instructions you think are unnecessary
this is difficult to answer, but i'll see if i can guess which
you're interested in
9 instructions; 224 bytes at 0x69ca30; 2 locals (0 parameters); 2
temporaries
[ 0] load lr6, undefined(@k0)
[ 3] load lr7, undefined(@k0)
Technically we should be able to determine which of these loads are
actually necessary (eg. neither of them), but we currently don't
perform any data flow analysis so can't.
[ 6] load tr0, undefined(@k0)
...
[ 12] mov tr0, lr6
...
[ 23] mov tr0, lr7
[ 26] end tr0
These repeated moves into tr0 are to handle the implied return value
of global (and eval) code. Once again we should be able to remove
these, but currently do not perform enough analysis to work that out
These instructions are unnecessary, aren't they?
Or is there a technical explanation of them?
Not all of them are necessary, it's just easier for global/eval code
to be less efficient at the moment -- with sufficient work we could
get rid of the redundant stores, but currently there are other much
lower hanging fruit to work on (there are still optimisations that
we had added to the ast interpreter that aren't in squirrelfish) :D
Hope this helps,
Oliver
--Gabor
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev