summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormikaelpeltier <mikaelpeltier@google.com>2014-06-02 10:11:25 +0200
committermikaelpeltier <mikaelpeltier@google.com>2014-06-02 16:00:09 +0200
commit9cac2d04cc49efcbd7abc31ec487fe8ac22619bf (patch)
tree5cda72789eb17ed3c20726133d1f594c47d7160e
parent93b139e0176fcd827f6508d1974e7ab5c7af7895 (diff)
downloadtoolchain_jack-9cac2d04cc49efcbd7abc31ec487fe8ac22619bf.zip
toolchain_jack-9cac2d04cc49efcbd7abc31ec487fe8ac22619bf.tar.gz
toolchain_jack-9cac2d04cc49efcbd7abc31ec487fe8ac22619bf.tar.bz2
Fix regressions in block statistics computation
- Synchronize schedulable since they used a marker on session. - Do not remove method body otherwise statistics schedulable will have nothing to analyze. Change-Id: I29369f6954f00793ab8b7e37801db53070d64f4f
-rw-r--r--jack/src/com/android/jack/statistics/BlockStatistics.java7
-rw-r--r--jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java6
2 files changed, 7 insertions, 6 deletions
diff --git a/jack/src/com/android/jack/statistics/BlockStatistics.java b/jack/src/com/android/jack/statistics/BlockStatistics.java
index 1d9ea42..db646f3 100644
--- a/jack/src/com/android/jack/statistics/BlockStatistics.java
+++ b/jack/src/com/android/jack/statistics/BlockStatistics.java
@@ -22,12 +22,15 @@ import com.android.jack.ir.ast.JForStatement;
import com.android.jack.ir.ast.JIfStatement;
import com.android.jack.ir.ast.JLabeledStatement;
import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JMethodBody;
import com.android.jack.ir.ast.JNode;
import com.android.jack.ir.ast.JSession;
import com.android.jack.ir.ast.JVisitor;
import com.android.jack.ir.ast.JWhileStatement;
import com.android.sched.item.Description;
import com.android.sched.item.Name;
+import com.android.sched.item.Synchronized;
+import com.android.sched.schedulable.Constraint;
import com.android.sched.schedulable.RunnableSchedulable;
import com.android.sched.schedulable.Transform;
@@ -38,7 +41,9 @@ import javax.annotation.Nonnull;
*/
@Description("Compute the number of block and extra block created to manage stand alone statement.")
@Name("BlockStatistics")
+@Constraint(need = {JMethodBody.class})
@Transform(add = BlockCountMarker.class)
+@Synchronized
public class BlockStatistics implements RunnableSchedulable<JMethod> {
private static class BlockStatisticsVisitor extends JVisitor {
@@ -109,7 +114,7 @@ public class BlockStatistics implements RunnableSchedulable<JMethod> {
}
@Override
- public void run(@Nonnull JMethod method) throws Exception {
+ public synchronized void run(@Nonnull JMethod method) throws Exception {
if (method.getEnclosingType().isExternal() || method.isNative() || method.isAbstract()) {
return;
}
diff --git a/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java b/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java
index 7ebb474..36762f4 100644
--- a/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java
+++ b/jack/tests/com/android/jack/statistics/BlockStatisticsOnCore.java
@@ -30,7 +30,6 @@ import com.android.sched.scheduler.Request;
import com.android.sched.scheduler.SchedulableManager;
import com.android.sched.scheduler.Scheduler;
import com.android.sched.scheduler.SubPlanBuilder;
-import com.android.sched.util.findbugs.SuppressFBWarnings;
import junit.framework.Assert;
@@ -46,8 +45,6 @@ public class BlockStatisticsOnCore {
BlockStatisticsOnCore.class.getClassLoader().setDefaultAssertionStatus(true);
}
- // Ignore: "Nullcheck of value previously dereferenced"
- @SuppressFBWarnings("RCN")
@Test
public void computeBlockStatOnCore() throws Exception {
Options compilerArgs = TestTools.buildCommandLineArgs(null, null,
@@ -58,7 +55,6 @@ public class BlockStatisticsOnCore {
BlockCountMarker bcm = session.getMarker(BlockCountMarker.class);
Assert.assertNotNull(bcm);
- assert bcm != null; // Find Bugs will be happy
System.out.println("Existing block : " + bcm.getExistingBlockCount());
System.out.println("Extra block : " + bcm.getExtraBlockCount());
@@ -73,7 +69,7 @@ public class BlockStatisticsOnCore {
@Nonnull
private static JSession buildSession(@Nonnull Options options) throws Exception {
- JSession session = TestTools.buildSession(options);
+ JSession session = TestTools.buildJAst(options);
Assert.assertNotNull(session);
Scheduler scheduler = Scheduler.getScheduler();