scispace - formally typeset
Search or ask a question

Showing papers on "Binary heap published in 2003"


Proceedings ArticleDOI
15 Jan 2003
TL;DR: It is shown how to efficiently obtain linear a priori bounds on the heap space consumption of first-order functional programs and that integral solutions to the linear programs derived correspond to programs that can be evaluated without any operating system support for memory management.
Abstract: We show how to efficiently obtain linear a priori bounds on the heap space consumption of first-order functional programs.The analysis takes space reuse by explicit deallocation into account and also furnishes an upper bound on the heap usage in the presence of garbage collection. It covers a wide variety of examples including, for instance, the familiar sorting algorithms for lists, including quicksort.The analysis relies on a type system with resource annotations. Linear programming (LP) is used to automatically infer derivations in this enriched type system.We also show that integral solutions to the linear programs derived correspond to programs that can be evaluated without any operating system support for memory management. The particular integer linear programs arising in this way are shown to be feasibly solvable under mild assumptions.

338 citations


Book ChapterDOI
07 Apr 2003
TL;DR: This paper presents a framework for the verification of Java-like programs that make extensive use of the heap to allocate-and deallocate-new objects and threads and presents an abstract-interpretation algorithm that automatically verifies temporal properties expressed using the logic.
Abstract: This paper addresses the problem of establishing temporal properties of programs written in languages, such as Java, that make extensive use of the heap to allocate-and deallocate-new objects and threads. Establishing liveness properties is a particularly hard challenge. One of the crucial obstacles is that heap locations have no static names and the number of heap locations is unbounded. The paper presents a framework for the verification of Java-like programs. Unlike classical model checking, which uses propositional temporal logic, we use first-order temporal logic to specify temporal properties of heap evolutions; this logic allows domain changes to be expressed, which permits allocation and deallocation to be modelled naturally. The paper also presents an abstract-interpretation algorithm that automatically verifies temporal properties expressed using the logic.

56 citations


Proceedings ArticleDOI
07 Jun 2003
TL;DR: This work explores the principles of storeless semantics from a logical point of view, first defining a simple logic to completely characterize heap structures up to isomorphism and extending it to a full-blown alias logic that allows to express regular properties of unbounded heap structures.
Abstract: Pioneering work has been done by Jonkers [18] to define a semantics of pointer manipulating programs that is abstract in the sense of ignoring low-level aspects such as dangling pointers and garbage objects. We explore the principles of such storeless semantics from a logical point of view, first defining a simple logic to completely characterize heap structures up to isomorphism. Second, we extend this language to a full-blown alias logic (AL) that allows to express regular properties of unbounded heap structures. Along the development, we present an operational storeless semantics and give sound and complete total correctness axioms for deterministic programs in the form of Hoare triples, using AL.

45 citations


Proceedings ArticleDOI
11 Jun 2003
TL;DR: A heap analysis algorithm that characterizes how programs access regions within recursive data structures, such as sublists within lists or subtrees within trees, and expresses heap access information using labels on the nodes of the shape graphs, making the analysis more efficient.
Abstract: This paper presents a heap analysis algorithm that characterizes how programs access regions within recursive data structures, such as sublists within lists or subtrees within trees. The analysis precisely computes cyclicity, reachability, and heap access region information for programs with destructive updates.The algorithm uses a shape graph abstraction of the heap that identifies connected, single-entry heap regions, whose entries are directly accessible from the stack. The edges of the shape graphs encode reachability information. This yields a more compact heap representation compared to the existing abstractions, making the analysis more efficient. Furthermore, the algorithm expresses heap access information using labels on the nodes of the shape graphs. The labels characterize the concrete locations that abstract nodes represent and make it possible to compare the sets of concrete locations modeled by nodes in different shape graphs. The labels allow the analysis to express the heap access information with respect to the nodes at a particular program point, for instance at the beginning of the current procedure. Our analysis is able to precisely and efficiently compute heap access region information for complex heap manipulations such as a recursive quicksort program that sorts a list in-place, using destructive updates.

32 citations


