interfaces.scm 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854
  1. ; Copyright (c) 1993-2008 by Richard Kelsey and Jonathan Rees. See file COPYING.
  2. (define-interface vm-utilities-interface
  3. (export adjoin-bits low-bits high-bits unsigned-high-bits
  4. assert
  5. vector+length-fill!
  6. natural-for-each natural-for-each-while
  7. error?
  8. write-error-string write-error-integer write-error-newline
  9. error-message
  10. ;; needed in portable-read-image and measurements
  11. write-out-string
  12. write-out-integer
  13. write-out-newline
  14. display-message ;with newline
  15. display-integer ;with newline
  16. ))
  17. ; Memory
  18. (define-interface memory-interface
  19. (export create-memory memory-begin memory-size
  20. address+ address- address1+ address2+
  21. address-difference
  22. address= address< address<= address> address>=
  23. address->integer integer->address
  24. null-address null-address?
  25. fetch fetch-byte fetch-flonum
  26. store! store-byte! store-flonum!
  27. fetch-string fetch-nul-terminated-string
  28. copy-memory! memory-equal? ; from ps-memory
  29. read-block write-block ; from ps-memory
  30. address->stob-descriptor
  31. address-at-header
  32. address-after-header
  33. stob-header stob-header-set!
  34. stob-overhead
  35. ))
  36. ; Low-level data structures
  37. (define-interface fixnum-arithmetic-interface
  38. (export add-carefully subtract-carefully
  39. multiply-carefully divide-carefully
  40. quotient-carefully remainder-carefully
  41. shift-carefully
  42. abs-carefully
  43. fixnum-bit-count
  44. ))
  45. (define-interface stob-interface
  46. (export make-d-vector make-b-vector
  47. maybe-make-d-vector+gc maybe-make-b-vector+gc
  48. d-vector-length d-vector-ref d-vector-init! d-vector-set!
  49. b-vector-length b-vector-ref b-vector-set!
  50. max-stob-size-in-cells
  51. ensure-space
  52. checking-preallocation?
  53. stob-of-type?
  54. header+contents->stob
  55. valid-index?
  56. immutable? make-immutable!
  57. make-weak-pointer
  58. ))
  59. (define-interface allocation-interface
  60. (export s48-make-available+gc
  61. s48-allocate-small
  62. s48-allocate-weak+gc
  63. s48-allocate-traced+gc
  64. s48-allocate-untraced+gc
  65. s48-allocate-stob
  66. s48-forbid-gc!
  67. s48-allow-gc!
  68. ))
  69. (define-interface heap-interface
  70. (export s48-available
  71. s48-heap-size
  72. s48-max-heap-size
  73. s48-gather-objects
  74. s48-find-all
  75. s48-find-all-records
  76. s48-write-barrier
  77. ; for debugging
  78. s48-check-heap
  79. s48-stob-in-heap?
  80. ))
  81. (define heap-gc-util-interface
  82. (export walk-impure-areas
  83. bytes-available?))
  84. (define-interface gc-roots-interface
  85. (export add-gc-root!
  86. add-post-gc-cleanup!
  87. ))
  88. (define-interface interpreter-gc-interface
  89. (export s48-gc-root
  90. s48-post-gc-cleanup
  91. ))
  92. (define-interface gc-util-interface
  93. (export save-temp0!
  94. recover-temp0!
  95. save-temp1!
  96. recover-temp1!))
  97. (define-interface gc-interface
  98. (export s48-collect
  99. s48-trace-value
  100. s48-trace-locations!
  101. s48-trace-stob-contents!
  102. s48-trace-continuation-contents!
  103. s48-extant?
  104. s48-gc-count
  105. s48-gc-run-time
  106. ))
  107. (define shared-bindings-access-interface
  108. (export ;; for writing images
  109. s48-imported-bindings
  110. s48-exported-bindings))
  111. (define shared-bindings-interface
  112. (export ;; called from outside
  113. s48-define-exported-binding
  114. s48-get-imported-binding
  115. ;; called on startup
  116. install-shared-bindings!+gc
  117. ;; for external events
  118. get-imported-binding
  119. ;; for the primitives
  120. undefine-shared-binding!
  121. lookup-imported-binding lookup-exported-binding
  122. shared-binding-undefined? for-each-imported-binding
  123. shared-binding-size
  124. ))
  125. (define-interface external-gc-roots-interface
  126. (export s48-push-gc-roots!
  127. s48-pop-gc-roots!
  128. s48-set-gc-roots-base!
  129. s48-release-gc-roots-base!
  130. s48-register-gc-root!
  131. s48-unregister-gc-root!
  132. s48-reset-external-roots!))
  133. (define-interface heap-init-interface
  134. (export s48-register-static-areas
  135. ;; two-space/BIBOP
  136. s48-initialize-heap
  137. ;;BIBOP
  138. s48-initialize-image-areas
  139. s48-check-heap-size!
  140. ))
  141. (define-interface string-table-interface
  142. (export hash-table-size
  143. hash-table-entry-size
  144. make-hash-table+gc
  145. table-adder
  146. table-searcher
  147. table-remover
  148. table-walker table-while-walker
  149. table-tracer
  150. table-cleaner
  151. relocate-table
  152. value->link
  153. link->value))
  154. (define-interface text-encodings-interface
  155. (export encode-scalar-value
  156. decode-scalar-value
  157. (text-encoding-option :syntax )))
  158. (define-interface struct-interface
  159. (export vm-pair? vm-pair-size vm-cons vm-car vm-set-car! vm-cdr vm-set-cdr!
  160. vm-symbol? vm-symbol-size vm-make-symbol vm-symbol->string
  161. vm-symbol-next vm-set-symbol-next!
  162. closure? closure-size make-closure closure-template closure-env
  163. location? location-size make-location contents set-contents! location-id
  164. cell? cell-size make-cell cell-ref cell-set!
  165. weak-pointer? weak-pointer-size make-weak-pointer weak-pointer-ref
  166. shared-binding? shared-binding-size make-shared-binding
  167. shared-binding-name shared-binding-is-import?
  168. shared-binding-ref shared-binding-set!
  169. shared-binding-next set-shared-binding-next!
  170. channel? channel-size make-channel
  171. channel-status set-channel-status!
  172. channel-id set-channel-id!
  173. channel-os-index set-channel-os-index!
  174. channel-close-silently? set-channel-close-silently?!
  175. channel-next set-channel-next!
  176. channel-os-status set-channel-os-status!
  177. channel-error? set-channel-error?!
  178. port? port-size make-port
  179. port-handler
  180. port-status set-port-status!
  181. port-data set-port-data!
  182. port-buffer set-port-buffer!
  183. port-index set-port-index!
  184. port-limit set-port-limit!
  185. port-text-codec-spec set-port-text-codec-spec!
  186. port-crlf? set-port-crlf?!
  187. port-lock
  188. port-pending-cr? set-port-pending-cr?!
  189. port-pending-eof? set-port-pending-eof?!
  190. vm-vector? vm-vector-size vm-make-vector vm-vector-length
  191. vm-vector-ref vm-vector-set!
  192. vm-make-vector+gc
  193. vm-vector-fill!
  194. record? record-size make-record record-length
  195. record-ref record-set!
  196. extended-number? extended-number-size make-extended-number
  197. extended-number-length
  198. extended-number-ref extended-number-set!
  199. double? enter-double extract-double double-size
  200. make-bignum bignum? bignum-length bignum-size
  201. continuation? continuation-size make-continuation continuation-length
  202. continuation-ref continuation-set!
  203. continuation-cont set-continuation-cont!
  204. continuation-pc set-continuation-pc!
  205. continuation-code set-continuation-code!
  206. continuation-cells
  207. code-vector? code-vector-size make-code-vector code-vector-length
  208. code-vector-ref code-vector-set!
  209. template? template-size make-template template-length
  210. template-ref template-set!
  211. template-code template-byte-code template-name
  212. vm-make-string vm-make-string+gc
  213. vm-string? vm-string-size vm-string-length
  214. vm-string-ref vm-string-set!
  215. enter-string enter-string+gc enter-string+gc-n extract-low-string
  216. vm-string=? vm-string-hash
  217. copy-vm-string-chars!
  218. write-vm-string
  219. copy-string-to-vm-string/latin-1!
  220. copy-vm-string-to-string/latin-1!
  221. ratnum?
  222. ensure-space
  223. ))
  224. (define-interface vmio-interface
  225. (export initialize-i/o-system+gc
  226. make-registered-channel
  227. s48-really-add-channel
  228. s48-close-channel
  229. s48-set-channel-os-index
  230. s48-channels
  231. s48-channel-count
  232. close-channel!
  233. close-channel-index!
  234. os-index->channel
  235. open-channels-list
  236. trace-channel-names
  237. close-untraced-channels!
  238. trace-io
  239. input-channel?
  240. output-channel?
  241. open?
  242. channel-queue-empty?
  243. enqueue-channel!
  244. dequeue-channel!
  245. vm-channel-abort
  246. ))
  247. ;(define-interface environment-interface
  248. ; (export current-env set-current-env!
  249. ; env-ref env-set! env-parent env-back
  250. ; pop-args-into-env
  251. ; heap-env-space pop-args-into-heap-env
  252. ; current-env-size preserve-current-env
  253. ; ))
  254. (define-interface stack-interface
  255. (export initialize-stack+gc
  256. reset-stack-pointer stack-size
  257. push pop stack-ref stack-set!
  258. add-cells-to-stack!
  259. ensure-stack-space!
  260. ensure-default-procedure-space!
  261. make-continuation-on-stack
  262. push-continuation!
  263. push-adlib-continuation!
  264. set-cont-to-stack!
  265. push-exception-continuation!
  266. push-native-exception-continuation!
  267. pop-continuation-from-stack
  268. pop-exception-data
  269. set-current-continuation!
  270. current-continuation-size
  271. copy-current-continuation-to-heap
  272. skip-current-continuation!
  273. get-continuation-from-heap
  274. copy-continuation-from-heap!
  275. current-continuation-code-pointer
  276. shrink-and-reset-continuation!
  277. current-continuation-ref
  278. pointer-to-stack-arguments
  279. move-stack-arguments!
  280. move-args-above-cont!
  281. pointer-to-stack-arguments ; for calling external procedures
  282. remove-stack-arguments
  283. remove-current-frame
  284. report-continuation-uids
  285. s48-copy-stack-into-heap
  286. interrupt-flag-set?
  287. clear-interrupt-flag!
  288. set-interrupt-flag!
  289. *cont*
  290. *stack*
  291. s48-*stack-limit*
  292. check-stack
  293. ))
  294. (define-interface external-interface
  295. (export extended-vm
  296. external-call
  297. real-time
  298. run-time
  299. cheap-time
  300. schedule-interrupt
  301. dequeue-external-event!
  302. get-os-string-encoding
  303. host-architecture
  304. external-bignum-make-cached-constants
  305. external-bignum-add
  306. external-bignum-subtract
  307. external-bignum-multiply
  308. external-bignum-quotient
  309. external-bignum-remainder
  310. external-bignum-divide
  311. external-bignum-equal?
  312. external-bignum-compare
  313. external-bignum-test
  314. external-bignum-negate
  315. external-bignum-arithmetic-shift
  316. external-bignum-bitwise-not
  317. external-bignum-bit-count
  318. external-bignum-bitwise-and
  319. external-bignum-bitwise-ior
  320. external-bignum-bitwise-xor
  321. external-bignum-from-long
  322. external-bignum-from-unsigned-long
  323. external-bignum->long
  324. external-bignum-fits-in-word?
  325. s48-call-native-procedure
  326. s48-invoke-native-continuation
  327. s48-jump-native
  328. s48-native-return
  329. get-proposal-lock!
  330. release-proposal-lock!
  331. shared-ref
  332. (shared-set! :syntax)
  333. raise-argument-type-error
  334. raise-range-error
  335. ))
  336. (define-interface event-interface
  337. (export initialize-events
  338. get-next-event
  339. wait-for-event
  340. (events :syntax)
  341. ))
  342. (define-interface channel-interface
  343. (export current-input-channel
  344. current-output-channel
  345. current-error-channel
  346. input-port->channel
  347. output-port->channel
  348. open-input-file-channel
  349. open-output-file-channel
  350. input-channel->port
  351. output-channel->port
  352. close-input-channel
  353. close-output-channel
  354. channel-ready?
  355. channel-read-block
  356. channel-write-block
  357. channel-buffer-size
  358. channel-crlf?
  359. channel-console-encoding
  360. channel-abort
  361. ))
  362. (define external-call-interface
  363. (export ; called from outside
  364. s48-define-exported-binding
  365. s48-get-imported-binding
  366. s48-setup-external-exception
  367. s48-resetup-external-exception
  368. ; called on startup
  369. install-shared-bindings!+gc
  370. ))
  371. (define external-events-interface
  372. (export initialize-external-events
  373. s48-permanent-external-event-uid
  374. s48-external-event-uid s48-unregister-external-event-uid
  375. s48-external-event-ready?/unsafe s48-external-event-pending?/unsafe
  376. s48-note-external-event!/unsafe
  377. s48-dequeue-external-event!/unsafe))
  378. (define-interface bignum-low-interface
  379. (export initialize-bignums
  380. extract-bignum
  381. enter-bignum
  382. bignum-digits
  383. bignum-digit-bits
  384. bignum-digits->size
  385. bignum-bits-to-size
  386. fixnum-as-bignum-digits
  387. fixnum-as-bignum-size
  388. ensure-bignum-space!
  389. set-bignum-preallocation-key!
  390. s48-allocate-bignum
  391. s48-shorten-bignum))
  392. (define-interface bignum-arithmetic-interface
  393. (export bignum-add
  394. bignum-subtract
  395. bignum-multiply
  396. bignum-quotient
  397. bignum-remainder
  398. bignum-divide
  399. bignum=
  400. bignum<
  401. bignum-abs
  402. bignum-positive?
  403. bignum-nonnegative?
  404. bignum-arithmetic-shift
  405. bignum-bitwise-not
  406. bignum-bit-count
  407. bignum-bitwise-and
  408. bignum-bitwise-ior
  409. bignum-bitwise-xor
  410. long->bignum unsigned-long->bignum
  411. bignum-bits-to-size))
  412. (define-interface integer-arithmetic-interface
  413. (export integer-add
  414. integer-subtract
  415. integer-multiply
  416. integer-quotient
  417. integer-remainder
  418. integer-divide
  419. integer-abs
  420. integer=
  421. integer<
  422. integer<=
  423. integer>
  424. integer>=
  425. integer-arithmetic-shift
  426. integer-bitwise-not
  427. integer-bit-count
  428. integer-bitwise-and
  429. integer-bitwise-ior
  430. integer-bitwise-xor
  431. enter-integer
  432. enter-unsigned-integer
  433. long-as-integer-size))
  434. (define-interface interpreter-internal-interface
  435. (export ((define-primitive define-consing-primitive) :syntax)
  436. ((raise-exception raise-exception*) :syntax)
  437. raise
  438. push-exception-setup!
  439. any-> string-> boolean-> fixnum-> vm-integer-> char-> char-scalar-value->
  440. vector-> code-vector->
  441. input-type no-coercion
  442. no-result
  443. return
  444. return-fixnum
  445. return-boolean
  446. return-unspecific
  447. continue
  448. continue-with-value
  449. code-byte
  450. val set-val!
  451. code-pointer set-code-pointer!
  452. current-thread
  453. disable-interrupts!
  454. enable-interrupts!
  455. s48-add-os-signal
  456. s48-os-signal-pending
  457. s48-*callback-return-stack-block*
  458. current-proposal
  459. set-current-proposal!
  460. ))
  461. (define-interface interpreter-interface
  462. (export initialize-interpreter+gc
  463. clear-registers
  464. perform-application
  465. s48-set-extension-value!
  466. s48-note-event
  467. s48-*extension-value*
  468. s48-*pending-events?*
  469. s48-*pending-interrupt?*
  470. s48-reset-interrupts!
  471. s48-initialize-shared-registers!
  472. s48-*native-protocol*
  473. s48-set-native-protocol!
  474. *code-pointer*
  475. *last-code-called*
  476. *native-exception-cont*
  477. *val*
  478. ))
  479. ; What the external world can call. Because of C's flat namespace we have
  480. ; added s48_ to the front of each of these.
  481. (define-interface vm-interface
  482. (export s48-initialize-vm
  483. s48-call-startup-procedure
  484. s48-restart
  485. s48-gc-root
  486. s48-post-gc-cleanup
  487. s48-set-extension-value!
  488. s48-*extension-value*
  489. s48-note-event
  490. s48-*pending-events?*
  491. s48-*pending-interrupt?*
  492. s48-disable-interrupts!
  493. s48-enable-interrupts!
  494. s48-add-os-signal
  495. s48-os-signal-pending
  496. s48-reset-interrupts!
  497. s48-external-event-uid s48-permanent-external-event-uid s48-unregister-external-event-uid
  498. s48-external-event-pending?/unsafe s48-external-event-ready?/unsafe
  499. s48-note-external-event!/unsafe
  500. s48-dequeue-external-event!/unsafe
  501. s48-define-exported-binding
  502. s48-get-imported-binding
  503. s48-*callback-return-stack-block*
  504. ; used for raising exceptions in external code
  505. s48-setup-external-exception
  506. s48-resetup-external-exception
  507. s48-push
  508. s48-stack-ref s48-stack-set!
  509. ; called when writing an image
  510. s48-symbol-table
  511. s48-channels
  512. s48-channel-count
  513. s48-imported-bindings
  514. s48-exported-bindings
  515. ; for C code that wants to manipulate channels
  516. s48-close-channel
  517. s48-really-add-channel
  518. s48-set-channel-os-index
  519. ; bignums
  520. s48-allocate-bignum
  521. s48-shorten-bignum
  522. s48-enter-integer
  523. s48-enter-unsigned-integer
  524. ; for initializing additional processes
  525. s48-reset-external-roots!
  526. ; for native code access
  527. *code-pointer*
  528. *val*
  529. *cont*
  530. *stack*
  531. *last-code-called*
  532. *native-exception-cont*
  533. s48-*stack-limit*
  534. s48-*native-protocol*
  535. s48-set-native-protocol!
  536. s48-copy-stack-into-heap
  537. check-stack
  538. s48-make-blank-return-code
  539. s48-integer-or-floanum-add
  540. s48-integer-or-floanum-sub
  541. s48-integer-or-floanum-mul
  542. s48-integer-or-floanum-=
  543. s48-integer-or-floanum-<
  544. s48-integer-or-floanum->
  545. s48-integer-or-floanum-<=
  546. s48-integer-or-floanum->=
  547. s48-integer-remainder
  548. s48-integer-quotient
  549. s48-integer-bitwise-not
  550. s48-integer-bit-count
  551. s48-integer-bitwise-and
  552. s48-integer-bitwise-ior
  553. s48-integer-bitwise-xor
  554. s48-string-set
  555. s48-string-ref
  556. s48-string-length
  557. s48-allocate-string
  558. s48-enter-string-latin-1
  559. s48-enter-string-latin-1-n
  560. s48-copy-latin-1-to-string-n
  561. s48-copy-latin-1-to-string
  562. s48-copy-string-to-latin-1
  563. s48-copy-string-to-latin-1-n
  564. s48-string-utf-8-length
  565. s48-string-utf-8-length-n
  566. s48-enter-string-utf-8
  567. s48-enter-string-utf-8-n
  568. s48-copy-string-to-utf-8
  569. s48-copy-string-to-utf-8-n
  570. ))
  571. ; Reading and writing images
  572. (define-interface read-image-interface
  573. (export s48-read-image
  574. s48-startup-procedure
  575. s48-initial-symbols
  576. s48-initial-imported-bindings
  577. s48-initial-exported-bindings
  578. s48-resumer-records
  579. s48-initialization-complete!
  580. s48-initializing-gc-root
  581. s48-set-image-values!
  582. ))
  583. (define-interface write-image-interface
  584. (export s48-write-image))
  585. (define-interface write-image-gc-specific-interface
  586. (export deallocate-areas
  587. write-header
  588. begin-making-image/gc-specific
  589. allocate-new-image-object
  590. finalize-new-image-object
  591. write-image-areas
  592. image-alloc
  593. adjust-descriptors!
  594. note-traced-last-stob!))
  595. (define-interface read-image-gc-specific-interface
  596. (export really-read-image
  597. initialize-image-areas!))
  598. (define-interface read-image-portable-interface
  599. (export really-read-image-portable))
  600. ; This is used by WRITE-IMAGE and READ-IMAGE-PORTABLE
  601. (define-interface image-table-interface
  602. (export make-image-location
  603. image-location-new-descriptor
  604. set-image-location-new-descriptor!
  605. image-location-next
  606. set-image-location-next!
  607. make-table
  608. deallocate-table
  609. break-table!
  610. table-okay?
  611. table-set!
  612. table-ref
  613. table-find ;; debugging
  614. table-keys
  615. table-values
  616. table-count
  617. table-size
  618. ))
  619. (define-interface image-util-interface
  620. (export (area-type-size :syntax)
  621. (image-format :syntax)
  622. valid-image-format?))
  623. (define-interface read-image-util-interface
  624. (export init-read-image!
  625. set-status!
  626. get-status
  627. is-eof?
  628. (read-check :syntax)
  629. got-error?
  630. image-read-block
  631. read-lost
  632. read-page
  633. read-newline
  634. read-this-character
  635. reverse-descriptor-byte-order!
  636. reverse-byte-order!
  637. adjust
  638. relocate-image
  639. alloc-space
  640. relocate-symbol-table-two-space!
  641. relocate-binding-table-two-space!
  642. set-startup-procedure!
  643. get-startup-procedure
  644. set-symbols!
  645. get-symbols
  646. set-imported-bindings!
  647. get-imported-bindings
  648. set-exported-bindings!
  649. get-exported-bindings
  650. set-resumer-records!
  651. get-resumer-records
  652. set-img-start-addr!
  653. get-img-start-addr
  654. set-img-end-addr!
  655. get-img-end-addr
  656. set-img-heap-size!
  657. get-img-heap-size
  658. set-small-img-start-addr!
  659. get-small-img-start-addr
  660. set-small-img-hp-addr!
  661. get-small-img-hp-addr
  662. set-small-img-end-addr!
  663. get-small-img-end-addr
  664. set-small-img-heap-size!
  665. get-small-img-heap-size
  666. set-large-img-start-addr!
  667. get-large-img-start-addr
  668. set-large-img-hp-addr!
  669. get-large-img-hp-addr
  670. set-large-img-end-addr!
  671. get-large-img-end-addr
  672. set-large-img-heap-size!
  673. get-large-img-heap-size
  674. set-weaks-img-start-addr!
  675. get-weaks-img-start-addr
  676. set-weaks-img-hp-addr!
  677. get-weaks-img-hp-addr
  678. set-weaks-img-end-addr!
  679. get-weaks-img-end-addr
  680. set-weaks-img-heap-size!
  681. get-weaks-img-heap-size
  682. ))
  683. (define-interface read-image-util-gc-specific-interface
  684. (export get-small-start-addr
  685. get-large-start-addr
  686. get-weaks-start-addr))
  687. (define-interface write-image-util-interface
  688. (export write-page
  689. (write-check :syntax)
  690. write-header-integer
  691. image-write-init
  692. image-write-terminate
  693. image-write-status
  694. write-descriptor
  695. write-image-block
  696. empty-image-buffer!))
  697. ; for debugging
  698. ; To activate/deactivate it, the flag 'debug-mode?' must be set in
  699. ; debugging.scm
  700. (define-interface debugging-interface
  701. (export debug ;; strings
  702. debug-int ;; integers
  703. debug-line ;; "--------"
  704. debug-mode?
  705. ))