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; |