src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
Print this page
*** 728,745 ****
/**
* Write method parameter names attribute.
*/
int writeMethodParametersAttr(MethodSymbol m) {
! if (m.params != null && 0 != m.params.length()) {
! int attrIndex = writeAttr(names.MethodParameters);
! databuf.appendByte(m.params.length());
for (VarSymbol s : m.params) {
! // TODO: expand to cover synthesized, once we figure out
! // how to represent that.
! final int flags = (int) s.flags() & (FINAL | SYNTHETIC);
! // output parameter info
databuf.appendChar(pool.put(s.name));
databuf.appendInt(flags);
}
endAttr(attrIndex);
return 1;
--- 728,755 ----
/**
* Write method parameter names attribute.
*/
int writeMethodParametersAttr(MethodSymbol m) {
! MethodType ty = m.externalType(types).asMethodType();
! final int allparams = ty.argtypes.size();
! if (m.params != null && allparams != 0) {
! final int attrIndex = writeAttr(names.MethodParameters);
! databuf.appendByte(allparams);
! // Write extra parameters first
! for (VarSymbol s : m.extraParams) {
! final int flags =
! ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
! ((int) m.flags() & SYNTHETIC);
! databuf.appendChar(pool.put(s.name));
! databuf.appendInt(flags);
! }
! // Now write the real parameters
for (VarSymbol s : m.params) {
! final int flags =
! ((int) s.flags() & (FINAL | SYNTHETIC | MANDATED)) |
! ((int) m.flags() & SYNTHETIC);
databuf.appendChar(pool.put(s.name));
databuf.appendInt(flags);
}
endAttr(attrIndex);
return 1;