{"record":{"id":"ff25a4d5416c9c38","repo":"pxb1988/dex2jar","slug":"not-support-ff25a4","errorCode":null,"errorMessage":"not support","messagePattern":"not support","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"dex-writer/src/main/java/com/googlecode/d2j/dex/writer/insn/JumpOp.java","lineNumber":59,"sourceCode":"                CodeWriter.checkContentShort(op, \"+AAAA\", offset);\n                out.put((byte) 0).putShort((short) offset);\n                break;\n            case kFmt30t: // ØØ|op AAAAlo AAAAhi\n                out.put((byte) 0).putInt(offset);\n                break;\n            case kFmt31t: // AA|op BBBBlo BBBBhi\n                out.put((byte) a).putInt(offset);\n                break;\n            case kFmt22t: // B|A|op CCCC\n                CodeWriter.checkContentShort(op, \"+CCCC\", offset);\n                out.put((byte) ((a & 0xF) | (b << 4))).putShort((short) offset);\n                break;\n            case kFmt21t: // AA|op BBBB\n                CodeWriter.checkContentShort(op, \"+BBBB\", offset);\n                out.put((byte) a).putShort((short) offset);\n                break;\n            default:\n                throw new RuntimeException(\"not support\");\n        }\n    }\n\n    public boolean fit() {\n        int offset = label.offset - this.offset;\n        if ((op == Op.GOTO && (offset > Byte.MAX_VALUE || offset < Byte.MIN_VALUE)) ||\n                (op == Op.GOTO_16 && (offset > Short.MAX_VALUE || offset < Short.MIN_VALUE))\n                ) {\n            if ((offset > Short.MAX_VALUE || offset < Short.MIN_VALUE)) {\n                op = Op.GOTO_32;\n            } else {\n                op = Op.GOTO_16;\n            }\n            return false;\n        }\n        return true;\n    }\n}","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/pxb1988/dex2jar/blob/b5bda4fb4935ae8b3869b422454ae3b3896c7bc1/dex-writer/src/main/java/com/googlecode/d2j/dex/writer/insn/JumpOp.java#L41-L77","documentation":"Generic guard in JumpOp.write: while serializing a jump/payload instruction, the instruction's format code fell into a case with no writer (only the kFmt10t..kFmt31t / 22t branches shown are handled). It means the opcode-format combination being written is not supported by this code writer — an internal dex-writer limitation rather than a user argument error.","triggerScenarios":"Constructing a JumpOp with an opcode whose format is not implemented (goto_16/goto_32 variants not covered by the switch, or a non-branch opcode passed in).","commonSituations":"Code generators emitting branch instructions with unusual opcode choices; library gaps after dex version changes; mis-mapped Op constants.","solutions":["Use an opcode/format combination supported by JumpOp (e.g. standard if-* / goto formats)","Choose the appropriate specialized op class (GotoOp etc.) for formats like 21t/31t handled elsewhere","Add the missing kFmt case to write() if you control the source"],"exampleFix":"// before\nnew JumpOp(Op.GOTO_32, a, offset, label);\n// after\nnew JumpOp(Op.GOTO, a, offset, label); // or the class handling 31t","handlingStrategy":"validation","validationCode":"switch (op) { case GOTO: case IF_EQ: case IF_NE: case IF_LT: case IF_GE: case IF_GT: case IF_LE: /* supported */ break; default: throw new IllegalArgumentException(\"unsupported jump op: \" + op); }","typeGuard":null,"tryCatchPattern":"try { jumpOp.write(out); } catch (RuntimeException e) { if (\"not support\".equals(e.getMessage())) { /* emit with a different opcode/op class */ } throw e; }","preventionTips":["Only use JumpOp for its supported formats; use dedicated classes for goto_16/goto_32","Check the format switch before constructing ops","Add tests for every branch opcode you emit"],"tags":["dex","instruction","unsupported-format"],"backgroundTag":"unsupported-operation","analyzedSha":"b5bda4fb4935ae8b3869b422454ae3b3896c7bc1","analyzedAt":"2026-09-08T00:44:01.258Z","contentChangedAt":"2026-09-08T00:44:01.258Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}