From: yeom Date: Fri, 30 Jul 2010 18:38:49 +0000 (+0000) Subject: changes. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4d12e2575f195e6b3c527666ac415eafb2f7aacd;p=IRC.git changes. --- diff --git a/Robust/src/Analysis/Disjoint/DisjointAnalysis.java b/Robust/src/Analysis/Disjoint/DisjointAnalysis.java index d3e41d34..b62472b4 100644 --- a/Robust/src/Analysis/Disjoint/DisjointAnalysis.java +++ b/Robust/src/Analysis/Disjoint/DisjointAnalysis.java @@ -1349,7 +1349,8 @@ public class DisjointAnalysis { rg.removeAllStallSiteTaints(); // inject taints for in-set vars - rg.taintInSetVars( sese ); + rg.taintInSetVars( sese ); + } break; @@ -1382,24 +1383,7 @@ public class DisjointAnalysis { FlatCall fc = (FlatCall) fn; MethodDescriptor mdCallee = fc.getMethod(); FlatMethod fmCallee = state.getMethodFlat( mdCallee ); - - // before transfer func, possibly inject - // stall-site taints - if( doEffectsAnalysis && fmContaining != fmAnalysisEntry ) { - - if(rblockStatus.isInCriticalRegion(fmContaining, fn)){ - // x.y=f , stall x and y if they are not accessible - // also contribute write effects on stall site of x - if(!rg.isAccessible(fc.getThis())) { - rg.taintStallSite(fn, fc.getThis()); - } - - // accessible status update - rg.makeAccessible(fc.getThis()); - } - } - - + boolean debugCallSite = mdCaller.getSymbol().equals( state.DISJOINTDEBUGCALLER ) && mdCallee.getSymbol().equals( state.DISJOINTDEBUGCALLEE ); diff --git a/Robust/src/Analysis/Disjoint/ReachGraph.java b/Robust/src/Analysis/Disjoint/ReachGraph.java index fee219b4..7ea4ebc4 100644 --- a/Robust/src/Analysis/Disjoint/ReachGraph.java +++ b/Robust/src/Analysis/Disjoint/ReachGraph.java @@ -460,6 +460,7 @@ public class ReachGraph { ReachSet betaY = edgeY.getBeta(); Iterator itrHrnFhrn = hrnY.iteratorToReferencees(); + while( itrHrnFhrn.hasNext() ) { RefEdge edgeHrn = itrHrnFhrn.next(); HeapRegionNode hrnHrn = edgeHrn.getDst(); @@ -489,7 +490,7 @@ public class ReachGraph { null, Canonical.intersection( betaY, betaHrn ), predsTrue, - edgeY.getTaints() + edgeHrn.getTaints() ); addEdgeOrMergeWithExisting( edgeNew ); @@ -656,8 +657,7 @@ public class ReachGraph { predsTrue ), predsTrue, - Canonical.changePredsTo( edgeY.getTaints(), - predsTrue ) + edgeY.getTaints() ); addEdgeOrMergeWithExisting( edgeNew ); @@ -1296,6 +1296,9 @@ public class ReachGraph { isv, predsEmpty ); + + System.out.println("taint "+isv+" for "+sese); + writeGraph("taint"); } } @@ -1974,7 +1977,8 @@ public class ReachGraph { oocHrnIdOoc2callee ), preds, - TaintSet.factory() // no taints for in-context edges + toCalleeContext( reCaller.getTaints(), + preds ) ); rg.addRefEdge( hrnSrcCallee, @@ -2200,7 +2204,7 @@ public class ReachGraph { private static boolean resolveMethodDebugDOThideReach = true; private static boolean resolveMethodDebugDOThideSubsetReach = true; private static boolean resolveMethodDebugDOThidePreds = true; - private static boolean resolveMethodDebugDOThideEdgeTaints = true; + private static boolean resolveMethodDebugDOThideEdgeTaints = false; static String debugGraphPrefix; static int debugCallSiteVisitCounter; @@ -4363,7 +4367,7 @@ public class ReachGraph { false, // hide reachability true, // hide subset reachability true, // hide predicates - true, // hide edge taints + false, // hide edge taints null // in-context boundary ); }