COMPILATION LISTING OF SEGMENT compile_statement Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1627.8 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 /* procedure to compile a statement 12* 13* Initial Version: 31 March 1971 by BLW for Version 14* Modified: 6 February 1973 by BLW 15* Modified: 28 February 1973 by RAB 16* Modified: 12 June 1973 by RAB for EIS 17* Modified: 1 November 1973 by RAB for snap & system 18* Modified: 23 June 1975 by EEW for separate static 19* Modified: 20 August 1975 by RAB to fix bug 1396 20* Modified: 1 November 1975 by RAB to optimize if stmts 21* Modified: 10 January 1976 by RAB for cg_stat$return_operator to fix 1453 22* Modified: 1 July 1976 by RAB for label array improvements 23* Modified: 27 Sept 1976 by RAB to fix 1523 24* Modified: 1 Dec 1976 by RAB for -long_profile 25* Modified: 23 Jan 1977 by RAB for combine_tests 26* Modified: 10 Feb 1977 by RAB for multiple cond names in on stmt 27* Modified: 9 Feb 1978 by RAB to check $agg_temps on end stmt 28* Modified: 11 Feb 1978 by RAB to fix 1687 29* Modified: 15 Feb 1978 by PCK to implement options(main) and the stop statement 30* Modified 790807 by PG to remove jump_three_way. 31* Modified: 16 Nov 1979 by PCK to fix 1858 32* Modified: 9 November 1981 by M. N. Davidoff to fix bug 1931 in which return and stop statements 33* have garbage long profile information. 34* Modified: 4 January 1983 BIM to note statements that begin do loops. 35**/ 36 /* format: style3 */ 37 compile_statement: 38 proc (pt); 39 40 dcl pt ptr; /* points at statement node */ 41 42 /* external static */ 43 44 dcl ( 45 cg_stat$cur_block, 46 cg_stat$cur_statement, 47 cg_stat$text_base, 48 cg_stat$first_ref, 49 cg_stat$m_s_p, 50 cg_stat$agg_temps, 51 cg_stat$text_reloc_base, 52 cg_stat$sym_base, 53 cg_stat$sym_reloc_base, 54 cg_stat$next_ref, 55 cg_stat$cur_tree, 56 cg_stat$return_operator, 57 cg_stat$profile_base, 58 cg_stat$stop_operator, 59 cg_stat$return_main_operator 60 ) ptr ext, 61 cg_stat$star_symbol_up_zero 62 bit (18) ext, 63 cg_stat$old_id bit (27) ext, 64 ( 65 cg_stat$text_pos, 66 cg_stat$sym_pos, 67 cg_stat$map_start, 68 cg_stat$cur_level, 69 cg_stat$profile_pos, 70 cg_stat$profile_start 71 ) fixed bin (18) ext, 72 ( 73 cg_stat$generate_symtab, 74 cg_stat$table_option, 75 cg_stat$skip_to_label, 76 cg_stat$generate_map, 77 cg_stat$separate_static, 78 cg_stat$extended_stack, 79 cg_stat$in_prologue, 80 cg_stat$profile_option, 81 cg_stat$support, 82 cg_stat$long_profile, 83 cg_stat$optimize, 84 cg_stat$in_thunk 85 ) bit (1) ext; 86 87 dcl cg_stat$stop_id aligned bit (27) ext; 88 89 /* automatic */ 90 91 dcl ( 92 cb, 93 p, 94 q, 95 q1, 96 q2, 97 q3, 98 q4, 99 tree, 100 save_cb, 101 arg (4), 102 p1 103 ) ptr, 104 (nargs, profile_pos) 105 fixed bin, 106 macro fixed bin (15), 107 save_label label, 108 recovery_label label int static, 109 (a1, a2, atomic, replace) 110 bit (1) aligned, 111 on_options bit (2) aligned, 112 (st_type, op) bit (9) aligned, 113 (i, text_pos, n) fixed bin (18); 114 115 /* based */ 116 117 dcl fix_bin fixed bin based; 118 119 dcl 1 eax_ins aligned based, 120 2 offset unal bit (18); 121 122 dcl (word, relocation) bit (36) aligned based; 123 124 /* internal static */ 125 126 dcl ( 127 reset_stack init (194), 128 ret_chars init (586), 129 ret_bits init (590), 130 ret_words init (480), 131 nop_mac init (528), 132 aos_mac init (309), 133 lxl0 init (64), 134 leave_begin_block init (97), 135 tra init (169), 136 enable_mac init (291), 137 enable_file init (606), 138 enable_file_2 init (593), 139 ss_enter_begin_block 140 init (512), 141 enter_begin_block init (197), 142 return_mac init (198), 143 support_mac init (305), 144 long_profile_mac init (699), 145 quick_return_mac init (299), 146 set_stack init (175), 147 begin_return_mac init (288), 148 begin_return_main_mac 149 init (729), 150 stop_mac init (726), 151 return_main_mac init (727) 152 ) fixed bin (15) int static options (constant); 153 154 /* builtins */ 155 156 dcl (addr, addrel, bit, fixed, null, size, string, substr) 157 builtin; 158 159 /* entries */ 160 161 dcl create_list entry (fixed bin) returns (ptr); 162 dcl create_label entry (ptr, ptr, bit (3) aligned) returns (ptr); 163 dcl decode_node_id entry (ptr, bit (1) aligned) returns (char (120) varying), 164 error entry (fixed bin, ptr, ptr), 165 xr_man$load_const entry (fixed bin (31), fixed bin), 166 ( 167 xr_man$super_lock, 168 xr_man$super_unlock 169 ) entry (fixed bin), 170 expmac$many entry (fixed bin (15), ptr, fixed bin), 171 ( 172 stack_temp$free_aggregates, 173 state_man$flush, 174 state_man$discard_ms 175 ) entry, 176 (adjust_ref_count, compile_entry) 177 entry (ptr, fixed bin (18)), 178 state_man$merge_ms entry (ptr), 179 state_man$create_ms entry returns (ptr), 180 state_man$erase_reg entry (bit (19) aligned), 181 (ioa_$nnl, debug) entry options (variable), 182 expmac entry (fixed bin (15), ptr), 183 c_a entry (fixed bin (18), fixed bin) returns (ptr), 184 copy_temp entry (ptr) returns (ptr), 185 prepare_operand entry (ptr, fixed bin, bit (1) aligned) returns (ptr), 186 compile_exp entry (ptr), 187 compile_exp$save_exp 188 entry (ptr) returns (ptr), 189 base_man$load_var entry (fixed bin, ptr, fixed bin), 190 long_op$no_size entry (ptr, fixed bin (15)), 191 load_size entry (ptr), 192 make_mod entry (fixed bin (17), fixed bin) returns (fixed bin (18)), 193 expmac$fill_usage entry (fixed bin (18), fixed bin (17)), 194 expmac$zero entry (fixed bin (15)), 195 expmac$abs entry (ptr, fixed bin), 196 optimize_if entry (ptr), 197 combine_tests entry (ptr, ptr), 198 compile_block$begin_block 199 entry (ptr), 200 compile_tree entry (ptr); 201 1 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 1 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 1 3 /* format: style3,idind30 */ 1 4 1 5 declare 1 block aligned based, 1 6 2 node_type bit (9) unaligned, 1 7 2 source_id structure unaligned, 1 8 3 file_number bit (8), 1 9 3 line_number bit (14), 1 10 3 statement_number bit (5), 1 11 2 father ptr unaligned, 1 12 2 brother ptr unaligned, 1 13 2 son ptr unaligned, 1 14 2 declaration ptr unaligned, 1 15 2 end_declaration ptr unaligned, 1 16 2 default ptr unaligned, 1 17 2 end_default ptr unaligned, 1 18 2 context ptr unaligned, 1 19 2 prologue ptr unaligned, 1 20 2 end_prologue ptr unaligned, 1 21 2 main ptr unaligned, 1 22 2 end_main ptr unaligned, 1 23 2 return_values ptr unaligned, 1 24 2 return_count ptr unaligned, 1 25 2 plio_ps ptr unaligned, 1 26 2 plio_fa ptr unaligned, 1 27 2 plio_ffsb ptr unaligned, 1 28 2 plio_ssl ptr unaligned, 1 29 2 plio_fab2 ptr unaligned, 1 30 2 block_type bit (9) unaligned, 1 31 2 prefix bit (12) unaligned, 1 32 2 like_attribute bit (1) unaligned, 1 33 2 no_stack bit (1) unaligned, 1 34 2 get_data bit (1) unaligned, 1 35 2 flush_at_call bit (1) unaligned, 1 36 2 processed bit (1) unaligned, 1 37 2 text_displayed bit (1) unaligned, 1 38 2 number fixed bin (9) unsigned unaligned, 1 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 1 40 2 temp_list ptr, 1 41 2 entry_list ptr, 1 42 2 o_and_s ptr, 1 43 2 why_nonquick aligned, 1 44 3 auto_adjustable_storage bit (1) unaligned, 1 45 3 returns_star_extents bit (1) unaligned, 1 46 3 stack_extended_by_args bit (1) unaligned, 1 47 3 invoked_by_format bit (1) unaligned, 1 48 3 format_statement bit (1) unaligned, 1 49 3 io_statements bit (1) unaligned, 1 50 3 assigned_to_entry_var bit (1) unaligned, 1 51 3 condition_statements bit (1) unaligned, 1 52 3 no_owner bit (1) unaligned, 1 53 3 recursive_call bit (1) unaligned, 1 54 3 options_non_quick bit (1) unaligned, 1 55 3 options_variable bit (1) unaligned, 1 56 3 never_referenced bit (1) unaligned, 1 57 3 pad_nonquick bit (5) unaligned, 1 58 2 prologue_flag bit (1) unaligned, 1 59 2 options_main bit (1) unaligned, 1 60 2 pad bit (16) unaligned, 1 61 2 number_of_entries fixed bin (17), 1 62 2 level fixed bin (17), 1 63 2 last_auto_loc fixed bin (17), 1 64 2 symbol_block fixed bin (17), 1 65 2 entry_info fixed bin (18), 1 66 2 enter structure unaligned, 1 67 3 start fixed bin (17), 1 68 3 end fixed bin (17), 1 69 2 leave structure unaligned, 1 70 3 start fixed bin (17), 1 71 3 end fixed bin (17), 1 72 2 owner ptr; 1 73 1 74 declare max_block_number fixed bin internal static options (constant) initial (511); 1 75 1 76 /* END INCLUDE FILE ... block.incl.pl1 */ 202 2 1 /* BEGIN INCLUDE FILE ... reference.incl.pl1 */ 2 2 2 3 dcl 1 reference based aligned, 2 4 2 node_type bit(9) unaligned, 2 5 2 array_ref bit(1) unaligned, 2 6 2 varying_ref bit(1) unaligned, 2 7 2 shared bit(1) unaligned, 2 8 2 put_data_sw bit(1) unaligned, 2 9 2 processed bit(1) unaligned, 2 10 2 units fixed(3) unaligned, 2 11 2 ref_count fixed(17) unaligned, 2 12 2 c_offset fixed(24), 2 13 2 c_length fixed(24), 2 14 2 symbol ptr unaligned, 2 15 2 qualifier ptr unaligned, 2 16 2 offset ptr unaligned, 2 17 2 length ptr unaligned, 2 18 2 subscript_list ptr unaligned, 2 19 /* these fields are used by the 645 code generator */ 2 20 2 address structure unaligned, 2 21 3 base bit(3), 2 22 3 offset bit(15), 2 23 3 op bit(9), 2 24 3 no_address bit(1), 2 25 3 inhibit bit(1), 2 26 3 ext_base bit(1), 2 27 3 tag bit(6), 2 28 2 info structure unaligned, 2 29 3 address_in structure, 2 30 4 b dimension(0:7) bit(1), 2 31 4 storage bit(1), 2 32 3 value_in structure, 2 33 4 a bit(1), 2 34 4 q bit(1), 2 35 4 aq bit(1), 2 36 4 string_aq bit(1), 2 37 4 complex_aq bit(1), 2 38 4 decimal_aq bit(1), 2 39 4 b dimension(0:7) bit(1), 2 40 4 storage bit(1), 2 41 4 indicators bit(1), 2 42 4 x dimension(0:7) bit(1), 2 43 3 other structure, 2 44 4 big_offset bit(1), 2 45 4 big_length bit(1), 2 46 4 modword_in_offset bit(1), 2 47 2 data_type fixed(5) unaligned, 2 48 2 bits structure unaligned, 2 49 3 padded_ref bit(1), 2 50 3 aligned_ref bit(1), 2 51 3 long_ref bit(1), 2 52 3 forward_ref bit(1), 2 53 3 ic_ref bit(1), 2 54 3 temp_ref bit(1), 2 55 3 defined_ref bit(1), 2 56 3 evaluated bit(1), 2 57 3 allocate bit(1), 2 58 3 allocated bit(1), 2 59 3 aliasable bit(1), 2 60 3 even bit(1), 2 61 3 perm_address bit(1), 2 62 3 aggregate bit(1), 2 63 3 hit_zero bit(1), 2 64 3 dont_save bit(1), 2 65 3 fo_in_qual bit(1), 2 66 3 hard_to_load bit(1), 2 67 2 relocation bit(12) unaligned, 2 68 2 more_bits structure unaligned, 2 69 3 substr bit(1), 2 70 3 padded_for_store_ref bit(1), 2 71 3 aligned_for_store_ref bit(1), 2 72 3 mbz bit(15), 2 73 2 store_ins bit(18) unaligned; 2 74 2 75 /* END INCLUDE FILE ... reference.incl.pl1 */ 203 3 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 3 2 3 3 dcl 1 symbol based aligned, 3 4 2 node_type bit(9) unal, 3 5 2 source_id structure unal, 3 6 3 file_number bit(8), 3 7 3 line_number bit(14), 3 8 3 statement_number bit(5), 3 9 2 location fixed(18) unal unsigned, 3 10 2 allocated bit(1) unal, 3 11 2 dcl_type bit(3) unal, 3 12 2 reserved bit(6) unal, 3 13 2 pix unal, 3 14 3 pic_fixed bit(1) unal, 3 15 3 pic_float bit(1) unal, 3 16 3 pic_char bit(1) unal, 3 17 3 pic_scale fixed(7) unal, 3 18 3 pic_size fixed(7) unal, 3 19 2 level fixed(8) unal, 3 20 2 boundary fixed(3) unal, 3 21 2 size_units fixed(3) unal, 3 22 2 scale fixed(7) unal, 3 23 2 runtime bit(18) unal, 3 24 2 runtime_offset bit(18) unal, 3 25 2 block_node ptr unal, 3 26 2 token ptr unal, 3 27 2 next ptr unal, 3 28 2 multi_use ptr unal, 3 29 2 cross_references ptr unal, 3 30 2 initial ptr unal, 3 31 2 array ptr unal, 3 32 2 descriptor ptr unal, 3 33 2 equivalence ptr unal, 3 34 2 reference ptr unal, 3 35 2 general ptr unal, 3 36 2 father ptr unal, 3 37 2 brother ptr unal, 3 38 2 son ptr unal, 3 39 2 word_size ptr unal, 3 40 2 bit_size ptr unal, 3 41 2 dcl_size ptr unal, 3 42 2 symtab_size ptr unal, 3 43 2 c_word_size fixed(24), 3 44 2 c_bit_size fixed(24), 3 45 2 c_dcl_size fixed(24), 3 46 3 47 2 attributes structure aligned, 3 48 3 data_type structure unal, 3 49 4 structure bit(1) , 3 50 4 fixed bit(1), 3 51 4 float bit(1), 3 52 4 bit bit(1), 3 53 4 char bit(1), 3 54 4 ptr bit(1), 3 55 4 offset bit(1), 3 56 4 area bit(1), 3 57 4 label bit(1), 3 58 4 entry bit(1), 3 59 4 file bit(1), 3 60 4 arg_descriptor bit(1), 3 61 4 storage_block bit(1), 3 62 4 explicit_packed bit(1), /* options(packed) */ 3 63 4 condition bit(1), 3 64 4 format bit(1), 3 65 4 builtin bit(1), 3 66 4 generic bit(1), 3 67 4 picture bit(1), 3 68 3 69 3 misc_attributes structure unal, 3 70 4 dimensioned bit(1), 3 71 4 initialed bit(1), 3 72 4 aligned bit(1), 3 73 4 unaligned bit(1), 3 74 4 signed bit(1), 3 75 4 unsigned bit(1), 3 76 4 precision bit(1), 3 77 4 varying bit(1), 3 78 4 local bit(1), 3 79 4 decimal bit(1), 3 80 4 binary bit(1), 3 81 4 real bit(1), 3 82 4 complex bit(1), 3 83 4 variable bit(1), 3 84 4 reducible bit(1), 3 85 4 irreducible bit(1), 3 86 4 returns bit(1), 3 87 4 position bit(1), 3 88 4 internal bit(1), 3 89 4 external bit(1), 3 90 4 like bit(1), 3 91 4 member bit(1), 3 92 4 non_varying bit(1), 3 93 4 options bit(1), 3 94 4 variable_arg_list bit(1), /* options(variable) */ 3 95 4 alloc_in_text bit(1), /* options(constant) */ 3 96 3 97 3 storage_class structure unal, 3 98 4 auto bit(1), 3 99 4 based bit(1), 3 100 4 static bit(1), 3 101 4 controlled bit(1), 3 102 4 defined bit(1), 3 103 4 parameter bit(1), 3 104 4 param_desc bit(1), 3 105 4 constant bit(1), 3 106 4 temporary bit(1), 3 107 4 return_value bit(1), 3 108 3 109 3 file_attributes structure unal, 3 110 4 print bit(1), 3 111 4 input bit(1), 3 112 4 output bit(1), 3 113 4 update bit(1), 3 114 4 stream bit(1), 3 115 4 reserved_1 bit(1), 3 116 4 record bit(1), 3 117 4 sequential bit(1), 3 118 4 direct bit(1), 3 119 4 interactive bit(1), /* env(interactive) */ 3 120 4 reserved_2 bit(1), 3 121 4 reserved_3 bit(1), 3 122 4 stringvalue bit(1), /* env(stringvalue) */ 3 123 4 keyed bit(1), 3 124 4 reserved_4 bit(1), 3 125 4 environment bit(1), 3 126 3 127 3 compiler_developed structure unal, 3 128 4 aliasable bit(1), 3 129 4 packed bit(1), 3 130 4 passed_as_arg bit(1), 3 131 4 allocate bit(1), 3 132 4 set bit(1), 3 133 4 exp_extents bit(1), 3 134 4 refer_extents bit(1), 3 135 4 star_extents bit(1), 3 136 4 isub bit(1), 3 137 4 put_in_symtab bit(1), 3 138 4 contiguous bit(1), 3 139 4 put_data bit(1), 3 140 4 overlayed bit(1), 3 141 4 error bit(1), 3 142 4 symtab_processed bit(1), 3 143 4 overlayed_by_builtin bit(1), 3 144 4 defaulted bit(1), 3 145 4 connected bit(1); 3 146 3 147 /* END INCLUDE FILE ... symbol.incl.pl1 */ 204 4 1 dcl 1 label based aligned, 4 2 2 node_type bit(9) unaligned, 4 3 2 source_id structure unaligned, 4 4 3 file_number bit(8), 4 5 3 line_number bit(14), 4 6 3 statement_number bit(5), 4 7 2 location fixed(17) unaligned, 4 8 2 allocated bit(1) unaligned, 4 9 2 dcl_type bit(3) unaligned, 4 10 2 reserved bit(29) unaligned, 4 11 2 array bit(1) unaligned, 4 12 2 used_as_format bit(1) unaligned, 4 13 2 used_in_goto bit(1) unaligned, 4 14 2 symbol_table bit(18) unaligned, 4 15 2 low_bound fixed(17) unaligned, 4 16 2 high_bound fixed(17) unaligned, 4 17 2 block_node ptr unaligned, 4 18 2 token ptr unaligned, 4 19 2 next ptr unaligned, 4 20 2 multi_use ptr unaligned, 4 21 2 cross_reference ptr unaligned, 4 22 2 statement ptr unaligned; 205 5 1 /* *********************************************************** 5 2* * * 5 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 5 4* * * 5 5* *********************************************************** */ 5 6 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 5 7 /* Internal interface of the PL/I compiler */ 5 8 5 9 dcl 1 statement based aligned, 5 10 2 node_type bit(9) unaligned, 5 11 2 source_id structure unaligned, 5 12 3 file_number bit(8), 5 13 3 line_number bit(14), 5 14 3 statement_number bit(5), 5 15 2 next ptr unaligned, 5 16 2 back ptr unaligned, 5 17 2 root ptr unaligned, 5 18 2 labels ptr unaligned, 5 19 2 reference_list ptr unaligned, 5 20 2 state_list ptr unaligned, 5 21 2 reference_count fixed(17) unaligned, 5 22 2 ref_count_copy fixed(17) unaligned, 5 23 2 object structure unaligned, 5 24 3 start fixed(17), 5 25 3 finish fixed(17), 5 26 2 source structure unaligned, 5 27 3 segment fixed(11), 5 28 3 start fixed(23), 5 29 3 length fixed(11), 5 30 2 prefix bit(12) unaligned, 5 31 2 optimized bit(1) unaligned, 5 32 2 free_temps bit(1) unaligned, 5 33 2 LHS_in_RHS bit(1) unaligned, 5 34 2 statement_type bit(9) unaligned, 5 35 2 bits structure unaligned, 5 36 3 processed bit(1) unaligned, 5 37 3 put_in_profile bit(1) unaligned, 5 38 3 generated bit(1) unaligned, 5 39 3 snap bit(1) unaligned, 5 40 3 system bit(1) unaligned, 5 41 3 irreducible bit(1) unaligned, 5 42 3 checked bit(1) unaligned, 5 43 3 save_temps bit(1) unaligned, 5 44 3 suppress_warnings bit(1) unaligned, 5 45 3 force_nonquick bit(1) unaligned, 5 46 3 expanded_by_name bit(1) unaligned, 5 47 3 begins_loop bit(1) unaligned, 5 48 3 pad bit(24) unaligned; 5 49 5 50 /* END INCLUDE FILE ... statement.incl.pl1 */ 206 6 1 /* BEGIN INCLUDE FILE ... operator.incl.pl1 */ 6 2 6 3 /* Modified: 2 Apr 1980 by PCK to add max_number_of_operands */ 6 4 6 5 /* format: style3 */ 6 6 dcl 1 operator based aligned, 6 7 2 node_type bit (9) unaligned, 6 8 2 op_code bit (9) unaligned, 6 9 2 shared bit (1) unaligned, 6 10 2 processed bit (1) unaligned, 6 11 2 optimized bit (1) unaligned, 6 12 2 number fixed (14) unaligned, 6 13 2 operand dimension (n refer (operator.number)) ptr unaligned; 6 14 6 15 dcl max_number_of_operands 6 16 fixed bin (15) int static options (constant) initial (32767); 6 17 6 18 /* END INCLUDE FILE ... operator.incl.pl1 */ 207 7 1 /* BEGIN INCLUDE FILE ... list.incl.pl1 */ 7 2 7 3 /* Modified 26 June 81 by EBush to add max_list_elements */ 7 4 7 5 7 6 dcl 1 list based aligned, 7 7 2 node_type bit(9) unaligned, 7 8 2 reserved bit(12) unaligned, 7 9 2 number fixed(14) unaligned, 7 10 2 element dimension(n refer(list.number)) ptr unaligned; 7 11 7 12 dcl max_list_elements fixed bin(17) internal static options (constant) 7 13 init(16383); 7 14 7 15 /* END INCLUDE FILE ... list.incl.pl1 */ 208 8 1 /* BEGIN INCLUDE FILE ... runtime_symbol.incl.pl1 ... Modified 07/79 */ 8 2 8 3 dcl 1 runtime_symbol aligned based, 8 4 2 flag unal bit(1), /* always "1"b for Version II */ 8 5 2 use_digit unal bit(1), /* if "1"b and units are half words units are really digits */ 8 6 2 array_units unal bit(2), 8 7 2 units unal bit(2), /* addressing units */ 8 8 2 type unal bit(6), /* data type */ 8 9 2 level unal bit(6), /* structure level */ 8 10 2 ndims unal bit(6), /* number of dimensions */ 8 11 2 bits unal, 8 12 3 aligned bit(1), 8 13 3 packed bit(1), 8 14 3 simple bit(1), 8 15 2 skip unal bit(1), 8 16 2 scale unal bit(8), /* arithmetic scale factor */ 8 17 2 name unal bit(18), /* rel ptr to acc name */ 8 18 2 brother unal bit(18), /* rel ptr to brother entry */ 8 19 2 father unal bit(18), /* rel ptr to father entry */ 8 20 2 son unal bit(18), /* rel ptr to son entry */ 8 21 2 address unal, 8 22 3 location bit(18), /* location in storage class */ 8 23 3 class bit(4), /* storage class */ 8 24 3 next bit(14), /* rel ptr to next of same class */ 8 25 2 size fixed bin(35), /* encoded string|arith size */ 8 26 2 offset fixed bin(35), /* encoded offset from address */ 8 27 2 virtual_org fixed bin(35), 8 28 2 bounds(1), 8 29 3 lower fixed bin(35), /* encoded lower bound */ 8 30 3 upper fixed bin(35), /* encoded upper bound */ 8 31 3 multiplier fixed bin(35); /* encoded multiplier */ 8 32 8 33 dcl 1 runtime_bound based, 8 34 2 lower fixed bin(35), 8 35 2 upper fixed bin(35), 8 36 2 multiplier fixed bin(35); 8 37 8 38 dcl 1 runtime_block aligned based, 8 39 2 flag unal bit(1), /* always "1"b for Version II */ 8 40 2 quick unal bit(1), /* "1"b if quick block */ 8 41 2 fortran unal bit(1), /* "1"b if fortran program */ 8 42 2 standard unal bit(1), /* "1"b if program has std obj segment */ 8 43 2 owner_flag unal bit(1), /* "1"b if block has valid owner field */ 8 44 2 skip unal bit(1), 8 45 2 type unal bit(6), /* = 0 for a block node */ 8 46 2 number unal bit(6), /* begin block number */ 8 47 2 start unal bit(18), /* rel ptr to start of symbols */ 8 48 2 name unal bit(18), /* rel ptr to name of proc */ 8 49 2 brother unal bit(18), /* rel ptr to brother block */ 8 50 2 father unal bit(18), /* rel ptr to father block */ 8 51 2 son unal bit(18), /* rel ptr to son block */ 8 52 2 map unal, 8 53 3 first bit(18), /* rel ptr to first word of map */ 8 54 3 last bit(18), /* rel ptr to last word of map */ 8 55 2 entry_info unal bit(18), /* info about entry of quick block */ 8 56 2 header unal bit(18), /* rel ptr to symbol header */ 8 57 2 chain(4) unal bit(18), /* chain(i) is rel ptr to first symbol 8 58* on start list with length >= 2**i */ 8 59 2 token(0:5) unal bit(18), /* token(i) is rel ptr to first token 8 60* on list with length >= 2 ** i */ 8 61 2 owner unal bit(18); /* rel ptr to owner block */ 8 62 8 63 dcl 1 runtime_token aligned based, 8 64 2 next unal bit(18), /* rel ptr to next token */ 8 65 2 dcl unal bit(18), /* rel ptr to first dcl of this token */ 8 66 2 name, /* ACC */ 8 67 3 size unal unsigned fixed bin (9), /* number of chars in token */ 8 68 3 string unal char(n refer(runtime_token.size)); 8 69 8 70 dcl 1 encoded_value aligned based, 8 71 2 flag bit (2) unal, 8 72 2 code bit (4) unal, 8 73 2 n1 bit (6) unal, 8 74 2 n2 bit (6) unal, 8 75 2 n3 bit (18) unal; 8 76 8 77 /* END INCLUDE FILE ... runtime_symbol.incl.pl1 */ 209 9 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 9 2 9 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 9 4 9 5 dcl ( block_node initial("000000001"b), 9 6 statement_node initial("000000010"b), 9 7 operator_node initial("000000011"b), 9 8 reference_node initial("000000100"b), 9 9 token_node initial("000000101"b), 9 10 symbol_node initial("000000110"b), 9 11 context_node initial("000000111"b), 9 12 array_node initial("000001000"b), 9 13 bound_node initial("000001001"b), 9 14 format_value_node initial("000001010"b), 9 15 list_node initial("000001011"b), 9 16 default_node initial("000001100"b), 9 17 machine_state_node initial("000001101"b), 9 18 source_node initial("000001110"b), 9 19 label_node initial("000001111"b), 9 20 cross_reference_node initial("000010000"b), 9 21 sf_par_node initial("000010001"b), 9 22 temporary_node initial("000010010"b), 9 23 label_array_element_node initial("000010011"b), 9 24 by_name_agg_node initial("000010100"b)) 9 25 bit(9) internal static aligned options(constant); 9 26 9 27 dcl 1 node based aligned, 9 28 2 type unal bit(9), 9 29 2 source_id unal structure, 9 30 3 file_number bit(8), 9 31 3 line_number bit(14), 9 32 3 statement_number bit(5); 9 33 9 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 210 10 1 /* statement types */ 10 2 10 3 dcl ( unknown_statement initial("000000000"b), 10 4 allocate_statement initial("000000001"b), 10 5 assignment_statement initial("000000010"b), 10 6 begin_statement initial("000000011"b), 10 7 call_statement initial("000000100"b), 10 8 close_statement initial("000000101"b), 10 9 declare_statement initial("000000110"b), 10 10 lock_statement initial("000000111"b), 10 11 delete_statement initial("000001000"b), 10 12 display_statement initial("000001001"b), 10 13 do_statement initial("000001010"b), 10 14 else_clause initial("000001011"b), 10 15 end_statement initial("000001100"b), 10 16 entry_statement initial("000001101"b), 10 17 exit_statement initial("000001110"b), 10 18 format_statement initial("000001111"b), 10 19 free_statement initial("000010000"b), 10 20 get_statement initial("000010001"b), 10 21 goto_statement initial("000010010"b), 10 22 if_statement initial("000010011"b), 10 23 locate_statement initial("000010100"b), 10 24 null_statement initial("000010101"b), 10 25 on_statement initial("000010110"b), 10 26 open_statement initial("000010111"b), 10 27 procedure_statement initial("000011000"b), 10 28 put_statement initial("000011001"b), 10 29 read_statement initial("000011010"b), 10 30 return_statement initial("000011011"b), 10 31 revert_statement initial("000011100"b), 10 32 rewrite_statement initial("000011101"b), 10 33 signal_statement initial("000011110"b), 10 34 stop_statement initial("000011111"b), 10 35 system_on_unit initial("000100000"b), 10 36 unlock_statement initial("000100001"b), 10 37 wait_statement initial("000100010"b), 10 38 write_statement initial("000100011"b), 10 39 default_statement initial("000100100"b), 10 40 continue_statement initial("000100101"b)) bit(9) internal static aligned options(constant); 211 11 1 dcl 1 statement_map aligned based, 11 2 2 location bit(18) unaligned, 11 3 2 source_id unaligned, 11 4 3 file bit(8), 11 5 3 line bit(14), 11 6 3 statement bit(5), 11 7 2 source_info unaligned, 11 8 3 start bit(18), 11 9 3 length bit(9); 212 12 1 /* BEGIN INCLUDE FILE profile_entry.incl.pl1 */ 12 2 12 3 dcl 1 profile_entry aligned based, 12 4 2 map bit(18) unaligned, 12 5 2 skip bit(18) unaligned, 12 6 2 count fixed bin; 12 7 12 8 /* END INCLUDE FILE profile_entry.incl.pl1 */ 213 13 1 /* BEGIN INCLUDE FILE ... long_profile.incl.pl1 */ 13 2 /* coded December 1, 1976 by Richard A. Barnes */ 13 3 13 4 dcl 1 long_profile_header based aligned, 13 5 2 last_vcpu fixed bin(71), /* last virtual cpu reading */ 13 6 2 last_pf fixed bin, /* last page faults reading */ 13 7 2 last_offset fixed bin, /* offset of last profile entry metered */ 13 8 2 nentries fixed bin, /* number of profile entries */ 13 9 2 dummy like long_profile_entry aligned, /* dummy profile entry */ 13 10 2 control like long_profile_entry aligned; /* control profile entry for overhead calc */ 13 11 13 12 dcl 1 long_profile_entry based aligned, 13 13 2 map bit(18) unaligned, /* rel ptr to statement map entry */ 13 14 2 skip bit(18) unaligned, 13 15 2 count fixed bin, /* number of times stmt encountered */ 13 16 2 vcpu fixed bin, /* total execution time for this statement */ 13 17 2 pf fixed bin; /* total page faults for this statement */ 13 18 13 19 dcl (dummy_entry_offset init(5), /* offset in long_profile_header of dummy */ 13 20 control_entry_offset init(9)) /* offset in long_profile_header of control */ 13 21 fixed bin int static options(constant); 13 22 13 23 /* END INCLUDE FILE ... long_profile.incl.pl1 */ 214 14 1 /* BEGIN INCLUDE FILE ... op_codes.incl.pl1 */ 14 2 14 3 /* Modified: 25 Apr 1979 by PCK 4-bit decimal */ 14 4 /* Modified: 6 Jun 1979 by PG to add rank and byte */ 14 5 /* Modified: 26 Dec 1979 by PCK to add assign_by_name */ 14 6 /* Modified: 26 July 82 BIM wordno, segno */ 14 7 14 8 dcl ( add initial("000010001"b), /* opnd(1) <- opnd(2)+opnd(3) */ 14 9 sub initial("000010010"b), /* opnd(1) <- opnd(2)-opnd(3) */ 14 10 mult initial("000010011"b), /* opnd(1) <- opnd(2)*opnd(3) */ 14 11 div initial("000010100"b), /* opnd(1) <- opnd(2)/opnd(3) */ 14 12 negate initial("000010101"b), /* opnd(1) <- -opnd(2) */ 14 13 exp initial("000010110"b), /* opnd(1) <- opnd(2) ** opnd(3) */ 14 14 14 15 and_bits initial("000100001"b), /* opnd(1) <- opnd(2) & opnd(3) */ 14 16 or_bits initial("000100010"b), /* opnd(1) <- opnd(2)|opnd(3) */ 14 17 xor_bits initial("000100011"b), /* opnd(1) <- opnd(2) xor opnd(3) */ 14 18 not_bits initial("000100100"b), /* opnd(1) <- ^opnd(2) */ 14 19 cat_string initial("000100101"b), /* opnd(1) <- opnd(2)||opnd(3) */ 14 20 bool_fun initial("000100110"b), /* opnd(1) <- bool(opnd(2),opnd(3),opnd(4)) */ 14 21 14 22 assign initial("000110001"b), /* opnd(1) <- opnd(2) */ 14 23 assign_size_ck initial("000110010"b), /* opnd(1) <- opnd(2) */ 14 24 assign_zero initial("000110011"b), /* opnd(1) <- 0 */ 14 25 copy_words initial("000110100"b), /* move opnd(2) to opnd(1) by opnd(3) words */ 14 26 copy_string initial("000110101"b), /* move opnd(2) to opnd(1) by opnd(3) units */ 14 27 make_desc initial("000110110"b), /* opnd(1) <- descriptor(opnd(2),opnd(3)) */ 14 28 assign_round initial("000110111"b), /* opnd(1) <- opnd(2) rounded */ 14 29 pack initial("000111000"b), /* opnd(1) <- encode to picture opnd(2) */ 14 30 unpack initial("000111001"b), /* opnd(1) <- decode from picture opnd(2) */ 14 31 14 32 less_than initial("001000100"b), /* opnd(1) <- opnd(2) < opnd(3) */ 14 33 greater_than initial("001000101"b), /* opnd(1) <- opnd(2) > opnd(3) */ 14 34 equal initial("001000110"b), /* opnd(1) <- opnd(2) = opnd(3) */ 14 35 not_equal initial("001000111"b), /* opnd(1) <- opnd(2) ^= opnd(3) */ 14 36 less_or_equal initial("001001000"b), /* opnd(1) <- opnd(2) <= opnd(3) */ 14 37 greater_or_equal initial("001001001"b), /* opnd(1) <- opnd(2) >= opnd(3) */ 14 38 14 39 jump initial("001010001"b), /* go to opnd(1) unconditionally */ 14 40 jump_true initial("001010010"b), /* go to opnd(1) if opnd(2) is not 0 */ 14 41 jump_false initial("001010011"b), /* go to opnd(1) if opnd(2) is all 0 */ 14 42 jump_if_lt initial("001010100"b), /* go to opnd(1) if opnd(2) < opnd(3) */ 14 43 jump_if_gt initial("001010101"b), /* go to opnd(1) if opnd(2) > opnd(3) */ 14 44 jump_if_eq initial("001010110"b), /* go to opnd(1) if opnd(2) = opnd(3) */ 14 45 jump_if_ne initial("001010111"b), /* go to opnd(1) if opnd(2) ^= opnd(3) */ 14 46 jump_if_le initial("001011000"b), /* go to opnd(1) if opnd(2) <= opnd(3) */ 14 47 jump_if_ge initial("001011001"b), /* go to opnd(1) if opnd(2) >= opnd(3) */ 14 48 14 49 std_arg_list initial("001100001"b), /* opnd(1) <- arglist(opnd(2) desclist(opnd(3))) */ 14 50 return_words initial("001100010"b), /* return aggregate opnd(1), opnd(2) is length in words */ 14 51 std_call initial("001100011"b), /* opnd(1) <- call opnd(2) with opnd(3) */ 14 52 return_bits initial("001100100"b), /* return aggregate opnd(1), opnd(2) is length in bits */ 14 53 std_entry initial("001100101"b), /* entry(opnd(1)... opnd(n)) */ 14 54 return_string initial("001100110"b), /* return string opnd(1) */ 14 55 ex_prologue initial("001100111"b), /* execute the prologue -no operands- */ 14 56 allot_auto initial("001101000"b), /* opnd(1) <- addrel(stack,opnd(2)) */ 14 57 param_ptr initial("001101001"b), /* opnd(1) <- ptr to opnd(2) in block opnd(3) */ 14 58 param_desc_ptr initial("001101010"b), /* opnd(1) <- ptr to opnd(2) in block opnd(3) */ 14 59 std_return initial("001101011"b), /* return -no arguments- */ 14 60 allot_ctl initial("001101100"b), /* allocate opnd(1) , length in words is opnd(2) */ 14 61 free_ctl initial("001101101"b), /* free opnd(1) */ 14 62 stop initial("001101110"b), /* stop - terminate run unit */ 14 63 14 64 mod_bit initial("001110000"b), /* opnd(1) <- mod(opnd(3),36), 14 65* opnd(2) <- opnd(3) / 36 */ 14 66 mod_byte initial("001110001"b), /* opnd(1) <- mod(opnd(3),4), 14 67* opnd(2) <- opnd(3) / 4 */ 14 68 mod_half initial("001110010"b), /* opnd(1) <- mod(opnd(3),2), 14 69* opnd(2) <- opnd(3) / 2 */ 14 70 mod_word initial("001110011"b), /* TO BE DEFINED BY BLW */ 14 71 14 72 bit_to_char initial("010000000"b), /* opnd(1) <- (opnd(2)+8)/9 */ 14 73 bit_to_word initial("010000001"b), /* opnd(1) <- (opnd(2)+35)/36 */ 14 74 char_to_word initial("010000010"b), /* opnd(1) <- (opnd(2)+3)/4 */ 14 75 half_to_word initial("010000011"b), /* opnd(1) <- (opnd(2)+1)/2 */ 14 76 word_to_mod2 initial("010000100"b), /* opnd(1) <- (opnd(2)+1)/2*2 */ 14 77 word_to_mod4 initial("010000101"b), /* opnd(1) <- (opnd(2)+3)/4*4 */ 14 78 word_to_mod8 initial("010000110"b), /* opnd(1) <- (opnd(2)+7)/8*8 */ 14 79 rel_fun initial("010000111"b), /* opnd(1) <- rel(opnd(2)) */ 14 80 baseno_fun initial("010001000"b), /* opnd(1) <- baseno(opnd(2)) */ 14 81 desc_size initial("010001001"b), /* opnd(1) <- substr(opnd(2),13,24) */ 14 82 bit_pointer initial("010001010"b), /* opnd(1) <- bit offset of opnd(2) */ 14 83 index_before_fun initial("010001011"b), /* opnd(1) <- length of before(opnd(2),opnd(3)) */ 14 84 index_after_fun initial("010001100"b), /* opnd(1) <- offset of after(opnd(2),opnd(3)) in opnd(2) */ 14 85 verify_ltrim_fun initial("010001101"b), /* opnd(1) <- offset of ltrim(opnd(2),opnd(3)) in opnd(2) */ 14 86 verify_rtrim_fun initial("010001110"b), /* opnd(1) <- length(opnd(2))-length(rtrim(opnd(2),opnd(3))) */ 14 87 digit_to_bit initial("010001111"b), /* opnd(1) <- 9*opnd(2)/2 */ 14 88 14 89 ceil_fun initial("010010000"b), /* opnd(1) <- ceil(opnd(2)) */ 14 90 floor_fun initial("010010001"b), /* opnd(1) <- floor(opnd(2)) */ 14 91 round_fun initial("010010010"b), /* opnd(1) <- round(opnd(2)) */ 14 92 sign_fun initial("010010011"b), /* opnd(1) <- sign(opnd(2)) */ 14 93 abs_fun initial("010010100"b), /* opnd(1) <- abs(opnd(2)) */ 14 94 trunc_fun initial("010010101"b), /* opnd(1) <- trunc(opnd(2)) */ 14 95 byte_fun initial("010010110"b), /* opnd(1) <- byte(opnd(2)) */ 14 96 rank_fun initial("010010111"b), /* opnd(1) <- rank(opnd(2)) */ 14 97 index_rev_fun initial("010011000"b), /* opnd(1) <- index(reverse(opnd(2)),reverse(opnd(3))) */ 14 98 search_rev_fun initial("010011001"b), /* opnd(1) <- search(reverse(opnd(2)),opnd(3)) */ 14 99 verify_rev_fun initial("010011010"b), /* opnd(1) <- verify(reverse(opnd(2)),opnd(3)) */ 14 100 wordno_fun initial("010011011"b), /* opnd(1) <- wordno (opnd(2)) */ 14 101 segno_fun initial("010011100"b), /* opnd(1) <- segno (opnd(2)) */ 14 102 bitno_fun initial("010011101"b), /* opnd(1) <- bitno (opnd(2)) */ 14 103 charno_fun initial("010011110"b), /* opnd(1) <- charno (opnd(2)) */ 14 104 14 105 index_fun initial("010100000"b), /* opnd(1) <- index(opnd(2),opnd(3)) */ 14 106 off_fun initial("010100001"b), /* opnd(1) <- offset(opnd(2),opnd(3)) */ 14 107 complex_fun initial("010100010"b), /* opnd(1) <- complex(opnd(2),opnd(3)) */ 14 108 conjg_fun initial("010100011"b), /* opnd(1) <- conjg(opnd(2),opnd(3)) */ 14 109 mod_fun initial("010100100"b), /* opnd(1) <- mod(opnd(2),opnd(3)) */ 14 110 repeat_fun initial("010100101"b), /* opnd(1) <- repeat(opnd(2),opnd(3)) */ 14 111 verify_fun initial("010100110"b), /* opnd(1) <- verify(opnd(2),opnd(3)) */ 14 112 translate_fun initial("010100111"b), /* opnd(1) <- translate(opnd(2),opnd(3))*/ 14 113 real_fun initial("010101001"b), /* opnd(1) <- real(opnd(2)) */ 14 114 imag_fun initial("010101010"b), /* opnd(1) <- imag(opnd(2)) */ 14 115 length_fun initial("010101011"b), /* opnd(1) <- length(opnd(2)) */ 14 116 pl1_mod_fun initial("010101100"b), /* opnd(1) <- mod(opnd(2)) */ 14 117 search_fun initial("010101101"b), /* opnd(1) <- search(opnd(2),opnd(3)) */ 14 118 allocation_fun initial("010101110"b), /* opnd(1) <- allocation(opnd(2)) */ 14 119 reverse_fun initial("010101111"b), /* opnd(1) <- reverse(opnd(2)) */ 14 120 14 121 addr_fun initial("010110000"b), /* opnd(1) <- addr(opnd(2)) */ 14 122 addr_fun_bits initial("010110001"b), /* opnd(1) <- addr(opnd(2)) */ 14 123 ptr_fun initial("010110010"b), /* opnd(1) <- ptr(opnd(2),opnd(3)) */ 14 124 baseptr_fun initial("010110011"b), /* opnd(1) <- baseptr(opnd(2)) */ 14 125 addrel_fun initial("010110100"b), /* opnd(1) <- addrel(opnd(2),opnd(3)) */ 14 126 codeptr_fun initial("010110101"b), /* opnd(1) <- codeptr(opnd(2)) */ 14 127 environmentptr_fun initial("010110110"b), /* opnd(1) <- environmentptr(opnd(2)) */ 14 128 stackbaseptr_fun initial("010110111"b), /* opnd(1) is ptr to base of current stack */ 14 129 stackframeptr_fun initial("010111000"b), /* opnd(1) is ptr to current block's stack frame */ 14 130 setcharno_fun initial("010111001"b), /* opnd(1) <- opnd(2) with charno opnd(3) */ 14 131 addcharno_fun initial("010111010"b), /* opnd(1) <- opnd(2) with charno = charno + opnd(3) */ 14 132 setbitno_fun initial("010111011"b), /* setcharno for bitsno */ 14 133 addbitno_fun initial("010111100"b), /* addcharno for bitno */ 14 134 14 135 min_fun initial("011000000"b), /* opnd(1) <- min(opnd(1),opnd(2),...) */ 14 136 max_fun initial("011000001"b), /* opnd(1) <- max(opnd(1),opnd(2),...) */ 14 137 14 138 stack_ptr initial("011010001"b), /* opnd(1) <- stack frame ptr */ 14 139 empty_area initial("011010010"b), /* empty opnd(1), length in words is opnd(2) */ 14 140 enable_on initial("011010100"b), /* opnd(1) is the cond name 14 141* opnd(2) is the file name 14 142* opnd(3) is the block */ 14 143 revert_on initial("011010101"b), /* opnd(1) is the cond name, 14 144* opnd(2) is the file name */ 14 145 signal_on initial("011010110"b), /* opnd(1) is the cond name 14 146* opnd(2) is the file name */ 14 147 14 148 lock_fun initial("011010111"b), /* opnd(1) <- stac(opnd(2),opnd(3)) */ 14 149 stacq_fun initial("011011000"b), /* opnd(1) is result, opnd(2) is ptr to lock word, 14 150* opnd(3) is old value, (4) is new value. */ 14 151 clock_fun initial("011011001"b), /* opnd(1) is the clock time */ 14 152 vclock_fun initial("011011010"b), /* opnd(1) is the virtual clock time */ 14 153 14 154 bound_ck initial("011100000"b), /* opnd(1) <- opnd(2) if opnd(3) <= opnd(2) <= opnd(4) */ 14 155 range_ck initial("011100001"b), /* opnd(1) <- opnd(2) if opnd(3) <= opnd(2) <= opnd(4) */ 14 156 loop initial("011100010"b), /* do opnd(1) for opnd(2) from opnd(3) to opnd(4) by 1, 14 157* opnd(5) is the list */ 14 158 join initial("011100011"b), /* do opnd(1), opnd(2) ... opnd(n) */ 14 159 allot_based initial("011100100"b), /* allocate opnd(2) words in opnd(3), set opnd(1) */ 14 160 free_based initial("011100101"b), /* free opnd(1) in opnd(3), length is opnd(2) words */ 14 161 14 162 r_parn initial("011110001"b), /* format op code */ 14 163 l_parn initial("011110010"b), 14 164 r_format initial("011110011"b), 14 165 c_format initial("011110100"b), 14 166 f_format initial("011110101"b), 14 167 e_format initial("011110110"b), 14 168 b_format initial("011110111"b), 14 169 a_format initial("011111000"b), 14 170 x_format initial("011111001"b), 14 171 skip_format initial("011111010"b), 14 172 column_format initial("011111011"b), 14 173 page_format initial("011111100"b), 14 174 line_format initial("011111101"b), 14 175 picture_format initial("011111110"b), 14 176 bn_format initial("011111111"b), /* bit format, length(opnd(2)), radix factor(opnd(3)) */ 14 177 14 178 get_list_trans initial("100000000"b), /* getlist(opnd(2) with desc(opnd(1))) */ 14 179 get_edit_trans initial("100000001"b), /* getedit(opnd(2) with desc(opnd(1))) */ 14 180 get_data_trans initial("100000010"b), /* getdata(opnd(1) to opnd(n)) */ 14 181 put_list_trans initial("100000011"b), /* putlist(opnd(2) with desc(opnd(1))) */ 14 182 put_edit_trans initial("100000100"b), /* putedit(opnd(2) with desc(opnd(1))) */ 14 183 put_data_trans initial("100000101"b), /* putdata(opnd(2)) with subscript-list opnd(1) */ 14 184 terminate_trans initial("100000110"b), /* terminate stream transmission */ 14 185 stream_prep initial("100000111"b), /* initiate stream transmission */ 14 186 record_io initial("100001000"b), /* perform record io operation */ 14 187 fortran_read initial("100001001"b), /* A complete read statement */ 14 188 fortran_write initial("100001010"b), /* A complete write statement */ 14 189 ftn_file_manip initial("100001011"b), /* endfile,backspace,rewind,etc. */ 14 190 ftn_trans_loop initial("100001100"b), /* An implied do in i/o list */ 14 191 put_control initial("100001101"b), /* put control opnd(1) opnd(2) times */ 14 192 put_field initial("100001110"b), /* putlist(opnd(2)) of length(opnd(1)) */ 14 193 put_field_chk initial("100001111"b), /* putlist(op(2)) of len(op(1)) check char index(op(3)) */ 14 194 14 195 /* These operators are produced by the parse but are not used as input to the code generator. */ 14 196 /* They are processed by the semantic translator. */ 14 197 14 198 return_value initial("100010010"b), /* return(opnd(1)) */ 14 199 allot_var initial("100010011"b), /* allot opnd(1) in opnd(2) */ 14 200 free_var initial("100010100"b), /* free opnd(1) out of opnd(2) */ 14 201 get_file initial("100010101"b), /* opnd(1) is filename,opnd(2) is copy */ 14 202 /* opnd(3) is skip, opnd(4) is list */ 14 203 get_string initial("100010110"b), /* opnd(1) is string,opnd(2) is list */ 14 204 put_file initial("100010111"b), /* opnd(1) is filename,opnd(2) is page */ 14 205 /* opnd(3) is skip,opnd(4) is line */ 14 206 put_string initial("100011000"b), /* opnd(1) is string,opnd(2) is list */ 14 207 open_file initial("100011001"b), 14 208 close_file initial("100011010"b), 14 209 read_file initial("100011011"b), 14 210 write_file initial("100011100"b), 14 211 locate_file initial("100011101"b), 14 212 do_fun initial("100011110"b), /* opnd(1) is join of a list */ 14 213 /* opnd(2) is control variable ref */ 14 214 /* opnd(3) is specification operator */ 14 215 do_spec initial("100011111"b), /* opnd(1) to opnd(2) by opnd(3) */ 14 216 /* repeat opnd(4) while opnd(5) */ 14 217 /* opnd(6) is next specification */ 14 218 14 219 rewrite_file initial("100100000"b), 14 220 delete_file initial("100100001"b), 14 221 unlock_file initial("100100010"b), 14 222 lock_file initial("100100011"b), 14 223 refer initial("100100101"b), /* opnd(1) refer(opnd(2)) */ 14 224 prefix_plus initial("100100110"b), /* opnd(1) <- +opnd(2) */ 14 225 nop initial("100100111"b), /* no-op */ 14 226 assign_by_name initial("100101000"b), /* opnd(1) <- opnd(2),by name */ 14 227 14 228 /* These operators are produced by the semantic translator in processing the math 14 229* builtin functions and are used as input to the code generator */ 14 230 14 231 sqrt_fun initial("100110000"b), /* opnd(1) <- sqrt(opnd(2)) */ 14 232 sin_fun initial("100110001"b), /* opnd(1) <- sin(opnd(2)) */ 14 233 sind_fun initial("100110010"b), /* opnd(1) <- sind(opnd(2)) */ 14 234 cos_fun initial("100110011"b), /* opnd(1) <- cos(opnd(2)) */ 14 235 cosd_fun initial("100110100"b), /* opnd(1) <- cosd(opnd(2)) */ 14 236 tan_fun initial("100110101"b), /* opnd(1) <- tan(opnd(2)) */ 14 237 tand_fun initial("100110110"b), /* opnd(1) <- tand(opnd(2)) */ 14 238 asin_fun initial("100110111"b), /* opnd(1) <- asin(opnd(2)) */ 14 239 asind_fun initial("100111000"b), /* opnd(1) <- asind(opnd(2)) */ 14 240 acos_fun initial("100111001"b), /* opnd(1) <- acos(opnd(2)) */ 14 241 acosd_fun initial("100111010"b), /* opnd(1) <- acosd(opnd(2)) */ 14 242 atan_fun initial("100111011"b), /* opnd(1) <- atan(opnd(2)[,opnd(3)]) */ 14 243 atand_fun initial("100111100"b), /* opnd(1) <- atand(opnd(2)[,opnd(3)]) */ 14 244 log2_fun initial("100111101"b), /* opnd(1) <- log2(opnd(2)) */ 14 245 log_fun initial("100111110"b), /* opnd(1) <- log(opnd(2)) */ 14 246 log10_fun initial("100111111"b), /* opnd(1) <- log10(opnd(2)) */ 14 247 14 248 exp_fun initial("101000000"b)) /* opnd(1) <- exp(opnd(2)) */ 14 249 14 250 bit(9) aligned internal static options(constant); 14 251 14 252 /* END INCLUDE FILE ... op_codes.incl.pl1 */ 215 15 1 dcl ( root_block initial("000000001"b), 15 2 external_procedure initial("000000010"b), 15 3 internal_procedure initial("000000011"b), 15 4 begin_block initial("000000100"b), 15 5 on_unit initial("000000101"b)) internal static bit(9) aligned options(constant); 216 16 1 /* BEGIN INCLUDE FILE ... declare_type.incl.pl1 */ 16 2 16 3 /* Modified: 25 Apr 1979 by PCK to implement 4-bit decimal */ 16 4 16 5 dcl ( by_declare initial("001"b), 16 6 by_explicit_context initial("010"b), 16 7 by_context initial("011"b), 16 8 by_implication initial("100"b), 16 9 by_compiler initial("101"b)) int static bit(3) aligned options(constant); 16 10 16 11 /* END INCLUDE FILE ... declare_type.incl.pl1 */ 217 17 1 /* BEGIN INCLUDE FILE relbts.incl.pl1 */ 17 2 17 3 /* This include file defines the relocation bits as bit (18) entities. See 17 4* also relocation_bits.incl.pl1 and reloc_lower.incl.pl1. */ 17 5 17 6 dcl ( rc_a initial("0"b), /* absolute */ 17 7 rc_t initial("000000000000010000"b), /* text */ 17 8 rc_nt initial("000000000000010001"b), /* negative text */ 17 9 rc_lp18 initial("000000000000010010"b), /* linkage, 18 bit */ 17 10 rc_nlp18 initial("000000000000010011"b), /* negative link, 18 bit */ 17 11 rc_lp15 initial("000000000000010100"b), /* linkage, 15 bit */ 17 12 rc_dp initial("000000000000010101"b), /* def section */ 17 13 rc_s initial("000000000000010110"b), /* symbol segment */ 17 14 rc_ns initial("000000000000010111"b), /* negative symbol */ 17 15 rc_is18 initial("000000000000011000"b), /* internal static 18 */ 17 16 rc_is15 initial("000000000000011001"b), /* internal static 15 */ 17 17 rc_lb initial("000000000000011000"b), /* link block */ 17 18 rc_nlb initial("000000000000011001"b), /* negative link block */ 17 19 rc_sr initial("000000000000011010"b), /* self relative */ 17 20 rc_e initial("000000000000011111"b)) /* escape */ 17 21 bit(18) internal static options(constant); 17 22 17 23 dcl ( rc_dp_dp initial("000000000000010101000000000000010101"b), /* def section, def section */ 17 24 rc_a_dp initial("000000000000000000000000000000010101"b)) /* absolute, def section */ 17 25 bit(36) internal static options(constant); 17 26 17 27 /* END INCLUDE FILE relbts.incl.pl1 */ 218 18 1 dcl ( real_fix_bin_1 init(1), 18 2 real_fix_bin_2 init(2), 18 3 real_flt_bin_1 init(3), 18 4 real_flt_bin_2 init(4), 18 5 complex_fix_bin_1 init(5), 18 6 complex_fix_bin_2 init(6), 18 7 complex_flt_bin_1 init(7), 18 8 complex_flt_bin_2 init(8), 18 9 real_fix_dec init(9), 18 10 real_flt_dec init(10), 18 11 complex_fix_dec init(11), 18 12 complex_flt_dec init(12), 18 13 char_string init(13), 18 14 bit_string init(14), 18 15 label_constant init(15), 18 16 local_label_variable init(16), 18 17 label_variable init(17), 18 18 entry_variable init(18), 18 19 ext_entry_in init(19), 18 20 ext_entry_out init(20), 18 21 int_entry init(21), 18 22 int_entry_other init(22), 18 23 unpacked_ptr init(23), 18 24 packed_ptr init(24)) fixed bin(15) int static options(constant); 219 19 1 dcl jump_complement(2:9) bit(9) aligned static options(constant) 19 2 init("001010011"b, /* jump_true -> jump_false */ 19 3 "001010010"b, /* jump_false -> jump_true */ 19 4 "001011001"b, /* jump_if_lt -> jump_if_ge */ 19 5 "001011000"b, /* jump_if_gt -> jump_if_le */ 19 6 "001010111"b, /* jump_if_eq -> jump_if_ne */ 19 7 "001010110"b, /* jump_if_ne -> jump_if_eq */ 19 8 "001010101"b, /* jump_if_le -> jump_if_gt */ 19 9 "001010100"b); /* jump_if_ge -> jump_if_lt */ 220 221 222 /* program */ 223 224 p, cg_stat$cur_statement = pt; 225 cb = cg_stat$cur_block; 226 227 profile_pos = 0; 228 229 recovery_label = done; 230 231 if cg_stat$stop_id = string (p -> statement.source_id) 232 then do; 233 call ioa_$nnl ("Compiling ^p (^a).^/debug: ", pt, decode_node_id (p, "0"b)); 234 call debug; 235 end; 236 237 st_type = p -> statement.statement_type; 238 239 if st_type = format_statement 240 then return; 241 242 text_pos, p -> statement.object.start, p -> statement.object.finish = cg_stat$text_pos; 243 244 if st_type = entry_statement | st_type = procedure_statement 245 then do; 246 q = create_list (2); 247 q -> element (2) = p; 248 q -> element (1) = cb -> block.entry_list; 249 cb -> block.entry_list = q; 250 251 cg_stat$skip_to_label = "0"b; 252 if cg_stat$m_s_p = null 253 then cg_stat$m_s_p = state_man$create_ms (); 254 255 call compile_entry (pt, n); 256 257 if (cg_stat$table_option | cg_stat$generate_symtab) & ^cb -> block.no_stack 258 then do; 259 addrel (cg_stat$text_base, n) -> word = 260 cg_stat$star_symbol_up_zero || bit (fixed (cb -> block.symbol_block, 18), 18); 261 addrel (cg_stat$text_reloc_base, n) -> relocation = rc_lp18 || rc_s; 262 end; 263 264 if cg_stat$table_option 265 then do; 266 p1 = p -> statement.labels -> element (2) -> reference.symbol; 267 addrel (cg_stat$sym_base, p1 -> symbol.runtime) -> runtime_symbol.location = 268 bit (fixed (p1 -> symbol.location, 18), 18); 269 end; 270 271 if cg_stat$long_profile 272 then if p -> statement.labels -> element (2) -> reference.symbol -> symbol.external 273 then do; 274 call gen_long_profile (dummy_entry_offset); 275 call gen_long_profile (dummy_entry_offset); 276 call gen_long_profile (control_entry_offset); 277 call gen_long_profile (control_entry_offset); 278 call gen_long_profile (dummy_entry_offset); 279 end; 280 281 goto done; 282 end; 283 284 q = p -> statement.labels; 285 if q = null & cg_stat$skip_to_label 286 then return; 287 288 if p -> statement.begins_loop 289 & mod (text_pos, 2) ^= 0 290 then do; 291 call expmac$zero (nop_mac); 292 text_pos = text_pos + 1; /* start on even boundary */ 293 end; 294 295 a1 = "0"b; 296 do while (q ^= null); 297 p -> statement.reference_count = p -> statement.reference_count - 1; 298 p1 = q -> element (2); 299 300 if p1 -> node.type = reference_node 301 then do; 302 n = p1 -> reference.symbol -> label.location + p1 -> reference.c_offset; 303 if addrel (cg_stat$text_base, n) -> fix_bin ^= 0 304 then call error (326, p, p1); 305 else do; 306 cg_stat$text_pos = n; 307 call expmac ((tra), c_a (text_pos, 10)); 308 cg_stat$text_pos = text_pos; 309 end; 310 end; 311 else do; 312 call expmac$fill_usage (text_pos, (p1 -> label.location)); 313 p1 -> label.location = text_pos; 314 p1 -> label.allocated = "1"b; 315 316 if cg_stat$table_option 317 then addrel (cg_stat$sym_base, p1 -> label.symbol_table) -> runtime_symbol.location = 318 bit (text_pos, 18); 319 end; 320 321 q = q -> element (1); 322 end; 323 324 if p -> statement.labels ^= null 325 then do; 326 327 /* if there are no states attached to this statement and the reference 328* count is zero, there were no references to the statement. If this is 329* an end statement and the root is null, this is the superfluous end 330* statement generated by if_parse or do_parse. We will ignore the 331* statement in this case and avoid altering the machine state */ 332 333 if p -> state_list = null 334 then if p -> reference_count = 0 335 then if p -> statement.root = null 336 then if st_type = end_statement 337 then do; 338 if ^cg_stat$skip_to_label 339 then if cg_stat$extended_stack | cg_stat$agg_temps ^= null 340 | cg_stat$profile_option | cg_stat$long_profile 341 then goto free_temps; 342 goto done; 343 end; 344 345 cg_stat$skip_to_label = "0"b; 346 347 /* merge together all of the possible machine states */ 348 349 call state_man$merge_ms (pt); 350 end; 351 352 free_temps: 353 if p -> statement.free_temps 354 then do; 355 if cg_stat$extended_stack 356 then call shorten_stack; 357 358 if cg_stat$agg_temps ^= null 359 then call stack_temp$free_aggregates; 360 end; 361 362 tree, cg_stat$cur_tree = p -> statement.root; 363 364 if cg_stat$profile_option 365 then if p -> statement.put_in_profile & string (p -> statement.source_id) ^= "0"b 366 then do; 367 profile_pos = cg_stat$profile_pos; 368 call expmac ((aos_mac), c_a (profile_pos + 1, 13)); 369 cg_stat$profile_pos = cg_stat$profile_pos + size (p -> profile_entry); 370 end; 371 372 if cg_stat$long_profile 373 then if p -> statement.put_in_profile & string (p -> statement.source_id) ^= "0"b 374 then do; 375 profile_pos = cg_stat$profile_pos; 376 call gen_long_profile (profile_pos); 377 cg_stat$profile_pos = cg_stat$profile_pos + size (long_profile_entry); 378 end; 379 380 /* ignore null statements except if they have nop operator */ 381 382 if st_type = null_statement 383 then do; 384 if tree = null 385 then goto done; 386 if tree -> operator.op_code = nop 387 then call expmac$zero ((nop_mac)); 388 goto done; 389 end; 390 391 if st_type = if_statement 392 then do; 393 394 /* following code looks for constructs: 395* 396* if then return; _o_r 397* if then stop; 398* 399* and compiles it as a conditional transfer to 400* the _r_e_t_u_r_n, _r_e_t_u_r_n__m_a_i_n, or _s_t_o_p label in the operator segment */ 401 402 if tree -> op_code <= jump | tree -> op_code >= jump_if_ge 403 then goto normal; 404 405 p1 = tree -> operand (1); 406 if p1 -> node.type ^= label_node 407 then goto check_if; 408 409 q1 = p -> statement.next; 410 if q1 -> statement_type ^= return_statement & q1 -> statement_type ^= stop_statement 411 then goto check_if; 412 if q1 -> statement.labels ^= null 413 then goto check_if; 414 415 q = q1 -> statement.root; 416 if q ^= null 417 then do; 418 if q -> operator.number ^= 0 419 then goto check_if; 420 if q -> op_code ^= std_return & q -> op_code ^= stop 421 then goto check_if; 422 end; 423 424 if cb -> block.no_stack 425 then goto check_if; 426 if cb -> block.block_type = begin_block 427 then goto check_if; 428 429 q2 = q1 -> statement.next; 430 if p1 -> label.statement ^= q2 431 then goto check_if; 432 433 /* all our tests succeeded, complement the sense of the jump and replace its 434* operand(1) with a reference node having address ap|409, ap|801, or ap|802 435* (return_operator_loc, stop_operator_loc, return_main_operator_loc defined 436* in code_generator.pl1). We don't use c_a because if stmt might be split. */ 437 438 tree -> op_code = jump_complement (fixed (substr (tree -> op_code, 6, 4), 4)); 439 if q1 -> statement_type = return_statement 440 then if cb -> block.options_main 441 then tree -> operand (1) = cg_stat$return_main_operator; 442 else tree -> operand (1) = cg_stat$return_operator; 443 else tree -> operand (1) = cg_stat$stop_operator; 444 445 q1 -> statement_type = null_statement; 446 q1 -> statement.root = null; 447 448 q2 -> statement.reference_count = q2 -> statement.reference_count - 1; 449 450 /* following code checks for possibility of optimizing an 451* if statement with a logical operator at the top */ 452 453 check_if: 454 if cg_stat$optimize 455 then if ^p -> statement.irreducible & ^p -> statement.checked 456 then if tree -> op_code = jump_true | tree -> op_code = jump_false 457 then if tree -> operand (2) -> node.type = operator_node 458 then if ^tree -> operand (2) -> operand (1) -> reference.evaluated 459 then if tree -> operand (2) -> operand (1) -> reference.c_length = 1 460 then do; 461 q1 = p -> statement.next; 462 call optimize_if (pt); 463 if q1 ^= p -> statement.next 464 then call combine_tests (pt, (q1 -> statement.back)); 465 tree, cg_stat$cur_tree = p -> statement.root; 466 end; 467 468 goto normal; 469 end; 470 471 if st_type = begin_statement 472 then do; 473 save_label = recovery_label; 474 if ^tree -> block.no_stack 475 then do; 476 q = addrel (cg_stat$text_base, cg_stat$text_pos); 477 tree -> block.entry_list = q; 478 479 if cg_stat$separate_static 480 then macro = ss_enter_begin_block; 481 else macro = enter_begin_block; 482 call expmac$zero ((macro)); 483 484 if (cg_stat$table_option | cg_stat$generate_symtab) 485 then do; 486 addrel (cg_stat$text_base, cg_stat$text_pos) -> word = 487 cg_stat$star_symbol_up_zero 488 || bit (fixed (tree -> block.symbol_block, 18), 18); 489 addrel (cg_stat$text_reloc_base, cg_stat$text_pos) -> relocation = 490 rc_lp18 || rc_s; 491 end; 492 493 cg_stat$text_pos = cg_stat$text_pos + 1; 494 495 if cg_stat$support 496 then call expmac$zero ((support_mac)); 497 end; 498 499 call make_map_entry; 500 501 call compile_block$begin_block ((tree)); 502 503 if cg_stat$m_s_p = null 504 then cg_stat$m_s_p = state_man$create_ms (); 505 506 cg_stat$cur_block = cb; 507 cg_stat$skip_to_label = "0"b; 508 cg_stat$cur_level = cb -> block.level; 509 recovery_label = save_label; 510 511 if ^tree -> block.no_stack 512 then q -> eax_ins.offset = bit (make_mod (tree -> block.last_auto_loc, 16), 18); 513 return; 514 end; 515 516 if st_type = on_statement 517 then do; 518 nargs = 3; 519 q1 = tree -> operand (1); 520 arg (1) = prepare_operand ((q1 -> reference.symbol -> symbol.general), 1, atomic); 521 on_options = p -> statement.snap || p -> statement.system; 522 523 q2 = tree -> operand (2); 524 if q2 ^= null 525 then do; 526 arg (2) = prepare_operand (q2, 1, atomic); 527 if on_options ^= ""b 528 then do; 529 macro = enable_file_2; 530 nargs = 4; 531 arg (4) = c_a (fixed (bit (on_options, 18), 18), 2); 532 end; 533 else macro = enable_file; 534 end; 535 else do; 536 n = q1 -> reference.symbol -> symbol.location; 537 arg (2) = c_a (n, 1); 538 arg (2) -> reference.address.op = on_options; 539 macro = enable_mac; 540 end; 541 542 arg (3) = 543 prepare_operand ((tree -> operand (3) -> block.main -> statement.labels -> element (2)), 1, 544 atomic); 545 546 call xr_man$load_const ((arg (1) -> reference.c_length), 6); 547 call xr_man$super_lock (6); 548 549 call expmac$many (macro, addr (arg), nargs); 550 551 call xr_man$super_unlock (6); 552 553 if ^arg (3) -> reference.symbol -> symbol.allocated 554 then do; 555 p1 = create_label (cg_stat$cur_block, null, by_compiler); 556 call expmac ((tra), prepare_operand (p1, 1, atomic)); 557 558 call make_map_entry; 559 560 save_cb = cb; 561 call compile_block$begin_block ((tree -> operand (3))); 562 cb, cg_stat$cur_block = save_cb; 563 cg_stat$cur_level = cb -> block.level; 564 565 call expmac$fill_usage (cg_stat$text_pos, (p1 -> label.location)); 566 567 if cg_stat$m_s_p = null 568 then cg_stat$m_s_p = state_man$create_ms (); 569 cg_stat$skip_to_label = "0"b; 570 end; 571 572 else call make_map_entry; 573 574 call state_man$flush; 575 return; 576 end; 577 578 if st_type = end_statement 579 then do; 580 if tree = null 581 then goto done; 582 583 cg_stat$skip_to_label = cb -> block.block_type ^= begin_block; 584 585 if cb -> block.no_stack 586 then if cb -> block.block_type ^= begin_block 587 then call expmac ((quick_return_mac), c_a (cb -> block.entry_info, 4)); 588 else ; 589 590 else if cb -> block.block_type = begin_block 591 then do; 592 call state_man$flush; 593 call expmac$zero (leave_begin_block); 594 end; 595 596 else call return_from_nonquick_procedure (cb); 597 598 goto done; 599 end; 600 601 if st_type = return_statement 602 then do; 603 cg_stat$skip_to_label = "1"b; 604 605 if tree = null 606 then goto nr; 607 608 op = tree -> operator.op_code; 609 if op = std_return 610 then goto nr; 611 612 /* have return of something with * bound or length */ 613 614 i = 0; 615 if cb -> block.block_type = begin_block 616 then do; 617 618 q = cb; 619 do while (q -> block.block_type = begin_block); 620 if ^q -> block.no_stack 621 then i = i + 1; 622 q = q -> block.father; 623 end; 624 625 end; 626 627 /* we assume that we can't have a no stack procedure with returns(*) */ 628 629 q3 = c_a (i, 2); 630 631 if op = return_string 632 then do; 633 replace = "0"b; 634 q1 = prepare_operand ((tree -> operand (1)), 1, a1); 635 636 if ^a1 637 then if q1 -> reference.long_ref 638 then do; 639 q2 = q1 -> reference.length; 640 if q2 ^= null 641 then do; 642 if q2 -> node.type = operator_node 643 then do; 644 q4 = q2 -> operand (1); 645 if q4 -> reference.shared 646 then do; 647 q2 -> operand (1) = copy_temp (q4); 648 replace = "1"b; 649 end; 650 end; 651 652 call adjust_ref_count (q2, 1); 653 end; 654 655 call compile_exp ((tree -> operand (1))); 656 end; 657 else q1 = compile_exp$save_exp ((tree -> operand (1))); 658 659 call load_size (q1); 660 661 if replace 662 then q2 -> operand (1) = q4; 663 664 if q1 -> reference.data_type = char_string 665 then macro = ret_chars; 666 else macro = ret_bits; 667 668 l1: 669 call gen_long_profile_for_last_statement; 670 call expmac (lxl0, q3); 671 call long_op$no_size (q1, macro); 672 goto ret_done; 673 end; 674 675 /* must be return_words | return_bits operator */ 676 677 q2 = prepare_operand ((tree -> operand (2)), 1, a2); 678 q1 = prepare_operand ((tree -> operand (1)), -1, a1); 679 680 call compile_exp ((tree -> operand (2))); 681 682 if op = return_bits 683 then do; 684 macro = ret_bits; 685 goto l1; 686 end; 687 688 if q1 -> reference.varying_ref 689 then q1 -> reference.c_offset = q1 -> reference.c_offset - 1; 690 691 call base_man$load_var (2, q1, 1); 692 call gen_long_profile_for_last_statement; 693 call expmac (ret_words, q3); 694 695 if q1 -> reference.varying_ref 696 then q1 -> reference.c_offset = q1 -> reference.c_offset + 1; 697 698 goto ret_done; 699 700 /* have normal return operator */ 701 702 nr: 703 q = cb; 704 if cb -> block.block_type ^= begin_block 705 then if cb -> block.no_stack 706 then do; 707 qr: 708 if cg_stat$extended_stack 709 then call shorten_stack; 710 call expmac (quick_return_mac, c_a (q -> block.entry_info, 4)); 711 end; 712 else call return_from_nonquick_procedure (cb); 713 714 else do; 715 i = 0; 716 717 do while (q -> block.block_type = begin_block); 718 if ^q -> block.no_stack 719 then i = i + 1; 720 q = q -> block.father; 721 end; 722 723 if q -> block.no_stack 724 then do; 725 if i ^= 0 726 then do; 727 call expmac ((set_stack), c_a (i, 2)); 728 cg_stat$extended_stack = "0"b; 729 end; 730 goto qr; 731 end; 732 733 if q -> block.options_main 734 then macro = begin_return_main_mac; 735 else macro = begin_return_mac; 736 737 call gen_long_profile_for_last_statement; 738 call expmac (macro, c_a (i, 2)); 739 end; 740 741 ret_done: 742 call state_man$discard_ms; 743 cg_stat$extended_stack = "0"b; 744 745 goto done; 746 end; 747 748 /* process stop statements */ 749 750 if st_type = stop_statement 751 then do; 752 cg_stat$skip_to_label = "1"b; 753 call gen_long_profile_for_last_statement; 754 call expmac$zero (stop_mac); 755 call state_man$discard_ms; 756 goto done; 757 end; 758 759 normal: 760 if tree ^= null 761 then call compile_tree (tree); 762 763 done: 764 call make_map_entry; 765 return; 766 767 recover: 768 entry; 769 770 /* This entry causes compile_statement to return to the program 771* that call it, thus effecting an error recovery after a fault */ 772 773 goto recovery_label; 774 775 shorten_stack: 776 procedure; 777 778 if st_type ^= procedure_statement 779 then do; 780 call state_man$erase_reg ("0000000000000001000"b); 781 /* ab */ 782 call expmac$zero ((reset_stack)); 783 end; 784 785 cg_stat$extended_stack = "0"b; 786 end shorten_stack; 787 788 make_map_entry: 789 procedure; 790 791 /* This procedure makes a statement_map entry for the statement if 792* one is needed and updates any necessary profile information */ 793 794 dcl q ptr; 795 796 p -> statement.object.finish = cg_stat$text_pos; 797 798 if profile_pos ^= 0 799 then addrel (cg_stat$profile_base, profile_pos) -> profile_entry.map = 800 bit (fixed (cg_stat$sym_pos - cg_stat$map_start, 18), 18); 801 802 if ^cg_stat$generate_map 803 then goto reset; 804 805 if cg_stat$in_thunk 806 then goto reset; /* Protects runtime symbol table. (1858) */ 807 808 /* make entry in map if we generated any code for this 809* statement and its statement id is different from that 810* of previous statement */ 811 812 if profile_pos = 0 813 then do; 814 if cg_stat$in_prologue 815 then goto reset; 816 817 if p -> statement.object.finish = text_pos 818 then goto reset; 819 820 if cg_stat$old_id = string (p -> statement.source_id) 821 then goto reset; 822 823 if p -> statement.source.length <= 0 824 then goto reset; 825 end; 826 827 cg_stat$old_id = string (p -> statement.source_id); 828 829 q = addrel (cg_stat$sym_base, cg_stat$sym_pos); 830 q -> statement_map.location = bit (text_pos, 18); 831 string (q -> statement_map.source_id) = string (p -> statement.source_id); 832 q -> statement_map.source_info.start = bit (fixed (p -> statement.source.start, 18), 18); 833 q -> statement_map.source_info.length = bit (fixed (p -> statement.source.length, 9), 9); 834 addrel (cg_stat$sym_reloc_base, cg_stat$sym_pos) -> relocation = rc_t; 835 cg_stat$sym_pos = cg_stat$sym_pos + size (q -> statement_map); 836 837 reset: 838 cg_stat$next_ref = cg_stat$first_ref; 839 end make_map_entry; 840 841 return_from_nonquick_procedure: 842 procedure (cb); 843 844 dcl cb ptr; /* (Input) */ 845 846 call gen_long_profile_for_last_statement; 847 848 if cb -> block.options_main 849 then call expmac$zero (return_main_mac); 850 else call expmac$zero (return_mac); 851 end return_from_nonquick_procedure; 852 853 gen_long_profile_for_last_statement: 854 procedure; 855 856 if cg_stat$long_profile 857 then call gen_long_profile (dummy_entry_offset); 858 end gen_long_profile_for_last_statement; 859 860 gen_long_profile: 861 procedure (offset); 862 863 dcl offset fixed bin; /* offset of profile entry */ 864 865 dcl 1 trailer aligned, 866 2 header_relp fixed bin (17) unal, 867 2 entry_offset fixed bin (17) unal; 868 869 call expmac$zero (long_profile_mac); 870 871 addrel (cg_stat$text_reloc_base, cg_stat$text_pos) -> relocation = rc_is18; 872 trailer.header_relp = cg_stat$profile_start; 873 trailer.entry_offset = offset; 874 call expmac$abs (addr (trailer), size (trailer)); 875 end gen_long_profile; 876 877 end compile_statement; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1008.0 compile_statement.pl1 >spec>on>pl128d>compile_statement.pl1 202 1 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 203 2 07/21/80 1546.3 reference.incl.pl1 >ldd>include>reference.incl.pl1 204 3 10/02/83 0828.4 symbol.incl.pl1 >spec>on>pl128d>symbol.incl.pl1 205 4 05/06/74 1742.1 label.incl.pl1 >ldd>include>label.incl.pl1 206 5 04/07/83 1635.0 statement.incl.pl1 >ldd>include>statement.incl.pl1 207 6 07/21/80 1546.3 operator.incl.pl1 >ldd>include>operator.incl.pl1 208 7 08/13/81 2211.5 list.incl.pl1 >ldd>include>list.incl.pl1 209 8 11/26/79 1320.6 runtime_symbol.incl.pl1 >ldd>include>runtime_symbol.incl.pl1 210 9 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.incl.pl1 211 10 05/03/76 1320.4 statement_types.incl.pl1 >ldd>include>statement_types.incl.pl1 212 11 05/06/74 1751.6 statement_map.incl.pl1 >ldd>include>statement_map.incl.pl1 213 12 10/30/80 1648.7 profile_entry.incl.pl1 >ldd>include>profile_entry.incl.pl1 214 13 03/10/77 1345.4 long_profile.incl.pl1 >ldd>include>long_profile.incl.pl1 215 14 04/07/83 1635.0 op_codes.incl.pl1 >ldd>include>op_codes.incl.pl1 216 15 05/03/76 1320.8 block_types.incl.pl1 >ldd>include>block_types.incl.pl1 217 16 10/25/79 1645.8 declare_type.incl.pl1 >ldd>include>declare_type.incl.pl1 218 17 10/30/80 1648.7 relbts.incl.pl1 >ldd>include>relbts.incl.pl1 219 18 05/03/76 1320.4 data_types.incl.pl1 >ldd>include>data_types.incl.pl1 220 19 05/03/76 1320.4 jump_complement.incl.pl1 >ldd>include>jump_complement.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. a1 000144 automatic bit(1) dcl 91 set ref 295* 634* 636 678* a2 000145 automatic bit(1) dcl 91 set ref 677* addr builtin function dcl 156 ref 549 549 874 874 addrel builtin function dcl 156 ref 259 261 267 303 316 476 486 489 798 829 834 871 address 10 based structure level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "compile_statement" address 3 based structure level 2 in structure "runtime_symbol" packed unaligned dcl 8-3 in procedure "compile_statement" adjust_ref_count 000152 constant entry external dcl 163 ref 652 allocated 1(18) based bit(1) level 2 in structure "label" packed unaligned dcl 4-1 in procedure "compile_statement" set ref 314* allocated 1(18) based bit(1) level 2 in structure "symbol" packed unaligned dcl 3-3 in procedure "compile_statement" ref 553 aos_mac constant fixed bin(15,0) initial dcl 126 ref 368 arg 000122 automatic pointer array dcl 91 set ref 520* 526* 531* 537* 538 542* 546 549 549 553 atomic 000146 automatic bit(1) dcl 91 set ref 520* 526* 542* 556* 556* attributes 31 based structure level 2 dcl 3-3 back 2 based pointer level 2 packed unaligned dcl 5-9 ref 463 base_man$load_var 000204 constant entry external dcl 163 ref 691 begin_block constant bit(9) initial dcl 15-1 ref 426 583 585 590 615 619 704 717 begin_return_mac constant fixed bin(15,0) initial dcl 126 ref 735 begin_return_main_mac constant fixed bin(15,0) initial dcl 126 ref 733 begin_statement constant bit(9) initial dcl 10-3 ref 471 begins_loop 13(11) based bit(1) level 3 packed unaligned dcl 5-9 ref 288 bit builtin function dcl 156 ref 259 267 316 486 511 531 531 798 830 832 833 bits 12(06) based structure level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "compile_statement" bits 13 based structure level 2 in structure "statement" packed unaligned dcl 5-9 in procedure "compile_statement" block based structure level 1 dcl 1-5 block_type 24 based bit(9) level 2 packed unaligned dcl 1-5 ref 426 583 585 590 615 619 704 717 by_compiler 000010 constant bit(3) initial dcl 16-5 set ref 555* c_a 000172 constant entry external dcl 163 ref 307 307 368 368 531 537 585 585 629 710 710 727 727 738 738 c_length 2 based fixed bin(24,0) level 2 dcl 2-3 ref 453 546 c_offset 1 based fixed bin(24,0) level 2 dcl 2-3 set ref 302 688* 688 695* 695 cb 000100 automatic pointer dcl 91 in procedure "compile_statement" set ref 225* 248 249 257 259 424 426 439 506 508 560 562* 563 583 585 585 585 585 590 596* 615 618 702 704 704 712* cb parameter pointer dcl 844 in procedure "return_from_nonquick_procedure" ref 841 848 cg_stat$agg_temps 000026 external static pointer dcl 44 ref 338 358 cg_stat$cur_block 000014 external static pointer dcl 44 set ref 225 506* 555* 562* cg_stat$cur_level 000064 external static fixed bin(18,0) dcl 44 set ref 508* 563* cg_stat$cur_statement 000016 external static pointer dcl 44 set ref 224* cg_stat$cur_tree 000040 external static pointer dcl 44 set ref 362* 465* cg_stat$extended_stack 000104 external static bit(1) unaligned dcl 44 set ref 338 355 707 728* 743* 785* cg_stat$first_ref 000022 external static pointer dcl 44 ref 837 cg_stat$generate_map 000100 external static bit(1) unaligned dcl 44 ref 802 cg_stat$generate_symtab 000072 external static bit(1) unaligned dcl 44 ref 257 484 cg_stat$in_prologue 000106 external static bit(1) unaligned dcl 44 ref 814 cg_stat$in_thunk 000120 external static bit(1) unaligned dcl 44 ref 805 cg_stat$long_profile 000114 external static bit(1) unaligned dcl 44 ref 271 338 372 856 cg_stat$m_s_p 000024 external static pointer dcl 44 set ref 252 252* 503 503* 567 567* cg_stat$map_start 000062 external static fixed bin(18,0) dcl 44 ref 798 cg_stat$next_ref 000036 external static pointer dcl 44 set ref 837* cg_stat$old_id 000054 external static bit(27) unaligned dcl 44 set ref 820 827* cg_stat$optimize 000116 external static bit(1) unaligned dcl 44 ref 453 cg_stat$profile_base 000044 external static pointer dcl 44 ref 798 cg_stat$profile_option 000110 external static bit(1) unaligned dcl 44 ref 338 364 cg_stat$profile_pos 000066 external static fixed bin(18,0) dcl 44 set ref 367 369* 369 375 377* 377 cg_stat$profile_start 000070 external static fixed bin(18,0) dcl 44 ref 872 cg_stat$return_main_operator 000050 external static pointer dcl 44 ref 439 cg_stat$return_operator 000042 external static pointer dcl 44 ref 442 cg_stat$separate_static 000102 external static bit(1) unaligned dcl 44 ref 479 cg_stat$skip_to_label 000076 external static bit(1) unaligned dcl 44 set ref 251* 285 338 345* 507* 569* 583* 603* 752* cg_stat$star_symbol_up_zero 000052 external static bit(18) unaligned dcl 44 ref 259 486 cg_stat$stop_id 000122 external static bit(27) dcl 87 ref 231 cg_stat$stop_operator 000046 external static pointer dcl 44 ref 443 cg_stat$support 000112 external static bit(1) unaligned dcl 44 ref 495 cg_stat$sym_base 000032 external static pointer dcl 44 ref 267 316 829 cg_stat$sym_pos 000060 external static fixed bin(18,0) dcl 44 set ref 798 829 834 835* 835 cg_stat$sym_reloc_base 000034 external static pointer dcl 44 ref 834 cg_stat$table_option 000074 external static bit(1) unaligned dcl 44 ref 257 264 316 484 cg_stat$text_base 000020 external static pointer dcl 44 ref 259 303 476 486 cg_stat$text_pos 000056 external static fixed bin(18,0) dcl 44 set ref 242 306* 308* 476 486 489 493* 493 565* 796 871 cg_stat$text_reloc_base 000030 external static pointer dcl 44 ref 261 489 871 char_string constant fixed bin(15,0) initial dcl 18-1 ref 664 checked 13(06) based bit(1) level 3 packed unaligned dcl 5-9 ref 453 combine_tests 000224 constant entry external dcl 163 ref 463 compile_block$begin_block 000226 constant entry external dcl 163 ref 501 561 compile_entry 000154 constant entry external dcl 163 ref 255 compile_exp 000200 constant entry external dcl 163 ref 655 680 compile_exp$save_exp 000202 constant entry external dcl 163 ref 657 compile_tree 000230 constant entry external dcl 163 ref 759 control_entry_offset constant fixed bin(17,0) initial dcl 13-19 set ref 276* 277* copy_temp 000174 constant entry external dcl 163 ref 647 create_label 000126 constant entry external dcl 162 ref 555 create_list 000124 constant entry external dcl 161 ref 246 data_type 12 based fixed bin(5,0) level 2 packed unaligned dcl 2-3 ref 664 debug 000166 constant entry external dcl 163 ref 234 decode_node_id 000130 constant entry external dcl 163 ref 233 dummy_entry_offset 000011 constant fixed bin(17,0) initial dcl 13-19 set ref 274* 275* 278* 856* eax_ins based structure level 1 dcl 119 element 1 based pointer array level 2 packed unaligned dcl 7-6 set ref 247* 248* 266 271 298 321 542 enable_file constant fixed bin(15,0) initial dcl 126 ref 533 enable_file_2 constant fixed bin(15,0) initial dcl 126 ref 529 enable_mac constant fixed bin(15,0) initial dcl 126 ref 539 end_statement constant bit(9) initial dcl 10-3 ref 333 578 enter_begin_block constant fixed bin(15,0) initial dcl 126 ref 481 entry_info 50 based fixed bin(18,0) level 2 dcl 1-5 set ref 585* 585* 710* 710* entry_list 36 based pointer level 2 dcl 1-5 set ref 248 249* 477* entry_offset 0(18) 000216 automatic fixed bin(17,0) level 2 packed unaligned dcl 865 set ref 873* entry_statement constant bit(9) initial dcl 10-3 ref 244 error 000132 constant entry external dcl 163 ref 303 evaluated 12(13) based bit(1) level 3 packed unaligned dcl 2-3 ref 453 expmac 000170 constant entry external dcl 163 ref 307 368 556 585 670 693 710 727 738 expmac$abs 000220 constant entry external dcl 163 ref 874 expmac$fill_usage 000214 constant entry external dcl 163 ref 312 565 expmac$many 000142 constant entry external dcl 163 ref 549 expmac$zero 000216 constant entry external dcl 163 ref 291 386 482 495 593 754 782 848 850 869 external 32(02) based bit(1) level 4 packed unaligned dcl 3-3 ref 271 father 1 based pointer level 2 packed unaligned dcl 1-5 ref 622 720 finish 10(18) based fixed bin(17,0) level 3 packed unaligned dcl 5-9 set ref 242* 796* 817 fix_bin based fixed bin(17,0) dcl 117 ref 303 fixed builtin function dcl 156 ref 259 267 438 486 531 531 798 832 833 format_statement constant bit(9) initial dcl 10-3 ref 239 free_temps 12(25) based bit(1) level 2 packed unaligned dcl 5-9 ref 352 general 16 based pointer level 2 packed unaligned dcl 3-3 ref 520 header_relp 000216 automatic fixed bin(17,0) level 2 packed unaligned dcl 865 set ref 872* i 000153 automatic fixed bin(18,0) dcl 91 set ref 614* 620* 620 629* 715* 718* 718 725 727* 727* 738* 738* if_statement constant bit(9) initial dcl 10-3 ref 391 ioa_$nnl 000164 constant entry external dcl 163 ref 233 irreducible 13(05) based bit(1) level 3 packed unaligned dcl 5-9 ref 453 jump constant bit(9) initial dcl 14-8 ref 402 jump_complement 000000 constant bit(9) initial array dcl 19-1 ref 438 jump_false constant bit(9) initial dcl 14-8 ref 453 jump_if_ge constant bit(9) initial dcl 14-8 ref 402 jump_true constant bit(9) initial dcl 14-8 ref 453 label based structure level 1 dcl 4-1 label_node constant bit(9) initial dcl 9-5 ref 406 labels 4 based pointer level 2 packed unaligned dcl 5-9 ref 266 271 284 324 412 542 last_auto_loc 46 based fixed bin(17,0) level 2 dcl 1-5 set ref 511* leave_begin_block 000017 constant fixed bin(15,0) initial dcl 126 set ref 593* length 6 based pointer level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "compile_statement" ref 639 length 1(27) based bit(9) level 3 in structure "statement_map" packed unaligned dcl 11-1 in procedure "compile_statement" set ref 833* length 12 based fixed bin(11,0) level 3 in structure "statement" packed unaligned dcl 5-9 in procedure "compile_statement" ref 823 833 level 45 based fixed bin(17,0) level 2 dcl 1-5 ref 508 563 list based structure level 1 dcl 7-6 load_size 000210 constant entry external dcl 163 ref 659 location based bit(18) level 2 in structure "statement_map" packed unaligned dcl 11-1 in procedure "compile_statement" set ref 830* location 3 based bit(18) level 3 in structure "runtime_symbol" packed unaligned dcl 8-3 in procedure "compile_statement" set ref 267* 316* location 1 based fixed bin(18,0) level 2 in structure "symbol" packed unsigned unaligned dcl 3-3 in procedure "compile_statement" ref 267 536 location 1 based fixed bin(17,0) level 2 in structure "label" packed unaligned dcl 4-1 in procedure "compile_statement" set ref 302 312 313* 565 long_op$no_size 000206 constant entry external dcl 163 ref 671 long_profile_entry based structure level 1 dcl 13-12 ref 377 long_profile_mac 000015 constant fixed bin(15,0) initial dcl 126 set ref 869* long_ref 12(08) based bit(1) level 3 packed unaligned dcl 2-3 ref 636 lxl0 000020 constant fixed bin(15,0) initial dcl 126 set ref 670* macro 000136 automatic fixed bin(15,0) dcl 91 set ref 479* 481* 482 529* 533* 539* 549* 664* 666* 671* 684* 733* 735* 738* main 13 based pointer level 2 packed unaligned dcl 1-5 ref 542 make_mod 000212 constant entry external dcl 163 ref 511 map based bit(18) level 2 packed unaligned dcl 12-3 set ref 798* misc_attributes 31(19) based structure level 3 packed unaligned dcl 3-3 n 000155 automatic fixed bin(18,0) dcl 91 set ref 255* 259 261 302* 303 306 536* 537* nargs 000134 automatic fixed bin(17,0) dcl 91 set ref 518* 530* 549* next 1 based pointer level 2 packed unaligned dcl 5-9 ref 409 429 461 463 no_stack 24(22) based bit(1) level 2 packed unaligned dcl 1-5 ref 257 424 474 511 585 620 704 718 723 node based structure level 1 dcl 9-27 nop constant bit(9) initial dcl 14-8 ref 386 nop_mac 000021 constant fixed bin(15,0) initial dcl 126 set ref 291* 386 null builtin function dcl 156 ref 252 285 296 324 333 333 338 358 384 412 416 446 503 524 555 555 567 580 605 640 759 null_statement constant bit(9) initial dcl 10-3 ref 382 445 number 0(21) based fixed bin(14,0) level 2 packed unaligned dcl 6-6 ref 418 object 10 based structure level 2 packed unaligned dcl 5-9 offset parameter fixed bin(17,0) dcl 863 in procedure "gen_long_profile" ref 860 873 offset based bit(18) level 2 in structure "eax_ins" packed unaligned dcl 119 in procedure "compile_statement" set ref 511* on_options 000150 automatic bit(2) dcl 91 set ref 521* 527 531 531 538 on_statement constant bit(9) initial dcl 10-3 ref 516 op 10(18) based bit(9) level 3 in structure "reference" packed unaligned dcl 2-3 in procedure "compile_statement" set ref 538* op 000152 automatic bit(9) dcl 91 in procedure "compile_statement" set ref 608* 609 631 682 op_code 0(09) based bit(9) level 2 packed unaligned dcl 6-6 set ref 386 402 402 420 420 438* 438 453 453 608 operand 1 based pointer array level 2 packed unaligned dcl 6-6 set ref 405 439* 442* 443* 453 453 453 453 453 519 523 542 561 634 644 647* 655 657 661* 677 678 680 operator based structure level 1 dcl 6-6 operator_node constant bit(9) initial dcl 9-5 ref 453 642 optimize_if 000222 constant entry external dcl 163 ref 462 options_main 43(01) based bit(1) level 2 packed unaligned dcl 1-5 ref 439 733 848 p 000102 automatic pointer dcl 91 set ref 224* 231 233* 237 242 242 247 266 271 284 288 297 297 303* 324 333 333 333 352 362 364 364 369 372 372 409 453 453 461 463 465 521 521 796 817 820 823 827 831 832 833 p1 000132 automatic pointer dcl 91 set ref 266* 267 267 298* 300 302 302 303* 312 313 314 316 405* 406 430 555* 556* 556* 565 prepare_operand 000176 constant entry external dcl 163 ref 520 526 542 556 556 634 677 678 procedure_statement constant bit(9) initial dcl 10-3 ref 244 778 profile_entry based structure level 1 dcl 12-3 set ref 369 profile_pos 000135 automatic fixed bin(17,0) dcl 91 set ref 227* 367* 368 368 375* 376* 798 798 812 pt parameter pointer dcl 40 set ref 37 224 233* 255* 349* 462* 463* put_in_profile 13(01) based bit(1) level 3 packed unaligned dcl 5-9 ref 364 372 q 000104 automatic pointer dcl 91 in procedure "compile_statement" set ref 246* 247 248 249 284* 285 296 298 321* 321 415* 416 418 420 420 476* 477 511 618* 619 620 622* 622 702* 710 710 717 718 720* 720 723 733 q 000172 automatic pointer dcl 794 in procedure "make_map_entry" set ref 829* 830 831 832 833 835 q1 000106 automatic pointer dcl 91 set ref 409* 410 410 412 415 429 439 445 446 461* 463 463 519* 520 536 634* 636 639 657* 659* 664 671* 678* 688 688 688 691* 695 695 695 q2 000110 automatic pointer dcl 91 set ref 429* 430 448 448 523* 524 526* 639* 640 642 644 647 652* 661 677* q3 000112 automatic pointer dcl 91 set ref 629* 670* 693* q4 000114 automatic pointer dcl 91 set ref 644* 645 647* 661 quick_return_mac 000014 constant fixed bin(15,0) initial dcl 126 set ref 585 710* rc_is18 constant bit(18) initial unaligned dcl 17-6 ref 871 rc_lp18 constant bit(18) initial unaligned dcl 17-6 ref 261 489 rc_s constant bit(18) initial unaligned dcl 17-6 ref 261 489 rc_t constant bit(18) initial unaligned dcl 17-6 ref 834 recovery_label 000010 internal static label variable dcl 91 set ref 229* 473 509* 773 reference based structure level 1 dcl 2-3 reference_count 7 based fixed bin(17,0) level 2 packed unaligned dcl 5-9 set ref 297* 297 333 448* 448 reference_node constant bit(9) initial dcl 9-5 ref 300 relocation based bit(36) dcl 122 set ref 261* 489* 834* 871* replace 000147 automatic bit(1) dcl 91 set ref 633* 648* 661 reset_stack constant fixed bin(15,0) initial dcl 126 ref 782 ret_bits constant fixed bin(15,0) initial dcl 126 ref 666 684 ret_chars constant fixed bin(15,0) initial dcl 126 ref 664 ret_words 000022 constant fixed bin(15,0) initial dcl 126 set ref 693* return_bits constant bit(9) initial dcl 14-8 ref 682 return_mac 000016 constant fixed bin(15,0) initial dcl 126 set ref 850* return_main_mac 000012 constant fixed bin(15,0) initial dcl 126 set ref 848* return_statement constant bit(9) initial dcl 10-3 ref 410 439 601 return_string constant bit(9) initial dcl 14-8 ref 631 root 3 based pointer level 2 packed unaligned dcl 5-9 set ref 333 362 415 446* 465 runtime 3 based bit(18) level 2 packed unaligned dcl 3-3 ref 267 runtime_symbol based structure level 1 dcl 8-3 save_cb 000120 automatic pointer dcl 91 set ref 560* 562 save_label 000140 automatic label variable dcl 91 set ref 473* 509 set_stack constant fixed bin(15,0) initial dcl 126 ref 727 shared 0(11) based bit(1) level 2 packed unaligned dcl 2-3 ref 645 size builtin function dcl 156 ref 369 377 835 874 874 snap 13(03) based bit(1) level 3 packed unaligned dcl 5-9 ref 521 source 11 based structure level 2 packed unaligned dcl 5-9 source_id 0(09) based structure level 2 in structure "statement" packed unaligned dcl 5-9 in procedure "compile_statement" ref 231 364 372 820 827 831 source_id 0(18) based structure level 2 in structure "statement_map" packed unaligned dcl 11-1 in procedure "compile_statement" set ref 831* source_info 1(09) based structure level 2 packed unaligned dcl 11-1 ss_enter_begin_block constant fixed bin(15,0) initial dcl 126 ref 479 st_type 000151 automatic bit(9) dcl 91 set ref 237* 239 244 244 333 382 391 471 516 578 601 750 778 stack_temp$free_aggregates 000144 constant entry external dcl 163 ref 358 start 1(09) based bit(18) level 3 in structure "statement_map" packed unaligned dcl 11-1 in procedure "compile_statement" set ref 832* start 11(12) based fixed bin(23,0) level 3 in structure "statement" packed unaligned dcl 5-9 in procedure "compile_statement" ref 832 start 10 based fixed bin(17,0) level 3 in structure "statement" packed unaligned dcl 5-9 in procedure "compile_statement" set ref 242* state_list 6 based pointer level 2 packed unaligned dcl 5-9 ref 333 state_man$create_ms 000160 constant entry external dcl 163 ref 252 503 567 state_man$discard_ms 000150 constant entry external dcl 163 ref 741 755 state_man$erase_reg 000162 constant entry external dcl 163 ref 780 state_man$flush 000146 constant entry external dcl 163 ref 574 592 state_man$merge_ms 000156 constant entry external dcl 163 ref 349 statement 11 based pointer level 2 in structure "label" packed unaligned dcl 4-1 in procedure "compile_statement" ref 430 statement based structure level 1 dcl 5-9 in procedure "compile_statement" statement_map based structure level 1 dcl 11-1 set ref 835 statement_type 12(27) based bit(9) level 2 packed unaligned dcl 5-9 set ref 237 410 410 439 445* std_return constant bit(9) initial dcl 14-8 ref 420 609 stop constant bit(9) initial dcl 14-8 ref 420 stop_mac 000013 constant fixed bin(15,0) initial dcl 126 set ref 754* stop_statement constant bit(9) initial dcl 10-3 ref 410 750 string builtin function dcl 156 set ref 231 364 372 820 827 831* 831 substr builtin function dcl 156 ref 438 support_mac constant fixed bin(15,0) initial dcl 126 ref 495 symbol 3 based pointer level 2 in structure "reference" packed unaligned dcl 2-3 in procedure "compile_statement" ref 266 271 302 520 536 553 symbol based structure level 1 dcl 3-3 in procedure "compile_statement" symbol_block 47 based fixed bin(17,0) level 2 dcl 1-5 ref 259 486 symbol_table 2(18) based bit(18) level 2 packed unaligned dcl 4-1 ref 316 system 13(04) based bit(1) level 3 packed unaligned dcl 5-9 ref 521 text_pos 000154 automatic fixed bin(18,0) dcl 91 set ref 242* 288 292* 292 307* 307* 308 312* 313 316 817 830 tra constant fixed bin(15,0) initial dcl 126 ref 307 556 trailer 000216 automatic structure level 1 dcl 865 set ref 874 874 874 874 tree 000116 automatic pointer dcl 91 set ref 362* 384 386 402 402 405 438 438 439 442 443 453 453 453 453 453 465* 474 477 486 501 511 511 519 523 542 561 580 605 608 634 655 657 677 678 680 759 759* type based bit(9) level 2 packed unaligned dcl 9-27 ref 300 406 453 642 varying_ref 0(10) based bit(1) level 2 packed unaligned dcl 2-3 ref 688 695 word based bit(36) dcl 122 set ref 259* 486* xr_man$load_const 000134 constant entry external dcl 163 ref 546 xr_man$super_lock 000136 constant entry external dcl 163 ref 547 xr_man$super_unlock 000140 constant entry external dcl 163 ref 551 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. a_format internal static bit(9) initial dcl 14-8 abs_fun internal static bit(9) initial dcl 14-8 acos_fun internal static bit(9) initial dcl 14-8 acosd_fun internal static bit(9) initial dcl 14-8 add internal static bit(9) initial dcl 14-8 addbitno_fun internal static bit(9) initial dcl 14-8 addcharno_fun internal static bit(9) initial dcl 14-8 addr_fun internal static bit(9) initial dcl 14-8 addr_fun_bits internal static bit(9) initial dcl 14-8 addrel_fun internal static bit(9) initial dcl 14-8 allocate_statement internal static bit(9) initial dcl 10-3 allocation_fun internal static bit(9) initial dcl 14-8 allot_auto internal static bit(9) initial dcl 14-8 allot_based internal static bit(9) initial dcl 14-8 allot_ctl internal static bit(9) initial dcl 14-8 allot_var internal static bit(9) initial dcl 14-8 and_bits internal static bit(9) initial dcl 14-8 array_node internal static bit(9) initial dcl 9-5 asin_fun internal static bit(9) initial dcl 14-8 asind_fun internal static bit(9) initial dcl 14-8 assign internal static bit(9) initial dcl 14-8 assign_by_name internal static bit(9) initial dcl 14-8 assign_round internal static bit(9) initial dcl 14-8 assign_size_ck internal static bit(9) initial dcl 14-8 assign_zero internal static bit(9) initial dcl 14-8 assignment_statement internal static bit(9) initial dcl 10-3 atan_fun internal static bit(9) initial dcl 14-8 atand_fun internal static bit(9) initial dcl 14-8 b_format internal static bit(9) initial dcl 14-8 baseno_fun internal static bit(9) initial dcl 14-8 baseptr_fun internal static bit(9) initial dcl 14-8 bit_pointer internal static bit(9) initial dcl 14-8 bit_string internal static fixed bin(15,0) initial dcl 18-1 bit_to_char internal static bit(9) initial dcl 14-8 bit_to_word internal static bit(9) initial dcl 14-8 bitno_fun internal static bit(9) initial dcl 14-8 block_node internal static bit(9) initial dcl 9-5 bn_format internal static bit(9) initial dcl 14-8 bool_fun internal static bit(9) initial dcl 14-8 bound_ck internal static bit(9) initial dcl 14-8 bound_node internal static bit(9) initial dcl 9-5 by_context internal static bit(3) initial dcl 16-5 by_declare internal static bit(3) initial dcl 16-5 by_explicit_context internal static bit(3) initial dcl 16-5 by_implication internal static bit(3) initial dcl 16-5 by_name_agg_node internal static bit(9) initial dcl 9-5 byte_fun internal static bit(9) initial dcl 14-8 c_format internal static bit(9) initial dcl 14-8 call_statement internal static bit(9) initial dcl 10-3 cat_string internal static bit(9) initial dcl 14-8 ceil_fun internal static bit(9) initial dcl 14-8 char_to_word internal static bit(9) initial dcl 14-8 charno_fun internal static bit(9) initial dcl 14-8 clock_fun internal static bit(9) initial dcl 14-8 close_file internal static bit(9) initial dcl 14-8 close_statement internal static bit(9) initial dcl 10-3 codeptr_fun internal static bit(9) initial dcl 14-8 column_format internal static bit(9) initial dcl 14-8 complex_fix_bin_1 internal static fixed bin(15,0) initial dcl 18-1 complex_fix_bin_2 internal static fixed bin(15,0) initial dcl 18-1 complex_fix_dec internal static fixed bin(15,0) initial dcl 18-1 complex_flt_bin_1 internal static fixed bin(15,0) initial dcl 18-1 complex_flt_bin_2 internal static fixed bin(15,0) initial dcl 18-1 complex_flt_dec internal static fixed bin(15,0) initial dcl 18-1 complex_fun internal static bit(9) initial dcl 14-8 conjg_fun internal static bit(9) initial dcl 14-8 context_node internal static bit(9) initial dcl 9-5 continue_statement internal static bit(9) initial dcl 10-3 copy_string internal static bit(9) initial dcl 14-8 copy_words internal static bit(9) initial dcl 14-8 cos_fun internal static bit(9) initial dcl 14-8 cosd_fun internal static bit(9) initial dcl 14-8 cross_reference_node internal static bit(9) initial dcl 9-5 declare_statement internal static bit(9) initial dcl 10-3 default_node internal static bit(9) initial dcl 9-5 default_statement internal static bit(9) initial dcl 10-3 delete_file internal static bit(9) initial dcl 14-8 delete_statement internal static bit(9) initial dcl 10-3 desc_size internal static bit(9) initial dcl 14-8 digit_to_bit internal static bit(9) initial dcl 14-8 display_statement internal static bit(9) initial dcl 10-3 div internal static bit(9) initial dcl 14-8 do_fun internal static bit(9) initial dcl 14-8 do_spec internal static bit(9) initial dcl 14-8 do_statement internal static bit(9) initial dcl 10-3 e_format internal static bit(9) initial dcl 14-8 else_clause internal static bit(9) initial dcl 10-3 empty_area internal static bit(9) initial dcl 14-8 enable_on internal static bit(9) initial dcl 14-8 encoded_value based structure level 1 dcl 8-70 entry_variable internal static fixed bin(15,0) initial dcl 18-1 environmentptr_fun internal static bit(9) initial dcl 14-8 equal internal static bit(9) initial dcl 14-8 ex_prologue internal static bit(9) initial dcl 14-8 exit_statement internal static bit(9) initial dcl 10-3 exp internal static bit(9) initial dcl 14-8 exp_fun internal static bit(9) initial dcl 14-8 ext_entry_in internal static fixed bin(15,0) initial dcl 18-1 ext_entry_out internal static fixed bin(15,0) initial dcl 18-1 external_procedure internal static bit(9) initial dcl 15-1 f_format internal static bit(9) initial dcl 14-8 floor_fun internal static bit(9) initial dcl 14-8 format_value_node internal static bit(9) initial dcl 9-5 fortran_read internal static bit(9) initial dcl 14-8 fortran_write internal static bit(9) initial dcl 14-8 free_based internal static bit(9) initial dcl 14-8 free_ctl internal static bit(9) initial dcl 14-8 free_statement internal static bit(9) initial dcl 10-3 free_var internal static bit(9) initial dcl 14-8 ftn_file_manip internal static bit(9) initial dcl 14-8 ftn_trans_loop internal static bit(9) initial dcl 14-8 get_data_trans internal static bit(9) initial dcl 14-8 get_edit_trans internal static bit(9) initial dcl 14-8 get_file internal static bit(9) initial dcl 14-8 get_list_trans internal static bit(9) initial dcl 14-8 get_statement internal static bit(9) initial dcl 10-3 get_string internal static bit(9) initial dcl 14-8 goto_statement internal static bit(9) initial dcl 10-3 greater_or_equal internal static bit(9) initial dcl 14-8 greater_than internal static bit(9) initial dcl 14-8 half_to_word internal static bit(9) initial dcl 14-8 imag_fun internal static bit(9) initial dcl 14-8 index_after_fun internal static bit(9) initial dcl 14-8 index_before_fun internal static bit(9) initial dcl 14-8 index_fun internal static bit(9) initial dcl 14-8 index_rev_fun internal static bit(9) initial dcl 14-8 int_entry internal static fixed bin(15,0) initial dcl 18-1 int_entry_other internal static fixed bin(15,0) initial dcl 18-1 internal_procedure internal static bit(9) initial dcl 15-1 join internal static bit(9) initial dcl 14-8 jump_if_eq internal static bit(9) initial dcl 14-8 jump_if_gt internal static bit(9) initial dcl 14-8 jump_if_le internal static bit(9) initial dcl 14-8 jump_if_lt internal static bit(9) initial dcl 14-8 jump_if_ne internal static bit(9) initial dcl 14-8 l_parn internal static bit(9) initial dcl 14-8 label_array_element_node internal static bit(9) initial dcl 9-5 label_constant internal static fixed bin(15,0) initial dcl 18-1 label_variable internal static fixed bin(15,0) initial dcl 18-1 length_fun internal static bit(9) initial dcl 14-8 less_or_equal internal static bit(9) initial dcl 14-8 less_than internal static bit(9) initial dcl 14-8 line_format internal static bit(9) initial dcl 14-8 list_node internal static bit(9) initial dcl 9-5 local_label_variable internal static fixed bin(15,0) initial dcl 18-1 locate_file internal static bit(9) initial dcl 14-8 locate_statement internal static bit(9) initial dcl 10-3 lock_file internal static bit(9) initial dcl 14-8 lock_fun internal static bit(9) initial dcl 14-8 lock_statement internal static bit(9) initial dcl 10-3 log10_fun internal static bit(9) initial dcl 14-8 log2_fun internal static bit(9) initial dcl 14-8 log_fun internal static bit(9) initial dcl 14-8 long_profile_header based structure level 1 dcl 13-4 loop internal static bit(9) initial dcl 14-8 machine_state_node internal static bit(9) initial dcl 9-5 make_desc internal static bit(9) initial dcl 14-8 max_block_number internal static fixed bin(17,0) initial dcl 1-74 max_fun internal static bit(9) initial dcl 14-8 max_list_elements internal static fixed bin(17,0) initial dcl 7-12 max_number_of_operands internal static fixed bin(15,0) initial dcl 6-15 min_fun internal static bit(9) initial dcl 14-8 mod_bit internal static bit(9) initial dcl 14-8 mod_byte internal static bit(9) initial dcl 14-8 mod_fun internal static bit(9) initial dcl 14-8 mod_half internal static bit(9) initial dcl 14-8 mod_word internal static bit(9) initial dcl 14-8 mult internal static bit(9) initial dcl 14-8 negate internal static bit(9) initial dcl 14-8 not_bits internal static bit(9) initial dcl 14-8 not_equal internal static bit(9) initial dcl 14-8 off_fun internal static bit(9) initial dcl 14-8 on_unit internal static bit(9) initial dcl 15-1 open_file internal static bit(9) initial dcl 14-8 open_statement internal static bit(9) initial dcl 10-3 or_bits internal static bit(9) initial dcl 14-8 pack internal static bit(9) initial dcl 14-8 packed_ptr internal static fixed bin(15,0) initial dcl 18-1 page_format internal static bit(9) initial dcl 14-8 param_desc_ptr internal static bit(9) initial dcl 14-8 param_ptr internal static bit(9) initial dcl 14-8 picture_format internal static bit(9) initial dcl 14-8 pl1_mod_fun internal static bit(9) initial dcl 14-8 prefix_plus internal static bit(9) initial dcl 14-8 ptr_fun internal static bit(9) initial dcl 14-8 put_control internal static bit(9) initial dcl 14-8 put_data_trans internal static bit(9) initial dcl 14-8 put_edit_trans internal static bit(9) initial dcl 14-8 put_field internal static bit(9) initial dcl 14-8 put_field_chk internal static bit(9) initial dcl 14-8 put_file internal static bit(9) initial dcl 14-8 put_list_trans internal static bit(9) initial dcl 14-8 put_statement internal static bit(9) initial dcl 10-3 put_string internal static bit(9) initial dcl 14-8 r_format internal static bit(9) initial dcl 14-8 r_parn internal static bit(9) initial dcl 14-8 range_ck internal static bit(9) initial dcl 14-8 rank_fun internal static bit(9) initial dcl 14-8 rc_a internal static bit(18) initial unaligned dcl 17-6 rc_a_dp internal static bit(36) initial unaligned dcl 17-23 rc_dp internal static bit(18) initial unaligned dcl 17-6 rc_dp_dp internal static bit(36) initial unaligned dcl 17-23 rc_e internal static bit(18) initial unaligned dcl 17-6 rc_is15 internal static bit(18) initial unaligned dcl 17-6 rc_lb internal static bit(18) initial unaligned dcl 17-6 rc_lp15 internal static bit(18) initial unaligned dcl 17-6 rc_nlb internal static bit(18) initial unaligned dcl 17-6 rc_nlp18 internal static bit(18) initial unaligned dcl 17-6 rc_ns internal static bit(18) initial unaligned dcl 17-6 rc_nt internal static bit(18) initial unaligned dcl 17-6 rc_sr internal static bit(18) initial unaligned dcl 17-6 read_file internal static bit(9) initial dcl 14-8 read_statement internal static bit(9) initial dcl 10-3 real_fix_bin_1 internal static fixed bin(15,0) initial dcl 18-1 real_fix_bin_2 internal static fixed bin(15,0) initial dcl 18-1 real_fix_dec internal static fixed bin(15,0) initial dcl 18-1 real_flt_bin_1 internal static fixed bin(15,0) initial dcl 18-1 real_flt_bin_2 internal static fixed bin(15,0) initial dcl 18-1 real_flt_dec internal static fixed bin(15,0) initial dcl 18-1 real_fun internal static bit(9) initial dcl 14-8 record_io internal static bit(9) initial dcl 14-8 refer internal static bit(9) initial dcl 14-8 rel_fun internal static bit(9) initial dcl 14-8 repeat_fun internal static bit(9) initial dcl 14-8 return_value internal static bit(9) initial dcl 14-8 return_words internal static bit(9) initial dcl 14-8 reverse_fun internal static bit(9) initial dcl 14-8 revert_on internal static bit(9) initial dcl 14-8 revert_statement internal static bit(9) initial dcl 10-3 rewrite_file internal static bit(9) initial dcl 14-8 rewrite_statement internal static bit(9) initial dcl 10-3 root_block internal static bit(9) initial dcl 15-1 round_fun internal static bit(9) initial dcl 14-8 runtime_block based structure level 1 dcl 8-38 runtime_bound based structure level 1 unaligned dcl 8-33 runtime_token based structure level 1 dcl 8-63 search_fun internal static bit(9) initial dcl 14-8 search_rev_fun internal static bit(9) initial dcl 14-8 segno_fun internal static bit(9) initial dcl 14-8 setbitno_fun internal static bit(9) initial dcl 14-8 setcharno_fun internal static bit(9) initial dcl 14-8 sf_par_node internal static bit(9) initial dcl 9-5 sign_fun internal static bit(9) initial dcl 14-8 signal_on internal static bit(9) initial dcl 14-8 signal_statement internal static bit(9) initial dcl 10-3 sin_fun internal static bit(9) initial dcl 14-8 sind_fun internal static bit(9) initial dcl 14-8 skip_format internal static bit(9) initial dcl 14-8 source_node internal static bit(9) initial dcl 9-5 sqrt_fun internal static bit(9) initial dcl 14-8 stack_ptr internal static bit(9) initial dcl 14-8 stackbaseptr_fun internal static bit(9) initial dcl 14-8 stackframeptr_fun internal static bit(9) initial dcl 14-8 stacq_fun internal static bit(9) initial dcl 14-8 statement_node internal static bit(9) initial dcl 9-5 std_arg_list internal static bit(9) initial dcl 14-8 std_call internal static bit(9) initial dcl 14-8 std_entry internal static bit(9) initial dcl 14-8 stream_prep internal static bit(9) initial dcl 14-8 sub internal static bit(9) initial dcl 14-8 symbol_node internal static bit(9) initial dcl 9-5 system_on_unit internal static bit(9) initial dcl 10-3 tan_fun internal static bit(9) initial dcl 14-8 tand_fun internal static bit(9) initial dcl 14-8 temporary_node internal static bit(9) initial dcl 9-5 terminate_trans internal static bit(9) initial dcl 14-8 token_node internal static bit(9) initial dcl 9-5 translate_fun internal static bit(9) initial dcl 14-8 trunc_fun internal static bit(9) initial dcl 14-8 unknown_statement internal static bit(9) initial dcl 10-3 unlock_file internal static bit(9) initial dcl 14-8 unlock_statement internal static bit(9) initial dcl 10-3 unpack internal static bit(9) initial dcl 14-8 unpacked_ptr internal static fixed bin(15,0) initial dcl 18-1 vclock_fun internal static bit(9) initial dcl 14-8 verify_fun internal static bit(9) initial dcl 14-8 verify_ltrim_fun internal static bit(9) initial dcl 14-8 verify_rev_fun internal static bit(9) initial dcl 14-8 verify_rtrim_fun internal static bit(9) initial dcl 14-8 wait_statement internal static bit(9) initial dcl 10-3 word_to_mod2 internal static bit(9) initial dcl 14-8 word_to_mod4 internal static bit(9) initial dcl 14-8 word_to_mod8 internal static bit(9) initial dcl 14-8 wordno_fun internal static bit(9) initial dcl 14-8 write_file internal static bit(9) initial dcl 14-8 write_statement internal static bit(9) initial dcl 10-3 x_format internal static bit(9) initial dcl 14-8 xor_bits internal static bit(9) initial dcl 14-8 NAMES DECLARED BY EXPLICIT CONTEXT. check_if 001115 constant label dcl 453 ref 406 410 412 418 420 424 426 430 compile_statement 000046 constant entry external dcl 37 done 002761 constant label dcl 763 ref 229 281 342 384 388 580 598 745 756 free_temps 000604 constant label dcl 352 ref 338 gen_long_profile 003210 constant entry internal dcl 860 ref 274 275 276 277 278 376 856 gen_long_profile_for_last_statement 003201 constant entry internal dcl 853 ref 668 692 737 753 846 l1 002353 constant label dcl 668 ref 685 make_map_entry 003025 constant entry internal dcl 788 ref 499 558 572 763 normal 002747 constant label dcl 759 ref 402 468 nr 002530 constant label dcl 702 ref 605 609 qr 002541 constant label dcl 707 ref 730 recover 002764 constant entry external dcl 767 reset 003144 constant label dcl 837 ref 802 805 814 817 820 823 ret_done 002715 constant label dcl 741 ref 672 698 return_from_nonquick_procedure 003150 constant entry internal dcl 841 ref 596 712 shorten_stack 002774 constant entry internal dcl 775 ref 355 707 NAME DECLARED BY CONTEXT OR IMPLICATION. mod builtin function ref 288 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4246 4500 3277 4256 Length 5442 3277 232 726 746 4 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME compile_statement 234 external procedure is an external procedure. shorten_stack internal procedure shares stack frame of external procedure compile_statement. make_map_entry internal procedure shares stack frame of external procedure compile_statement. return_from_nonquick_procedure internal procedure shares stack frame of external procedure compile_statement. gen_long_profile_for_last_statement internal procedure shares stack frame of external procedure compile_statement. gen_long_profile internal procedure shares stack frame of external procedure compile_statement. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 recovery_label compile_statement STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME compile_statement 000100 cb compile_statement 000102 p compile_statement 000104 q compile_statement 000106 q1 compile_statement 000110 q2 compile_statement 000112 q3 compile_statement 000114 q4 compile_statement 000116 tree compile_statement 000120 save_cb compile_statement 000122 arg compile_statement 000132 p1 compile_statement 000134 nargs compile_statement 000135 profile_pos compile_statement 000136 macro compile_statement 000140 save_label compile_statement 000144 a1 compile_statement 000145 a2 compile_statement 000146 atomic compile_statement 000147 replace compile_statement 000150 on_options compile_statement 000151 st_type compile_statement 000152 op compile_statement 000153 i compile_statement 000154 text_pos compile_statement 000155 n compile_statement 000172 q make_map_entry 000216 trailer gen_long_profile THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as unpk_to_pk call_ext_out_desc call_ext_out return tra_label_var mod_fx1 ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. adjust_ref_count base_man$load_var c_a combine_tests compile_block$begin_block compile_entry compile_exp compile_exp$save_exp compile_tree copy_temp create_label create_list debug decode_node_id error expmac expmac$abs expmac$fill_usage expmac$many expmac$zero ioa_$nnl load_size long_op$no_size make_mod optimize_if prepare_operand stack_temp$free_aggregates state_man$create_ms state_man$discard_ms state_man$erase_reg state_man$flush state_man$merge_ms xr_man$load_const xr_man$super_lock xr_man$super_unlock THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_stat$agg_temps cg_stat$cur_block cg_stat$cur_level cg_stat$cur_statement cg_stat$cur_tree cg_stat$extended_stack cg_stat$first_ref cg_stat$generate_map cg_stat$generate_symtab cg_stat$in_prologue cg_stat$in_thunk cg_stat$long_profile cg_stat$m_s_p cg_stat$map_start cg_stat$next_ref cg_stat$old_id cg_stat$optimize cg_stat$profile_base cg_stat$profile_option cg_stat$profile_pos cg_stat$profile_start cg_stat$return_main_operator cg_stat$return_operator cg_stat$separate_static cg_stat$skip_to_label cg_stat$star_symbol_up_zero cg_stat$stop_id cg_stat$stop_operator cg_stat$support cg_stat$sym_base cg_stat$sym_pos cg_stat$sym_reloc_base cg_stat$table_option cg_stat$text_base cg_stat$text_pos cg_stat$text_reloc_base LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 37 000043 224 000053 225 000060 227 000063 229 000064 231 000067 233 000073 234 000134 237 000141 239 000145 242 000147 244 000157 246 000164 247 000176 248 000201 249 000204 251 000206 252 000210 255 000222 257 000234 259 000245 261 000257 264 000265 266 000267 267 000274 271 000310 274 000321 275 000323 276 000325 277 000327 278 000331 281 000333 284 000334 285 000336 288 000344 291 000353 292 000361 295 000362 296 000363 297 000370 298 000376 300 000401 302 000405 303 000412 306 000435 307 000437 308 000466 310 000471 312 000472 313 000506 314 000512 316 000514 321 000531 322 000534 324 000535 333 000541 338 000555 342 000572 345 000573 349 000575 352 000604 355 000610 358 000614 362 000625 364 000632 367 000643 368 000645 369 000677 372 000702 375 000713 376 000715 377 000717 382 000722 384 000725 386 000731 388 000746 391 000747 402 000751 405 000761 406 000764 409 000770 410 000773 412 001002 415 001005 416 001007 418 001013 420 001017 424 001027 426 001033 429 001037 430 001041 438 001046 439 001055 442 001072 443 001077 445 001103 446 001105 448 001107 453 001115 461 001150 462 001152 463 001161 465 001203 468 001210 471 001211 473 001213 474 001217 476 001223 477 001230 479 001231 481 001236 482 001240 484 001247 486 001254 489 001267 493 001275 495 001276 499 001310 501 001311 503 001322 506 001335 507 001340 508 001341 509 001343 511 001347 513 001375 516 001376 518 001400 519 001402 520 001405 521 001426 523 001441 524 001444 526 001450 527 001467 529 001471 530 001473 531 001475 532 001514 533 001515 534 001517 536 001520 537 001525 538 001542 539 001546 542 001550 546 001575 547 001613 549 001624 551 001641 553 001652 555 001657 556 001676 558 001730 560 001731 561 001733 562 001745 563 001751 565 001754 567 001770 569 002003 570 002005 572 002006 574 002007 575 002014 578 002015 580 002017 583 002023 585 002031 588 002067 590 002070 592 002074 593 002100 594 002107 596 002110 598 002112 601 002113 603 002115 605 002117 608 002123 609 002127 614 002131 615 002132 618 002137 619 002140 620 002145 622 002151 623 002153 629 002154 631 002171 633 002174 634 002175 636 002217 639 002226 640 002230 642 002234 644 002240 645 002242 647 002245 648 002261 652 002263 655 002276 656 002310 657 002311 659 002325 661 002334 664 002341 666 002351 668 002353 670 002354 671 002365 672 002376 677 002377 678 002421 680 002443 682 002455 684 002460 685 002462 688 002463 691 002471 692 002510 693 002511 695 002522 698 002527 702 002530 704 002532 707 002541 710 002545 711 002574 712 002575 715 002600 717 002601 718 002607 720 002613 721 002615 723 002616 725 002621 727 002623 728 002653 730 002655 733 002656 735 002664 737 002666 738 002667 741 002715 743 002722 745 002724 750 002725 752 002727 753 002731 754 002732 755 002741 756 002746 759 002747 763 002761 765 002762 767 002763 773 002771 775 002774 778 002775 780 003000 782 003011 785 003022 786 003024 788 003025 796 003026 798 003032 802 003046 805 003050 812 003052 814 003054 817 003056 820 003063 823 003067 827 003072 829 003075 830 003102 831 003107 832 003113 833 003124 834 003134 835 003142 837 003144 839 003147 841 003150 846 003152 848 003153 850 003171 851 003200 853 003201 856 003202 858 003207 860 003210 869 003212 871 003221 872 003230 873 003233 874 003236 875 003252 ----------------------------------------------------------- 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