All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opalj.br.cp.CONSTANT_InvokeDynamic_info.scala Maven / Gradle / Ivy

The newest version!
/* BSD 2-Clause License - see OPAL/LICENSE for details. */
package org.opalj
package br
package cp

import org.opalj.bi.ConstantPoolTags

/**
 * Is used by the invokedynamic instruction to specify a bootstrap method, the dynamic
 * invocation name, the argument and return types of the call, and optionally, a
 * sequence of additional constants called static arguments to the bootstrap method.
 *
 * @param bootstrapMethodAttributeIndex This is an index into the bootstrap table.
 *    Since the bootstrap table is a class level attribute it is only possible
 *    to resolve this reference after loading the entire class file (class level
 *    attributes are loaded last).
 *
 * @author Michael Eichberg
 * @author Andre Pacak
 */
case class CONSTANT_InvokeDynamic_info(
        bootstrapMethodAttributeIndex: Int,
        nameAndTypeIndex:              Constant_Pool_Index
) extends Constant_Pool_Entry {

    override def asInvokeDynamic: this.type = this

    override def tag: Int = ConstantPoolTags.CONSTANT_InvokeDynamic_ID

    def methodName(cp: Constant_Pool): String = cp(nameAndTypeIndex).asNameAndType.name(cp)

    def methodDescriptor(cp: Constant_Pool): MethodDescriptor = {
        cp(nameAndTypeIndex).asNameAndType.methodDescriptor(cp)
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy