Changeset 6342 for branches/x8664-call


Ignore:
Timestamp:
Apr 23, 2007, 9:54:38 AM (13 years ago)
Author:
gb
Message:

Add INIT-NCLOSURE: closures now start with an instruction that sets %fn from
%rip, and stuff that creates/accesses closure internals needs to know about
that.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/x8664-call/ccl/compiler/X86/X8664/x8664-vinsns.lisp

    r6335 r6342  
    18461846   (movb (:$b (:apply ash .SPcall-closure -16)) (:@ (+ x8664::misc-data-offset 12) (:%q closure))))
    18471847  (movb (:$b x8664::function-boundary-marker) (:@ (+ x8664::misc-data-offset 16)  (:%q closure))))
     1848
     1849;;; Magic numbers in here include the address of .SPncall-closure.
     1850(define-x8664-vinsn init-nclosure (()
     1851                                   ((closure :lisp))
     1852                                   ((imm0 :u64)))
     1853  (movq (:$q #x24fffffffff92d8d) (:%q imm0))
     1854  (movb (:$b 4) (:@ x8664::misc-data-offset (:%q closure))) ; code word count
     1855  (movb (:$b #x4c) (:@ (+ x8664::misc-data-offset 7) (:%q closure))) ; 1st byte of lea
     1856  (movq (:%q imm0) (:@ (+ x8664::misc-data-offset 8) (:%q closure))) ; rest of lea, start of jmp
     1857  (movl (:$l #x0055b025) (:@ (+ x8664::misc-data-offset 16) (:%q closure)))
     1858  (movb (:$b x8664::function-boundary-marker) (:@ (+ x8664::misc-data-offset 24)  (:%q closure))))
    18481859
    18491860
Note: See TracChangeset for help on using the changeset viewer.