Commit aac041f9 authored by Skylot's avatar Skylot

core: fix logs and code style

parent 6ef16000
...@@ -212,21 +212,16 @@ public class DebugInfoParser { ...@@ -212,21 +212,16 @@ public class DebugInfoParser {
prev.end(addr, line); prev.end(addr, line);
setVar(prev); setVar(prev);
} }
InsnArg activeReg = activeRegisters[var.getRegNum()];
RegisterArg activeReg = (RegisterArg) activeRegisters[var.getRegNum()]; if (activeReg instanceof RegisterArg) {
if (activeReg != null) { SSAVar ssaVar = ((RegisterArg) activeReg).getSVar();
SSAVar ssaVar = activeReg.getSVar(); if (ssaVar != null && ssaVar.getStartAddr() != -1) {
if ((ssaVar != null) && (ssaVar.getStartAddr() != -1)) { InsnNode parentInsn = ssaVar.getAssign().getParentInsn();
if (ssaVar.getAssign() != null) { if (parentInsn != null && parentInsn.getOffset() >= 0) {
if (ssaVar.getAssign().getParentInsn() != null) { addr = parentInsn.getOffset();
if (ssaVar.getAssign().getParentInsn().getOffset() >= 0) {
addr = ssaVar.getAssign().getParentInsn().getOffset();
}
}
} }
} }
} }
var.start(addr, line); var.start(addr, line);
locals[regNum] = var; locals[regNum] = var;
} }
......
...@@ -21,7 +21,6 @@ import jadx.core.dex.nodes.BlockNode; ...@@ -21,7 +21,6 @@ import jadx.core.dex.nodes.BlockNode;
import jadx.core.dex.nodes.InsnNode; import jadx.core.dex.nodes.InsnNode;
import jadx.core.dex.nodes.MethodNode; import jadx.core.dex.nodes.MethodNode;
import jadx.core.dex.regions.conditions.IfCondition; import jadx.core.dex.regions.conditions.IfCondition;
import jadx.core.utils.InsnUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
...@@ -79,29 +78,17 @@ public class SimplifyVisitor extends AbstractVisitor { ...@@ -79,29 +78,17 @@ public class SimplifyVisitor extends AbstractVisitor {
case CHECK_CAST: case CHECK_CAST:
InsnArg castArg = insn.getArg(0); InsnArg castArg = insn.getArg(0);
ArgType castArgType = castArg.getType(); ArgType argType = castArg.getType();
/* // Don't removes CHECK_CAST for wrapped INVOKE if invoked method returns different type
* Don't removes CHECK_CAST for wrapped INVOKE
* if invoked method returns different type
*/
if (castArg.isInsnWrap()) { if (castArg.isInsnWrap()) {
InsnWrapArg castWrapArg = (InsnWrapArg) castArg; InsnNode wrapInsn = ((InsnWrapArg) castArg).getWrapInsn();
InsnNode wrapInsn = castWrapArg.getWrapInsn();
if (wrapInsn.getType() == InsnType.INVOKE) { if (wrapInsn.getType() == InsnType.INVOKE) {
InvokeNode invkInsn = (InvokeNode) wrapInsn; argType = ((InvokeNode) wrapInsn).getCallMth().getReturnType();
castArgType = invkInsn.getCallMth().getReturnType();
if (invkInsn.getResult().getType()
!= invkInsn.getCallMth().getReturnType()) {
LOG.warn("Invoke without cast at {} in {}", InsnUtils.formatOffset(invkInsn.getOffset()), mth);
}
} }
} }
ArgType castToType = (ArgType) ((IndexInsnNode) insn).getIndex();
ArgType castType = (ArgType) ((IndexInsnNode) insn).getIndex(); if (!ArgType.isCastNeeded(argType, castToType)) {
if (!ArgType.isCastNeeded(castArgType, castType)) {
InsnNode insnNode = new InsnNode(InsnType.MOVE, 1); InsnNode insnNode = new InsnNode(InsnType.MOVE, 1);
insnNode.setOffset(insn.getOffset()); insnNode.setOffset(insn.getOffset());
insnNode.setResult(insn.getResult()); insnNode.setResult(insn.getResult());
......
...@@ -693,7 +693,7 @@ public class RegionMaker { ...@@ -693,7 +693,7 @@ public class RegionMaker {
// check cases order if fall through case exists // check cases order if fall through case exists
if (!fallThroughCases.isEmpty()) { if (!fallThroughCases.isEmpty()) {
if (isBadCasesOrder(blocksMap, fallThroughCases)) { if (isBadCasesOrder(blocksMap, fallThroughCases)) {
LOG.debug("Fixing incorrect switch cases order"); LOG.debug("Fixing incorrect switch cases order, method: {}", mth);
blocksMap = reOrderSwitchCases(blocksMap, fallThroughCases); blocksMap = reOrderSwitchCases(blocksMap, fallThroughCases);
if (isBadCasesOrder(blocksMap, fallThroughCases)) { if (isBadCasesOrder(blocksMap, fallThroughCases)) {
LOG.error("Can't fix incorrect switch cases order, method: {}", mth); LOG.error("Can't fix incorrect switch cases order, method: {}", mth);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment