Link-Time Static Analysis for Efficient Separate Compilation of - - PowerPoint PPT Presentation

link time static analysis for efficient separate
SMART_READER_LITE
LIVE PREVIEW

Link-Time Static Analysis for Efficient Separate Compilation of - - PowerPoint PPT Presentation

Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages Jean Privat Roland Ducournau LIRMM CNRS/Universit e Montpellier II France Program Analysis for Software Tools and Engineering Lisbon 2005 Privat,


slide-1
SLIDE 1

Link-Time Static Analysis for Efficient Separate Compilation of Object-Oriented Languages

Jean Privat Roland Ducournau

LIRMM CNRS/Universit´ e Montpellier II France

Program Analysis for Software Tools and Engineering Lisbon 2005

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 1 / 24

slide-2
SLIDE 2

Outline

1

Motivation

2

Global Techniques Type Analysis Coloring Binary Tree Dispatch

3

Separate Compilation

4

Benchmarks Description Results

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 2 / 24

slide-3
SLIDE 3

Outline

1

Motivation

2

Global Techniques Type Analysis Coloring Binary Tree Dispatch

3

Separate Compilation

4

Benchmarks Description Results

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 3 / 24

slide-4
SLIDE 4

Software Engineering Ideal

Production of Modular Software Extensible software Reusable software components ⇒ Object-Oriented Programming (inheritance + late binding) Production of Software in a Modular Way Small code modification → small recompilation Shared software components are compiled only once Software components can be distributed in a compiled form ⇒ Separate Compilation (compile components + link)

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 4 / 24

slide-5
SLIDE 5

Compilation of OO Programs

Global Techniques Knowledge of the whole program → more efficient implementation: Method invocation Access to attribute Subtyping test The Problem Previous works use global technique with global compilation Global compilation is incompatible with modular production

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 5 / 24

slide-6
SLIDE 6

Our Proposition

A Compromise A separate compilation framework that includes 3 global compilation techniques How To? ⇒ Perform global techniques at link-time

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 6 / 24

slide-7
SLIDE 7

Outline

1

Motivation

2

Global Techniques Type Analysis Coloring Binary Tree Dispatch

3

Separate Compilation

4

Benchmarks Description Results

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 7 / 24

slide-8
SLIDE 8

Type Analysis

Problems Most method invocations are actually monomorphic → Implement them with a static direct call (no late binding) Many methods are dead → Remove them How to? Approximate 3 sets: Live classes and methods Concrete type of each expression Called methods of each call site Many type analysis exist

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 8 / 24

slide-9
SLIDE 9

Coloring

Problem Overhead with standard VFT in multiple inheritance: Subobjects Many VFT (quadratic number, cubic size) Solution → Simple inheritance implementation even in multiple inheritance How to? Assign an identifier by class Assign a color (index) by class, method and attribute Minimize size of the tables A NP-hard problem

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 9 / 24

slide-10
SLIDE 10

Coloring (example)

A B C D D table C table B table A table

Methods introduced in A Gap

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 10 / 24

slide-11
SLIDE 11

Binary Tree Dispatch

Problem Prediction of conditional branching of modern processors does not work with VFT Solution → Use static jumps instead of VFT How to? Perform a type analysis Assign an identifier by live class For each live call site, enumerate concrete type in a select tree

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 11 / 24

slide-12
SLIDE 12

Binary Tree Dispatch (Example)

Compiling call site x.foo id is the class itentifier of the receiver x Concrete type of x is {A, B, C} Class A B C Identifier 19 12 15 foo implementation A foo B foo C foo Generated Code if id <= 15 then if id <= 12 then call B foo else call C foo else call A foo

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 12 / 24

slide-13
SLIDE 13

Outline

1

Motivation

2

Global Techniques Type Analysis Coloring Binary Tree Dispatch

3

Separate Compilation

4

Benchmarks Description Results

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 13 / 24

slide-14
SLIDE 14

Separate Compilation

local phase global phase

...

metadata metadata

local phase Source code Compiled component Final executable

... call ... call ... 0x05175 0x05217 bar? foo? ... call ... call ... void foo() void bar() { ... bar ... } ... ... { ... foo ... } ... ...

Two Phases Local phase compiles independently of future use Global phase links compiled components

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 14 / 24

slide-15
SLIDE 15

Local Phase

Source code Metamodel Local phase Compiled component Metamodel Internal model

Input Source code of a class Metamodel of required classes Outputs Compiled version of the class (with unresolved symbols) Metadata : metamodel, internal model

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 15 / 24

slide-16
SLIDE 16

Compiled Component

Method Call Site Assign a unique symbol by call site Compile into a direct call Attribute Access and Subtype Test Assign a unique symbol by color and identifier Compile into a direct access:

◮ in the instance for attribute access ◮ in the subtyping table for subtype tests Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 16 / 24

slide-17
SLIDE 17

Global phase

Metadata Type analysis Coloring Symbol substitution Compiled component Live model global excutable Final

3 Stages Type analysis: based on the metadata Coloring: computes colors Symbol substitution: generates the final executable Method Call Site Symbols Substitute the address of: monomorphic → the invoked method polymorphic w/ BTD → a generated select tree polymorphic w/ VFT → a generated table access

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 17 / 24

slide-18
SLIDE 18

Outline

1

Motivation

2

Global Techniques Type Analysis Coloring Binary Tree Dispatch

3

Separate Compilation

4

Benchmarks Description Results

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 18 / 24

slide-19
SLIDE 19

Benchmarks Description

Language and Compilers g++: Separate + VFT w/ subobjects SmartEiffel: Global + Binary Tree Dispatch prmc w/ VFT: Separate + Coloring + VFT prmc w/ BTD: Separate + Coloring + BTD Programs The same programs for all language 1 program per OO mechanism ⇒ Small programs are generated by a script

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 19 / 24

slide-20
SLIDE 20

Size of Executables

20 40 60 80 100 120 10 20 30 40 50 60 70 Size of the Exec. (kB) Number of Classes g++ SmartEiffel prmc w/ btd prmc w/ vft Subobjects: many VTF → an important overhead prmc: BTD ≃ VFT SmartEiffel: better dead code removal

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 20 / 24

slide-21
SLIDE 21

Late Binding

2 4 6 8 10 12 14 10 20 30 40 50 60 70 Time (s) Size of the Concrete Type of the Reicever g++ SmartEiffel prmc w/ btd prmc w/ vft Subobjects: constant overhead + cache misses Coloring: better on megamorphic calls BTD: better on oligomorphic calls

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 21 / 24

slide-22
SLIDE 22

Attribute Access

1 2 3 4 5 6 7 8 9 10 10 20 30 40 50 60 70 Time (s) Size of the Concrete Type of Receiver g++ SmartEiffel prmc Subobjects: constant overhead Coloring: constant attribute access SmartEiffel: can degenerate

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 22 / 24

slide-23
SLIDE 23

Type Downcast

5 10 15 20 25 30 35 10 20 30 40 50 60 70 Time (s) Size of the Concrete Type of the Casted Expression g++ SmartEiffel prmc g++: bad performances Coloring and BTD: equivalent and mainly constant

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 23 / 24

slide-24
SLIDE 24

Summary

Summary A separate compilation framework with global techniques for statically typed class-based languages Better modularity than global compilers Better performance than other separate compilers Outlook Shared libraries linked at load-time or dynamically loaded Time overhead of the global phase (link)

Privat, Ducournau (LIRMM) Link-Time Static Analysis PASTE’05 24 / 24