COMPILATION LISTING OF SEGMENT apl_storage_meters Compiled by: Experimental PL/I Compiler of Friday, July 31, 1981 at 13:16 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 08/08/81 2000.3 mst Sat Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 apl_storage_meters: 11 asm: 12 procedure (); 13 14 /* 15* * command to display the meters kept by apl_storage_manager_ 16* * 17* * written 73.8.04 by DAM 18* * Modified 731206 by PG for modified include file format. 19* * Modified 740617 by PG to print more info. 20* * Modified 750911 by PG to rename from meter_apl_storage to apl_storage_meters 21* * Modified 750330 by PG to re-format output 22* */ 23 24 25 26 27 dcl com_err_ entry options (variable), 28 error_table_$badopt fixed bin (35) external, 29 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 30 argp ptr, 31 argl fixed bin, 32 code fixed bin (35), 33 arg char (argl) based (argp), 34 brief bit (1), 35 ioa_ entry options (variable); 36 37 dcl (addr, null, divide, sum, lbound, hbound, baseno, float, unspec, fixed, rel, max) 38 builtin; 39 40 /* automatic */ 41 42 dcl sli fixed bin, 43 (alloc_count, free_count) 44 fixed bin, 45 global_storage_system_data_pointer 46 ptr, 47 vst char (1), 48 end_vs bit (1), 49 sgt char (10), 50 n_map_ent fixed bin, 51 i fixed bin, 52 rangex fixed bin, 53 rx fixed bin, 54 upper fixed bin (18), 55 range_break fixed bin; 56 57 /* include files */ 58 1 1 /* ====== BEGIN INCLUDE SEGMENT apl_number_data.incl.pl1 ================================== */ 1 2 1 3 /* 1 4* This include file contains information about the machine representation of numbers. 1 5* In all programs numbers should simply be declared 'float'. 1 6* All default statements should be in this include file. 1 7* 1 8* This is the binary version. The manifest constant Binary should be used by programs 1 9* that need to know whether we are using binary or decimal. 1 10* */ 1 11 1 12 /* format: style3,initlm0,idind30 */ 1 13 1 14 default (float & ^decimal & ^binary & ^precision & ^constant) float binary (63); 1 15 1 16 declare ( 1 17 TheBiggestNumberWeveGot float initial (0.1701411834604692317e+39), 1 18 TheSmallestNumberWeveGot float initial (.1469367938527859385e-38), 1 19 Binary bit (1) aligned initial ("1"b) 1 20 ) internal static options (constant); 1 21 1 22 /* Number of characters in a number datum entry; used for copying float number arrays as strings. 1 23* (Obsolete! use array copies!) */ 1 24 1 25 declare NumberSize fixed binary precision (4) internal static initial (8); 1 26 1 27 /* ------ END INCLUDE SEGMENT apl_number_data.incl.pl1 ---------------------------------- */ 59 2 1 /* ====== BEGIN INCLUDE SEGMENT apl_ws_info.incl.pl1 ====================================== */ 2 2 2 3 /* This structure contains all of the global data (or pointers to it) for the APL subsystem */ 2 4 2 5 /* automatic */ 2 6 2 7 declare ws_info_ptr ptr initial (apl_static_$ws_info_ptr.static_ws_info_ptr); 2 8 2 9 /* external static */ 2 10 2 11 declare 1 apl_static_$ws_info_ptr external static aligned structure, 2 12 2 static_ws_info_ptr unaligned pointer; 2 13 2 14 /* based */ 2 15 2 16 declare 1 ws_info aligned based (ws_info_ptr), 2 17 2 version_number fixed bin, /* version of this structure (3) */ 2 18 2 switches unaligned, /* mainly ws parameters */ 2 19 3 long_error_mode bit, /* if 1, long Multics format, else APL/360 format */ 2 20 3 debug_mode bit, /* if 1, system error causes escape to command level */ 2 21 3 canonicalize_mode bit, /* if 1, the editor canonicalizes user input */ 2 22 3 restrict_exec_command bit, /* if 1, the )EXEC command may not be used */ 2 23 3 restrict_debug_command bit, /* if 1, the )DEBUG command may not be used */ 2 24 3 restrict_external_functions 2 25 bit, /* if 1, the )ZFN, )MFN, and )DFN commands may not be used */ 2 26 3 restrict_load bit, /* if 1, the )LOAD and )COPY commands may not be used */ 2 27 3 restrict_load_directory bit, /* if 1, no directory allowed in )LOAD or )COPY pathnames */ 2 28 3 restrict_save bit, /* if 1, the )SAVE command may not be used */ 2 29 3 restrict_save_directory bit, /* if 1, no directory allowed in )SAVE pathnames */ 2 30 3 off_hold bit, /* if 1, )OFF HOLD was typed, else just )OFF */ 2 31 3 transparent_to_signals bit, /* if 1, any conditions slip right past APL */ 2 32 3 meter_mode bit, /* if 1, metering may be done, else speed is all-important */ 2 33 3 restrict_msg_command bit, /* if 1, the )MSG command may not be used. */ 2 34 3 compatibility_check_mode 2 35 bit, /* if 1, check for incompatible operators */ 2 36 3 no_quit_handler bit, /* if 1, do not trap QUITs. */ 2 37 /* remaining 20 bits not presently used */ 2 38 2 39 2 values, /* attributes of the workspace */ 2 40 3 digits fixed bin, /* number of digits of precision printed on output */ 2 41 3 width fixed bin, /* line length for formatted output */ 2 42 3 index_origin fixed bin, /* the index origin (0 or 1) */ 2 43 3 random_link fixed bin(35), /* seed for random number generator */ 2 44 3 fuzz float, /* comparison tolerance (relative fuzz) */ 2 45 3 float_index_origin float, /* the index origin in floating point */ 2 46 3 number_of_symbols fixed bin, /* the number of symbol_beads currently in existence */ 2 47 3 maximum_value_stack_size 2 48 fixed bin (18), /* maximum number of words in one segment of value stack */ 2 49 2 50 2 pointers, /* pointers to various internal tables */ 2 51 3 symbol_table_ptr unaligned pointer, /* -> symbol_table (apl_symbol_table.incl.pl1) */ 2 52 3 current_parse_frame_ptr unaligned pointer, /* -> topmost parse frame */ 2 53 3 value_stack_ptr unaligned pointer, /* -> next free location on value stack */ 2 54 3 alloc_free_info_ptr unaligned pointer, /* -> apl_storage_mngr_ data (apl_storage_system_data.incl.pl1) */ 2 55 2 56 2 time_invoked fixed bin(71), /* clock time that APL was entered */ 2 57 2 integer_fuzz float, /* the absolute fuzz used in checking for integers */ 2 58 2 user_number fixed bin(35), /* number under which the user is signed on */ 2 59 2 latent_expression unaligned pointer, /* -> value_bead for QuadLX */ 2 60 2 lock char(32), /* the lock currently set on this workspace (password) */ 2 61 2 wsid char(100), /* the workspace identification: name, number name, or clear ws */ 2 62 2 last_error_code fixed bin(35), /* last code passed to apl_error_ */ 2 63 2 signoff_lock character (32), 2 64 2 65 2 interrupt_info aligned, /* bits used by apl_interpreter_ to tell when to abort */ 2 66 3 dont_interrupt_parse bit, /* if 1, don't do a dirty stop because the parser is running */ 2 67 3 dont_interrupt_operator bit, /* if 1, don't do a dirty stop because an operator is running */ 2 68 3 dont_interrupt_storage_manager /* if 1, don't stop because apl_storage_mngr_ is */ 2 69 bit, /* munging his tables */ 2 70 3 unused_interrupt_bit bit, /* not presently used */ 2 71 3 dont_interrupt_command bit, 2 72 3 can_be_interrupted bit, /* if 1, OK to do a clean stop (we are between lines, reading) */ 2 73 3 clean_interrupt_pending bit, /* interrupt occured, break cleanly (between lines) */ 2 74 3 dirty_interrupt_pending bit, /* interrupt occured, break as soon as not inhibited */ 2 75 2 76 2 user_name char (32), /* process group id of user */ 2 77 2 immediate_input_prompt char (32) varying, /* normal input */ 2 78 2 evaluated_input_prompt char (32) varying, /* quad input */ 2 79 2 character_input_prompt char (32) varying, /* quad-quote input */ 2 80 2 vcpu_time aligned, 2 81 3 total fixed bin (71), 2 82 3 setup fixed bin (71), 2 83 3 parse fixed bin (71), 2 84 3 lex fixed bin (71), 2 85 3 operator fixed bin (71), 2 86 3 storage_manager fixed bin (71), 2 87 2 output_info aligned, /* data pertaining to output buffer */ 2 88 3 output_buffer_ptr unal ptr, /* ptr to output buffer */ 2 89 3 output_buffer_len fixed bin (21), /* length (bytes) of output buffer */ 2 90 3 output_buffer_pos fixed bin (21), /* index of next byte to write in */ 2 91 3 output_buffer_ll fixed bin (21), /* print positions used up so far */ 2 92 2 tab_width fixed bin (21); /* number of columns a tabs moves cursor */ 2 93 2 94 declare output_buffer char (ws_info.output_buffer_len) based (ws_info.output_buffer_ptr); 2 95 2 96 /* internal static */ 2 97 2 98 declare max_parse_stack_depth fixed bin int static init(64536); 2 99 2 100 /* ------ END INCLUDE SEGMENT apl_ws_info.incl.pl1 -------------------------------------- */ 60 3 1 /* ====== BEGIN INCLUDE SEGMENT apl_storage_system_data.incl.pl1 ========================== */ 3 2 3 3 /* 3 4* * This include file contains a declaration of the data structure 3 5* * kept in the "map segment" by the apl_storage_mngr_ 3 6* * 3 7* * Written July 1973 by DAM 3 8* * Modified Dec 1973 to change spelling of structure name from stroage to storage by PG 3 9* */ 3 10 3 11 /* data in the map seg */ 3 12 3 13 declare 3 14 1 global_storage_system_data aligned based (global_storage_system_data_pointer), 3 15 2 seg_map_hash_table(0:88), /* hash table for finding seg_list entry given pointer */ 3 16 3 seg_baseno bit(18) unaligned, /* 0 if empty, or segment number */ 3 17 3 seg_list_idx fixed bin(17) unaligned, /* 0 if empty, or index into seg_list for this seg */ 3 18 2 last_map unaligned pointer, /* -> last seg_map in the storage_system_data segment */ 3 19 2 current_little_bead_seg fixed bin, /* 0 or index in seg_list of little bead allocation seg. */ 3 20 2 current_big_bead_seg fixed bin, /* 0 or index in seg_list of big bead allocation seg. */ 3 21 2 current_little_scan_pos fixed bin, /* next map entry to scan in current_little_bead_seg */ 3 22 2 current_big_scan_pos fixed bin, /* next map entry to scan in current_big_bead_seg */ 3 23 2 seg_list (30), /* <--- one entry for each segment in use by storage mngr */ 3 24 3 words_free fixed bin(18), /* total number of unallocated words in the segment */ 3 25 3 pointer unaligned pointer, /* -> seg if usage = 1 or 2, else -> seg_map */ 3 26 3 usage fixed bin, /* 0 = entry free, 1 = seg not currently in use, 3 27* 2 = value_stack seg, 3 = little bead seg, 4 = big bead seg */ 3 28 3 29 2 metric, /* METERING DATA, governed by ws_info.meter_mode */ 3 30 3 31 3 big_seg_balance, /* meters for balancing of big-bead segs */ 3 32 4 count fixed bin, /* number of times a balance occurred */ 3 33 4 thrown_away fixed bin, /* number of times a bead had to be thrown away */ 3 34 4 amt_thrown_away fixed bin, /* total number of words that had to be thrown away */ 3 35 4 time_spent_balancing fixed bin(71), /* time spent balancing */ 3 36 4 space_left fixed bin(30), /* sum of amounts space left in use by maps after balances */ 3 37 3 little_seg_balance, /* same meters for balancing of little-bead segs */ 3 38 4 count fixed bin, 3 39 4 thrown_away fixed bin, 3 40 4 space_left fixed bin(30), 3 41 4 amt_thrown_away fixed bin, 3 42 4 time_spent_balancing fixed bin(71), 3 43 3 get_next_value_stack_seg_calls fixed bin, /* number of times new value stack seg was needed */ 3 44 3 copy_apl_value_calls fixed bin, /* number of values copied */ 3 45 3 copy_apl_value_time fixed bin(71), /* amount of time spent copying values */ 3 46 3 47 3 range(16), /* alloc-free meters by size range */ 3 48 4 size fixed bin(18), /* number of words have to be as big as to fit in range */ 3 49 4 free_count fixed bin, /* number beads this size freed */ 3 50 4 map_free_count fixed bin, /* number times freeing required search of map */ 3 51 4 free_time fixed bin(71), /* amount of time spent freeing beads this size */ 3 52 4 words_freed fixed bin(24), /* total number of words freed in beads this size */ 3 53 3 54 4 alloc_count fixed bin, /* number beads this size allocated */ 3 55 4 alloc_end_count fixed bin, /* number times allocated from end of segment */ 3 56 4 alloc_new_count fixed bin, /* number times had to switch to a new segment */ 3 57 4 alloc_time fixed bin(71), /* total time spent allocating */ 3 58 4 words_alloced fixed bin(24), /* total number of words in beads alloc'ed this size */ 3 59 3 60 3 61 2 first_seg_map; /* first seg_map is created at this address */ 3 62 3 63 3 64 dcl 1 seg_map aligned based(seg_map_p), /* there is one of these for each segment in APL heap-space */ 3 65 2 seg_ptr pointer unaligned, /* -> base of segment */ 3 66 2 smallest_piece fixed bin(18), /* minimum permissible size for a free bead */ 3 67 2 number_of_entries fixed bin, /* size of map */ 3 68 2 last_entry_used fixed bin, /* size of non-zero portion of map, used to speed up allocate */ 3 69 2 amount_of_seg_used fixed bin(18), /* number of words in segment covered by the map */ 3 70 2 map (map_size refer (seg_map.number_of_entries)), /* one entry per free bead, in binary tree form */ 3 71 3 size bit (18) unaligned, /* 0 if not a free bead, else number of words in free bead */ 3 72 3 rel_loc bit (18) unaligned; /* 0 if not a free bead, else position in segment of free bead */ 3 73 3 74 /* pointers to above data */ 3 75 3 76 dcl seg_map_p pointer; 3 77 3 78 /* ------ END INCLUDE SEGMENT apl_storage_system_data.incl.pl1 -------------------------- */ 61 62 63 if ws_info_ptr = null 64 then do; 65 call com_err_ (0, "apl_storage_meters", "No active workspace in this process."); 66 return; 67 end; 68 else if unspec (ws_info_ptr) = ""b /* blasted type-6 links do this */ 69 then do; 70 call com_err_ (0, "apl_storage_meters", "Search rules did not find apl_static_."); 71 return; 72 end; 73 74 call cu_$arg_ptr (1, argp, argl, code); 75 if code ^= 0 76 then brief = "0"b; 77 else if arg = "-bf" 78 then brief = "1"b; 79 else if arg = "-brief" 80 then brief = "1"b; 81 else do; 82 call com_err_ (error_table_$badopt, "apl_storage_meters", "^a", arg); 83 return; 84 end; 85 86 dcl 1 lrange (range_break - 1) aligned based (addr (metric.range)) like metric.range; 87 dcl 1 brange (hbound (metric.range, 1) - range_break + 1) aligned 88 based (addr (metric.range (range_break))) like metric.range; 89 90 91 global_storage_system_data_pointer = ws_info.alloc_free_info_ptr; 92 93 if metric.big_seg_balance.count ^= 0 94 then call ioa_ 95 ( 96 "big-bead seg_maps balanced ^d times, avg time = ^.3f, avg map size after = ^d, 97 ^d beads had to be thrown away, avg ^d words^/" 98 , metric.big_seg_balance.count, 99 divide (float (metric.big_seg_balance.time_spent_balancing), 1e3 * metric.big_seg_balance.count, 27), 100 divide (metric.big_seg_balance.space_left, metric.big_seg_balance.count, 18, 0), 101 metric.big_seg_balance.thrown_away, 102 divide (metric.big_seg_balance.amt_thrown_away, max (1, metric.big_seg_balance.thrown_away), 18, 0)); 103 104 if metric.little_seg_balance.count ^= 0 105 then call ioa_ 106 ( 107 "little-bead seg_maps balanced ^d times, avg time = ^.3f, avg map size after = ^d, 108 ^d beads had to be thrown away, avg ^d words^/" 109 , metric.little_seg_balance.count, 110 divide (float (metric.little_seg_balance.time_spent_balancing), 1e3 * metric.little_seg_balance.count, 27) 111 , divide (metric.little_seg_balance.space_left, metric.little_seg_balance.count, 18, 0), 112 metric.little_seg_balance.thrown_away, 113 divide (metric.little_seg_balance.amt_thrown_away, max (1, metric.little_seg_balance.thrown_away), 18, 0)) 114 ; 115 116 if get_next_value_stack_seg_calls ^= 0 117 then call ioa_ ("value stack crossed segments ^d times^/", get_next_value_stack_seg_calls); 118 119 if copy_apl_value_calls ^= 0 120 then call ioa_ ("^d value beads copied into heap, avg time ^.3f milliseconds per bead^/", copy_apl_value_calls, 121 divide (float (copy_apl_value_time), 1e3 * copy_apl_value_calls, 27)); 122 123 if brief 124 then return; 125 126 call ioa_ ( 127 "Alloc/Free Meters^/Size range Nfreed Nmapped Avg ms Avg size Nalloc Nfm end Nnew seg Avg ms Avg size"); 128 129 do rx = lbound (metric.range, 1) to hbound (metric.range, 1); 130 upper = 2 * range (rx).size - 1; 131 if range (rx).free_count ^= 0 132 then free_count = range (rx).free_count; 133 else free_count = 1; 134 135 if range (rx).alloc_count ^= 0 136 then alloc_count = range (rx).alloc_count; 137 else alloc_count = 1; 138 139 if (range (rx).free_count ^= 0) | (range (rx).alloc_count ^= 0) 140 then call ioa_ ("^6d-^6d ^6d ^6d ^6.3f ^6d ^6d ^6d ^6d ^6.3f ^6d", range (rx).size, upper, 141 range (rx).free_count, range (rx).map_free_count, float (range (rx).free_time) / (1e3 * free_count), 142 divide (range (rx).words_freed, free_count, 18, 0), range (rx).alloc_count, 143 range (rx).alloc_end_count, range (rx).alloc_new_count, 144 float (range (rx).alloc_time) / (1e3 * alloc_count), 145 divide (range (rx).words_alloced, alloc_count, 18, 0)); 146 end; 147 148 149 do range_break = lbound (metric.range, 1) to hbound (metric.range, 1); 150 if metric.range (range_break).size = 64 /* BreakSize in apl_storage_mngr_.pl1 */ 151 then go to g0001; 152 end; 153 154 g0001: 155 call ioa_ ("Summaries:^/^6d-^6d ^6d ^6d ^6.3f ^6d ^6d ^6d ^6d ^6.3f ^6d", 0, 63, 156 fixed (sum (lrange.free_count), 35), sum (lrange.map_free_count), 157 divide (float (sum (lrange.free_time)), max (sum (lrange.free_count), 1) * 1e3, 27), 158 divide (sum (lrange.words_freed), max (sum (lrange.free_count), 1), 18, 0), 159 fixed (sum (lrange.alloc_count), 35), sum (lrange.alloc_end_count), sum (lrange.alloc_new_count), 160 divide (float (sum (lrange.alloc_time)), max (sum (lrange.alloc_count), 1) * 1e3, 27), 161 divide (sum (lrange.words_alloced), max (sum (lrange.alloc_count), 1), 18, 0)); 162 163 call ioa_ ("^6d-^6d ^6d ^6d ^6.3f ^6d ^6d ^6d ^6d ^6.3f ^6d", 64, 262143, fixed (sum (brange.free_count), 35), 164 sum (brange.map_free_count), 165 divide (float (sum (brange.free_time)), max (sum (brange.free_count), 1) * 1e3, 27), 166 divide (sum (brange.words_freed), max (sum (brange.free_count), 1), 18, 0), 167 fixed (sum (brange.alloc_count), 35), sum (brange.alloc_end_count), sum (brange.alloc_new_count), 168 divide (float (sum (brange.alloc_time)), max (sum (brange.alloc_count), 1) * 1e3, 27), 169 divide (sum (brange.words_alloced), max (sum (brange.alloc_count), 1), 18, 0)); 170 171 call ioa_ ("^6d-^6d ^6d ^6d ^6.3f ^6d ^6d ^6d ^6d ^6.3f ^6d", 0, 262143, fixed (sum (range.free_count), 35), 172 sum (range.map_free_count), divide (float (sum (range.free_time)), max (sum (range.free_count), 1) * 1e3, 27), 173 divide (sum (range.words_freed), max (sum (range.free_count), 1), 18, 0), fixed (sum (range.alloc_count), 35), 174 sum (range.alloc_end_count), sum (range.alloc_new_count), 175 divide (float (sum (range.alloc_time)), max (sum (range.alloc_count), 1) * 1e3, 27), 176 divide (sum (range.words_alloced), max (sum (range.alloc_count), 1), 18, 0)); 177 /* whew!! */ 178 179 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/08/81 1559.5 apl_storage_meters.pl1 >dumps>old_dumps>on>MIB-073181>apl_storage_meters.pl1 59 1 08/08/81 1935.2 apl_number_data.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_number_data.incl.pl1 60 2 08/08/81 1935.4 apl_ws_info.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_ws_info.incl.pl1 61 3 08/08/81 1935.4 apl_storage_system_data.incl.pl1 >dumps>old_dumps>on>MIB-073181>apl_storage_system_data.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. addr builtin function dcl 37 ref 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 alloc_count 321 based fixed bin(17,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 135 135 139 139* 171 171 171 171 171 171 alloc_count 000105 automatic fixed bin(17,0) dcl 42 in procedure "asm" set ref 135* 137* 139 139 139 alloc_count 7 based fixed bin(17,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 154 154 154 154 alloc_count 7 based fixed bin(17,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 163 163 163 163 alloc_end_count 322 based fixed bin(17,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 139* 171 171 alloc_end_count 10 based fixed bin(17,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 alloc_end_count 10 based fixed bin(17,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 alloc_free_info_ptr 17 based pointer level 3 packed unaligned dcl 2-16 ref 91 alloc_new_count 323 based fixed bin(17,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 139* 171 171 alloc_new_count 11 based fixed bin(17,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 alloc_new_count 11 based fixed bin(17,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 alloc_time 324 based fixed bin(71,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 139 171 171 alloc_time 12 based fixed bin(71,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 alloc_time 12 based fixed bin(71,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 amt_thrown_away 272 based fixed bin(17,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" ref 93 93 amt_thrown_away 303 based fixed bin(17,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" ref 104 104 apl_static_$ws_info_ptr 000020 external static structure level 1 dcl 2-11 arg based char unaligned dcl 27 set ref 77 79 82* argl 000102 automatic fixed bin(17,0) dcl 27 set ref 74* 77 79 82 82 argp 000100 automatic pointer dcl 27 set ref 74* 77 79 82 big_seg_balance 270 based structure level 3 dcl 3-13 brange based structure array level 1 dcl 87 brief 000104 automatic bit(1) unaligned dcl 27 set ref 75* 77* 79* 123 code 000103 automatic fixed bin(35,0) dcl 27 set ref 74* 75 com_err_ 000010 constant entry external dcl 27 ref 65 70 82 copy_apl_value_calls 307 based fixed bin(17,0) level 3 dcl 3-13 set ref 119 119* 119 119 copy_apl_value_time 310 based fixed bin(71,0) level 3 dcl 3-13 ref 119 119 count 300 based fixed bin(17,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 104 104* 104 104 104 104 count 270 based fixed bin(17,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 93 93* 93 93 93 93 cu_$arg_ptr 000014 constant entry external dcl 27 ref 74 divide builtin function dcl 37 ref 93 93 93 93 93 93 104 104 104 104 104 104 119 119 139 139 139 139 154 154 154 154 154 154 154 154 163 163 163 163 163 163 163 163 171 171 171 171 171 171 171 171 error_table_$badopt 000012 external static fixed bin(35,0) dcl 27 set ref 82* fixed builtin function dcl 37 ref 154 154 154 154 163 163 163 163 171 171 171 171 float builtin function dcl 37 ref 93 93 104 104 119 119 139 139 154 154 154 154 163 163 163 163 171 171 171 171 free_count 1 based fixed bin(17,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 163 163 163 163 free_count 313 based fixed bin(17,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 131 131 139 139* 171 171 171 171 171 171 free_count 000106 automatic fixed bin(17,0) dcl 42 in procedure "asm" set ref 131* 133* 139 139 139 free_count 1 based fixed bin(17,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 154 154 154 154 free_time 316 based fixed bin(71,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 139 171 171 free_time 4 based fixed bin(71,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 free_time 4 based fixed bin(71,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 get_next_value_stack_seg_calls 306 based fixed bin(17,0) level 3 dcl 3-13 set ref 116 116* global_storage_system_data based structure level 1 dcl 3-13 global_storage_system_data_pointer 000110 automatic pointer dcl 42 set ref 91* 93 93 93 93 93 93 93 93 93 93 93 93 93 93 93 104 104 104 104 104 104 104 104 104 104 104 104 104 104 104 116 116 119 119 119 119 119 119 129 129 130 131 131 135 135 139 139 139 139 139 139 139 139 139 139 139 139 139 139 149 149 150 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 hbound builtin function dcl 37 ref 129 149 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 ioa_ 000016 constant entry external dcl 27 ref 93 104 116 119 126 139 154 163 171 lbound builtin function dcl 37 ref 129 149 little_seg_balance 300 based structure level 3 dcl 3-13 lrange based structure array level 1 dcl 86 map_free_count 2 based fixed bin(17,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 map_free_count 314 based fixed bin(17,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 139* 171 171 map_free_count 2 based fixed bin(17,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 max builtin function dcl 37 ref 93 93 104 104 154 154 154 154 154 154 154 154 163 163 163 163 163 163 163 163 171 171 171 171 171 171 171 171 metric 270 based structure level 2 dcl 3-13 null builtin function dcl 37 ref 63 pointers 14 based structure level 2 dcl 2-16 range 312 based structure array level 3 dcl 3-13 set ref 129 129 149 149 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 range_break 000114 automatic fixed bin(17,0) dcl 42 set ref 149* 150* 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 rx 000112 automatic fixed bin(17,0) dcl 42 set ref 129* 130 131 131 135 135 139 139 139 139 139 139 139 139 139 139 139 139 139 139* size 312 based fixed bin(18,0) array level 4 dcl 3-13 set ref 130 139* 150 space_left 276 based fixed bin(30,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" ref 93 93 space_left 302 based fixed bin(30,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" ref 104 104 static_ws_info_ptr 000020 external static pointer level 2 packed unaligned dcl 2-11 ref 2-7 sum builtin function dcl 37 ref 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 154 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 163 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 thrown_away 271 based fixed bin(17,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 93* 93 93 thrown_away 301 based fixed bin(17,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 104* 104 104 time_spent_balancing 274 based fixed bin(71,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" ref 93 93 time_spent_balancing 304 based fixed bin(71,0) level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" ref 104 104 unspec builtin function dcl 37 ref 68 upper 000113 automatic fixed bin(18,0) dcl 42 set ref 130* 139* words_alloced 14 based fixed bin(24,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 words_alloced 326 based fixed bin(24,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 139 139 171 171 words_alloced 14 based fixed bin(24,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 words_freed 6 based fixed bin(24,0) array level 2 in structure "lrange" dcl 86 in procedure "asm" ref 154 154 words_freed 6 based fixed bin(24,0) array level 2 in structure "brange" dcl 87 in procedure "asm" ref 163 163 words_freed 320 based fixed bin(24,0) array level 4 in structure "global_storage_system_data" dcl 3-13 in procedure "asm" set ref 139 139 171 171 ws_info based structure level 1 dcl 2-16 ws_info_ptr 000116 automatic pointer initial dcl 2-7 set ref 63 68 91 2-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Binary internal static bit(1) initial dcl 1-16 NumberSize internal static fixed bin(4,0) initial dcl 1-25 TheBiggestNumberWeveGot internal static float bin(63) initial dcl 1-16 TheSmallestNumberWeveGot internal static float bin(63) initial dcl 1-16 baseno builtin function dcl 37 end_vs automatic bit(1) unaligned dcl 42 i automatic fixed bin(17,0) dcl 42 max_parse_stack_depth internal static fixed bin(17,0) initial dcl 2-98 n_map_ent automatic fixed bin(17,0) dcl 42 output_buffer based char unaligned dcl 2-94 rangex automatic fixed bin(17,0) dcl 42 rel builtin function dcl 37 seg_map based structure level 1 dcl 3-64 seg_map_p automatic pointer dcl 3-76 sgt automatic char(10) unaligned dcl 42 sli automatic fixed bin(17,0) dcl 42 vst automatic char(1) unaligned dcl 42 NAMES DECLARED BY EXPLICIT CONTEXT. apl_storage_meters 000331 constant entry external dcl 10 asm 000321 constant entry external dcl 10 g0001 001200 constant label dcl 154 ref 150 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3246 3270 3151 3256 Length 3546 3151 22 242 75 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME asm 469 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME asm 000100 argp asm 000102 argl asm 000103 code asm 000104 brief asm 000105 alloc_count asm 000106 free_count asm 000110 global_storage_system_data_pointer asm 000112 rx asm 000113 upper asm 000114 range_break asm 000116 ws_info_ptr asm THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 call_ext_out_desc call_ext_out return ext_entry divide_fx4 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. apl_static_$ws_info_ptr error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2 7 000313 10 000320 63 000337 65 000343 66 000376 68 000377 70 000401 71 000434 74 000435 75 000454 77 000460 79 000471 82 000500 83 000540 91 000541 93 000544 104 000627 116 000713 119 000736 123 000775 126 000777 129 001013 130 001020 131 001027 133 001034 135 001036 137 001042 139 001044 146 001162 149 001164 150 001171 152 001176 154 001200 163 001670 171 002463 179 003150 ----------------------------------------------------------- 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