An efficient program analysis method is provided for lazily decomposing aggregates (such as records and arrays) into simpler components based on the access patterns specific to a given program. This process allows us both to identify implicit aggregate structure not evident from declarative information in the program, and to simplify the representation of declared aggregates when references are made only to a subset of their components. The method can be exploited to yield: (i) a fast type analysis method applicable to program maintenance applications (such as date usage inference for the Year 2000 problem); and (ii) an efficient method for atomization of aggregates. More specifically, aggregate atomization decomposes all of the data that can be manipulated by the program into a set of disjoint atoms such that each data reference can be modeled as one or more references to atoms without loss of semantic information. Aggregate atomization can be used to adapt program analyses and representations designed for scalar data to aggregate data. In particular, atomization can be used to build more precise versions of program representations such as SSA form or PDGs. Such representations can in turn yield more accurate results for problems such as program slicing. Our techniques are especially useful in weakly-typed languages such as Cobol (where a variable need not be declared as an aggregate to store an aggregate value) and in languages where references to statically-defined sub-ranges of data such as arrays or strings are allowed.

Eine leistungsfähige Programmanalyse Methode wird für faul zerlegende Gesamtheiten (wie Aufzeichnungen und Reihen) in die einfacheren Bestandteile zur Verfügung gestellt, die auf den Zugang Mustern basieren, die zu einem gegebenen Programm spezifisch sind. Dieser Prozeß erlaubt uns beide, die implizite gesamte Struktur zu kennzeichnen, die von den feststellenden Informationen im Programm, und die Darstellung der erklärten Gesamtheiten zu vereinfachen nicht offensichtlich ist, wenn Bezuge nur auf eine Teilmenge ihrer Bestandteile genommen werden. Die Methode kann ausgenutzt werden, um zu erbringen: (i) eine schnelle Art Analyse Methode anwendbar auf Programmwartung Anwendungen (wie Datumverbrauchfolgerung für das JahrProblem 2000); und (ii) eine leistungsfähige Methode für Atomisierung der Gesamtheiten. Spezifischer, zerlegt gesamte Atomisierung alle Daten, dessen manipuliert werden können durch das Programm in einsetzen zerlegen Atome so, daß jeder Datenhinweis als ein oder mehr Hinweise auf Atomen ohne Verlust der semantischen Informationen modelliert werden kann. Gesamte Atomisierung kann verwendet werden, um die Programmanalysen und -darstellungen anzupassen, die damit Skalardaten Daten bestimmt sind, anhäufen. Insbesondere kann Atomisierung verwendet werden, um exaktere Versionen der Programmdarstellungen wie SSA Form oder PDGs zu errichten. Solche Darstellungen können genauere Resultate für Probleme wie Programmschneiden der Reihe nach erbringen. Unsere Techniken sind in schwach-geschriebenen Sprachen wie COBOL besonders nützlich (wo ein variables nicht braucht erklärt zu werden da eine Gesamtheit, um einen gesamten Wert zu speichern) und in den Sprachen, in denen Hinweise auf statisch-definierten Vor-Strecken der Daten wie Reihen oder Zeichenketten erlaubt werden.

 
Web www.patentalert.com

< (none)

< Method and apparatus for remote source code inclusion

> Method and apparatus for supporting efficient programming in dynamic pointer-safe languages

> (none)

~ 00012