X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fobjdef.lisp;h=262f4729aba6eb80028172513d839fd1dc40e225;hb=bcd323c39d6f5f80020ba4a5d9eb8d348c6cc499;hp=d3bd6357f7c2b7107226991dcbd17ef263da1f65;hpb=26ac616b6783b8841ccda8b4f1caa7d898d91b86;p=sbcl.git diff --git a/src/compiler/generic/objdef.lisp b/src/compiler/generic/objdef.lisp index d3bd635..262f472 100644 --- a/src/compiler/generic/objdef.lisp +++ b/src/compiler/generic/objdef.lisp @@ -426,9 +426,16 @@ (mach-port-name :c-type "mach_port_name_t") (nonpointer-data :c-type "struct nonpointer_thread_data *" :length #!+alpha 2 #!-alpha 1) #!+(and sb-safepoint x86) (selfptr :c-type "struct thread *") + ;; Context base pointer for running on top of system libraries built using + ;; -fomit-frame-pointer. Currently truly required and implemented only + ;; for (and win32 x86-64), but could be generalized to other platforms if + ;; needed: + #!+win32 (carried-base-pointer :c-type "os_context_register_t") #!+sb-safepoint (csp-around-foreign-call :c-type "lispobj *") #!+sb-safepoint (pc-around-foreign-call :c-type "lispobj *") #!+win32 (synchronous-io-handle-and-flag :c-type "HANDLE" :length 1) + #!+(and sb-safepoint-strictly (not win32)) + (sprof-alloc-region :c-type "struct alloc_region" :length 5) ;; KLUDGE: On alpha, until STEPPING we have been lucky and the 32 ;; bit slots came in pairs. However the C compiler will align ;; interrupt_contexts on a double word boundary. This logic should