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

changeset 1565
d04960f05593
parent 1563
bc456436c613
child 1587
f1f605f85850
equal deleted inserted replaced
1564:aeadaf905d78 1565:d04960f05593
726 726
727 /** 727 /**
728 * Write method parameter names attribute. 728 * Write method parameter names attribute.
729 */ 729 */
730 int writeMethodParametersAttr(MethodSymbol m) { 730 int writeMethodParametersAttr(MethodSymbol m) {
731 if (m.params != null && 0 != m.params.length()) { 731 MethodType ty = m.externalType(types).asMethodType();
732 int attrIndex = writeAttr(names.MethodParameters); 732 final int allparams = ty.argtypes.size();
733 databuf.appendByte(m.params.length()); 733 if (m.params != null && allparams != 0) {
734 final int attrIndex = writeAttr(names.MethodParameters);
735 databuf.appendByte(allparams);
736 // Write extra parameters first
737 for (VarSymbol s : m.extraParams) {
738 final int flags =
739 ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
740 ((int) m.flags() & SYNTHETIC);
741 databuf.appendChar(pool.put(s.name));
742 databuf.appendInt(flags);
743 }
744 // Now write the real parameters
734 for (VarSymbol s : m.params) { 745 for (VarSymbol s : m.params) {
735 // TODO: expand to cover synthesized, once we figure out 746 final int flags =
736 // how to represent that. 747 ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
737 final int flags = (int) s.flags() & (FINAL | SYNTHETIC); 748 ((int) m.flags() & SYNTHETIC);
738 // output parameter info
739 databuf.appendChar(pool.put(s.name)); 749 databuf.appendChar(pool.put(s.name));
740 databuf.appendInt(flags); 750 databuf.appendInt(flags);
741 } 751 }
742 endAttr(attrIndex); 752 endAttr(attrIndex);
743 return 1; 753 return 1;

mercurial