public BasicBlock getBBlock(FlatMethod fm) {
if (!blockMap.containsKey(fm)) {
blockMap.put(fm, BasicBlock.getBBlock(fm));
- Hashtable<FlatNode, Set<TempDescriptor>> livemap=Liveness.computeLiveTemps(fm);
+ Hashtable<FlatNode, Set<TempDescriptor>> livemap=Liveness.computeLiveTemps(fm,-1);
for(BBlock bblock : blockMap.get(fm).getBlocks()) {
FlatNode fn=bblock.nodes.get(0);
if (fn==fm) {
case FKind.FlatCall:
return processFlatCall(bblock, index, (FlatCall) node, delta, newgraph);
-
+
+ /* yonghun -
+ * Pointer Analysis does not care about a flat literal node, just ignores it.
+ * Right now(2011/05/01) we do not attempt to model a flat literal node
+ * for checking runtime pointers.
+ case FKind.FlatLiteralNode:
+ // jjenista - the heap analysis abstraction---when used to verify points-to
+ // analysis results against runtime pointers---will eventually need this to
+ // model that a flat literal node can result in a pointer to an implicitly
+ // allocated string. For now it will pass through like Pointer used to, but
+ // the checks versus runtime pointers will fail for string literals.
+ return delta;
+ */
+
default:
throw new Error("Unrecognized node:"+node + " of kind " + node.kind());
}
return null;
}
- public Set<Alloc> canPointToAfter( TempDescriptor x,
- FlatNode programPoint ) {
- return null;
- }
-
public Hashtable< Alloc, Set<Alloc> > canPointToAt( TempDescriptor x,
FieldDescriptor f,
FlatNode programPoint ) {
FlatNode programPoint ) {
return null;
}
+
+ public Set<Alloc> canPointToAfter( TempDescriptor x,
+ FlatNode programPoint ) {
+ return null;
+ }
+
+ public Hashtable< Alloc, Set<Alloc> > canPointToAfter( TempDescriptor x,
+ FieldDescriptor f,
+ FlatNode programPoint ) {
+ return null;
+ }
+
+ public Hashtable< Alloc, Set<Alloc> > canPointToAfterElement( TempDescriptor x, // x[i]
+ FlatNode programPoint ) {
+ return null;
+ }
}