x86-64: Actually fix an already-removed FIXME

Strangely rev 9e244505ab deleted a remark about fixing reliance on a
do-nothing vop without solving it. Do that now by guarding an unreachable
use of a VOP macro in EMIT-INITS based on +/-executable-funinstances.
This commit is contained in:
Douglas Katzman 2023-12-26 16:40:00 -05:00
parent e32c625e97
commit f9b2600d2d
4 changed files with 3 additions and 18 deletions

View file

@ -228,13 +228,6 @@
(loadw rax-tn rax-tn fdefn-fun-slot other-pointer-lowtag)
(inst jmp (object-slot-ea rax-tn closure-fun-slot fun-pointer-lowtag)))
#-compact-instance-header
(define-assembly-routine
(funcallable-instance-tramp (:return-style :none))
()
(loadw rax-tn rax-tn funcallable-instance-function-slot fun-pointer-lowtag)
(inst jmp (object-slot-ea rax-tn closure-fun-slot fun-pointer-lowtag)))
(define-assembly-routine (ensure-symbol-hash (:return-style :raw)) ()
(with-registers-preserved (lisp)
(inst mov rdx-tn (ea 16 rbp-tn)) ; arg

View file

@ -77,6 +77,7 @@
(let ((unbound-marker-tn nil)
(funcallable-instance-tramp-tn nil)
(dx-p (node-stack-allocate-p node)))
(declare (ignorable funcallable-instance-tramp-tn))
(flet ((zero-init-p (x)
;; dynamic-space is already zeroed
(and (not dx-p)
@ -137,6 +138,7 @@
tn))))
(:null
(emit-constant nil))
#-executable-funinstances
(:funcallable-instance-tramp
(or funcallable-instance-tramp-tn
(setf funcallable-instance-tramp-tn

View file

@ -1008,15 +1008,6 @@
;;;; automatic allocators for primitive objects
(define-vop (make-funcallable-instance-tramp)
(:args)
(:results (result :scs (any-reg)))
(:vop-var vop)
(:generator 1
;; gets "... is not the name of a defined VOP." if not defined at all
#+compact-instance-header (bug "Shouldn't get here")
(inst mov result (make-fixup 'funcallable-instance-tramp :assembly-routine))))
(flet
((alloc (vop name words type lowtag stack-allocate-p result
&optional alloc-temp node

View file

@ -699,8 +699,7 @@
operand inst))))
((or (eq inst lea-inst)
(and (eq inst mov-inst) (eql opcode #x8B)))
;; Computing the address of UNDEFINED-FDEFN and
;; FUNCALLABLE-INSTANCE-TRAMP is done with LEA.
;; Computing the address of UNDEFINED-FDEFN is done with LEA.
;; Load from the alien linkage table can be done with MOV Rnn,[RIP-k].
(let ((modrm (sap-ref-8 sap (1+ (dstate-cur-offs dstate)))))
(when (= (logand modrm #b11000111) #b00000101) ; RIP-relative mode