org.objectweb.asm.Type.getArgumentsAndReturnSizes()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(9.7k)|赞(0)|评价(0)|浏览(67)

本文整理了Java中org.objectweb.asm.Type.getArgumentsAndReturnSizes()方法的一些代码示例,展示了Type.getArgumentsAndReturnSizes()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Type.getArgumentsAndReturnSizes()方法的具体详情如下:
包路径:org.objectweb.asm.Type
类名称:Type
方法名:getArgumentsAndReturnSizes

Type.getArgumentsAndReturnSizes介绍

[英]Returns the size of the arguments and of the return value of methods of this type. This method should only be used for method types.
[中]返回此类型方法的参数和返回值的大小。此方法只能用于方法类型。

代码示例

代码示例来源:origin: org.ow2.asm/asm

/**
  * Returns the result {@link Type#getArgumentsAndReturnSizes} on {@link #value}.
  *
  * @return the result {@link Type#getArgumentsAndReturnSizes} on {@link #value} (memoized in
  *     {@link #info} for efficiency). This should only be used for {@link
  *     #CONSTANT_METHODREF_TAG}, {@link #CONSTANT_INTERFACE_METHODREF_TAG} and {@link
  *     #CONSTANT_INVOKE_DYNAMIC_TAG} symbols.
  */
 int getArgumentsAndReturnSizes() {
  if (info == 0) {
   info = Type.getArgumentsAndReturnSizes(value);
  }
  return info;
 }
}

代码示例来源:origin: org.ow2.asm/asm

/**
 * Returns the size of the arguments and of the return value of methods of this type. This method
 * should only be used for method types.
 *
 * @return the size of the arguments of the method (plus one for the implicit this argument),
 *     argumentsSize, and the size of its return value, returnSize, packed into a single int i =
 *     {@code (argumentsSize << 2) | returnSize} (argumentsSize is therefore equal to {@code
 *     i >> 2}, and returnSize to {@code i & 0x03}).
 */
public int getArgumentsAndReturnSizes() {
 return getArgumentsAndReturnSizes(getDescriptor());
}

代码示例来源:origin: pxb1988/dex2jar

@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc) {
  print(opcode);
  pw.print(' ');
  pw.print(owner);
  pw.print('/');
  pw.print(name);
  pw.print(desc);
  if (opcode == Opcodes.INVOKEINTERFACE) {
    pw.print(' ');
    pw.print((Type.getArgumentsAndReturnSizes(desc) >> 2) - 1);
  }
  pw.println();
}

代码示例来源:origin: org.ow2.asm/asm

/**
 * Pops as many abstract types from the output frame stack as described by the given descriptor.
 *
 * @param descriptor a type or method descriptor (in which case its argument types are popped).
 */
private void pop(final String descriptor) {
 char firstDescriptorChar = descriptor.charAt(0);
 if (firstDescriptorChar == '(') {
  pop((Type.getArgumentsAndReturnSizes(descriptor) >> 2) - 1);
 } else if (firstDescriptorChar == 'J' || firstDescriptorChar == 'D') {
  pop(2);
 } else {
  pop(1);
 }
}

代码示例来源:origin: linkedin/parseq

static String getDescriptionForMethodInsnNode(MethodInsnNode methodInstr) {
 if (methodInstr.getOpcode() == Opcodes.INVOKESPECIAL && methodInstr.name.equals("<init>")) {
  return "new " + Util.extractSimpleName(methodInstr.owner, "/") + "()";
 } else {
  Type methodType = Type.getMethodType(methodInstr.desc);
  int retSize = methodType.getArgumentsAndReturnSizes() & 0x03;
  if (retSize > 0) {
   return methodInstr.name + Util.getArgumentsInformation(methodInstr.desc);
  }
 }
 return "";
}

代码示例来源:origin: org.ow2.asm/asm

