From: Gabor M. <me...@us...> - 2009-04-21 11:33:42
|
Update of /cvsroot/sbcl/sbcl/doc/internals In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv27588/doc/internals Modified Files: calling-convention.texinfo Log Message: 1.0.27.17: faster local calls on x86/x86-64 Instead of JMPing to TARGET, CALL a trampoline that saves the return pc and jumps. Although this is an incredibly stupid trick, the paired CALL/RET instructions are a big win. Index: calling-convention.texinfo =================================================================== RCS file: /cvsroot/sbcl/sbcl/doc/internals/calling-convention.texinfo,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- calling-convention.texinfo 21 Apr 2009 11:25:52 -0000 1.3 +++ calling-convention.texinfo 21 Apr 2009 11:33:38 -0000 1.4 @@ -212,9 +212,11 @@ @comment node-name, next, previous, up @section Additional Notes -The low-hanging fruit here is going to be changing every call and -return to use @code{CALL} and @code{RETURN} instructions instead of -@code{JMP} instructions. +The low-hanging fruit is going to be changing every call and return to +use @code{CALL} and @code{RETURN} instructions instead of @code{JMP} +instructions which is partly done on x86oids: a trampoline is +@code{CALL}ed and that @code{JMP}s to the target which is sufficient +to negate (most of?) the penalty. A more involved change would be to reduce the number of argument passing registers from three to two, which may be beneficial in terms |