COMPILATION LISTING OF SEGMENT tree_manager Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1621.0 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* This procedure and entries manage the multiple segments used for free 12* storage by the pl1 and fortran compilers. */ 13 14 /* Extensively rewritten to use standard no-free areas for the 15*compiler's own storage and thus eliminate the compiler's use of 16*the "rename" option in April,1976 by RHS. 17* 18* Modified: 4 May 1977 by RAB for new release_area_ protocol */ 19 20 tree_manager$init: proc (abort_label_par); 21 22 dcl abort_label_par label; 23 24 dcl abort_label label internal static; 25 26 dcl pl1_stat_$condition_index fixed bin (31) ext static, 27 pl1_stat_$root ptr ext static, 28 pl1_stat_$free_ptr (18) ptr ext static; 29 30 dcl sys_info$max_seg_size ext static fixed bin (35); 31 32 dcl i fixed bin (17); 33 dcl code fixed bin (35); 34 35 36 dcl first_time bit (1) aligned internal static init ("1"b); 37 38 dcl (null, addr, ptr, substr, unspec) builtin; 39 40 41 dcl define_area_ external entry (ptr, fixed bin (35)), 42 release_area_ external entry (ptr), 43 ioa_ entry options (variable); 44 1 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 1 2 1 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 1 4 1 5 dcl area_infop ptr; 1 6 1 7 dcl 1 area_info aligned based (area_infop), 1 8 2 version fixed bin, /* version number for this structure is 1 */ 1 9 2 control aligned like area_control, /* control bits for the area */ 1 10 2 owner char (32) unal, /* creator of the area */ 1 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 1 12 2 size fixed bin (18), /* size of the area in words */ 1 13 2 version_of_area fixed bin, /* version of area (returned only) */ 1 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 1 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 1 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 1 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 1 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 1 19 1 20 dcl 1 area_control aligned based, 1 21 2 extend bit (1) unal, /* says area is extensible */ 1 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 1 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 1 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 1 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 1 26 2 system bit (1) unal, /* says area is managed by system */ 1 27 2 pad bit (30) unal; 1 28 1 29 /* END INCLUDE FILE area_info.incl.pl1 */ 45 2 1 /* BEGIN INCLUDE FILE ... pl1_tree_areas.incl.pl1 */ 2 2 2 3 /* format: style3 */ 2 4 dcl tree_area area based (pl1_stat_$tree_area_ptr); 2 5 dcl xeq_tree_area area based (pl1_stat_$xeq_tree_area_ptr); 2 6 2 7 dcl pl1_stat_$tree_area_ptr 2 8 ptr ext static, 2 9 pl1_stat_$xeq_tree_area_ptr 2 10 ptr ext static; 2 11 2 12 /* END INCLUDE FILE ... op_codes.incl.pl1 */ 46 47 48 dcl 1 my_area_info like area_info internal static; 49 50 3 1 dcl pl1_stat_$token_list_ptr ptr external static; /* pointer to token list */ 3 2 dcl token_list(token_list_length) ptr based(token_list_pointer); 3 3 dcl token_list_pointer ptr initial(pl1_stat_$token_list_ptr); /* for efficiency only */ 3 4 dcl token_list_length fixed(15) internal static initial(3000) options(constant); 3 5 3 6 dcl 1 pl1_stat_$statement_id external static, 3 7 2 file_number bit(8), 3 8 2 line_number bit(14), 3 9 2 statement_number bit(5); 3 10 3 11 dcl 1 t_table based(token_list(k)) aligned, 3 12 2 node_type bit(9) unaligned, 3 13 2 type bit(9) unaligned, 3 14 2 loc bit(18) unaligned, 3 15 2 declaration ptr unaligned, 3 16 2 next ptr unaligned, 3 17 2 size fixed(9), 3 18 2 string char(n refer(t_table.size)); 51 4 1 dcl m fixed bin(15); 4 2 dcl pl1_stat_$source_seg fixed bin(8) ext static; 4 3 dcl pl1_stat_$last_source fixed bin(15) ext static; 4 4 dcl pl1_stat_$source_list_ptr ptr ext static; 4 5 dcl source_list(0:source_list_length) ptr based(pl1_stat_$source_list_ptr); 4 6 dcl source_list_length fixed bin(15) internal static initial(255) options(constant); 4 7 4 8 dcl 1 source based(source_list(m)) aligned, 4 9 2 node_type unal bit(9), 4 10 2 source_id unal structure, 4 11 3 file_number bit(8), 4 12 3 line_number bit(14), 4 13 3 statement_number bit(5), 4 14 2 standard_object_info aligned structure, 4 15 3 uid bit(36), 4 16 3 dtm fixed bin(71), 4 17 2 seg_ptr unal ptr, 4 18 2 name unal ptr, 4 19 2 source_length unal fixed bin(24), 4 20 2 pathlen unal fixed bin(10), 4 21 2 pathname char(n refer(source.pathlen)); 52 53 54 abort_label = abort_label_par; /* Where to go if call to define or release_area fails. */ 55 56 if pl1_stat_$tree_area_ptr ^= null 57 then call release_area_ (pl1_stat_$tree_area_ptr); 58 59 if pl1_stat_$xeq_tree_area_ptr ^= null 60 then call release_area_ (pl1_stat_$xeq_tree_area_ptr); 61 62 63 if first_time 64 then do; 65 unspec (my_area_info) = "0"b; 66 my_area_info.version = 1; 67 my_area_info.extend = "1"b; 68 my_area_info.no_freeing = "1"b; 69 my_area_info.owner = "pl1"; 70 my_area_info.size = sys_info$max_seg_size; 71 first_time = "0"b; 72 end; 73 74 75 my_area_info.areap = null; 76 77 call define_area_ (addr (my_area_info), code); 78 79 if code ^= 0 80 then goto call_failed; 81 82 pl1_stat_$tree_area_ptr = my_area_info.areap; 83 84 allocate source_list in (tree_area) set (pl1_stat_$source_list_ptr); 85 86 allocate token_list in (tree_area) set (pl1_stat_$token_list_ptr); 87 88 my_area_info.areap = null; 89 90 call define_area_ (addr (my_area_info), code); 91 92 if code ^= 0 93 then goto call_failed; 94 95 pl1_stat_$xeq_tree_area_ptr = my_area_info.areap; 96 97 tr: 98 do i = 1 to 18; 99 pl1_stat_$free_ptr (i) = null; 100 end; 101 102 pl1_stat_$condition_index = 0; 103 104 return; 105 106 call_failed: 107 call ioa_ ("Compiler failed in allocating temporary storage."); 108 goto abort_label; 109 110 tree_manager$truncate: entry; 111 112 pl1_stat_$root = null; 113 if pl1_stat_$tree_area_ptr ^= null 114 then call release_area_ (pl1_stat_$tree_area_ptr); 115 if pl1_stat_$xeq_tree_area_ptr ^= null 116 then call release_area_ (pl1_stat_$xeq_tree_area_ptr); 117 118 goto tr; 119 120 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1007.8 tree_manager.pl1 >spec>on>pl128d>tree_manager.pl1 45 1 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.incl.pl1 46 2 07/21/80 1546.3 pl1_tree_areas.incl.pl1 >ldd>include>pl1_tree_areas.incl.pl1 51 3 09/14/77 1705.7 token_list.incl.pl1 >ldd>include>token_list.incl.pl1 52 4 05/03/76 1320.4 source_list.incl.pl1 >ldd>include>source_list.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. abort_label 000010 internal static label variable dcl 24 set ref 54* 108 abort_label_par parameter label variable dcl 22 ref 20 54 addr builtin function dcl 38 ref 77 77 90 90 area_control based structure level 1 dcl 1-20 area_info based structure level 1 dcl 1-7 areap 16 000016 internal static pointer level 2 dcl 48 set ref 75* 82 88* 95 code 000101 automatic fixed bin(35,0) dcl 33 set ref 77* 79 90* 92 control 1 000016 internal static structure level 2 dcl 48 define_area_ 000052 constant entry external dcl 41 ref 77 90 extend 1 000016 internal static bit(1) level 3 packed unaligned dcl 48 set ref 67* first_time 000014 internal static bit(1) initial dcl 36 set ref 63 71* i 000100 automatic fixed bin(17,0) dcl 32 set ref 97* 99* ioa_ 000056 constant entry external dcl 41 ref 106 my_area_info 000016 internal static structure level 1 unaligned dcl 48 set ref 65* 77 77 90 90 no_freeing 1(04) 000016 internal static bit(1) level 3 packed unaligned dcl 48 set ref 68* null builtin function dcl 38 ref 56 59 75 88 99 112 113 115 owner 2 000016 internal static char(32) level 2 packed unaligned dcl 48 set ref 69* pl1_stat_$condition_index 000042 external static fixed bin(31,0) dcl 26 set ref 102* pl1_stat_$free_ptr 000046 external static pointer array dcl 26 set ref 99* pl1_stat_$root 000044 external static pointer dcl 26 set ref 112* pl1_stat_$source_list_ptr 000066 external static pointer dcl 4-4 set ref 84* pl1_stat_$token_list_ptr 000064 external static pointer dcl 3-1 set ref 86* 3-3 pl1_stat_$tree_area_ptr 000060 external static pointer dcl 2-7 set ref 56 56* 82* 84 86 113 113* pl1_stat_$xeq_tree_area_ptr 000062 external static pointer dcl 2-7 set ref 59 59* 95* 115 115* release_area_ 000054 constant entry external dcl 41 ref 56 59 113 115 size 13 000016 internal static fixed bin(18,0) level 2 dcl 48 set ref 70* source_list based pointer array dcl 4-5 ref 84 source_list_length constant fixed bin(15,0) initial dcl 4-6 ref 84 sys_info$max_seg_size 000050 external static fixed bin(35,0) dcl 30 ref 70 token_list based pointer array dcl 3-2 ref 86 token_list_length constant fixed bin(15,0) initial dcl 3-4 ref 86 token_list_pointer 000102 automatic pointer initial dcl 3-3 set ref 3-3* tree_area based area(1024) dcl 2-4 ref 84 86 unspec builtin function dcl 38 set ref 65* version 000016 internal static fixed bin(17,0) level 2 dcl 48 set ref 66* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. area_info_version_1 internal static fixed bin(17,0) initial dcl 1-3 area_infop automatic pointer dcl 1-5 m automatic fixed bin(15,0) dcl 4-1 pl1_stat_$last_source external static fixed bin(15,0) dcl 4-3 pl1_stat_$source_seg external static fixed bin(8,0) dcl 4-2 pl1_stat_$statement_id external static structure level 1 packed unaligned dcl 3-6 ptr builtin function dcl 38 source based structure level 1 dcl 4-8 substr builtin function dcl 38 t_table based structure level 1 dcl 3-11 xeq_tree_area based area(1024) dcl 2-5 NAMES DECLARED BY EXPLICIT CONTEXT. call_failed 000222 constant label dcl 106 ref 79 92 tr 000202 constant label dcl 97 ref 118 tree_manager$init 000034 constant entry external dcl 20 tree_manager$truncate 000242 constant entry external dcl 110 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 476 566 300 506 Length 1044 300 70 242 175 32 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tree_manager$init 94 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 abort_label tree_manager$init 000014 first_time tree_manager$init 000016 my_area_info tree_manager$init STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tree_manager$init 000100 i tree_manager$init 000101 code tree_manager$init 000102 token_list_pointer tree_manager$init THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return tra_label_var ext_entry alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. define_area_ ioa_ release_area_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. pl1_stat_$condition_index pl1_stat_$free_ptr pl1_stat_$root pl1_stat_$source_list_ptr pl1_stat_$token_list_ptr pl1_stat_$tree_area_ptr pl1_stat_$xeq_tree_area_ptr sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 3 000023 20 000031 54 000042 56 000051 59 000063 63 000076 65 000101 66 000104 67 000106 68 000110 69 000112 70 000115 71 000117 75 000120 77 000122 79 000134 82 000136 84 000141 86 000151 88 000161 90 000163 92 000175 95 000177 97 000202 99 000207 100 000215 102 000217 104 000221 106 000222 108 000236 110 000241 112 000250 113 000253 115 000264 118 000277 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved