[Git][cmucl/cmucl][sparc64-dev] 2 commits: Hack fix for compute-code-from-fn
Raymond Toy
rtoy at common-lisp.net
Sat Jan 21 16:37:24 UTC 2017
Raymond Toy pushed to branch sparc64-dev at cmucl / cmucl
Commits:
1d74bf8d by Raymond Toy at 2017-01-21T08:36:22-08:00
Hack fix for compute-code-from-fn
component-header-length returns a value that is off by half, even
after explicitly telling to shift by 3 instead of 2. So, do the extra
shift here for now.
This needs to be fixed!
- - - - -
58c09b81 by Raymond Toy at 2017-01-21T08:37:02-08:00
Mark more vops so we can stop and check the generated code.
- - - - -
6 changed files:
- src/compiler/sparc64/call.lisp
- src/compiler/sparc64/cell.lisp
- src/compiler/sparc64/insts.lisp
- src/compiler/sparc64/memory.lisp
- src/compiler/sparc64/move.lisp
- src/compiler/sparc64/print.lisp
Changes:
=====================================
src/compiler/sparc64/call.lisp
=====================================
--- a/src/compiler/sparc64/call.lisp
+++ b/src/compiler/sparc64/call.lisp
@@ -171,6 +171,7 @@
;; Make sure the function is aligned, and drop a label pointing to this
;; function header.
(align vm:lowtag-bits)
+ (emit-not-implemented)
(trace-table-entry trace-table-function-prologue)
(emit-label start-lab)
;; Allocate function header.
@@ -262,6 +263,7 @@
(:info nargs)
(:results (res :scs (any-reg)))
(:generator 2
+ (emit-not-implemented)
(when (> nargs register-arg-count)
(move res csp-tn)
(inst add csp-tn csp-tn (* nargs vm:word-bytes)))))
@@ -774,6 +776,7 @@ default-value-8
15
(if (eq return :unknown) 25 0))
(trace-table-entry trace-table-call-site)
+ (emit-not-implemented)
(let* ((cur-nfp (current-nfp-tn vop))
,@(unless (eq return :tail)
'((lra-label (gen-label))))
@@ -1271,6 +1274,7 @@ default-value-8
(:vop-var vop)
(:save-p :compute-only)
(:generator 3
+ (emit-not-implemented)
(let ((err-lab
(generate-error-code vop invalid-argument-count-error nargs)))
(inst cmp nargs (fixnumize count))
=====================================
src/compiler/sparc64/cell.lisp
=====================================
--- a/src/compiler/sparc64/cell.lisp
+++ b/src/compiler/sparc64/cell.lisp
@@ -83,6 +83,7 @@
(define-vop (boundp boundp-frob)
(:translate boundp)
(:generator 9
+ (emit-not-implemented)
(loadw value object vm:symbol-value-slot vm:other-pointer-type)
(inst cmp value vm:unbound-marker-type)
(inst b (if not-p :eq :ne) target)
=====================================
src/compiler/sparc64/insts.lisp
=====================================
--- a/src/compiler/sparc64/insts.lisp
+++ b/src/compiler/sparc64/insts.lisp
@@ -2384,7 +2384,12 @@ about function addresses and register values.")
(- other-pointer-type
function-pointer-type
(label-position label posn delta-if-after)
- (component-header-length))))))
+ ;; FIXME: component-header-length (and
+ ;; maybe label-position?) return thw
+ ;; wrong number of bytes. We need to
+ ;; shift left by 1 because our words are
+ ;; 64 bits long and not 32.
+ (ash (component-header-length) 1))))))
;; code = lra - other-pointer-tag - header - label-offset + other-pointer-tag
(define-instruction compute-code-from-lra (segment dst src label temp)
=====================================
src/compiler/sparc64/memory.lisp
=====================================
--- a/src/compiler/sparc64/memory.lisp
+++ b/src/compiler/sparc64/memory.lisp
@@ -36,6 +36,7 @@
(:variant-vars offset lowtag)
(:policy :fast-safe)
(:generator 4
+ (emit-not-implemented)
(storew value object offset lowtag)))
;;; Slot-Ref and Slot-Set are used to define VOPs like Closure-Ref, where the
=====================================
src/compiler/sparc64/move.lisp
=====================================
--- a/src/compiler/sparc64/move.lisp
+++ b/src/compiler/sparc64/move.lisp
@@ -25,6 +25,7 @@
((null immediate zero)
(any-reg descriptor-reg))
(let ((val (tn-value x)))
+ (not-implemented "LOAD-IMMEDIATE")
(etypecase val
(integer
(inst li y (fixnumize val)))
@@ -121,6 +122,7 @@
(:temporary (:scs (non-descriptor-reg)) temp)
(:results (y))
(:generator 0
+ (emit-not-implemented)
(sc-case y
((any-reg descriptor-reg)
(move y x))
=====================================
src/compiler/sparc64/print.lisp
=====================================
--- a/src/compiler/sparc64/print.lisp
+++ b/src/compiler/sparc64/print.lisp
@@ -30,6 +30,7 @@
(:temporary (:sc control-stack :offset nfp-save-offset) nfp-save)
(:vop-var vop)
(:generator 100
+ (emit-not-implemented)
(let ((cur-nfp (current-nfp-tn vop)))
(when cur-nfp
(store-stack-tn nfp-save cur-nfp))
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/0661784461fda653dfb2fc155c6e7cf89e46fbbc...58c09b81fba6e4317a4338ecf646badb2de88c98
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20170121/db6d9d0c/attachment-0001.html>
More information about the cmucl-cvs
mailing list