From 41175b7e0524cc2ca1c1f518f8a6f3d9e2355401 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 5 Feb 2020 17:11:37 -0700 Subject: [PATCH] cs & zo-parse: preserve marshaled bytes To support `zo-marshal`, keep original byte-string form of linklets. --- pkgs/zo-lib/compiler/zo-parse.rkt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/zo-lib/compiler/zo-parse.rkt b/pkgs/zo-lib/compiler/zo-parse.rkt index 87cc3335b0..8b204ce89e 100644 --- a/pkgs/zo-lib/compiler/zo-parse.rkt +++ b/pkgs/zo-lib/compiler/zo-parse.rkt @@ -861,11 +861,16 @@ (make-reader-graph (read-compact cp))] [(equal? vm #"chez-scheme") + (define len (read-simple-number port)) + (define bstr (read-bytes len port)) (cond [(eq? 'chez-scheme (system-type 'vm)) - ((vm-primitive 'read-linklet-bundle-hash) port)] + (hash-set ((vm-primitive 'read-linklet-bundle-hash) + (open-input-bytes (bytes-append + (integer->integer-bytes len 4 #f #f) + bstr))) + 'opaque bstr)] [else - (define bstr (read-bytes (read-simple-number port) port)) (hash 'opaque bstr)])] [else (error 'zo-parse "cannot parse for virtual machine: ~s" vm)]))