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);
+ 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);
+ throw new Error("Unrecognized node:"+node + " of kind " + node.kind());
}
}
public Alloc getCmdLineArgsAlloc() {
return null;
}
-
-
+ public Alloc getCmdLineArgAlloc() {
+ return null;
+ }
+ public Alloc getCmdLineArgBytesAlloc() {
+ return null;
+ }
+ public Alloc getNewStringLiteralAlloc() {
+ return null;
+ }
+ public Alloc getNewStringLiteralBytesAlloc() {
+ return null;
+ }
public Set<Alloc> canPointToAt( TempDescriptor x,
FlatNode programPoint ) {
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;
+ }
}