compiling for x86 . was Re: [Maxima] Notes on implementation style



for what it is worth, copyi  in allegro CL is, in assembler,
cl-user(9): (disassemble 'copyi)
;; disassembly of #<Function copyi>
;; formals: l

;; code start: #x20d047e4:
    0: 55          pushl	ebp
    1: 8b ec       movl	ebp,esp
    3: 56          pushl	esi
    4: 83 ec 34    subl	esp,$52
    7: 3b f8       cmpl	edi,eax
    9: 74 24       jz	47
   11: 89 45 e4    movl	[ebp-28],eax    ; excl::local-0
   14: 8b 40 ef    movl	eax,[eax-17]
   17: 8b d7       movl	edx,edi
   19: ff 57 2b    call	*[edi+43]       ; sys::qcons
   22: 89 45 dc    movl	[ebp-36],eax    ; excl::local-2
   25: 8b 5d e4    movl	ebx,[ebp-28]    ; excl::local-0
   28: 8b 5b f3    movl	ebx,[ebx-13]
   31: 89 5d e4    movl	[ebp-28],ebx    ; excl::local-0
   34: 3b fb       cmpl	edi,ebx
   36: 75 0e       jnz	52
   38: 8b 45 dc    movl	eax,[ebp-36]    ; excl::local-2
   41: f8          clc
   42: c9          leave
   43: 8b 75 fc    movl	esi,[ebp-4]
   46: c3          ret
   47: 8b c7       movl	eax,edi
   49: f8          clc
   50: eb f6       jmp	42
   52: 8b c8       movl	ecx,eax
   54: 49          decl	ecx
   55: f6 c1 07    testb	cl,$7
   58: 74 14       jz	80
   60: 8b d0       movl	edx,eax
   62: 89 55 e0    movl	[ebp-32],edx    ; excl::local-1
   65: 33 c0       xorl	eax,eax
   67: b0 10       movb	al,$16
   69: 8b 5f db    movl	ebx,[edi-37]    ; 
;excl::er-general-error-handler-one
   72: ff 57 27    call	*[edi+39]       ; sys::tramp-two
   75: 8b 45 e0    movl	eax,[ebp-32]    ; excl::local-1
   78: eb c9       jmp	25
   80: 8b 5d e4    movl	ebx,[ebp-28]    ; excl::local-0
   83: 89 45 e0    movl	[ebp-32],eax    ; excl::local-1
   86: 8b 43 ef    movl	eax,[ebx-17]
   89: 8b d7       movl	edx,edi
   91: ff 57 2b    call	*[edi+43]       ; sys::qcons
   94: 33 db       xorl	ebx,ebx
   96: 83 c3 cc    addl	ebx,$-52
   99: c1 fb 02    sarl	ebx,$2
  102: 8b d3       movl	edx,ebx
  104: 03 55 e0    addl	edx,[ebp-32]    ; excl::local-1
  107: ff 57 77    call	*[edi+119]      ; sys::gsgc-setf-protect
  110: eb db       jmp	75


gsgc-setf-protect
has to do with the generation scavenging garbage collection.
This presumably saves time some other place.
I assume CMUCL does a good job on whatever machines
it runs on.
RJF