403 } else if (c == Character.TYPE) {
404 return "C";
405 } else if (c == Double.TYPE) {
406 return "D";
407 } else if (c == Float.TYPE) {
408 return "F";
409 } else if (c == Integer.TYPE) {
410 return "I";
411 } else if (c == Long.TYPE) {
412 return "J";
413 } else if (c == Short.TYPE) {
414 return "S";
415 } else if (c == Void.TYPE) {
416 return "V";
417 }
418 throw new InternalError("Should have found primitive type");
419 } else if (c.isArray()) {
420 return "[" + getClassName(c.getComponentType(), true);
421 } else {
422 if (addPrefixAndSuffixForNonPrimitiveTypes) {
423 if (unsafe.isValueType(c)) {
424 return internalize('Q' + c.getName() + ";");
425 } else {
426 return internalize('L' + c.getName() + ";");
427 }
428 } else {
429 return internalize(c.getName());
430 }
431 }
432 }
433
434 private static String internalize(String className) {
435 return className.replace('.', '/');
436 }
437
438 protected void emitConstructor() {
439 // Generate code into fresh code buffer
440 ClassFileAssembler cb = new ClassFileAssembler();
441 // 0 incoming arguments
442 cb.setMaxLocals(1);
443 cb.opc_aload_0();
444 cb.opc_invokespecial(superCtorIdx, 0, 0);
445 cb.opc_return();
446
447 // Emit method
|
403 } else if (c == Character.TYPE) {
404 return "C";
405 } else if (c == Double.TYPE) {
406 return "D";
407 } else if (c == Float.TYPE) {
408 return "F";
409 } else if (c == Integer.TYPE) {
410 return "I";
411 } else if (c == Long.TYPE) {
412 return "J";
413 } else if (c == Short.TYPE) {
414 return "S";
415 } else if (c == Void.TYPE) {
416 return "V";
417 }
418 throw new InternalError("Should have found primitive type");
419 } else if (c.isArray()) {
420 return "[" + getClassName(c.getComponentType(), true);
421 } else {
422 if (addPrefixAndSuffixForNonPrimitiveTypes) {
423 final String desc;
424 if (c.isInlineClass()) {
425 if (c == c.asPrimaryType()) {
426 desc = 'Q' + c.getName() + ";";
427 } else {
428 desc = 'L' + c.asPrimaryType().getName() + ";";
429 }
430 } else {
431 desc = 'L' + c.getName() + ";";
432 }
433 return internalize(desc);
434 } else {
435 return internalize(c.getName());
436 }
437 }
438 }
439
440 private static String internalize(String className) {
441 return className.replace('.', '/');
442 }
443
444 protected void emitConstructor() {
445 // Generate code into fresh code buffer
446 ClassFileAssembler cb = new ClassFileAssembler();
447 // 0 incoming arguments
448 cb.setMaxLocals(1);
449 cb.opc_aload_0();
450 cb.opc_invokespecial(superCtorIdx, 0, 0);
451 cb.opc_return();
452
453 // Emit method
|