519 * representable in constant pool. If necessary, the factory would call
520 * {@code toString} to perform a one-time String conversion.</li>
521 *
522 * <li><em>Any other char value:</em> a single character constant.</li>
523 * </ul>
524 *
525 * <p>Assume the linkage arguments are as follows:
526 *
527 * <ul>
528 * <li>{@code concatType}, describing the {@code CallSite} signature</li>
529 * <li>{@code recipe}, describing the String recipe</li>
530 * <li>{@code constants}, the vararg array of constants</li>
531 * </ul>
532 *
533 * <p>Then the following linkage invariants must hold:
534 *
535 * <ul>
536 * <li>The number of parameter slots in {@code concatType} is less than
537 * or equal to 200</li>
538 *
539 * <li>The parameter count in {@code concatType} equals to number of \1 tags
540 * in {@code recipe}</li>
541 *
542 * <li>The return type in {@code concatType} is assignable
543 * from {@link java.lang.String}, and matches the return type of the
544 * returned {@link MethodHandle}</li>
545 *
546 * <li>The number of elements in {@code constants} equals to number of \2
547 * tags in {@code recipe}</li>
548 * </ul>
549 *
550 * @param lookup Represents a lookup context with the accessibility
551 * privileges of the caller. Specifically, the lookup
552 * context must have
553 * {@linkplain MethodHandles.Lookup#hasFullPrivilegeAccess()
554 * full privilege access}.
555 * When used with {@code invokedynamic}, this is stacked
556 * automatically by the VM.
557 * @param name The name of the method to implement. This name is
558 * arbitrary, and has no meaning for this linkage method.
559 * When used with {@code invokedynamic}, this is provided
560 * by the {@code NameAndType} of the {@code InvokeDynamic}
561 * structure and is stacked automatically by the VM.
562 * @param concatType The expected signature of the {@code CallSite}. The
563 * parameter types represent the types of dynamic concatenation
564 * arguments; the return type is always assignable from {@link
565 * java.lang.String}. When used with {@code
566 * invokedynamic}, this is provided by the {@code
|
519 * representable in constant pool. If necessary, the factory would call
520 * {@code toString} to perform a one-time String conversion.</li>
521 *
522 * <li><em>Any other char value:</em> a single character constant.</li>
523 * </ul>
524 *
525 * <p>Assume the linkage arguments are as follows:
526 *
527 * <ul>
528 * <li>{@code concatType}, describing the {@code CallSite} signature</li>
529 * <li>{@code recipe}, describing the String recipe</li>
530 * <li>{@code constants}, the vararg array of constants</li>
531 * </ul>
532 *
533 * <p>Then the following linkage invariants must hold:
534 *
535 * <ul>
536 * <li>The number of parameter slots in {@code concatType} is less than
537 * or equal to 200</li>
538 *
539 * <li>The parameter count in {@code concatType} is equal to number of \1 tags
540 * in {@code recipe}</li>
541 *
542 * <li>The return type in {@code concatType} is assignable
543 * from {@link java.lang.String}, and matches the return type of the
544 * returned {@link MethodHandle}</li>
545 *
546 * <li>The number of elements in {@code constants} is equal to number of \2
547 * tags in {@code recipe}</li>
548 * </ul>
549 *
550 * @param lookup Represents a lookup context with the accessibility
551 * privileges of the caller. Specifically, the lookup
552 * context must have
553 * {@linkplain MethodHandles.Lookup#hasFullPrivilegeAccess()
554 * full privilege access}.
555 * When used with {@code invokedynamic}, this is stacked
556 * automatically by the VM.
557 * @param name The name of the method to implement. This name is
558 * arbitrary, and has no meaning for this linkage method.
559 * When used with {@code invokedynamic}, this is provided
560 * by the {@code NameAndType} of the {@code InvokeDynamic}
561 * structure and is stacked automatically by the VM.
562 * @param concatType The expected signature of the {@code CallSite}. The
563 * parameter types represent the types of dynamic concatenation
564 * arguments; the return type is always assignable from {@link
565 * java.lang.String}. When used with {@code
566 * invokedynamic}, this is provided by the {@code
|