langtools/src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java
changeset 15720 e61b2f7a5148
parent 15718 8e54c8e43d38
child 16300 7cf27559c8df
equal deleted inserted replaced
15719:6b64cf96346b 15720:e61b2f7a5148
   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;