< prev index next >

src/jdk.jdi/share/classes/com/sun/tools/jdi/JNITypeParser.java

Print this page
rev 58768 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: alanb, cjplummer, coleenp, dholmes, dlong, forax, jlahoda, psandoz, plevart, vromero
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com, jan.lahoda@oracle.com, amy.lu@oracle.com
rev 58769 : [mq]: type-descriptor-name


  63         } else if (typeName.equals("char")) {
  64             sb.append('C');
  65         } else if (typeName.equals("short")) {
  66             sb.append('S');
  67         } else if (typeName.equals("int")) {
  68             sb.append('I');
  69         } else if (typeName.equals("long")) {
  70             sb.append('J');
  71         } else if (typeName.equals("float")) {
  72             sb.append('F');
  73         } else if (typeName.equals("double")) {
  74             sb.append('D');
  75         } else {
  76             sb.append('L');
  77             index = typeName.indexOf("/");   // check if it's a hidden class
  78             if (index < 0) {
  79                 sb.append(typeName.replace('.', '/'));
  80             } else {
  81                 sb.append(typeName.substring(0, index).replace('.', '/'));
  82                 sb.append(".");
  83                 sb.append(typeName.substring(index+1, typeName.length()));
  84             }
  85             sb.append(';');
  86         }
  87 
  88         return sb.toString();
  89     }
  90 
  91     String typeName() {
  92         return typeNameList().get(typeNameList().size()-1);
  93     }
  94 
  95     List<String> argumentTypeNames() {
  96         return typeNameList().subList(0, typeNameList().size() - 1);
  97     }
  98 
  99     String signature() {
 100         return signatureList().get(signatureList().size()-1);
 101     }
 102 
 103     List<String> argumentSignatures() {


 197 
 198         switch(key) {
 199             case (JDWP.Tag.ARRAY):
 200                 return  nextTypeName() + "[]";
 201 
 202             case (JDWP.Tag.BYTE):
 203                 return "byte";
 204 
 205             case (JDWP.Tag.CHAR):
 206                 return "char";
 207 
 208             case (JDWP.Tag.OBJECT):
 209                 int endClass = signature.indexOf(SIGNATURE_ENDCLASS,
 210                                                  currentIndex);
 211                 String retVal = signature.substring(currentIndex,
 212                                                     endClass);
 213                 int index = retVal.indexOf(".");
 214                 if (index < 0) {
 215                     retVal = retVal.replace('/', '.');
 216                 } else {
 217                     retVal = retVal.substring(0, index).replace('/', '.') + "/" +
 218                              retVal.substring(index + 1, retVal.length());

 219                 }
 220                 currentIndex = endClass + 1;
 221                 return retVal;
 222 
 223             case (JDWP.Tag.FLOAT):
 224                 return "float";
 225 
 226             case (JDWP.Tag.DOUBLE):
 227                 return "double";
 228 
 229             case (JDWP.Tag.INT):
 230                 return "int";
 231 
 232             case (JDWP.Tag.LONG):
 233                 return "long";
 234 
 235             case (JDWP.Tag.SHORT):
 236                 return "short";
 237 
 238             case (JDWP.Tag.VOID):


  63         } else if (typeName.equals("char")) {
  64             sb.append('C');
  65         } else if (typeName.equals("short")) {
  66             sb.append('S');
  67         } else if (typeName.equals("int")) {
  68             sb.append('I');
  69         } else if (typeName.equals("long")) {
  70             sb.append('J');
  71         } else if (typeName.equals("float")) {
  72             sb.append('F');
  73         } else if (typeName.equals("double")) {
  74             sb.append('D');
  75         } else {
  76             sb.append('L');
  77             index = typeName.indexOf("/");   // check if it's a hidden class
  78             if (index < 0) {
  79                 sb.append(typeName.replace('.', '/'));
  80             } else {
  81                 sb.append(typeName.substring(0, index).replace('.', '/'));
  82                 sb.append(".");
  83                 sb.append(typeName.substring(index + 1));
  84             }
  85             sb.append(';');
  86         }
  87 
  88         return sb.toString();
  89     }
  90 
  91     String typeName() {
  92         return typeNameList().get(typeNameList().size()-1);
  93     }
  94 
  95     List<String> argumentTypeNames() {
  96         return typeNameList().subList(0, typeNameList().size() - 1);
  97     }
  98 
  99     String signature() {
 100         return signatureList().get(signatureList().size()-1);
 101     }
 102 
 103     List<String> argumentSignatures() {


 197 
 198         switch(key) {
 199             case (JDWP.Tag.ARRAY):
 200                 return  nextTypeName() + "[]";
 201 
 202             case (JDWP.Tag.BYTE):
 203                 return "byte";
 204 
 205             case (JDWP.Tag.CHAR):
 206                 return "char";
 207 
 208             case (JDWP.Tag.OBJECT):
 209                 int endClass = signature.indexOf(SIGNATURE_ENDCLASS,
 210                                                  currentIndex);
 211                 String retVal = signature.substring(currentIndex,
 212                                                     endClass);
 213                 int index = retVal.indexOf(".");
 214                 if (index < 0) {
 215                     retVal = retVal.replace('/', '.');
 216                 } else {
 217                     // hidden class
 218                     retVal = retVal.substring(0, index).replace('/', '.')
 219                                 + "/" + retVal.substring(index + 1);
 220                 }
 221                 currentIndex = endClass + 1;
 222                 return retVal;
 223 
 224             case (JDWP.Tag.FLOAT):
 225                 return "float";
 226 
 227             case (JDWP.Tag.DOUBLE):
 228                 return "double";
 229 
 230             case (JDWP.Tag.INT):
 231                 return "int";
 232 
 233             case (JDWP.Tag.LONG):
 234                 return "long";
 235 
 236             case (JDWP.Tag.SHORT):
 237                 return "short";
 238 
 239             case (JDWP.Tag.VOID):
< prev index next >