MCPcopy Index your code
hub / github.com/clojure/clojure / visitInvokeDynamicInsn

Method visitInvokeDynamicInsn

src/jvm/clojure/asm/MethodWriter.java:1065–1092  ·  view source on GitHub ↗
(
      final String name,
      final String descriptor,
      final Handle bootstrapMethodHandle,
      final Object... bootstrapMethodArguments)

Source from the content-addressed store, hash-verified

1063 }
1064
1065 @Override
1066 public void visitInvokeDynamicInsn(
1067 final String name,
1068 final String descriptor,
1069 final Handle bootstrapMethodHandle,
1070 final Object... bootstrapMethodArguments) {
1071 lastBytecodeOffset = code.length;
1072 // Add the instruction to the bytecode of the method.
1073 Symbol invokeDynamicSymbol =
1074 symbolTable.addConstantInvokeDynamic(
1075 name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments);
1076 code.put12(Opcodes.INVOKEDYNAMIC, invokeDynamicSymbol.index);
1077 code.putShort(0);
1078 // If needed, update the maximum stack size and number of locals, and stack map frames.
1079 if (currentBasicBlock != null) {
1080 if (compute == COMPUTE_ALL_FRAMES || compute == COMPUTE_INSERTED_FRAMES) {
1081 currentBasicBlock.frame.execute(Opcodes.INVOKEDYNAMIC, 0, invokeDynamicSymbol, symbolTable);
1082 } else {
1083 int argumentsAndReturnSize = invokeDynamicSymbol.getArgumentsAndReturnSizes();
1084 int stackSizeDelta = (argumentsAndReturnSize & 3) - (argumentsAndReturnSize >> 2) + 1;
1085 int size = relativeStackSize + stackSizeDelta;
1086 if (size > maxRelativeStackSize) {
1087 maxRelativeStackSize = size;
1088 }
1089 relativeStackSize = size;
1090 }
1091 }
1092 }
1093
1094 @Override
1095 public void visitJumpInsn(final int opcode, final Label label) {

Callers 3

readCodeMethod · 0.45
invokeDynamicMethod · 0.45

Calls 5

put12Method · 0.80
putShortMethod · 0.80
executeMethod · 0.45

Tested by

no test coverage detected