01 Jan 2003
TL;DR: A scalable heap analysis algorithm designed to enable analyses and transformations of programs at the level of entire logical data structures is described, which shows that the key to achieving scalability in a fully context-sensitive algorithm is the use of a unificationbased approach.
Abstract: This paper describes a scalable heap analysis algorithm, Data Structure Analysis, designed to enable analyses and transformations of programs at the level of entire logical data structures. Data Structure Analysis attempts to identify disjoint instances of logical program data structures and their internal and external connectivity properties (without trying to categorize their “shape”). To achieve this, Data Structure Analysis is fully context-sensitive (in the sense that it names memory objects by entire acyclic call paths), is fieldsensitive, builds an explicit model of the heap, and is robust enough to handle the full generality of C. Despite these aggressive features, the algorithm is both extremely fast (requiring 2-7 seconds for C programs in the range of 100K lines of code) and is scalable in practice. It has three features we believe are novel: (a) it incrementally builds a precise program call graph during the analysis; (b) it distinguishes complete and incomplete information in a manner that simplifies analysis of libraries or other portions of programs; and (c) it uses speculative field-senstivity in typeunsafe programs in order to preserve efficiency and scalability. Finally, it shows that the key to achieving scalability in a fully context-sensitive algorithm is the use of a unificationbased approach, a combination that has been used before but whose importance has not been clearly articulated.

27 citations


Proceedings ArticleDOI
19 May 2003
TL;DR: The main objective of the paper is to find the minimum uniform transmission power of an ad hoc wireless network, where each node uses the same transmission power while maintaining network connectivity, and it shows that Prim's MST outperforms both Kruskal's M ST and binary search.
Abstract: Power conservation is a critical issue for ad hoc wireless networks. The main objective of the paper is to find the minimum uniform transmission power of an ad hoc wireless network, where each node uses the same transmission power while maintaining network connectivity. Three different algorithms, binary search, Prim's MST and its extension are developed to solve the problem, and their performance is compared by simulation study together with Kruskal's minimum spanning tree (MST), a known solution proposed by Ramanathan and Rosales-Hain for topology control by transmission power adjustment. Our results show that Prim's MST outperforms both Kruskal's MST and binary search. The performance between Prim's MST implemented with binary heap and Fibonacci heap is fairly close.

25 citations


Patent
Brian T. Lewis1
10 Oct 2003
TL;DR: In this article, a runtime storage manager dynamically allocates storage space, from a shared storage region, between a compiled code cache and a heap, based on feedback generated during runtime.
Abstract: Disclosed are a method, apparatus and system for managing a shared heap and compiled code cache in a managed runtime environment. Based on feedback generated during runtime, a runtime storage manager dynamically allocates storage space, from a shared storage region, between a compiled code cache and a heap. For at least one embodiment, the size of the shared storage region may be increased if a growth need is identified for both the compiled code cache and the heap during a single iteration of runtime storage manager processing.

24 citations


Patent
15 Oct 2003
TL;DR: In this article, a thread stack/thread heap combination is proposed, where the thread heap is allocated next to the thread's stack and grows in the opposite direction from that of the stack.
Abstract: A method and system in accordance with the present invention comprises a thread stack/thread heap combination, wherein the thread heap is for thread local memory usage and wherein the thread stack and thread heap grow in opposite directions. In the present invention the thread specific heap is allocated next to the thread's stack and grows in the opposite direction from that of the stack. This improvement allows the current space management of thread stacks, which spread out the memory placement of multiple stacks to avoid collision, to also be used for the heaps without additional overhead or complexity. It also allows the existing growth scheme of adding memory pages to the process for the stack to be used again because the growth is simply in the opposite direction. Thread specific heaps eliminate the need for expensive synchronization when allocating from a shared heap in a multiprocessor environment.

17 citations


Journal ArticleDOI
TL;DR: A generalization of the data structure to d – ary M-heaps is presented, which has similar time-bounds for insertion and deletion.
Abstract: In this paper a new data structure named M-heaps is proposed. This data structure is a modification of the well known binary heap data structure. The new structure supports insertion in constant time and deletion in O(log n) time. Finally a generalization of the data structure to d – ary M-heaps is presented. This structure has similar time-bounds for insertion and deletion.

7 citations


Book ChapterDOI
01 Jan 2003

3 citations


Patent
Kumar Deepak1
14 Mar 2003
TL;DR: In this paper, an event queue for use with a software-enabled logic simulation tool can include a heap array and a hash table data structure, where the heap array can include time slots organized such that each time slot conforms to heap properties which specify, at least in part, that a root node of the array indicates a time slot having a minimum simulation time value.
Abstract: An event queue for use with a software-enabled logic simulation tool can include a heap array and a hash table data structure. The heap array can include time slots organized such that each time slot conforms to heap properties which specify, at least in part, that a root node of the array indicates a time slot having a minimum simulation time value. The hash table data structure can include a plurality of entries, wherein selected ones of the entries specify references to at least one of the time slots.