diff --git a/compiler/x86/call.lisp b/compiler/x86/call.lisp index c2a4ec5bcc80398819629f4931681d7e917e81e6..1ef18baef1f6f07c0e2c1604ccf1738702d6d947 100644 --- a/compiler/x86/call.lisp +++ b/compiler/x86/call.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/call.lisp,v 1.15 1998/06/16 18:20:44 pw Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/call.lisp,v 1.16 1998/06/19 14:26:12 dtc Exp $") ;;; ;;; ********************************************************************** ;;; @@ -944,10 +944,9 @@ ;; For non-tail call, we have to save our frame pointer ;; and install the new frame pointer. We can't load stack ;; tns after this point. - `( - ;; Python doesn't seem to allocate a frame here which + `(;; Python doesn't seem to allocate a frame here which ;; doesn't leave room for the ofp/ret stuff. - + ;; The variable args are on the stack and become the ;; frame, but there may be <3 args and 3 stack slots ;; are assumed allocate on the call. So need to ensure @@ -959,10 +958,8 @@ ;; Save the fp (storew ebp-tn new-fp (- (1+ ocfp-save-offset))) - ;; Save the return address. (move ebp-tn new-fp) ; NB - now on new stack frame. - )) - ) + ))) (note-this-location vop :call-site) diff --git a/lisp/x86-assem.S b/lisp/x86-assem.S index 7c11fd22931356b94e8b2c46d21f65f42c3448b4..97e9c22f6bd2999369756326afc86aedba9e879b 100644 --- a/lisp/x86-assem.S +++ b/lisp/x86-assem.S @@ -1,6 +1,6 @@ ### x86-assem.S -*- Mode: Asm; -*- /** - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-assem.S,v 1.13 1998/03/21 08:15:03 dtc Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-assem.S,v 1.14 1998/06/19 14:26:13 dtc Exp $ * * Authors: Paul F. Werkowski <pw@snoopy.mv.com> * Douglas T. Crosher @@ -201,23 +201,12 @@ Ldone: /* alloc new frame */ mov %esp,%ebx # current sp marks start of new frame push %ebp # fp in save location S0 + sub $8,%esp # Ensure 3 slots are allocated, one above. mov %ebx,%ebp # switch to new frame - /* lra in the save location */ - pushl $Llra - - /* push the lra for backward compatibility */ - pushl $Llra - /* indirect the closure */ - jmp *CLOSURE_FUNCTION_OFFSET(%eax) + call *CLOSURE_FUNCTION_OFFSET(%eax) - .align align_8byte - .long type_ReturnPcHeader - nop - nop - nop -Llra: /* Multi-value return - blow off any extra values */ mov %ebx, %esp /* Single value return */