create less trash objects

master
Egor.Ushakov 8 years ago
parent af80a017ae
commit 6354fc1211
  1. 21
      src/org/jetbrains/java/decompiler/modules/decompiler/exps/Exprent.java
  2. 18
      src/org/jetbrains/java/decompiler/modules/decompiler/vars/VarTypeProcessor.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2000-2016 JetBrains s.r.o. * Copyright 2000-2017 JetBrains s.r.o.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -27,8 +27,11 @@ import org.jetbrains.java.decompiler.struct.match.MatchEngine;
import org.jetbrains.java.decompiler.struct.match.MatchNode; import org.jetbrains.java.decompiler.struct.match.MatchNode;
import org.jetbrains.java.decompiler.struct.match.MatchNode.RuleValue; import org.jetbrains.java.decompiler.struct.match.MatchNode.RuleValue;
import java.util.*; import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set;
public class Exprent implements IMatchable { public class Exprent implements IMatchable {
public static final int MULTIPLE_USES = 1; public static final int MULTIPLE_USES = 1;
@ -72,19 +75,19 @@ public class Exprent implements IMatchable {
} }
public CheckTypesResult checkExprTypeBounds() { public CheckTypesResult checkExprTypeBounds() {
return new CheckTypesResult(); return null;
} }
public boolean containsExprent(Exprent exprent) { public boolean containsExprent(Exprent exprent) {
List<Exprent> listTemp = new ArrayList<>(getAllExprents(true)); if (equals(exprent)) {
listTemp.add(this); return true;
}
for (Exprent lstExpr : listTemp) { List<Exprent> lst = getAllExprents();
if (lstExpr.equals(exprent)) { for (int i = lst.size() - 1; i >= 0; i--) {
if (lst.get(i).containsExprent(exprent)) {
return true; return true;
} }
} }
return false; return false;
} }

@ -1,5 +1,5 @@
/* /*
* Copyright 2000-2016 JetBrains s.r.o. * Copyright 2000-2017 JetBrains s.r.o.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -155,15 +155,17 @@ public class VarTypeProcessor {
CheckTypesResult result = exprent.checkExprTypeBounds(); CheckTypesResult result = exprent.checkExprTypeBounds();
for (CheckTypesResult.ExprentTypePair entry : result.getLstMaxTypeExprents()) { boolean res = true;
if (entry.type.typeFamily != CodeConstants.TYPE_FAMILY_OBJECT) { if (result != null) {
changeExprentType(entry.exprent, entry.type, 1); for (CheckTypesResult.ExprentTypePair entry : result.getLstMaxTypeExprents()) {
if (entry.type.typeFamily != CodeConstants.TYPE_FAMILY_OBJECT) {
changeExprentType(entry.exprent, entry.type, 1);
}
} }
}
boolean res = true; for (CheckTypesResult.ExprentTypePair entry : result.getLstMinTypeExprents()) {
for (CheckTypesResult.ExprentTypePair entry : result.getLstMinTypeExprents()) { res &= changeExprentType(entry.exprent, entry.type, 0);
res &= changeExprentType(entry.exprent, entry.type, 0); }
} }
return res; return res;

Loading…
Cancel
Save