This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMU Common Lisp".
The branch, master has been updated via 99020b36cd96dae59ba3638d01c69d18ee9edcd1 (commit) from f9f78a47c59d5cbe762a8a571b66b788b27e45ff (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 99020b36cd96dae59ba3638d01c69d18ee9edcd1 Author: Raymond Toy toy.raymond@gmail.com Date: Mon Jul 16 19:43:14 2012 -0700
Clean up not-inline-allocation.
src/lisp/x86-assem.S: o Remove the (now) unused alloc_to_<reg> functions.
src/compiler/x86/macros.lisp: o Simplify the not-inline-allocation to use the same routines as inline allocation.
diff --git a/src/compiler/x86/macros.lisp b/src/compiler/x86/macros.lisp index 9d955f4..21b68e4 100644 --- a/src/compiler/x86/macros.lisp +++ b/src/compiler/x86/macros.lisp @@ -183,31 +183,20 @@ (defun not-inline-allocation (alloc-tn size) ;; C call to allocate via dispatch routines. Each destination has a ;; special entry point. The size may be a register or a constant. - (ecase (tn-offset alloc-tn) + (load-size alloc-tn alloc-tn size) + (case (tn-offset alloc-tn) (#.eax-offset - (load-size alloc-tn eax-tn size) - (inst call (make-fixup (extern-alien-name "alloc_to_eax") + (inst call (make-fixup (extern-alien-name #-sse2 "alloc_overflow_x87" + #+sse2 "alloc_overflow_sse2") :foreign))) - (#.ecx-offset - (load-size alloc-tn ecx-tn size) - (inst call (make-fixup (extern-alien-name "alloc_to_ecx") - :foreign))) - (#.edx-offset - (load-size alloc-tn edx-tn size) - (inst call (make-fixup (extern-alien-name "alloc_to_edx") - :foreign))) - (#.ebx-offset - (load-size alloc-tn ebx-tn size) - (inst call (make-fixup (extern-alien-name "alloc_to_ebx") - :foreign))) - (#.esi-offset - (load-size alloc-tn esi-tn size) - (inst call (make-fixup (extern-alien-name "alloc_to_esi") - :foreign))) - (#.edi-offset - (load-size alloc-tn edi-tn size) - (inst call (make-fixup (extern-alien-name "alloc_to_edi") - :foreign)))) + (t + (inst push eax-tn) ; Save any value in eax + (inst mov eax-tn alloc-tn) + (inst call (make-fixup (extern-alien-name #-sse2 "alloc_overflow_x87" + #+sse2 "alloc_overflow_sse2") + :foreign)) + (inst mov alloc-tn eax-tn) ; Save allocated address in alloc-tn + (inst pop eax-tn))) (values))
;;; diff --git a/src/lisp/x86-assem.S b/src/lisp/x86-assem.S index 46640fa..9583e84 100644 --- a/src/lisp/x86-assem.S +++ b/src/lisp/x86-assem.S @@ -459,101 +459,6 @@ ENDFUNC(fastcopy16)
/* - Allocate bytes and return the start of the allocated space - in the specified destination register. - - In the general case the size will be in the destination register. - - All registers must be preserved except the destination. - The C conventions will preserve ebx, esi, edi, and ebp. - So only eax, ecx, and edx need special care here. */ - -FUNCDEF(alloc_to_eax) - STACK_PROLOGUE(12) - movl %ecx, 8(%esp) # Save ecx and edx as C could destroy them. - movl %edx, 4(%esp) - movl %eax, (%esp) # Push the size - call GNAME(alloc) - movl 4(%esp), %edx # Restore ecx and edx. - movl 8(%esp), %ecx - STACK_EPILOGUE - ret -ENDFUNC(alloc_to_eax) - -FUNCDEF(alloc_to_ecx) - STACK_PROLOGUE(12) - movl %eax, 8(%esp) # Save eax and edx as C could destroy them. - movl %edx, 4(%esp) - movl %ecx, (%esp) # Push the size - call GNAME(alloc) - movl %eax,%ecx # setup the destination. - movl 4(%esp), %edx # Restore eax and edx. - movl 8(%esp), %eax - STACK_EPILOGUE - ret -ENDFUNC(alloc_to_ecx) - -FUNCDEF(alloc_to_edx) - STACK_PROLOGUE(12) - movl %eax, 8(%esp) # Save eax and ecx as C could destroy them. - movl %ecx, 4(%esp) - movl %edx, (%esp) # Push the size - call GNAME(alloc) - movl %eax,%edx # setup the destination. - movl 4(%esp), %ecx # Restore eax and ecx. - movl 8(%esp), %eax - STACK_EPILOGUE - ret -ENDFUNC(alloc_to_edx) - -FUNCDEF(alloc_to_ebx) - STACK_PROLOGUE(16) - movl %eax, 12(%esp) # Save eax, ecx, and edx as C could destroy them. - movl %ecx, 8(%esp) - movl %edx, 4(%esp) - movl %ebx, (%esp) # Push the size - call GNAME(alloc) - movl %eax,%ebx # setup the destination. - movl 4(%esp), %edx # Restore eax, ecx and edx. - movl 8(%esp), %ecx - movl 12(%esp), %eax - STACK_EPILOGUE - ret -ENDFUNC(alloc_to_ebx) - -FUNCDEF(alloc_to_esi) - STACK_PROLOGUE(16) - movl %eax, 12(%esp) # Save eax, ecx, and edx as C could destroy them. - movl %ecx, 8(%esp) - movl %edx, 4(%esp) - movl %esi, (%esp) # Push the size - call GNAME(alloc) - movl %eax,%esi # setup the destination. - movl 4(%esp), %edx # Restore eax, ecx and edx. - movl 8(%esp), %ecx - movl 12(%esp), %eax - STACK_EPILOGUE - ret -ENDFUNC(alloc_to_esi) - -FUNCDEF(alloc_to_edi) - STACK_PROLOGUE(16) - movl %eax, 12(%esp) # Save eax, ecx, and edx as C could destroy them. - movl %ecx, 8(%esp) - movl %edx, 4(%esp) - movl %edi, (%esp) # Push the size - call GNAME(alloc) - movl %eax,%edi # setup the destination. - movl 4(%esp), %edx # Restore eax, ecx and edx. - movl 8(%esp), %ecx - movl 12(%esp), %eax - STACK_EPILOGUE - ret -ENDFUNC(alloc_to_edi) - -#ifdef GENCGC - -/* * alloc_overflow_x87 and alloc_overflow_sse2 must not be called from * C because it doesn't follow C conventions. * @@ -595,8 +500,6 @@ FUNCDEF(alloc_overflow_sse2) ret ENDFUNC(alloc_overflow_sse2) -#endif /* GENCGC */ - #ifdef LINKAGE_TABLE
/* Call into C code to resolve a linkage entry. The initial code in the
-----------------------------------------------------------------------
Summary of changes: src/compiler/x86/macros.lisp | 35 +++++---------- src/lisp/x86-assem.S | 97 ------------------------------------------ 2 files changed, 12 insertions(+), 120 deletions(-)
hooks/post-receive