Program: 88758
Project: 88758
Buggy source:
protected void internalTransform(String phaseName,Map options){
  SparkOptions opts=new SparkOptions(options);
  final String output_dir=Options.v().output_dir();
  ContextInsensitiveBuilder b=new ContextInsensitiveBuilder();
  if (opts.pre_jimplify())   b.preJimplify();
  if (opts.force_gc())   doGC();
  Date startBuild=new Date();
  final PAG pag=(PAG)b.setup(opts);
  b.build();
  Date endBuild=new Date();
  reportTime("String_Node_Str",startBuild,endBuild);
  if (opts.force_gc())   doGC();
  Date startTM=new Date();
  pag.getTypeManager().makeTypeMask();
  Date endTM=new Date();
  reportTime("String_Node_Str",startTM,endTM);
  if (opts.force_gc())   doGC();
  if (opts.verbose()) {
    G.v().out.println("String_Node_Str" + pag.getVarNodeNumberer().size());
    G.v().out.println("String_Node_Str" + pag.getFieldRefNodeNumberer().size());
    G.v().out.println("String_Node_Str" + pag.getAllocNodeNumberer().size());
  }
  Date startSimplify=new Date();
  if ((opts.simplify_sccs() && !opts.on_fly_cg()) || opts.vta()) {
    new SCCCollapser(pag,opts.ignore_types_for_sccs()).collapse();
  }
  if (opts.simplify_offline() && !opts.on_fly_cg()) {
    new EBBCollapser(pag).collapse();
  }
  if (true || opts.simplify_sccs() || opts.vta()|| opts.simplify_offline()) {
    pag.cleanUpMerges();
  }
  Date endSimplify=new Date();
  reportTime("String_Node_Str",startSimplify,endSimplify);
  if (opts.force_gc())   doGC();
  PAGDumper dumper=null;
  if (opts.dump_pag() || opts.dump_solution()) {
    dumper=new PAGDumper(pag,output_dir);
  }
  if (opts.dump_pag())   dumper.dump();
  Date startProp=new Date();
  final Propagator[] propagator=new Propagator[1];
switch (opts.propagator()) {
case SparkOptions.propagator_iter:
    propagator[0]=new PropIter(pag);
  break;
case SparkOptions.propagator_worklist:
propagator[0]=new PropWorklist(pag);
break;
case SparkOptions.propagator_cycle:
propagator[0]=new PropCycle(pag);
break;
case SparkOptions.propagator_merge:
propagator[0]=new PropMerge(pag);
break;
case SparkOptions.propagator_alias:
propagator[0]=new PropAlias(pag);
break;
case SparkOptions.propagator_none:
break;
default :
throw new RuntimeException();
}
if (propagator[0] != null) propagator[0].propagate();
Date endProp=new Date();
reportTime("String_Node_Str",startProp,endProp);
reportTime("String_Node_Str",startSimplify,endProp);
if (opts.force_gc()) doGC();
if (!opts.on_fly_cg() || opts.vta()) {
CallGraphBuilder cgb=new CallGraphBuilder(pag);
cgb.build();
}
if (opts.verbose()) {
G.v().out.println("String_Node_Str" + Scene.v().getReachableMethods().size());
}
if (opts.set_mass()) findSetMass(pag);
if (opts.dump_answer()) new ReachingTypeDumper(pag,output_dir).dump();
if (opts.dump_solution()) dumper.dumpPointsToSets();
if (opts.dump_html()) new PAG2HTML(pag,output_dir).dump();
Scene.v().setPointsToAnalysis(pag);
if (opts.add_tags()) {
addTags(pag);
}
}

Fixed version (ground truth):
protected void internalTransform(String phaseName,Map options){
  SparkOptions opts=new SparkOptions(options);
  final String output_dir=SourceLocator.v().getOutputDir();
  ContextInsensitiveBuilder b=new ContextInsensitiveBuilder();
  if (opts.pre_jimplify())   b.preJimplify();
  if (opts.force_gc())   doGC();
  Date startBuild=new Date();
  final PAG pag=(PAG)b.setup(opts);
  b.build();
  Date endBuild=new Date();
  reportTime("String_Node_Str",startBuild,endBuild);
  if (opts.force_gc())   doGC();
  Date startTM=new Date();
  pag.getTypeManager().makeTypeMask();
  Date endTM=new Date();
  reportTime("String_Node_Str",startTM,endTM);
  if (opts.force_gc())   doGC();
  if (opts.verbose()) {
    G.v().out.println("String_Node_Str" + pag.getVarNodeNumberer().size());
    G.v().out.println("String_Node_Str" + pag.getFieldRefNodeNumberer().size());
    G.v().out.println("String_Node_Str" + pag.getAllocNodeNumberer().size());
  }
  Date startSimplify=new Date();
  if ((opts.simplify_sccs() && !opts.on_fly_cg()) || opts.vta()) {
    new SCCCollapser(pag,opts.ignore_types_for_sccs()).collapse();
  }
  if (opts.simplify_offline() && !opts.on_fly_cg()) {
    new EBBCollapser(pag).collapse();
  }
  if (true || opts.simplify_sccs() || opts.vta()|| opts.simplify_offline()) {
    pag.cleanUpMerges();
  }
  Date endSimplify=new Date();
  reportTime("String_Node_Str",startSimplify,endSimplify);
  if (opts.force_gc())   doGC();
  PAGDumper dumper=null;
  if (opts.dump_pag() || opts.dump_solution()) {
    dumper=new PAGDumper(pag,output_dir);
  }
  if (opts.dump_pag())   dumper.dump();
  Date startProp=new Date();
  final Propagator[] propagator=new Propagator[1];
switch (opts.propagator()) {
case SparkOptions.propagator_iter:
    propagator[0]=new PropIter(pag);
  break;
case SparkOptions.propagator_worklist:
propagator[0]=new PropWorklist(pag);
break;
case SparkOptions.propagator_cycle:
propagator[0]=new PropCycle(pag);
break;
case SparkOptions.propagator_merge:
propagator[0]=new PropMerge(pag);
break;
case SparkOptions.propagator_alias:
propagator[0]=new PropAlias(pag);
break;
case SparkOptions.propagator_none:
break;
default :
throw new RuntimeException();
}
if (propagator[0] != null) propagator[0].propagate();
Date endProp=new Date();
reportTime("String_Node_Str",startProp,endProp);
reportTime("String_Node_Str",startSimplify,endProp);
if (opts.force_gc()) doGC();
if (!opts.on_fly_cg() || opts.vta()) {
CallGraphBuilder cgb=new CallGraphBuilder(pag);
cgb.build();
}
if (opts.verbose()) {
G.v().out.println("String_Node_Str" + Scene.v().getReachableMethods().size());
}
if (opts.set_mass()) findSetMass(pag);
if (opts.dump_answer()) new ReachingTypeDumper(pag,output_dir).dump();
if (opts.dump_solution()) dumper.dumpPointsToSets();
if (opts.dump_html()) new PAG2HTML(pag,output_dir).dump();
Scene.v().setPointsToAnalysis(pag);
if (opts.add_tags()) {
addTags(pag);
}
}