Temporary String Deallocation 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 1 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 0 1 MODULE STEMP ( IDENT = 'X00.06' %TITLE 'Temporary String Deallocation' 0 2 %BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) ) 0 3 %BLISS36( ,ENTRY( XST$FREE_TEMP ),OTS='' ) 0 4 ) = 0 5 BEGIN 1 6 1 7 ! 1 8 ! COPYRIGHT (c) 1980 BY 1 9 ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 1 10 ! 1 11 ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 1 12 ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE 1 13 ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER 1 14 ! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY 1 15 ! OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY 1 16 ! TRANSFERRED. 1 17 ! 1 18 ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE 1 19 ! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 1 20 ! CORPORATION. 1 21 ! 1 22 ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 1 23 ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. 1 24 ! 1 25 1 26 !++ 1 27 ! 1 28 ! FACILITY: BLISS Library 1 29 ! 1 30 ! ABSTRACT: 1 31 ! 1 32 ! This module is the XPORT Temporary String allocator/deallocator. 1 33 ! 1 34 ! ENVIRONMENT: User mode - multiple host operating/file systems 1 35 ! 1 36 ! AUTHOR: Ward Clark, CREATION DATE: 15-Feb-80 1 37 ! 1 38 !-- STEMP Temporary String Deallocation 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 2 X00.06 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 1 40 ! 1 41 ! TABLE OF CONTENTS: 1 42 ! 1 43 1 44 FORWARD ROUTINE 1 45 XST$FREE_TEMP; ! Temporary string deallocation routine 1 46 1 47 ! 1 48 ! INCLUDE FILES: 1 49 ! 1 50 1 51 LIBRARY 'XPORT' ; ! Public XPORT control block and macro definitions 1 53 LIBRARY 'XPOSYS' ; ! Internal XPORT macro definitions 1 55 1 56 $XPO_SYS_TEST( $ALL ) ; %PRINT: This module was compiled for any VAX-11 system ; %PRINT: XPORT V1.3-51 XPOSYS V1.3-16 XPO$K_VERSION = 1 XPO$K_LEVEL = 3 1 57 1 58 ! 1 59 ! MACROS: 1 60 ! 1 61 1 62 ! 1 63 ! EQUATED SYMBOLS: 1 64 ! 1 65 1 66 ! 1 67 ! PSECT DECLARATIONS: 1 68 ! 1 69 1 70 $XPO_PSECTS ! Declare XPORT PSECT names and attributes 1 71 1 72 ! 1 73 ! OWN STORAGE: 1 74 ! 1 75 1 76 ! 1 77 ! EXTERNAL REFERENCES: 1 78 ! STEMP XST$FREE_TEMP - Temporary Strin 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 3 X00.06 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 1 80 %TITLE 'XST$FREE_TEMP - Temporary String Deallocation' 1 81 1 82 GLOBAL ROUTINE XST$FREE_TEMP( string ) = 1 83 1 84 !++ 1 85 ! 1 86 ! FUNCTIONAL DESCRIPTION: 1 87 ! 1 88 ! This routine deallocates a dynamic XPORT temporary string and 1 89 ! its associated string descriptor. 1 90 ! 1 91 ! FORMAL PARAMETERS: 1 92 ! 1 93 ! string - address of a string descriptor 1 94 ! 1 95 ! IMPLICIT INPUTS: 1 96 ! 1 97 ! None 1 98 ! 1 99 ! IMPLICIT OUTPUTS: 1 100 ! 1 101 ! None 1 102 ! 1 103 ! COMPLETION CODES: 1 104 ! 1 105 ! STR$_NOT_TEMP - the string was not an XPORT temporary string 1 106 ! or 1 107 ! success or failure completion code from $XPO_FREE_MEM 1 108 ! 1 109 ! SIDE EFFECTS: 1 110 ! 1 111 ! None 1 112 ! 1 113 !-- 1 114 1 115 BEGIN 2 116 2 117 MAP 2 118 string : REF $STR_DESCRIPTOR( CLASS = BOUNDED ); 2 119 2 120 ! 2 121 ! Free an XPORT temporary string. 2 122 ! 2 123 2 124 IF .string[STR$B_CLASS] EQL STR$K_CLASS_XT AND .string[STR$H_LENGTH] NEQ 0 2 125 THEN 2 126 $XPO_IF_NOT( $XPO_FREE_MEM( STRING = string[$BASE], FAILURE = 0 ) ) 4 127 THEN 3 128 RETURN .$XPO_STATUS; 2 129 2 130 ! 2 131 ! Free an XPORT temporary string descriptor. 2 132 ! 2 133 2 134 IF .string[STR$B_CLASS] EQL STR$K_CLASS_XT 2 135 THEN 2 136 RETURN $XPO_FREE_MEM( BINARY_DATA = (STR$K_XT_BLN,string[$BASE]), FAILURE = 0 ); STEMP XST$FREE_TEMP - Temporary Strin 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 4 X00.06 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 2 137 2 138 ! 2 139 ! Return to the caller in all other cases. 2 140 ! 2 141 2 142 RETURN STR$_NOT_TEMP 2 143 2 144 END; 1 145 END 1 146 ELUDOM STEMP Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 5 X00.06 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC .proc XST$FREE_TEMP .align 32 .global XST$FREE_TEMP XST$FREE_TEMP: // 000082 { .mii 002C0112CBC0 0000 alloc r47 = rspfs, 1, 16, 5, 0 0000B20000C0 0001 sxt4 r3 = STRING // r3 = r32 // 000124 01200807AA40 0002 mov r41 = 189 } { .mii 0119F8CE0300 0010 adds r12 = -16, r12 // 000082 000188000B80 0011 mov r46 = br0 010800100C00 0012 mov r48 = r1 ;; } { .mii 010800300A00 0020 mov r40 = r3 // 000124 0108003060C0 0021 adds r3 = 3, r3 000008000000 0022 nop.i 0 ;; } { .mmi 00B0083FA200 0030 ld1 r8 = [r3], -3 ;; 01C43A910180 0031 cmp4.eq pr6, pr7 = r8, r41 000008000000 0032 nop.i 0 } { .mfb 000008000000 0040 nop.m 0 000008000000 0041 nop.f 0 008600012007 0042 (pr7) br.cond.dpnt.few L$4 } { .mmi 008040300240 0050 ld2 r9 = [r3] ;; 01C440900240 0051 cmp4.eq pr9, pr8 = r0, r9 000008000000 0052 nop.i 0 ;; } { .mib 01C0000011C9 0060 (pr9) cmp.eq.unc pr7, pr0 = r0, r0 01C000001188 0061 (pr8) cmp.eq.unc pr6, pr0 = r0, r0 008600004006 0062 (pr6) br.cond.dpnt.few L$3 } { .mfb 000008000000 0070 nop.m 0 000008000000 0071 nop.f 0 00860000C007 0072 (pr7) br.cond.dpnt.few L$4 } 0080 L$3: // 000126 { .mii 01200000A640 0080 mov r25 = 5 0000B0000D40 0081 sxt4 r53 = r0 0000B0000D00 0082 sxt4 r52 = r0 } { .mii 0119F80FCC80 0090 adds r50 = -2, r0 0000B0000CC0 0091 sxt4 r51 = r0 0000B2000C40 0092 sxt4 r49 = STRING // r49 = r32 } { .mfb STEMP Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 6 X00.06 XST$FREE_TEMP 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 000008000000 00A0 nop.m 0 000008000000 00A1 nop.f 0 00A000001000 00A2 br.call.sptk.many br0 = XPO$FREE_MEM ;; } { .mib 010803000040 00B0 mov r1 = r48 00A0308001C0 00B1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600004006 00B2 (pr6) br.cond.dpnt.few L$4 } { .mib 000008000000 00C0 nop.m 0 0000B0800200 00C1 sxt4 r8 = r8 // 000128 008000014000 00C2 br.sptk.few L$6 ;; } 00D0 L$4: // 000124 { .mmi 010802806A00 00D0 adds r40 = 3, r40 ;; 008002800A00 00D1 ld1 r40 = [r40] // 000134 000008000000 00D2 nop.i 0 ;; } { .mfb 01C442950000 00E0 cmp4.eq pr0, pr8 = r40, r41 000008000000 00E1 nop.f 0 00860000E008 00E2 (pr8) br.cond.dpnt.few L$7 } { .mii 010800C20AC0 00F0 adds r43 = 16, r12 // 000136 010800C28B00 00F1 adds r44 = 20, r12 000008000000 00F2 nop.i 0 } { .mlx 010800C20B40 0100 adds r45 = 16, r12 000000000008 0101 movl r42 = 33685512 ;; 0180010215 } { .mii 008C82B54000 0110 st4 [r43] = r42 01200000A640 0111 mov r25 = 5 0000B0000D40 0112 sxt4 r53 = r0 } { .mii 0119F80FCC80 0120 adds r50 = -2, r0 0000B0000D00 0121 sxt4 r52 = r0 0000B0000CC0 0122 sxt4 r51 = r0 } { .mib 008C82C40000 0130 st4 [r44] = STRING // [r44] = r32 0000B2D00C40 0131 sxt4 r49 = r45 00A000001000 0132 br.call.sptk.many br0 = XPO$FREE_MEM } { .mib 010803000040 0140 mov r1 = r48 0000B0800200 0141 sxt4 r8 = r8 008000004000 0142 br.sptk.few L$6 ;; } 0150 L$7: // 000134 { .mlx STEMP Machine Code Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 7 X00.06 XST$FREE_TEMP 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 000008000000 0150 nop.m 0 000000000000 0151 movl r8 = 2394129 // 000142 0191024444 } 0160 L$6: { .mii 000008000000 0160 nop.m 0 00015405E000 0161 mov.i rspfs = r47 010800C20300 0162 adds r12 = 16, r12 ;; } { .mib 000008000000 0170 nop.m 0 000E0015C000 0171 mov br0 = r46 000108001100 0172 br.ret.sptk.many br0 ;; } .endp XST$FREE_TEMP Routine Size: 384 bytes, Routine Base: _XPO$CODE + 0000 .section .data .type XPO$FREE_MEM, @function .global XPO$FREE_MEM .section .data .type XPO$FREE_MEM, @function .global XPO$FREE_MEM ; Library Statistics ; ; -------- Symbols -------- Pages ; File Total Loaded Percent Mapped ; ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14 ; 590 37 6 270 ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14 ; 91 13 14 27 Source Listing 4-FEB-2004 11:02:02 BLISS-32I T1.1-053 Page 8 Source Listing 19-MAR-2002 10:11:45 [LASTOVICA.XPORT.VMSGEN]STEMP.BLI;1 COMMAND LINE: BLISSSTEMP/LIST/DEBUG