diff --git a/collects/compiler/decompile.rkt b/collects/compiler/decompile.rkt index cff6996930..6d5127cd50 100644 --- a/collects/compiler/decompile.rkt +++ b/collects/compiler/decompile.rkt @@ -19,6 +19,7 @@ (namespace-require ''#%kernel) (namespace-require ''#%unsafe) (namespace-require ''#%flfxnum) + (namespace-require ''#%extfl) (namespace-require ''#%futures) (for/list ([l (namespace-mapped-symbols)]) (cons l (with-handlers ([exn:fail? (lambda (x) #f)]) diff --git a/collects/compiler/zo-marshal.rkt b/collects/compiler/zo-marshal.rkt index d5545c6300..450e8e78ea 100644 --- a/collects/compiler/zo-marshal.rkt +++ b/collects/compiler/zo-marshal.rkt @@ -584,6 +584,7 @@ (case type [(flonum) 1] [(fixnum) 2] + [(extflonum) 3] [else (error 'type->index "unknown type: ~e" type)])) (define (out-anything v out) diff --git a/collects/compiler/zo-parse.rkt b/collects/compiler/zo-parse.rkt index 63b964fb19..162391bff4 100644 --- a/collects/compiler/zo-parse.rkt +++ b/collects/compiler/zo-parse.rkt @@ -107,6 +107,7 @@ (case n [(2) 'flonum] [(3) 'fixnum] + [(4) 'extflonum] [else (error "invaid type flag")]))] [(arg-types) (let ([num-params ((if rest? sub1 values) num-params)]) (for/list ([i (in-range num-params)]) @@ -373,8 +374,8 @@ [(27) 'inline-variant-type] [(35) 'variable-type] [(36) 'module-variable-type] - [(113) 'resolve-prefix-type] - [(162) 'free-id-info-type] + [(114) 'resolve-prefix-type] + [(164) 'free-id-info-type] [else (error 'int->type "unknown type: ~e" i)])) (define type-readers @@ -554,6 +555,7 @@ (define SCHEME_LOCAL_TYPE_FLONUM 1) (define SCHEME_LOCAL_TYPE_FIXNUM 2) +(define SCHEME_LOCAL_TYPE_EXTFLONUM 3) (define (make-local unbox? pos flags) (define SCHEME_LOCAL_CLEAR_ON_READ 1) @@ -565,6 +567,7 @@ (let ([t (- flags SCHEME_LOCAL_TYPE_OFFSET)]) (cond [(= t SCHEME_LOCAL_TYPE_FLONUM) 'flonum] + [(= t SCHEME_LOCAL_TYPE_EXTFLONUM) 'extflonum] [(= t SCHEME_LOCAL_TYPE_FIXNUM) 'fixnum] [else #f])))) @@ -856,6 +859,7 @@ (case (read-compact-number cp) [(1) 'flonum] [(2) 'fixnum] + [(3) 'extflonum] [else #f])) (eq? cpt-tag 'let-one-unused))] [(branch) diff --git a/collects/compiler/zo-structs.rkt b/collects/compiler/zo-structs.rkt index bdac336473..4ca4395d18 100644 --- a/collects/compiler/zo-structs.rkt +++ b/collects/compiler/zo-structs.rkt @@ -146,10 +146,10 @@ [flags (listof (or/c 'preserves-marks 'is-method 'single-result 'only-rest-arg-not-used 'sfs-clear-rest-args))] [num-params exact-nonnegative-integer?] - [param-types (listof (or/c 'val 'ref 'flonum 'fixnum))] + [param-types (listof (or/c 'val 'ref 'flonum 'fixnum 'extflonum))] [rest? boolean?] [closure-map (vectorof exact-nonnegative-integer?)] - [closure-types (listof (or/c 'val/ref 'flonum 'fixnum))] + [closure-types (listof (or/c 'val/ref 'flonum 'fixnum 'extflonum))] [toplevel-map (or/c #f (set/c exact-nonnegative-integer?))] [max-let-depth exact-nonnegative-integer?] [body (or/c expr? seq? any/c)])) ; `lambda' @@ -158,7 +158,7 @@ (define-form-struct (let-one expr) ([rhs (or/c expr? seq? any/c)] ; pushes one value onto stack [body (or/c expr? seq? any/c)] - [type (or/c #f 'flonum 'fixnum)] + [type (or/c #f 'flonum 'fixnum 'extflonum)] [unused? boolean?])) (define-form-struct (let-void expr) ([count exact-nonnegative-integer?] [boxes? boolean?] [body (or/c expr? seq? any/c)])) ; create new stack slots (define-form-struct (install-value expr) ([count exact-nonnegative-integer?] @@ -173,7 +173,7 @@ [pos exact-nonnegative-integer?] [clear? boolean?] [other-clears? boolean?] - [type (or/c #f 'flonum 'fixnum)])) ; access local via stack + [type (or/c #f 'flonum 'fixnum 'extflonum)])) ; access local via stack (define-form-struct (topsyntax expr) ([depth exact-nonnegative-integer?] [pos exact-nonnegative-integer?] [midpt exact-nonnegative-integer?])) ; access syntax object via prefix array (which is on stack)