summaryrefslogtreecommitdiff
path: root/module/language/assembly.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/language/assembly.scm')
-rw-r--r--module/language/assembly.scm18
1 files changed, 4 insertions, 14 deletions
diff --git a/module/language/assembly.scm b/module/language/assembly.scm
index 5571bee61..683da6cc1 100644
--- a/module/language/assembly.scm
+++ b/module/language/assembly.scm
@@ -34,30 +34,21 @@
;; lengths are encoded in 3 bytes
(define *len-len* 3)
-;; the number of bytes per string character is encoded in 1 byte
-(define *width-len* 1)
-
(define (byte-length assembly)
(pmatch assembly
(,label (guard (not (pair? label)))
0)
- ((load-unsigned-integer ,str)
- (+ 1 *len-len* (string-length str)))
- ((load-integer ,str)
- (+ 1 *len-len* (string-length str)))
((load-number ,str)
(+ 1 *len-len* (string-length str)))
((load-string ,str)
- (+ 1 *len-len* *width-len* (* (string-width str) (string-length str))))
+ (+ 1 *len-len* (string-length str)))
+ ((load-wide-string ,str)
+ (+ 1 *len-len* (* 4 (string-length str))))
((load-symbol ,str)
- (+ 1 *len-len* *width-len* (* (string-width str) (string-length str))))
- ((load-keyword ,str)
- (+ 1 *len-len* *width-len* (* (string-width str) (string-length str))))
+ (+ 1 *len-len* (string-length str)))
((load-array ,bv)
(+ 1 *len-len* (bytevector-length bv)))
- ((define ,str)
- (+ 1 *len-len* *width-len* (* (string-width str) (string-length str))))
((load-program ,nargs ,nrest ,nlocs ,labels ,len ,meta . ,code)
(+ 1 *program-header-len* len (if meta (1- (byte-length meta)) 0)))
((,inst . _) (guard (>= (instruction-length inst) 0))
@@ -171,5 +162,4 @@
n4)))
((load-string ,s) s)
((load-symbol ,s) (string->symbol s))
- ((load-keyword ,s) (symbol->keyword (string->symbol s)))
(else #f)))