36
11th Nov 2004 PLDI 2004 1 Region Inference for an Object-Oriented Language Wei Ngan Chin 1,2 Joint work with Florin Craciun 1 , Shengchao Qin 1,2 , Martin Rinard 3 1 National University of Singapore 2 Singapore-MIT Alliance 3 MIT

Region Inference for an Object-Oriented Language

  • Upload
    lavada

  • View
    26

  • Download
    2

Embed Size (px)

DESCRIPTION

Region Inference for an Object-Oriented Language. Wei Ngan Chin 1,2 Joint work with Florin Craciun 1 , Shengchao Qin 1,2 , Martin Rinard 3 1 National University of Singapore 2 Singapore-MIT Alliance 3 MIT. Background. Problem : objects have different lifetimes - PowerPoint PPT Presentation

Citation preview

Page 1: Region Inference  for an Object-Oriented Language

11th Nov 2004 PLDI 2004 1

Region Inference for an Object-Oriented Language

Wei Ngan Chin1,2

Joint work withFlorin Craciun1, Shengchao Qin1,2, Martin

Rinard3

1 National University of Singapore2 Singapore-MIT Alliance 3 MIT

Page 2: Region Inference  for an Object-Oriented Language

2

Background• Problem:

• objects have different lifetimes• garbage collection can be expensive

• One Solution: • Use regions with different lifetimes• Avoid dangling references.

• Previous Works : Region checkers for Java [DIKU98], Real-Time Java : [Boyapati et al PLDI03], C [Cyclone PLDI02].

• Our Goal: auto. region inference for OO paradigm

Page 3: Region Inference  for an Object-Oriented Language

3

Assumptions• Lexically-Scoped Regions:

• LIFO behaviour construct : letreg r in e

• No-Dangling References: • Regions of fields must outlive the region of its enclosing object.

top (younger)

bottom (older)

Page 4: Region Inference  for an Object-Oriented Language

4

Main Contributions

• Region Inference for Core-Java• Constraint-Based Type System.• Region Polymorphism & Region Subtyping• Handles Inheritance, Overriding, Downcast• Implementation

Page 5: Region Inference  for an Object-Oriented Language

5

Core-Java

Page 6: Region Inference  for an Object-Oriented Language

6

Region-Annotated Core-Java

region types, parameters, constraints, letreg

Page 7: Region Inference  for an Object-Oriented Language

7

Inferring for Class

Page 8: Region Inference  for an Object-Oriented Language

8

Key Principles : Classes• Region type : chr1,…, rni

• r1 : (region for current object of this type)• r2,…,rn (regions for components/fields)• rk º r1, 8 k 2 2..n (no dangling references)

• First region is special.

• Keep regions of components distinct.

Page 9: Region Inference  for an Object-Oriented Language

9

List Example

Page 10: Region Inference  for an Object-Oriented Language

10

Key Principles : Methods• Region polymorphism from the region types of

parameters and output • t mn hr*i ((t v)*) where rc e• r* captures region polymorphism

• Keep region constraints of classes and methods separate.

Page 11: Region Inference  for an Object-Oriented Language

11

Inference of Methods

class invariant

method precondition

Page 12: Region Inference  for an Object-Oriented Language

12

Outline• Background• Key Principles• Region Subtyping• Region Inference• Method Overriding + Downcast• Experimental Results

Page 13: Region Inference  for an Object-Oriented Language

13

No Region Subtyping

[Boyapati et al PLDI03] supports class subtyping but not region subtyping

Page 14: Region Inference  for an Object-Oriented Language

14

(Object) Region Subtypingconcept from [Cyclone PLDI02]

A variable location v::c<s,..> can be passed an object of type c<r,..> provided r s

Page 15: Region Inference  for an Object-Oriented Language

15

Example

Variables a and b are assigned to tmp. Without region subtyping, their regions are

equal.With region subtyping, their regions may be

distinct.

Page 16: Region Inference  for an Object-Oriented Language

16

Problem – Recursive Fields

