Points to analysis in almost linear time
This presentation is the property of its rightful owner.
Sponsored Links
1 / 13

Points-to Analysis in Almost Linear Time PowerPoint PPT Presentation


  • 62 Views
  • Uploaded on
  • Presentation posted in: General

Points-to Analysis in Almost Linear Time. paper by Bjarne Steensgaard 23rd ACM Symposium on Principles of Programming Languages (POPL'96) Microsoft Research Technical Report MSR-TR-95-08. presented by Jeff Blank CMSC 858Z Spring 2004. Outline of Talk. Background Source Language

Download Presentation

Points-to Analysis in Almost Linear Time

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Points to analysis in almost linear time

Points-to Analysis in Almost Linear Time

paper by Bjarne Steensgaard

23rd ACM Symposium on Principles of Programming Languages (POPL'96)

Microsoft Research Technical Report MSR-TR-95-08

presented by Jeff Blank

CMSC 858Z Spring 2004


Outline of talk

Outline of Talk

  • Background

  • Source Language

  • Type System

  • Inference Algorithm

    • Examples


Motivation

Motivation

  • Why this paper?

    • and which paper, exactly?

  • What type of analysis?

    • flow-insensitive, context-insensitive, interprocedural


Source language

Example: Factorial

Source Language

fact = fun(x)->(r)

if lessthan(x 1) then

r = 1

else

xminusone = subtract(x 1)

nextfac = fact(xminusone)

r = multiply(x nextfac)

fi

result = fact(10)

S ::= x = y

| x = &y

| x = *y

| x = op(y1. . .yn)

| x = allocate(y)

| *x = y

| x = fun(f1…fn)->(r1…rm) S*

| x1…xm= p(y1…yn)


Non standard types

Non-standard types

 ::=  x 

 ::=  | ref()

 ::=  | lam(1…n)(n+1…n+m)


Typing rules

Typing Rules

  • “obvious” vs. with partial order

  • (review on sheet)

_ = whatever!


Type inference system

Type Inference System

  • imposing the rules = performing points-to analysis

  • Algorithm:

    • Initialization

      • assumptions

      • all variables set to different types

    • Inference

      • impose the rules, i.e. merge types as necessary

      • one pass


Example run

a

x,z

b

p

y

c

Example Run

a = &x

b = &y

if p then

y = &z;

else

y = &x

fi

c = &y


More examples original algorithm

m

i

j

n

More Examplesoriginal algorithm

m = 42

i = m

j = m

j = &n


More examples improved algorithm

m

i

j

n

More Examplesimproved algorithm

m = 42

i = m

j = m

j = &n


More examples improved algorithm joining with pending set

m

i

j

n

More Examplesimproved algorithm (joining with pending set)

m = 42

i = m

j = m

m = &n


Efficiency of system

Efficiency of system

  • O(N(N,N))

    •  is inverse Ackermann’s function, cost of find

  • Compared to others...


Other comments

Other comments

  • no support for separate types in a composite object (e.g. a struct)

  • is fast

    • even on mid-nineties computers

  • test data (show graph)


  • Login