specialized reference counting garbage collection using data structure annotations by eric watkins...

Post on 19-Dec-2015

219 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Specialized Reference Counting Garbage Collection using Data

Structure AnnotationsBy Eric Watkins and Dzin Avots

for CS 343 Spring 2002

Motivation

• Improve use of ref counting for C++

• Problem: cycles can’t be freed automatically, expensive to determine what is unreachable

• Solution: Use user specified data structure annotations to improve performance

Goals & Techniques

• Avoid unnecessary mark & sweeps– Acyclic Data Structure Optimizations

• Avoid some memory leaks– Reference Removal Invariant Model

Reference Counting using Smart Pointers

Garbage Example #1

• Doubly Linked List

• Everything is strongly connected

• Nothing can be freed until all external refs are gone

• How can we recognize this data structure?ext ptr ext ptr

Abstract Description of Data Structures

• The compiler can’t differentiate these two even though they will obviously be connected in different ways.

• ADDS can tell us how to customize smart pointer usage for certain data structures

Doubly Linked List ADDS

Binary Tree w/ Parents ADDS

ADDS spec

• Dimensions (1-d, 2-d, etc.)

• Directionality (forward and backward)

• Uniqueness of forward references (DAGs vs. lists)

• Cyclicity

Linked List Optimization

• The entire dimension is strongly connected, forwards and backwards

• Summarize with single ref counter for all external references to dimension

Dimensional Independence

• Dimensions X and Y are dependent if one traversal along X and another traversal along Y may lead to a common node by different paths

Other ADDS issues

• What about describing relations between different acyclic data structures?

• Could avoid marking & sweeping this structure

etc.

Primary & Secondary Pointers

• Primary pointers – if these point to an object, then object is still in use

• Secondary pointers – point to object, but don’t affect use status

• Memory leak – Primary pointers are all removed, but a secondary pointer remains

Garbage Example #2

Bug

BugManager Grid

Bug

Secondary refs Primary refs

• Programs can contain complicated, interconnected relationships between objects

Garbage Example #2

Bug

BugManager Grid

Bug

Secondary refs Primary ref

• If the user forgets to remove the secondary reference, the Bug won’t be deleted.

Primary & Secondary Pointers

• User specifies primary & secondary pointers in ADDS specification

• Primary & Secondary pointer invariant can be expressed as instrumentation predicate in 3-valued logic

• Generate shape analysis to detect leak condition

Plan of Action

• Investigate use of ADDS specs to improve refcount performance

• Generate interprocedural shape analysis from primary & secondary edge specs

• Look into other improvements from user specifications

Related Work

• ADDS work: L. Hendren and J. Hummel, Abstractions for Recursive Pointer Data Structures: Improving the Analysis and Transformation of Imperative Programs

• Shape Analysis: M. Sagiv, T. Reps and R. Wilhelm, Parametric Shape Analysis via 3-Valued Logic

top related