alt-gc-package-defs.scm 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Richard Kelsey, Jonathan Rees, Marcus Crestani, David Frese,
  3. ; Martin Gasbichler, Mike Sperber
  4. ; These are used to compile the VM separately from the GC. It has new
  5. ; definitions of the heap and GC structures with all of the values defined
  6. ; as externals.
  7. (define-structure allocation allocation-interface
  8. (open prescheme)
  9. (begin
  10. (define s48-make-available+gc
  11. (external "s48_make_availableAgc" (=> (integer) null)))
  12. (define s48-allocate-small
  13. (external "s48_allocate_small" (=> (integer) address)))
  14. (define s48-allocate-weak+gc
  15. (external "s48_allocate_weakAgc" (=> (integer) address)))
  16. (define s48-allocate-traced+gc
  17. (external "s48_allocate_tracedAgc" (=> (integer) address)))
  18. (define s48-allocate-untraced+gc
  19. (external "s48_allocate_untracedAgc" (=> (integer) address)))
  20. (define s48-gc-can-allocate-unmovable?
  21. (external "s48_gc_can_allocate_unmovableP" (=> () boolean)))
  22. (define s48-allocate-traced-unmovable+gc
  23. (external "s48_allocate_traced_unmovableAgc" (=> (integer) address)))
  24. (define s48-allocate-untraced-unmovable+gc
  25. (external "s48_allocate_untraced_unmovableAgc" (=> (integer) address)))
  26. (define s48-unmovable?
  27. (external "s48_unmovableP" (=> (integer) boolean)))
  28. ))
  29. (define-structure heap heap-interface
  30. (open prescheme)
  31. (begin
  32. (define s48-available
  33. (external "s48_available" (=> () integer)))
  34. (define s48-heap-size
  35. (external "s48_heap_size" (=> () integer)))
  36. (define s48-max-heap-size
  37. (external "s48_max_heap_size" (=> () integer)))
  38. (define s48-gather-objects
  39. (external "s48_gather_objects" (=> ((=> (integer) boolean)
  40. (=> ((=> (integer) boolean)) boolean))
  41. integer)))
  42. (define s48-find-all
  43. (external "s48_find_all" (=> (integer) integer)))
  44. (define s48-find-all-records
  45. (external "s48_find_all_records" (=> (integer) integer)))
  46. (define s48-write-barrier
  47. (external "S48_WRITE_BARRIER" (=> (integer address integer) null)))
  48. (define s48-check-heap
  49. (external "s48_check_heap" (=> (integer) boolean)))
  50. (define s48-stob-in-heap?
  51. (external "s48_stob_in_heapP" (=> (integer) boolean)))
  52. ))
  53. (define-structure gc gc-interface
  54. (open prescheme)
  55. (begin
  56. (define s48-collect
  57. (external "s48_collect" (=> (boolean) null)))
  58. (define s48-trace-value
  59. (external "s48_trace_value" (=> (integer) integer)))
  60. (define s48-trace-locations!
  61. (external "s48_trace_locationsB" (=> (address address) null)))
  62. (define s48-trace-stob-contents!
  63. (external "s48_trace_stob_contentsB" (=> (integer) null)))
  64. (define s48-trace-continuation-contents!
  65. (external "s48_trace_continuation_contentsB"
  66. (=> (address address integer) null)))
  67. (define s48-extant?
  68. (external "s48_extantP" (=> (integer) boolean)))
  69. (define s48-gc-count
  70. (external "s48_gc_count" (=> () integer)))
  71. (define s48-gc-run-time
  72. (external "s48_gc_run_time" (=> () integer integer)))
  73. ))