< prev index next >

src/java.base/share/classes/sun/invoke/util/BytecodeDescriptor.java

Print this page
*** 23,10 ***
--- 23,12 ---
   * questions.
   */
  
  package sun.invoke.util;
  
+ import jdk.internal.value.PrimitiveClass;
+ 
  import java.lang.invoke.MethodType;
  import java.util.ArrayList;
  import java.util.List;
  
  /**

*** 82,17 ***
       *               bootstrap class loader)
       */
      private static Class<?> parseSig(String str, int[] i, int end, ClassLoader loader) {
          if (i[0] == end)  return null;
          char c = str.charAt(i[0]++);
!         if (c == 'L') {
              int begc = i[0], endc = str.indexOf(';', begc);
              if (endc < 0)  return null;
              i[0] = endc+1;
              String name = str.substring(begc, endc).replace('/', '.');
              try {
!                 return Class.forName(name, false, loader);
              } catch (ClassNotFoundException ex) {
                  throw new TypeNotPresentException(name, ex);
              }
          } else if (c == '[') {
              Class<?> t = parseSig(str, i, end, loader);
--- 84,18 ---
       *               bootstrap class loader)
       */
      private static Class<?> parseSig(String str, int[] i, int end, ClassLoader loader) {
          if (i[0] == end)  return null;
          char c = str.charAt(i[0]++);
!         if (c == 'L' || c == 'Q') {
              int begc = i[0], endc = str.indexOf(';', begc);
              if (endc < 0)  return null;
              i[0] = endc+1;
              String name = str.substring(begc, endc).replace('/', '.');
              try {
!                 Class<?> clz = Class.forName(name, false, loader);
+                 return c == 'Q' ? PrimitiveClass.asValueType(clz) : PrimitiveClass.asPrimaryType(clz);
              } catch (ClassNotFoundException ex) {
                  throw new TypeNotPresentException(name, ex);
              }
          } else if (c == '[') {
              Class<?> t = parseSig(str, i, end, loader);
< prev index next >