Add interface to external strings.
authorChris Hanson <org/chris-hanson/cph>
Thu, 4 Jan 2001 22:27:50 +0000 (22:27 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 4 Jan 2001 22:27:50 +0000 (22:27 +0000)
v7/src/runtime/make.scm
v7/src/runtime/runtime.pkg
v7/src/runtime/string.scm
v7/src/runtime/version.scm

index aa92a3fc3683b725ab00aa11caad3a60ce6d31ad..e01a4239a625f9ca6c5774249a8ae1d8c737eca6 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: make.scm,v 14.65 2000/04/10 19:01:30 cph Exp $
+$Id: make.scm,v 14.66 2001/01/04 22:25:42 cph Exp $
 
-Copyright (c) 1988-2000 Massachusetts Institute of Technology
+Copyright (c) 1988-2001 Massachusetts Institute of Technology
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -484,6 +484,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    (RUNTIME STARBASE-GRAPHICS)
    (RUNTIME X-GRAPHICS)
    (RUNTIME OS2-GRAPHICS)
+   (RUNTIME STRING)
    ;; Emacs -- last because it installs hooks everywhere which must be initted.
    (RUNTIME EMACS-INTERFACE)
    ;; More debugging
index a646ab4584d7e60f9d17e343004a12f08b5aa0e8..4b1aaba531679545f36637d40d480c5f0eb74013 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: runtime.pkg,v 14.355 2000/07/05 18:27:33 cph Exp $
+$Id: runtime.pkg,v 14.356 2001/01/04 22:25:46 cph Exp $
 
-Copyright (c) 1988-2000 Massachusetts Institute of Technology
+Copyright (c) 1988-2001 Massachusetts Institute of Technology
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -77,11 +77,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   (files "string")
   (parent ())
   (export ()
+         allocate-external-string
          burst-string
          char->string
          decorated-string-append
-         list->string
+         external-string-length
+         external-string?
          guarantee-string
+         list->string
          make-string
          reverse-string
          reverse-string!
@@ -195,7 +198,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
          vector-8b-ref
          vector-8b-set!)
   (export (runtime char-syntax)
-         guarantee-substring))
+         guarantee-substring)
+  (initialization (initialize-package!)))
 
 (define-package (runtime 1d-property)
   (files "prop1d")
index c62b2b427fed4e442c2733e6b9b5eec3e825c9d5..35eb8db38dca26f239e0367909e9a9ca10ef4fa5 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: string.scm,v 14.35 2000/05/16 14:43:39 cph Exp $
+$Id: string.scm,v 14.36 2001/01/04 22:25:49 cph Exp $
 
-Copyright (c) 1988-2000 Massachusetts Institute of Technology
+Copyright (c) 1988-2001 Massachusetts Institute of Technology
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -966,6 +966,32 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
            (outer k (fix:+ q 1)))))
     pi))
 \f
+;;;; External Strings
+
+(define external-strings)
+(define (initialize-package!)
+  (set! external-strings
+       (make-gc-finalizer (ucode-primitive deallocate-external-string)))
+  unspecific)
+
+(define-structure external-string
+  (descriptor #f read-only #t))
+
+(define (allocate-external-string n-bytes)
+  (without-interrupts
+   (lambda ()
+     (let ((descriptor ((ucode-primitive allocate-external-string) n-bytes)))
+       (let ((xstring (make-external-string descriptor)))
+        (add-to-gc-finalizer! external-strings xstring descriptor)
+        xstring)))))
+
+(define (external-string-length xstring)
+  (if (not (external-string? xstring))
+      (error:wrong-type-argument xstring "external string"
+                                'EXTERNAL-STRING-LENGTH))
+  ((ucode-primitive extended-string-length)
+   (external-string-descriptor xstring)))
+\f
 ;;;; Guarantors
 ;;
 ;; The guarantors are integrated.  Most are structured as combination of
index 354bb982487a04805eca27ac2d6640f6f04b1fe5..f63881fe88bc4ce8f88f561956b60d9fb66f6267 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: version.scm,v 14.190 2000/12/19 18:56:14 cph Exp $
+$Id: version.scm,v 14.191 2001/01/04 22:27:50 cph Exp $
 
-Copyright (c) 1988-2000 Massachusetts Institute of Technology
+Copyright (c) 1988-2001 Massachusetts Institute of Technology
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -25,10 +25,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 (declare (usual-integrations))
 
 (define (initialize-package!)
-  (add-subsystem-identification! "Release" '(7 5 12))
+  (add-subsystem-identification! "Release" '(7 5 13))
   (snarf-microcode-version!)
   (add-event-receiver! event:after-restore snarf-microcode-version!)
-  (add-subsystem-identification! "Runtime" '(14 184)))
+  (add-subsystem-identification! "Runtime" '(14 185)))
 
 (define (snarf-microcode-version!)
   (add-subsystem-identification! "Microcode"