View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
5    */
6   package mockit.asm.constantPool;
7   
8   import edu.umd.cs.findbugs.annotations.NonNull;
9   
10  import mockit.asm.jvmConstants.ConstantPoolTypes;
11  
12  import org.checkerframework.checker.index.qual.NonNegative;
13  
14  public final class DynamicItem extends TypeOrMemberItem {
15      @NonNegative
16      int bsmIndex;
17  
18      public DynamicItem(@NonNegative int index) {
19          super(index);
20      }
21  
22      DynamicItem(@NonNegative int index, @NonNull DynamicItem item) {
23          super(index, item);
24          bsmIndex = item.bsmIndex;
25      }
26  
27      /**
28       * Sets the type, name, desc, and index of the constant or invoke dynamic item.
29       *
30       * @param type
31       *            one of {@link ConstantPoolTypes#INVOKE_DYNAMIC} or {@link ConstantPoolTypes#DYNAMIC}, for invoke or
32       *            constant dynamic, respectively
33       * @param name
34       *            the item name
35       * @param desc
36       *            the item type descriptor
37       * @param index
38       *            zero based index into the class attribute "BootstrapMethods".
39       */
40      public void set(int type, @NonNull String name, @NonNull String desc, @NonNegative int index) {
41          super.type = type;
42          bsmIndex = index;
43          setValuesAndHashcode(name, desc, index);
44      }
45  
46      @Override
47      boolean isEqualTo(@NonNull Item item) {
48          DynamicItem other = (DynamicItem) item;
49          return other.bsmIndex == bsmIndex && isEqualTo(other);
50      }
51  }