Recursive nodes being forced into the same region

Some programs permit recursive nodes to be in different regions …..

Page 17: Region Inference  for an Object-Oriented Language

17

Example - Reynolds3

Escape Analysis [Deutsch:POPL97] allows the List(x,p) object to be build on runtime stack. This effect is equivalent to local region at each recursive call.

Page 18: Region Inference  for an Object-Oriented Language

18

(Field) Region SubtypingOur Extension : Covariance for Read-Only Fields.

Page 19: Region Inference  for an Object-Oriented Language

19

Outline• Background• Key Principles• Region Subtyping• Region Inference• Method Overriding + Downcast• Experimental Results

Page 20: Region Inference  for an Object-Oriented Language

20

Region Inference• Format of type inference rules

• Flow-insensitive but context sensitive.• Modular inference according to dependency

graph.

Page 21: Region Inference  for an Object-Oriented Language

21

Inference Rule for Block

rs: the set of regions that do not escape the blockThey are coalesced into a single localised region r

Page 22: Region Inference  for an Object-Oriented Language

22

Example – Localised Region

Page 23: Region Inference  for an Object-Oriented Language

23

Example – Localised Region

Page 24: Region Inference  for an Object-Oriented Language

24

Example – Cyclic Structure p1 p2

Page 25: Region Inference  for an Object-Oriented Language

25

Outline• Background• Key Principles• Region Subtyping• Region Inference• Overriding + Downcast• Experimental Results

Page 26: Region Inference  for an Object-Oriented Language

26

Method Overridingclass Bhr1 .. rni extends Ahr1 .. rmi where CB In class A: Y mnhr’1,..,r’pi (X) where MA { }In class B: Y mnhr’1,..,r’pi (X) where MB { }

Function Subtyping Rule:

Method Override Rule: CB Æ MA ) MB

argument resultselection

Page 27: Region Inference  for an Object-Oriented Language

27

Override Conflict Resolution

If method override rule do not hold for: CB MA MB

Can strengthen CB , MA to C’B , M’A using:

Until: C’B Æ M’A ) MB

CB, MA, MB ` C’B, M’A

Page 28: Region Inference  for an Object-Oriented Language

28

Downcast Safety• In our framework :

• regions may be lost during upcaste.g. Object<r1> o = new Pair<s1,s2,s3> (…)

• lost regions must be recovered during downcast.e.g. Pair<t1,t2,t3> p = (Pair) o

• Key technique : maintain extra regions that were supposedly lost during upcasting!

e.g. Object<r1>[r2,r3] p = new Pair<s1,s2,s3> (…)

• Solution : Flow analysis

Page 29: Region Inference  for an Object-Oriented Language

29

Experiments

• Region annotation needed in 12% of the code.• Comparable space reuse for all programs. • Inference is as good as hand-annotation.• On Olden benchmark, inference takes < 5s.

Page 30: Region Inference  for an Object-Oriented Language

30

Concluding Remarks• Automatic region inference for CoreJava.• Support classes and methods with region

polymorphism.• Supports region subtyping.• Supports OO features : class subtyping,

method overriding, and downcast safety.• Implementation

Page 31: Region Inference  for an Object-Oriented Language

31

Future Work

• Better Lifetime Precision• variable liveness analysis• flow sensitivity via SSA• treat null as a primitive value

• Memory Efficiency : Sized Regions + Reuse

• Extensions : Genericity + RTSJ

Page 32: Region Inference  for an Object-Oriented Language

32

Inference Rule for Sequence

Inference rule is flow-insensitive. Improvement possible via SSA.

Page 33: Region Inference  for an Object-Oriented Language

33

Correctness

Page 34: Region Inference  for an Object-Oriented Language

34

Example : Fixed-Point Analysis

Page 35: Region Inference  for an Object-Oriented Language

35

Inference of Methods

Page 36: Region Inference  for an Object-Oriented Language

36

Experiments• Region inference is fast for large programs

too.• Our prototype was built using Glasgow

Haskell Compiler.