From 0e0e5c96ce775c1734b4f0798cdc3d0b99996739 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Fri, 17 Apr 2009 19:50:38 +0000 Subject: [PATCH] reduce frequency of polling about GC --- Robust/src/IR/Flat/BuildCode.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 2b2c9c70..fcba393d 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -18,6 +18,7 @@ import Analysis.TaskStateAnalysis.TaskIndex; import Analysis.Locality.LocalityAnalysis; import Analysis.Locality.LocalityBinding; import Analysis.Locality.DiscoverConflicts; +import Analysis.CallGraph.CallGraph; import Analysis.Prefetch.*; import Analysis.Loops.WriteBarrier; @@ -54,7 +55,7 @@ public class BuildCode { boolean nonSESEpass=true; WriteBarrier wb; DiscoverConflicts dc; - + CallGraph callgraph; public BuildCode(State st, Hashtable temptovar, TypeUtil typeutil, SafetyAnalysis sa, PrefetchAnalysis pa) { this(st, temptovar, typeutil, null, sa, pa); @@ -68,6 +69,7 @@ public class BuildCode { this.sa=sa; this.pa=pa; state=st; + callgraph=new CallGraph(state); if (state.SINGLETM) oidstr="___objlocation___"; this.temptovar=temptovar; @@ -1453,10 +1455,13 @@ public class BuildCode { * multi-threaded program...*/ if ((state.THREAD||state.DSM||state.SINGLETM)&&GENERATEPRECISEGC) { - if (state.DSM&&lb.isAtomic()) - output.println("if (needtocollect) checkcollect2(&"+localsprefix+");"); - else - output.println("if (needtocollect) checkcollect(&"+localsprefix+");"); + //Don't bother if we aren't in recursive methods...The loops case will catch it + if (callgraph.getAllMethods(md).contains(md)) { + if (state.DSM&&lb.isAtomic()) + output.println("if (needtocollect) checkcollect2(&"+localsprefix+");"); + else + output.println("if (needtocollect) checkcollect(&"+localsprefix+");"); + } } generateCode( fm.getNext(0), fm, lb, null, output ); -- 2.34.1