src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java

Print this page




 640         final int allparams = ty.argtypes.size();
 641         if (m.params != null && allparams != 0) {
 642             final int attrIndex = writeAttr(names.MethodParameters);
 643             databuf.appendByte(allparams);
 644             // Write extra parameters first
 645             for (VarSymbol s : m.extraParams) {
 646                 final int flags =
 647                     ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
 648                     ((int) m.flags() & SYNTHETIC);
 649                 databuf.appendChar(pool.put(s.name));
 650                 databuf.appendChar(flags);
 651             }
 652             // Now write the real parameters
 653             for (VarSymbol s : m.params) {
 654                 final int flags =
 655                     ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
 656                     ((int) m.flags() & SYNTHETIC);
 657                 databuf.appendChar(pool.put(s.name));
 658                 databuf.appendChar(flags);
 659             }








 660             endAttr(attrIndex);
 661             return 1;
 662         } else
 663             return 0;
 664     }
 665 
 666 
 667     /** Write method parameter annotations;
 668      *  return number of attributes written.
 669      */
 670     int writeParameterAttrs(MethodSymbol m) {
 671         boolean hasVisible = false;
 672         boolean hasInvisible = false;
 673         if (m.params != null) {
 674             for (VarSymbol s : m.params) {
 675                 for (Attribute.Compound a : s.getRawAttributes()) {
 676                     switch (types.getRetention(a)) {
 677                     case SOURCE: break;
 678                     case CLASS: hasInvisible = true; break;
 679                     case RUNTIME: hasVisible = true; break;




 640         final int allparams = ty.argtypes.size();
 641         if (m.params != null && allparams != 0) {
 642             final int attrIndex = writeAttr(names.MethodParameters);
 643             databuf.appendByte(allparams);
 644             // Write extra parameters first
 645             for (VarSymbol s : m.extraParams) {
 646                 final int flags =
 647                     ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
 648                     ((int) m.flags() & SYNTHETIC);
 649                 databuf.appendChar(pool.put(s.name));
 650                 databuf.appendChar(flags);
 651             }
 652             // Now write the real parameters
 653             for (VarSymbol s : m.params) {
 654                 final int flags =
 655                     ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
 656                     ((int) m.flags() & SYNTHETIC);
 657                 databuf.appendChar(pool.put(s.name));
 658                 databuf.appendChar(flags);
 659             }
 660             // Now write the captured locals
 661             for (VarSymbol s : m.capturedLocals) {
 662                 final int flags =
 663                     ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
 664                     ((int) m.flags() & SYNTHETIC);
 665                 databuf.appendChar(pool.put(s.name));
 666                 databuf.appendChar(flags);
 667             }
 668             endAttr(attrIndex);
 669             return 1;
 670         } else
 671             return 0;
 672     }
 673 
 674 
 675     /** Write method parameter annotations;
 676      *  return number of attributes written.
 677      */
 678     int writeParameterAttrs(MethodSymbol m) {
 679         boolean hasVisible = false;
 680         boolean hasInvisible = false;
 681         if (m.params != null) {
 682             for (VarSymbol s : m.params) {
 683                 for (Attribute.Compound a : s.getRawAttributes()) {
 684                     switch (types.getRetention(a)) {
 685                     case SOURCE: break;
 686                     case CLASS: hasInvisible = true; break;
 687                     case RUNTIME: hasVisible = true; break;