rg.removeAllStallSiteTaints();
// inject taints for in-set vars
- rg.taintInSetVars( sese );
+ rg.taintInSetVars( sese );
+
}
break;
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 );
ReachSet betaY = edgeY.getBeta();
Iterator<RefEdge> itrHrnFhrn = hrnY.iteratorToReferencees();
+
while( itrHrnFhrn.hasNext() ) {
RefEdge edgeHrn = itrHrnFhrn.next();
HeapRegionNode hrnHrn = edgeHrn.getDst();
null,
Canonical.intersection( betaY, betaHrn ),
predsTrue,
- edgeY.getTaints()
+ edgeHrn.getTaints()
);
addEdgeOrMergeWithExisting( edgeNew );
predsTrue
),
predsTrue,
- Canonical.changePredsTo( edgeY.getTaints(),
- predsTrue )
+ edgeY.getTaints()
);
addEdgeOrMergeWithExisting( edgeNew );
isv,
predsEmpty
);
+
+ System.out.println("taint "+isv+" for "+sese);
+ writeGraph("taint");
}
}
oocHrnIdOoc2callee
),
preds,
- TaintSet.factory() // no taints for in-context edges
+ toCalleeContext( reCaller.getTaints(),
+ preds )
);
rg.addRefEdge( hrnSrcCallee,
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;
false, // hide reachability
true, // hide subset reachability
true, // hide predicates
- true, // hide edge taints
+ false, // hide edge taints
null // in-context boundary
);
}