Release 1.3
From WalaWiki
We will periodically tag the subversion repository with release numbers. To check out a particular release, see the tags branch of the subversion repository.
- Previous Release: Release 1.2.2
- Next Release: Release 1.3.1
- Subversion path: https://wala.svn.sourceforge.net/svnroot/wala/tags/R_1.3
- Date: July 17, 2009
ChangeLog
Changes since Release 1.2.2:
- MAJOR API CHANGES
- New project com.ibm.wala.ide introduced, and com.ibm.wala.core classes that depend on the Eclipse IDE are moved into the ide package. Many existing projects will now need to add com.ibm.wala.ide to their build path. Some package names have also changed as part of this migration ... use Eclipse's "organize imports" function to recover. Lots of supporting files such as launchers and manifests have been updated to support the new structure. This major change is a bigger disruption than we usually like, but it was necessary to support Eclipse RCP deployments of products that include WALA but not the full Eclipse IDE.
- Heeding advice from Eclipse experts, we no longer use the 're-export' feature in plugin manifests. This means each project must explicitly include all dependent plugins in its own manifest. This works around problems when shipping products that depend on different versions of dependent libraries.
- New features
- Limited support for reasonably well-behaved pointers. Shrike now has ILoadIndirectInstruction and IStoreIndirectInstruction; furthermore, the array, field and local load instructions now have a flag that denotes whether they are address-of operations. There is support in the WALA core for generating IR with SSAInstruction equivalents of these. However, very little of the rest of the core understands these instructions at the moment.
- New IntVector implementation: MultiModalIntVector
- New utility class ClassHierarchyUtil
- Rewrote examples to visualize PDFs rather than Postscript files.
- New method ShrikeClass.getOuterClass()
- Add new method IClass.isPrivate()
- Add new method IR.getIndirectionData()
- Code cleanup
- Delete obsolete com.ibm.wala.accessPath package
- More checks for preconditions and IllegalArgumentExceptions
- Improved linkage between class files and source files
- Delete @deprecated CFG cache functionality, PartiallyCollapsedSupergraph, UniversalKillFlowFunction
- Delete unused and unimplemented InducedCFG.getExceptionHandlers()
- Deprecate some Assertions functions and use Java assertions instead.
- Deprecate old annotations Internal and NonNull
- Deprecate some ancient unused Shrike analysis functions.
- Deprecate unused CGEdge, CGLabeledEdge, CallSiteMap, AbstractAnalysis, PreTransitiveSolver, ClassHierarchyStats, MethodWarning, UnresolvedReflectionWarning, PackageExpressionFilter
- Deprecate some of com.ibm.wala.demandpa.genericutil.Util
- Deprecate XMLReflectionReader, JdtUtil.createJavaElementFromJdtHandle
- Deprecate Iterator2Collection.toCollection(); use toSet() or toList() instead.
- Deprecate Mapper. Use Function instead.
- Deprecate CallSiteAndCGNode. Use CallerSiteContext instead.
- Deprecate Trace
- Deprecate unused ReflectiveSubtypesEntrypoint
- Deprecated some unused graph utilities in com.ibm.wala.ipa.callgraph.impl.Util
- API Changes
- EdgeManager.getPred[Succ]Nodes now returns Iterator<T> instead of Iterator<? extends T>
- PrimitiveType has become abstract and the Java concrete types are in JavaPrimitiveType instead. The accessor getPrimitive has been moved from PrimitiveType to Language to allow for language-specific customization. And TypeInference has been changed to use language-agnostic idioms where possible, so that it can work better on IRs from languages other than Java.
- SSAInstructionFactory introduced to create SSAInstruction objects.
- Generalize the old SSALoadClassInstruction into a more general SSALoadMetaDataInstruction
- Move some static methods from Exceptions into JavaLanguage
- ClassLoaderReference changes related to bug fix 2666538 to make ClassLoaderReference immutable.
- introduce factories for BitSet, EclipseSourceFileModule, FileOfClasses, MutableSparseIntSet, MutableSparseLongSet
- propagate IOException from various utilities that read AnalysisScopes from disk
- Renamed GhostviewUtil to PDFViewUtil
- Change declared ClassHierarchyException in IClass.getSuperclass() to undeclared IllegalStateException. Remove unnecessary ClassHierarchyException declarations.
- Remove some unnecessary InvalidClassFileException declarations from IMethod
- Introduced interface IExplodedBasicBlock and made concrete implementation ExplodedControlFlowGraph.ExplodedBasicBlock private. ExplodedControlFlowGraph now implements ControlFlowGraph<SSAInstruction, IExplodedBasicBlock>.
- Moved Predicate to com.ibm.wala.util
- Moved method DefaultFixedPointSystem.makeSCCTopOrder() to Topological.makeTopologicalIter() to make it easier to find.
- Bug Fixes
- bug fix 2666538: make ClassLoaderReference immutable
- bug fix in Shrike ConstantInstruction: Constant(Class) might throw an exception, and so must be marked isPEI()
- bug fixes for NPEs in Shrike ConstantInstruction.hashCode(), equals()
- bug fix for empty worklist in AbstractFixedPointSolver.performVerboseAction()
- bug fix in Shrike GetInstruction and PutInstruction: isPEI() should return false for static field accesses
- bug fixes for isPEI() in Shrike BinaryOpInstruction and SSABinaryOpInstruction
- bug fix 2689095 : AIOOB in ImmutableStack.replaceTop
- bug fix for Shrike InvokeInstruction: don't rely on order of IInvokeInstruction.Dispatch enumeration
- bug fix 2689087 : AIOOB in SparseIntSet.max()
- bug fix 2715287 : AIOOB in SemiSparseMutableIntSet.max()
- bug fix 2689113 : NPE in TwoLevelVector.iterator()
- bug fix in BytecodeClass.getAllMethods() : include methods from all super-interfaces
- bug fix in ShrikeCFG for exceptional control flow with nested finally blocks
- bug fix for Heap.toString()
