This paper describes Automatic Pool Allocation, a transformation framework that segregates distinct instances of heap-based data structures into seperate memory pools and allows heuristics to be used to partially control the internal layout of those data structures. The primary goal of this work is performance improvement, not automatic memory management, and the paper makes several new contributions. The key contribution is a new compiler algorithm for partitioning heap objects in imperative programs based on a context-sensitive pointer analysis, including a novel strategy for correct handling of indirect (and potentially unsafe) function calls. The transformation does not require type safe programs and works for the full generality of C a...
The value of a variable is often given by a eld of a heap cell, and frequently the program will pic...
We present a technique to increase data cache utilization of pointer-based programs. These caches ar...
Today, general-purpose memory allocators dominate the landscape of dynamic memory management. While ...
Despite the potential importance of data structure layouts and traversal patterns, compiler transfor...
Despite the potential importance of data structure layouts and traversal patterns, compiler transfor...
Providing high performance for pointer-intensive programs on modern architectures is an increasingly...
Providing high performance for pointer-intensive programs on modern architectures is an increasingly...
In our recent work, we have developed compiler analyses and transformations that operate at the leve...
Traditional compiler optimizations such as loop invariant removal and common sub-expression eliminat...
As the amount of data used by programs increases due to the growth of the hardware storage capacity,...
We consider the problem of supporting compacting garbage collection in the presence of modern compil...
Memory allocation is an important part of program optimization as well as of computer architecture. ...
Memory allocation is an important part of program optimization as well as of computer architecture. ...
Many applications written in C allocate memory blocks for their major data structures from the heap ...
Automatic garbage collection relieves programmers from the burden of managing memory themselves and ...
The value of a variable is often given by a eld of a heap cell, and frequently the program will pic...
We present a technique to increase data cache utilization of pointer-based programs. These caches ar...
Today, general-purpose memory allocators dominate the landscape of dynamic memory management. While ...
Despite the potential importance of data structure layouts and traversal patterns, compiler transfor...
Despite the potential importance of data structure layouts and traversal patterns, compiler transfor...
Providing high performance for pointer-intensive programs on modern architectures is an increasingly...
Providing high performance for pointer-intensive programs on modern architectures is an increasingly...
In our recent work, we have developed compiler analyses and transformations that operate at the leve...
Traditional compiler optimizations such as loop invariant removal and common sub-expression eliminat...
As the amount of data used by programs increases due to the growth of the hardware storage capacity,...
We consider the problem of supporting compacting garbage collection in the presence of modern compil...
Memory allocation is an important part of program optimization as well as of computer architecture. ...
Memory allocation is an important part of program optimization as well as of computer architecture. ...
Many applications written in C allocate memory blocks for their major data structures from the heap ...
Automatic garbage collection relieves programmers from the burden of managing memory themselves and ...
The value of a variable is often given by a eld of a heap cell, and frequently the program will pic...
We present a technique to increase data cache utilization of pointer-based programs. These caches ar...
Today, general-purpose memory allocators dominate the landscape of dynamic memory management. While ...