X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86-64%2Fmacros.lisp;h=002f7de19994ed6de590d48a48679ef18da44b79;hb=673234cb910923d41badca51b383e3188f375691;hp=ccfc7d7e6562a6f871247a434527546b21ce3f0a;hpb=b6e9c116826f9461e2660d87c031fd1c4488e776;p=sbcl.git diff --git a/src/compiler/x86-64/macros.lisp b/src/compiler/x86-64/macros.lisp index ccfc7d7..002f7de 100644 --- a/src/compiler/x86-64/macros.lisp +++ b/src/compiler/x86-64/macros.lisp @@ -169,9 +169,13 @@ (allocation-tramp alloc-tn size)) (t (inst mov temp-reg-tn free-pointer) - (unless (and (tn-p size) (location= alloc-tn size)) - (inst mov alloc-tn size)) - (inst add alloc-tn temp-reg-tn) + (if (tn-p size) + (if (location= alloc-tn size) + (inst add alloc-tn temp-reg-tn) + (inst lea alloc-tn + (make-ea :qword :base temp-reg-tn :index size))) + (inst lea alloc-tn + (make-ea :qword :base temp-reg-tn :disp size))) (inst cmp end-addr alloc-tn) (inst jmp :be NOT-INLINE) (inst mov free-pointer alloc-tn)