fix: ignore not generated insns in CodeShrinker visitor (PR #560)
This commit is contained in:
@@ -6,10 +6,12 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import com.android.dx.io.instructions.DecodedInstruction;
|
||||
import com.rits.cloning.Cloner;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.android.dx.io.instructions.DecodedInstruction;
|
||||
import com.rits.cloning.Cloner;
|
||||
|
||||
import jadx.core.dex.attributes.AFlag;
|
||||
import jadx.core.dex.attributes.nodes.LineAttrNode;
|
||||
import jadx.core.dex.instructions.InsnType;
|
||||
import jadx.core.dex.instructions.args.ArgType;
|
||||
@@ -195,6 +197,12 @@ public class InsnNode extends LineAttrNode {
|
||||
}
|
||||
|
||||
public boolean canReorder() {
|
||||
if (contains(AFlag.DONT_GENERATE)) {
|
||||
if (getType() == InsnType.MONITOR_EXIT) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
switch (getType()) {
|
||||
case CONST:
|
||||
case CONST_STR:
|
||||
|
||||
@@ -6,7 +6,6 @@ import java.io.InputStream;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jadx.NotYetImplemented;
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.tests.api.IntegrationTest;
|
||||
|
||||
@@ -59,14 +58,7 @@ public class TestFinally2 extends IntegrationTest {
|
||||
String code = cls.getCode().toString();
|
||||
|
||||
assertThat(code, containsOne("decode(inputStream);"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@NotYetImplemented
|
||||
public void test2() {
|
||||
ClassNode cls = getClassNode(TestCls.class);
|
||||
String code = cls.getCode().toString();
|
||||
|
||||
assertThat(code, containsOne("return new Result(400);"));
|
||||
assertThat(code, not(containsOne("result =")));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user