if (compute != COMPUTE_NOTHING) {
 int argumentsSize = Type.getArgumentsAndReturnSizes(descriptor) >> 2;
 if ((access & Opcodes.ACC_STATIC) != 0) {
  --argumentsSize;

代码示例来源:origin: org.ow2.asm/asm

int argumentsSize = Type.getArgumentsAndReturnSizes(descriptor) >> 2;
Frame implicitFirstFrame = new Frame(new Label());
implicitFirstFrame.setInputFrameFromDescriptor(

代码示例来源:origin: com.bladejava/blade-asm

/**
  * @return the result {@link Type#getArgumentsAndReturnSizes} on {@link #value} (memoized in
  *     {@link #info} for efficiency). This should only be used for {@link
  *     #CONSTANT_METHODREF_TAG}, {@link #CONSTANT_INTERFACE_METHODREF_TAG} and {@link
  *     #CONSTANT_INVOKE_DYNAMIC_TAG} symbols.
  */
 int getArgumentsAndReturnSizes() {
  if (info == 0) {
   info = Type.getArgumentsAndReturnSizes(value);
  }
  return info;
 }
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.framework.extension

/**
  * Returns the result {@link Type#getArgumentsAndReturnSizes} on {@link #value}.
  *
  * @return the result {@link Type#getArgumentsAndReturnSizes} on {@link #value} (memoized in
  *     {@link #info} for efficiency). This should only be used for {@link
  *     #CONSTANT_METHODREF_TAG}, {@link #CONSTANT_INTERFACE_METHODREF_TAG} and {@link
  *     #CONSTANT_INVOKE_DYNAMIC_TAG} symbols.
  */
 int getArgumentsAndReturnSizes() {
  if (info == 0) {
   info = Type.getArgumentsAndReturnSizes(value);
  }
  return info;
 }
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle

/**
  * Returns the result {@link Type#getArgumentsAndReturnSizes} on {@link #value}.
  *
  * @return the result {@link Type#getArgumentsAndReturnSizes} on {@link #value} (memoized in
  *     {@link #info} for efficiency). This should only be used for {@link
  *     #CONSTANT_METHODREF_TAG}, {@link #CONSTANT_INTERFACE_METHODREF_TAG} and {@link
  *     #CONSTANT_INVOKE_DYNAMIC_TAG} symbols.
  */
 int getArgumentsAndReturnSizes() {
  if (info == 0) {
   info = Type.getArgumentsAndReturnSizes(value);
  }
  return info;
 }
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.framework.extension

/**
 * Returns the size of the arguments and of the return value of methods of this type. This method
 * should only be used for method types.
 *
 * @return the size of the arguments of the method (plus one for the implicit this argument),
 *     argumentsSize, and the size of its return value, returnSize, packed into a single int i =
 *     {@code (argumentsSize &lt;&lt; 2) | returnSize} (argumentsSize is therefore equal to {@code
 *     i &gt;&gt; 2}, and returnSize to {@code i &amp; 0x03}).
 */
public int getArgumentsAndReturnSizes() {
 return getArgumentsAndReturnSizes(getDescriptor());
}

代码示例来源:origin: com.bladejava/blade-asm

/**
 * Returns the size of the arguments and of the return value of methods of this type. This method
 * should only be used for method types.
 *
 * @return the size of the arguments of the method (plus one for the implicit this argument),
 *     argumentsSize, and the size of its return value, returnSize, packed into a single int i =
 *     <tt>(argumentsSize &lt;&lt; 2) | returnSize</tt> (argumentsSize is therefore equal to <tt>i
 *     &gt;&gt; 2</tt>, and returnSize to <tt>i &amp; 0x03</tt>).
 */
public int getArgumentsAndReturnSizes() {
 return getArgumentsAndReturnSizes(getDescriptor());
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle

/**
 * Returns the size of the arguments and of the return value of methods of this type. This method
 * should only be used for method types.
 *
 * @return the size of the arguments of the method (plus one for the implicit this argument),
 *     argumentsSize, and the size of its return value, returnSize, packed into a single int i =
 *     {@code (argumentsSize &lt;&lt; 2) | returnSize} (argumentsSize is therefore equal to {@code
 *     i &gt;&gt; 2}, and returnSize to {@code i &amp; 0x03}).
 */
public int getArgumentsAndReturnSizes() {
 return getArgumentsAndReturnSizes(getDescriptor());
}

代码示例来源:origin: com.bladejava/blade-core

/**
 * Returns the size of the arguments and of the return value of methods of
 * this type. This method should only be used for method types.
 * 
 * @return the size of the arguments (plus one for the implicit this
 *         argument), argSize, and the size of the return value, retSize,
 *         packed into a single
 *         int i = <tt>(argSize &lt;&lt; 2) | retSize</tt>
 *         (argSize is therefore equal to <tt>i &gt;&gt; 2</tt>,
 *         and retSize to <tt>i &amp; 0x03</tt>).
 */
public int getArgumentsAndReturnSizes() {
  return getArgumentsAndReturnSizes(getDescriptor());
}

代码示例来源:origin: org.ow2.asm/asm-debug-all

/**
 * Returns the size of the arguments and of the return value of methods of
 * this type. This method should only be used for method types.
 * 
 * @return the size of the arguments (plus one for the implicit this
 *         argument), argSize, and the size of the return value, retSize,
 *         packed into a single
 *         int i = <tt>(argSize &lt;&lt; 2) | retSize</tt>
 *         (argSize is therefore equal to <tt>i &gt;&gt; 2</tt>,
 *         and retSize to <tt>i &amp; 0x03</tt>).
 */
public int getArgumentsAndReturnSizes() {
  return getArgumentsAndReturnSizes(getDescriptor());
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle

/**
 * Pops as many abstract types from the output frame stack as described by the given descriptor.
 *
 * @param descriptor a type or method descriptor (in which case its argument types are popped).
 */
private void pop(final String descriptor) {
 char firstDescriptorChar = descriptor.charAt(0);
 if (firstDescriptorChar == '(') {
  pop((Type.getArgumentsAndReturnSizes(descriptor) >> 2) - 1);
 } else if (firstDescriptorChar == 'J' || firstDescriptorChar == 'D') {
  pop(2);
 } else {
  pop(1);
 }
}

代码示例来源:origin: com.bladejava/blade-asm

/**
 * Pops as many abstract types from the output frame stack as described by the given descriptor.
 *
 * @param descriptor a type or method descriptor (in which case its argument types are popped).
 */
private void pop(final String descriptor) {
 char firstDescriptorChar = descriptor.charAt(0);
 if (firstDescriptorChar == '(') {
  pop((Type.getArgumentsAndReturnSizes(descriptor) >> 2) - 1);
 } else if (firstDescriptorChar == 'J' || firstDescriptorChar == 'D') {
  pop(2);
 } else {
  pop(1);
 }
}

代码示例来源:origin: org.apache.aries.spifly/org.apache.aries.spifly.dynamic.framework.extension

/**
 * Pops as many abstract types from the output frame stack as described by the given descriptor.
 *
 * @param descriptor a type or method descriptor (in which case its argument types are popped).
 */
private void pop(final String descriptor) {
 char firstDescriptorChar = descriptor.charAt(0);
 if (firstDescriptorChar == '(') {
  pop((Type.getArgumentsAndReturnSizes(descriptor) >> 2) - 1);
 } else if (firstDescriptorChar == 'J' || firstDescriptorChar == 'D') {
  pop(2);
 } else {
  pop(1);
 }
}

代码示例来源:origin: org.ow2.asm/asm-debug-all

/**
 * Pops a type from the output frame stack.
 * 
 * @param desc
 *            the descriptor of the type to be popped. Can also be a method
 *            descriptor (in this case this method pops the types
 *            corresponding to the method arguments).
 */
private void pop(final String desc) {
  char c = desc.charAt(0);
  if (c == '(') {
    pop((Type.getArgumentsAndReturnSizes(desc) >> 2) - 1);
  } else if (c == 'J' || c == 'D') {
    pop(2);
  } else {
    pop(1);
  }
}

代码示例来源:origin: com.bladejava/blade-core

/**
 * Pops a type from the output frame stack.
 * 
 * @param desc
 *            the descriptor of the type to be popped. Can also be a method
 *            descriptor (in this case this method pops the types
 *            corresponding to the method arguments).
 */
private void pop(final String desc) {
  char c = desc.charAt(0);
  if (c == '(') {
    pop((Type.getArgumentsAndReturnSizes(desc) >> 2) - 1);
  } else if (c == 'J' || c == 'D') {
    pop(2);
  } else {
    pop(1);
  }
}

相关文章