summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-10-01 06:24:32 -0700
committerKaz Kylheku <kaz@kylheku.com>2020-10-01 06:24:32 -0700
commit161491beb0440bd63d9c956d1e0a6ef4a4c0c675 (patch)
tree0cd678876993e663410b5c8c37cf84df45e0cde8 /share
parent142306745269a3eb228aa3d79f595688f941a292 (diff)
downloadtxr-161491beb0440bd63d9c956d1e0a6ef4a4c0c675.tar.gz
txr-161491beb0440bd63d9c956d1e0a6ef4a4c0c675.tar.bz2
txr-161491beb0440bd63d9c956d1e0a6ef4a4c0c675.zip
vm: deprecate move-immediate instructions.
The movrsi, movrmi and movrbi (move immediate {small, medium, big} to register) instructions are becoming deprecated. The reasoning is that character and fixnum operands can just go into a VM descriptor's data vector (D registers). Then they can be referenced directly without wastefully issuing an extra instruction. * genvmop.txr: Add a deprecated comment next to the enum constants of deprecated opcodes. * share/txr/stdlib/asm.tl (oc-base): Add Boolean property which indicates that an opcode is deprecated. This is a static class variable, defaulting to nil in the base class. (op-movrsi, op-movsmi, op-movrbi): Override base class deprecated property with a true value. * vmop.h: Regenerated.
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/asm.tl5
1 files changed, 5 insertions, 0 deletions
diff --git a/share/txr/stdlib/asm.tl b/share/txr/stdlib/asm.tl
index 8dd64ec4..9ded42c0 100644
--- a/share/txr/stdlib/asm.tl
+++ b/share/txr/stdlib/asm.tl
@@ -27,6 +27,7 @@
(load "vm-param")
(defstruct oc-base nil
+ (:static deprecated nil)
(:method synerr (me fmt . args)
(error `opcode @{me.symbol}: @fmt` . args))
@@ -484,6 +485,7 @@
real.(asm asm syntax)))))
(defopcode op-movrsi movrsi auto
+ (:static deprecated t)
(:method asm (me asm syntax)
me.(chk-arg-count 2 syntax)
(tree-bind (dst imm) asm.(parse-args me syntax '(d si))
@@ -493,6 +495,7 @@
^(,me.symbol ,(operand-to-sym dst) ,(bits-to-obj imm 10))))
(defopcode op-movsmi movsmi auto
+ (:static deprecated t)
(:method asm (me asm syntax)
me.(chk-arg-count 2 syntax)
(tree-bind (dst imm) asm.(parse-args me syntax '(ds mi))
@@ -503,6 +506,7 @@
^(,me.symbol ,(small-op-to-sym dst) ,(bits-to-obj imm 16))))
(defopcode op-movrbi movrbi auto
+ (:static deprecated t)
(:method asm (me asm syntax)
me.(chk-arg-count 2 syntax)
(tree-bind (dst imm) asm.(parse-args me syntax '(d bi))
@@ -514,6 +518,7 @@
^(,me.symbol ,(operand-to-sym dst) ,(bits-to-obj imm 32)))))
(defopcode op-movi-pseudo movi nil
+ (:static deprecated t)
(:method asm (me asm syntax)
(tree-bind (dst src) asm.(parse-args me syntax '(d bi))
(let ((real [%oc-hash% (cond