{"record":{"id":"9405329194efda34","repo":"pxb1988/dex2jar","slug":"not-support-yet-940532","errorCode":null,"errorMessage":"not support Yet!","messagePattern":"not support Yet!","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"d2j-jasmin/src/main/antlr3/com/googlecode/d2j/jasmin/Jasmin.g","lineNumber":1171,"sourceCode":"\t               |WBYTE{mn.visitIntInsn(NEWARRAY,T_BYTE);}\r\n\t               |WSHORT{mn.visitIntInsn(NEWARRAY,T_SHORT);}\r\n\t               |WCHAR{mn.visitIntInsn(NEWARRAY,T_CHAR);}\r\n\t               |WINTEGER{mn.visitIntInsn(NEWARRAY,T_INT);}\r\n\t               |WLONG{mn.visitIntInsn(NEWARRAY,T_LONG);}\r\n\t               |WFLOAT{mn.visitIntInsn(NEWARRAY,T_FLOAT);}\r\n\t               |WDOUBLE{mn.visitIntInsn(NEWARRAY,T_DOUBLE);})\r\n\t|\ta=XTYPE ffTV=sInternalNameOrDescACC {\r\n\t                       line($a.line);\r\n\t                          mn.visitTypeInsn(getOp($a.text),Type.getType($ffTV.desc).getInternalName());\r\n\t            }\r\n\t|\ta=JOP z=sLabel  { line($a.line); visitJOP(getOp($a.text),getLabel($z.text)); }\r\n\t|\ta=XINVOKE e1=sMethodObject   {line($a.line);\r\n\t                    mn.visitMethodInsn(getOp($a.text),$e1.ownerInternalName,$e1.memberName,$e1.desc, false);\r\n\t                  }\r\n\t|\ta=INVOKEINTERFACE e2=sMethodObject INT?  {line($a.line);\r\n\t                    mn.visitMethodInsn(getOp($a.text),$e2.ownerInternalName,$e2.memberName,$e2.desc, true);\r\n\t                  }\r\n\t|\ta=INVOKEDYNAMIC e3=sMethodObject sId sMethodDesc '(' sInvokeDynamicE (',' sInvokeDynamicE)* ')'  {line($a.line); if(1==1) throw new RuntimeException(\"not support Yet!\");}\r\n\t|\ta=MULTIANEWARRAY ff=sClassDesc c=INT   {line($a.line); mn.visitMultiANewArrayInsn(unEscape($ff.text),parseInt($c.text)); }\r\n\t|   z=sLabel ':' { Label label=getLabel($z.text); mn.visitLabel(label); if(rebuildLine) {mn.visitLineNumber($z.start.getLine(),label);}\r\n\t }\r\n\t|\t'.catch' e=sId 'from' z1=sLabel 'to' z2=sLabel 'using' z3=sLabel { String type=\"all\".equals($e.text)?null:unEscape($e.text); mn.visitTryCatchBlock(getLabel($z1.text),getLabel($z2.text),getLabel($z3.text),type); }\r\n\t|\t'.limit' 'stack' ('?' { mn.maxStack=-1; } | i1=INT { mn.maxStack=parseInt($i1.text); })\r\n\t|\t'.limit' 'locals' ('?' {mn.maxLocals=-1;}| i1=INT { mn.maxLocals=parseInt($i1.text);})\r\n\t|\t'.code_attribute' sId STRING   { System.err.println(\"ignore .code_attribute\"); }\r\n\t|\t'.line' b=INT  { if(!rebuildLine) { Label label=new Label(); mn.visitLabel(label); mn.visitLineNumber(parseInt($b.text),label); } }\r\n\t|   '.var' var=INT 'is' mber=sMemberName desc=sClassDesc ('signature' sig=STRING)? 'from' z1=sLabel 'to' z2=sLabel  { mn.visitLocalVariable($mber.name,unEscape($desc.text),unEscapeString($sig.text),getLabel($z1.text),getLabel($z2.text),parseInt($var.text)); }\r\n    |   sSwitch\r\n\t;\r\nsInvokeDynamicE\r\n\t:\tMETHOD_DESC_WITHOUT_RET (INT|LONG|FLOAT|DOUBLE|STRING)\r\n\t;\r\nsMethodDesc\r\n\t:\tMETHOD_DESC_WITHOUT_RET (sClassDesc|VOID_TYPE)\r\n\t;\r\nsSwitch @init {List<Integer> keys=null;List<Label> labels=null;Label defaultLabel=null;}\r","sourceCodeStart":1153,"sourceCodeEnd":1189,"githubUrl":"https://github.com/pxb1988/dex2jar/blob/b5bda4fb4935ae8b3869b422454ae3b3896c7bc1/d2j-jasmin/src/main/antlr3/com/googlecode/d2j/jasmin/Jasmin.g#L1153-L1189","documentation":"The opcode rule for method instructions contains an INVOKEDYNAMIC alternative whose action unconditionally executes if(1==1) throw new RuntimeException(\"not support Yet!\") at Jasmin.g:1171. d2j-jasmin's assembler has no implementation for emitting invokedynamic call sites, so any Jasmin file containing an invokedynamic instruction aborts assembly with this message. It is a deliberate not-implemented placeholder, not a user-input validation error.","triggerScenarios":"Assembling a .j file (typically dumped from a modern dex/jar containing lambda factories or string concatenation via invokedynamic) that contains a line like 'invokedynamic <owner> <name> <desc> <callSiteName> <methodDesc>(args)' through the d2j-jasmin AsmV3 assembler.","commonSituations":"Running dex2jar/jasmin pipeline on code compiled for Java 8+ (lambdas, String.concat invokedynamic, method references) where baksmali or a dex dumper emitted invokedynamic instructions; old toolchain versions predating ASM invokedynamic support; converting obfuscated/reflect-heavy apps.","solutions":["Upgrade dex2jar to the latest release, where invokedynamic assembly support may have been added","Preprocess the input so invokedynamic is desugared (e.g. use d8/dx --min-api with desugaring, or retrolambda) before dumping to Jasmin","Assemble with a tool that fully supports invokedynamic, such as smali/baksmali or ASM's ClassWriter directly","If you own the grammar, implement the INVOKEDYNAMIC alternative by emitting an ASM Handle + InvokeDynamicInsn via MethodVisitor.visitInvokeDynamicInsn instead of throwing"],"exampleFix":"// before (Jasmin.g:1171)\n| a=INVOKEDYNAMIC e3=sMethodObject sId sMethodDesc '(' sInvokeDynamicE (',' sInvokeDynamicE)* ')' {line($a.line); if(1==1) throw new RuntimeException(\"not support Yet!\");}\n\n// after\n| a=INVOKEDYNAMIC e3=sMethodObject sId sMethodDesc '(' sInvokeDynamicE (',' sInvokeDynamicE)* ')' {line($a.line); mn.visitInvokeDynamicInsn($sId.text, $sMethodDesc.desc, /* build Handle from e3 */ handle, bsmArgs);}","handlingStrategy":"try-catch","validationCode":"// detect invokedynamic instructions in Jasmin source before assembling\nif (Pattern.compile(\"^\\\\s*invokedynamic\\\\b\", Pattern.MULTILINE).matcher(jasminSource).find()) {\n    throw new IllegalArgumentException(\"Input contains invokedynamic, unsupported by this d2j-jasmin version; desugar first (d8/retrolambda)\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    new Jasmin(new FileReader(jasminFile)).parse();\n} catch (RuntimeException e) {\n    if (\"not support Yet!\".equals(e.getMessage())) {\n        throw new UnsupportedInstructionException(\"invokedynamic is not implemented in d2j-jasmin; desugar the input or use smali/ASM\", e);\n    }\n    throw e;\n}","preventionTips":["Desugar Java 8+ lambdas/string concat (d8, desugar, retrolambda) before dumping to Jasmin","Scan input .j files for the 'invokedynamic' opcode before running the assembler","Prefer smali/baksmali or direct ASM ClassWriter for bytecode containing invokedynamic","Track dex2jar updates — newer versions add invokedynamic support"],"tags":["unsupported-operation","jasmin","invokedynamic","assembler"],"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"}