private MethodHandle getMethodHandle(int i) { methodHandleIdIn.position(i * 8); int method_handle_type = methodHandleIdIn.getShort() & 0xFFFF; methodHandleIdIn.getShort();//unused int field_or_method_id = methodHandleIdIn.getShort() & 0xFFFF; switch (method_handle_type) { case MethodHandle.INSTANCE_GET: case MethodHandle.INSTANCE_PUT: case MethodHandle.STATIC_GET: case MethodHandle.STATIC_PUT: return new MethodHandle(method_handle_type, getField(field_or_method_id)); case MethodHandle.INVOKE_INSTANCE: case MethodHandle.INVOKE_STATIC: case MethodHandle.INVOKE_CONSTRUCTOR: case MethodHandle.INVOKE_DIRECT: case MethodHandle.INVOKE_INTERFACE: return new MethodHandle(method_handle_type, getMethod(field_or_method_id)); default: throw new RuntimeException(); } }
return getMethod(method_id);
int code_off = (int) readULeb128i(in); int method_id = lastIndex + diff; Method method = getMethod(method_id);
dcv.visitMethodStmt(op, regs, (String) callsite[1], (Proto) callsite[2], (MethodHandle) callsite[0], constArgs); } else { dcv.visitMethodStmt(op, regs, getMethod(b)); dcv.visitMethodStmt(op, regs, (String) callsite[1], (Proto) callsite[2], (MethodHandle) callsite[0], constArgs); } else { dcv.visitMethodStmt(op, regs, getMethod(b)); regs[0] = 0xF & (dc >> 0);// C dcv.visitMethodStmt(op, regs, getMethod(b), getProto(h)); regs[i] = c + i; dcv.visitMethodStmt(op, regs, getMethod(b), getProto(h));
return getMethod(method_id);
int code_off = (int) readULeb128i(in); int method_id = lastIndex + diff; Method method = getMethod(method_id);