hi! I just experiment with squirrelfish bytecode generating, and I think I find something strange. After each mov instruction, where the source is a constant register, there is an other mov instruction, which moves the previous destination to r0. I think these instructions are useless. Is there any reason why are they generated? There is an example: js: var r_15; var r_16; var r_17; var r_18; r_15 = 1; r_16 = 2; r_17 = 3; r_17 = 4; generated: [ 0] enter [ 1] mov r-15, r1073741824 [ 4] mov r-16, r1073741824 [ 7] mov r-17, r1073741824 [ 10] mov r-18, r1073741824 [ 13] mov r0, r1073741824 [ 16] mov r-15, r1073741825 [ 19] mov r0, r-15 [ 22] mov r-16, r1073741826 [ 25] mov r0, r-16 [ 28] mov r-17, r1073741827 [ 31] mov r0, r-17 [ 34] mov r-17, r1073741828 [ 37] mov r0, r-17 [ 40] end r0 -Robert
For "program" and "eval" code the result of the execution is result of the last evaluated expression. To deal with this we somewhat pessimistically always copy results to the return register. We could theoretically improve this, but some testing i did a while ago (that broke correctness by simply returning undefined for program and eval code) did not impact performance in any real way. If you have an example that you believe is impacted by this pessimism it would be great if you could file a bug at http://bugs.webkit.org --Oliver On Aug 5, 2009, at 8:35 AM, Ágoston Róbert wrote:
hi!
I just experiment with squirrelfish bytecode generating, and I think I find something strange. After each mov instruction, where the source is a constant register, there is an other mov instruction, which moves the previous destination to r0. I think these instructions are useless. Is there any reason why are they generated?
There is an example: js:
var r_15; var r_16; var r_17; var r_18; r_15 = 1; r_16 = 2; r_17 = 3; r_17 = 4;
generated: [ 0] enter [ 1] mov r-15, r1073741824 [ 4] mov r-16, r1073741824 [ 7] mov r-17, r1073741824 [ 10] mov r-18, r1073741824 [ 13] mov r0, r1073741824 [ 16] mov r-15, r1073741825 [ 19] mov r0, r-15 [ 22] mov r-16, r1073741826 [ 25] mov r0, r-16 [ 28] mov r-17, r1073741827 [ 31] mov r0, r-17 [ 34] mov r-17, r1073741828 [ 37] mov r0, r-17 [ 40] end r0
-Robert _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
participants (2)
-
Oliver Hunt
-
Ágoston Róbert