mirror of
git://git.code.sf.net/p/sbcl/sbcl
synced 2026-09-10 07:26:40 -04:00
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:
parent
e32c625e97
commit
f9b2600d2d
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue