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

Method setInputFrameFromDescriptor

src/jvm/clojure/asm/Frame.java:385–412  ·  view source on GitHub ↗

Sets the input frame from the given method description. This method is used to initialize the first frame of a method, which is implicit (i.e. not stored explicitly in the StackMapTable attribute). @param symbolTable the type table to use to lookup and store type Symbol. @param access the m

(
      final SymbolTable symbolTable,
      final int access,
      final String descriptor,
      final int maxLocals)

Source from the content-addressed store, hash-verified

383 * @param maxLocals the maximum number of local variables of the method.
384 */
385 final void setInputFrameFromDescriptor(
386 final SymbolTable symbolTable,
387 final int access,
388 final String descriptor,
389 final int maxLocals) {
390 inputLocals = new int[maxLocals];
391 inputStack = new int[0];
392 int inputLocalIndex = 0;
393 if ((access & Opcodes.ACC_STATIC) == 0) {
394 if ((access & Constants.ACC_CONSTRUCTOR) == 0) {
395 inputLocals[inputLocalIndex++] =
396 REFERENCE_KIND | symbolTable.addType(symbolTable.getClassName());
397 } else {
398 inputLocals[inputLocalIndex++] = UNINITIALIZED_THIS;
399 }
400 }
401 for (Type argumentType : Type.getArgumentTypes(descriptor)) {
402 int abstractType =
403 getAbstractTypeFromDescriptor(symbolTable, argumentType.getDescriptor(), 0);
404 inputLocals[inputLocalIndex++] = abstractType;
405 if (abstractType == LONG || abstractType == DOUBLE) {
406 inputLocals[inputLocalIndex++] = TOP;
407 }
408 }
409 while (inputLocalIndex < maxLocals) {
410 inputLocals[inputLocalIndex++] = TOP;
411 }
412 }
413
414 /**
415 * Sets the input frame from the given public API frame description.

Callers 2

visitFrameMethod · 0.95
computeAllFramesMethod · 0.95

Calls 5

getArgumentTypesMethod · 0.95
addTypeMethod · 0.80
getClassNameMethod · 0.45
getDescriptorMethod · 0.45

Tested by

no test coverage detected