Annotation of researchv10no/cmd/cfront/ooptcfront/dcl2.hmm, revision 1.1.1.1

1.1       root        1: *** /tmp/,RCSt1a13342  Tue Nov  7 13:12:12 1989
                      2: --- /tmp/,RCSt2a13342  Tue Nov  7 13:12:14 1989
                      3: ***************
                      4: *** 2,8 ****
                      5:   /*ident      "@(#)ctrans:src/dcl2.c  1.3.4.21" */
                      6:   /*
                      7:        $Source: /usr3/lang/benson/work/stripped_cfront/O/RCS/dcl2.c,v $ $RCSfile: dcl2.c,v $
                      8: !      $Revision: 1.13 $               $Date: 89/10/20 14:27:49 $
                      9:        $Author: benson $               $Locker:  $
                     10:        $State: Exp $
                     11:   */
                     12: --- 2,8 ----
                     13:   /*ident      "@(#)ctrans:src/dcl2.c  1.3.4.21" */
                     14:   /*
                     15:        $Source: /usr3/lang/benson/work/stripped_cfront/O/RCS/dcl2.c,v $ $RCSfile: dcl2.c,v $
                     16: !      $Revision: 1.14 $               $Date: 89/10/26 16:49:46 $
                     17:        $Author: benson $               $Locker:  $
                     18:        $State: Exp $
                     19:   */
                     20: ***************
                     21: *** 1221,1226 ****
                     22: --- 1221,1228 ----
                     23:       d = 0;
                     24:   }
                     25:   
                     26: + extern int ZB_BOUNDARY;
                     27: + 
                     28:   void 
                     29:   name::field_align()
                     30:   /*
                     31: ***************
                     32: *** 1229,1250 ****
                     33:   {
                     34:       Pbase           fld = (Pbase) tp;
                     35:   
                     36: !     int             a = (F_SENSITIVE) ? fld->b_fieldtype->align() : SZ_WORD;
                     37:       if (max_align < a)
                     38:        max_align = a;
                     39:   
                     40:       if (fld->b_bits == 0) {  /* # force word alignment # */
                     41:        int             b;
                     42: !      if (bit_offset)
                     43: !          fld->b_bits = BI_IN_WORD - bit_offset;
                     44: !      else if (b = byte_offset % SZ_WORD)
                     45:            fld->b_bits = b * BI_IN_BYTE;
                     46:        /* #    else # */
                     47:        /* #            fld->b_bits = BI_IN_WORD; # */
                     48: !      if (max_align < SZ_WORD)
                     49: !          max_align = SZ_WORD;
                     50:       } else if (bit_offset == 0) {    /* # take care of part of word # */
                     51: !      int             b = byte_offset % SZ_WORD;
                     52:        if (b) {
                     53:            byte_offset -= b;
                     54:            bit_offset = b * BI_IN_BYTE;
                     55: --- 1231,1253 ----
                     56:   {
                     57:       Pbase           fld = (Pbase) tp;
                     58:   
                     59: !     int             a;
                     60: !     a = (F_SENSITIVE) ? fld->b_fieldtype->align() : ZB_BOUNDARY;
                     61:       if (max_align < a)
                     62:        max_align = a;
                     63:   
                     64:       if (fld->b_bits == 0) {  /* # force word alignment # */
                     65:        int             b;
                     66: !      if (bit_offset && bit_offset != ZB_BOUNDARY * BI_IN_BYTE)
                     67: !          fld->b_bits = (BI_IN_BYTE * ZB_BOUNDARY) - bit_offset;
                     68: !      else if (b = byte_offset % ZB_BOUNDARY)
                     69:            fld->b_bits = b * BI_IN_BYTE;
                     70:        /* #    else # */
                     71:        /* #            fld->b_bits = BI_IN_WORD; # */
                     72: !      if (max_align < ZB_BOUNDARY)
                     73: !          max_align = ZB_BOUNDARY;
                     74:       } else if (bit_offset == 0) {    /* # take care of part of word # */
                     75: !      int             b = byte_offset % ZB_BOUNDARY;
                     76:        if (b) {
                     77:            byte_offset -= b;
                     78:            bit_offset = b * BI_IN_BYTE;
                     79: ***************
                     80: *** 1252,1257 ****
                     81: --- 1255,1261 ----
                     82:       }
                     83:   /*#error('d',"byteoff %d bitoff %d bits %d",byte_offset,bit_offset,fld->b_bits); #*/
                     84:       int             x = (bit_offset += fld->b_bits);
                     85: + 
                     86:       if (BI_IN_WORD < x) {
                     87:        fld->b_offset = 0;
                     88:        byte_offset += SZ_WORD;
                     89: ***************
                     90: *** 1266,1276 ****
                     91:       }
                     92:       n_offset = byte_offset;
                     93:   }
                     94: - static char     rcsinfo[] = "$Header: /usr3/lang/benson/work/stripped_cfront/O/RCS/dcl2.c,v 1.13 89/10/20 14:27:49 benson Exp $";
                     95:   
                     96:   
                     97:   
                     98:   /* $Log:     dcl2.c,v $
                     99:    * Revision 1.13  89/10/20  14:27:49  benson
                    100:    * fixes to go with the error signalling stuff.
                    101:    * 
                    102: --- 1270,1287 ----
                    103:       }
                    104:       n_offset = byte_offset;
                    105:   }
                    106:   
                    107: + static char     rcsinfo[] = "$Header: /usr3/lang/benson/work/stripped_cfront/O/RCS/dcl2.c,v 1.14 89/10/26 16:49:46 benson Exp $";
                    108:   
                    109:   
                    110: + 
                    111:   /* $Log:     dcl2.c,v $
                    112: +  * Revision 1.14  89/10/26  16:49:46  benson
                    113: +  * fix bit offset layout. On the 68K (at least on a sun)
                    114: +  * the "word" for the purposes of bitfields is 32 bits, but
                    115: +  * it can begin on a 16 bit boundary. See size.c/h for the
                    116: +  * new size parameter, ZB_BOUNDARY.
                    117: +  * 
                    118:    * Revision 1.13  89/10/20  14:27:49  benson
                    119:    * fixes to go with the error signalling stuff.
                    120:    * 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.