interfaces.scm 21 KB

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