diff options
Diffstat (limited to 'module/language/assembly.scm')
-rw-r--r-- | module/language/assembly.scm | 18 |
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))) |