Heap Module Specification


Document formatted by vherva at Fri Apr 24 11:23:43 1998 on the host schemestation. This document is produced by the SchemeStation project during the Tik-76.115 course.

  1. Introduction
  2. The Heap Structure
    1. Types
      1. Integer
      2. Float
      3. Boolean
      4. Pair
      5. Vector
      6. Shared Bit String
      7. Private Bit String
      8. Procedure
      9. Null
    2. Tags
    3. Garbage collection
    4. Linearisation
    5. Initial Values
    6. Illegal Operations
  3. Heap implementation
  4. The functions of module Heap
    1. File heap.h
      1. Status heap_copy_bit_string (INOUT Heap heap, OUT HeapTypedData *item, IN HeapTypedData *source)
      2. Status heap_copy_pair (INOUT Heap heap, OUT HeapTypedData *dest, IN HeapTypedData *source)
      3. Status heap_copy_vector (INOUT Heap heap, OUT HeapTypedData *item, IN HeapTypedData *source)
      4. Status heap_delinearize (INOUT Heap heap, IN HeapTypedData *dest, IN LinearizedHeap source)
      5. Status heap_delinearize_assembled (INOUT Heap heap, IN LinearizedHeap linheap, OUT uchar **bytecode, OUT HeapInteger *blen)
      6. Status heap_free (IN Heap heap)
      7. Status heap_gc (INOUT Heap heap)
      8. Status heap_get_bit_string (IN Heap heap, OUT uchar **item, IN HeapTypedData *source)
      9. Status heap_get_bit_string_len (IN Heap heap, OUT HeapInteger *num, IN HeapTypedData *source)
      10. Status heap_get_bit_string_substring (INOUT Heap heap, OUT HeapTypedData *dst, IN HeapTypedData *source, IN HeapIndex pos, IN HeapSize len)
      11. Status heap_get_boolean (IN Heap heap, OUT HeapBoolean *num, IN HeapTypedData *source)
      12. Status heap_get_bytecode (IN Heap heap, OUT HeapInteger *num, IN HeapTypedData *source)
      13. Status heap_get_constant_item (IN Heap heap, OUT HeapTypedData *dest, IN HeapInteger index)
      14. Status heap_get_constants_table (IN Heap heap, OUT HeapTypedData *dest)
      15. Status heap_get_float (IN Heap heap, OUT HeapFloat *num, IN HeapTypedData *source)
      16. Status heap_get_integer (IN Heap heap, OUT HeapInteger *num, IN HeapTypedData *source)
      17. Status heap_get_pair_car (IN Heap heap, OUT HeapTypedData *item, IN HeapTypedData *source)
      18. Status heap_get_pair_cdr (IN Heap heap, OUT HeapTypedData *item, IN HeapTypedData *source)
      19. Status heap_get_procedure_bytecode (IN Heap heap, OUT HeapTypedData *dest, IN HeapTypedData *src)
      20. Status heap_get_procedure_env (IN Heap heap, OUT HeapTypedData *dest, IN HeapTypedData *src)
      21. Status heap_get_tag (IN Heap heap, OUT HeapTag *tag, IN HeapTypedData *source)
      22. Status heap_get_vector_item (IN Heap heap, OUT HeapTypedData *item, IN HeapTypedData *source, IN HeapIndex index)
      23. Status heap_get_vector_len (IN Heap heap, OUT HeapSize *size, IN HeapTypedData *source)
      24. Status heap_info (IN Heap heap, OUT HeapInfo *info)
      25. Status heap_init (OUT Heap *heap, IN HeapSize size)
      26. Status heap_lin_get_bstr (OUT LinearizedHeap linheap, OUT uchar **content, OUT HeapInteger *length, OUT HeapTag *tag, IN HeapInteger index)
      27. Status heap_lin_get_bstr_count (OUT LinearizedHeap source, OUT HeapInteger *num)
      28. Status heap_linearize (IN Heap heap, OUT LinearizedHeap *linheap, OUT HeapInteger *len, IN HeapTypedData *source)
      29. Status heap_make_boolean (INOUT Heap heap, IN HeapBoolean num, OUT HeapTypedData *ptr)
      30. Status heap_make_bytecode (INOUT Heap heap, IN HeapInteger num, INOUT HeapTypedData *ptr)
      31. Status heap_make_float (INOUT Heap heap, IN HeapFloat num, OUT HeapTypedData *ptr)
      32. Status heap_make_integer (INOUT Heap heap, IN HeapInteger num, OUT HeapTypedData *ptr)
      33. heap_make_pair (heap, item)
      34. Status heap_make_pair_tagged (INOUT Heap heap, OUT HeapTypedData *ptr, IN HeapTag tag)
      35. heap_make_private_bit_string (heap, item, size)
      36. Status heap_make_private_bit_string_tagged (INOUT Heap heap, OUT HeapTypedData *item, IN HeapSize size, IN HeapTag tag)
      37. Status heap_make_procedure (INOUT Heap heap, OUT HeapTypedData *item, IN HeapTypedData *bytecode, IN HeapTypedData *env)
      38. heap_make_shared_bit_string (heap, item, size)
      39. Status heap_make_shared_bit_string_tagged (INOUT Heap heap, OUT HeapTypedData *item, IN HeapSize size, IN HeapTag tag)
      40. Status heap_make_tag (INOUT Heap heap, IN HeapTag tag, OUT HeapTypedData *ptr)
      41. Status heap_make_vector (INOUT Heap heap, OUT HeapTypedData *ptr, HeapInteger length)
      42. Status heap_make_vector_tagged (INOUT Heap heap, OUT HeapTypedData *ptr, IN HeapInteger length, IN HeapTag tag)
      43. Status heap_pop_gc_roots (IN Heap heap)
      44. Status heap_push_gc_root (IN Heap heap, IN HeapTypedData *reg)
      45. heap_set_bit_string (heap, item, string)
      46. Status heap_set_bit_string_substring (INOUT Heap heap, INOUT HeapTypedData *dest, IN HeapTypedData *src, IN HeapIndex pos)
      47. Status heap_set_constant_vector (IN Heap heap, IN HeapTypedData *source)
      48. Status heap_set_constants_table (IN Heap heap, IN HeapTypedData *src)
      49. Status heap_set_item (INOUT Heap heap, INOUT HeapTypedData *dest, OUT HeapTypedData *src)
      50. heap_set_pair_car (heap, item, car)
      51. heap_set_pair_cdr (heap, item, cdr)
      52. Status heap_set_vector_item (INOUT Heap heap, INOUT HeapTypedData *dest, IN HeapTypedData *source, IN HeapIndex index)
      53. Status heap_start_root_frame (IN Heap heap)
      54. ss_int64_ntoh (*(int64 *)(heap))
    2. File heap_internal.h
      1. Status heap_gc_copy_cheney (INOUT Heap, int gc)
      2. Status heap_gc_copy_root (INOUT Heap heap)
      3. void inline heap_internal_decr_bitstring_refc (INOUT Heap heap, IN HeapTypedData *item)
      4. void inline heap_internal_get_top_pointer (IN Heap heap, OUT HeapItem *ptr)
      5. void inline heap_internal_incr_bitstring_refc (INOUT Heap heap, IN HeapTypedData *item)
      6. Status inline heap_internal_request (INOUT Heap heap, IN HeapSize size)
      7. void inline heap_internal_set_top_data (INOUT Heap heap, IN HeapData data)
      8. void inline heap_internal_set_top_tag (INOUT Heap heap, IN HeapTag tag)
      9. void inline heap_internal_update (INOUT Heap heap, IN uint64 size)
    3. File heap_types.h
      1. IS_OF_TAGGED (x)
      2. sizeof (HeapInteger)
    4. File heapconv.h
      1. Status get_list_from_lheap (IN LinearizedHeap lheap, IN char *format, OUT ...)
      2. Status hconv_heap_end_incr (OUT LinearizedHeap *lheap)
      3. Status hconv_heap_end_walk (void)
      4. Status hconv_heap_make_incr (char format, ...)
      5. Status hconv_heap_start_incr (void)
      6. Status hconv_heap_start_walk (IN LinearizedHeap lheap)
      7. Status hconv_heap_walk (char format, ...)
      8. Status make_lheap_from_list (OUT LinearizedHeap *lheap, IN char *format, IN ...)
      9. Status make_lheap_from_list_va (OUT LinearizedHeap *lheap, char *format, IN va_list args)

© SchemeStation project 1997-1998 [Back to the document index]