MCPcopy Create free account
hub / github.com/FabricMC/Matcher / getMethodVar

Method getMethodVar

src/main/java/matcher/mapping/Mappings.java:134–179  ·  view source on GitHub ↗
(int varIndex, int lvIndex, int startOpIdx, int asmIndex, boolean isArg)

Source from the content-addressed store, hash-verified

132 }
133
134 private MethodVarInstance getMethodVar(int varIndex, int lvIndex, int startOpIdx, int asmIndex, boolean isArg) {
135 if (isArg && varIndex < -1 || varIndex >= method.getArgs().length) {
136 Matcher.LOGGER.warn("Invalid var index {} for method {}", varIndex, method);
137 } else if (lvIndex < -1 || lvIndex >= (isArg ? method.getArgs() : method.getVars()).length * 2 + 1) {
138 Matcher.LOGGER.warn("Invalid lv index {} for method {}", lvIndex, method);
139 } else if (asmIndex < -1) {
140 Matcher.LOGGER.warn("Invalid lv asm index {} for method {}", asmIndex, method);
141 } else {
142 if (!isArg || varIndex == -1) {
143 if (asmIndex >= 0) {
144 varIndex = findVarIndexByAsm(isArg ? method.getArgs() : method.getVars(), asmIndex);
145
146 if (varIndex == -1) {
147 Matcher.LOGGER.warn("Invalid lv asm index {} for method {}", asmIndex, method);
148 return null;
149 }
150 } else if (lvIndex <= -1) {
151 Matcher.LOGGER.warn("Missing arg+lvt index {} for method {}", lvIndex, method);
152 return null;
153 } else {
154 varIndex = findVarIndexByLv(isArg ? method.getArgs() : method.getVars(), lvIndex, startOpIdx);
155
156 if (varIndex == -1) {
157 Matcher.LOGGER.warn("Invalid lv index {} for method {}", lvIndex, method);
158 return null;
159 }
160 }
161 }
162
163 MethodVarInstance var = isArg ? method.getArg(varIndex) : method.getVar(varIndex);
164
165 if (lvIndex != -1 && var.getLvIndex() != lvIndex) {
166 Matcher.LOGGER.warn("Mismatched lv index {} for method {}", lvIndex, method);
167 return null;
168 }
169
170 if (asmIndex != -1 && var.getAsmIndex() != asmIndex) {
171 Matcher.LOGGER.warn("Mismatched lv asm index {} for method {}", asmIndex, method);
172 return null;
173 }
174
175 return var;
176 }
177
178 return null;
179 }
180
181 @Override
182 public boolean visitField(String srcName, String srcDesc) {

Callers 2

visitMethodArgMethod · 0.95
visitMethodVarMethod · 0.95

Calls 8

findVarIndexByAsmMethod · 0.95
findVarIndexByLvMethod · 0.95
getLvIndexMethod · 0.95
getAsmIndexMethod · 0.95
getVarsMethod · 0.80
getArgMethod · 0.80
getArgsMethod · 0.45
getVarMethod · 0.45

Tested by

no test coverage detected