SlideShare a Scribd company logo
Object Flow Analysis –
Taking an Object-centricView
on Dynamic Analysis
Adrian Lienhard1, Stéphane Ducasse2 andTudor Gîrba1
1Software Composition Group, University of Bern, Switzerland
2 LISTIC, University of Savoie, France
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
A missing aspect of OO
dynamic analysis
Typical characterization of OO program execution:
1) message passing
2) object interrelationships
How are objects passed throught the system?
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
1) the method execution perspective
MethodNode>>generate
ASTTranslator class>>new
...
...
IRBuilder>>initialize
IRMethod class>>new
...
ASTTranslator>>visitNode:
ASTTranslator>>ir
IRMethod>>compiledMethod
IRTranlator class>new
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
1) the method execution perspective
“How is the IRMethod
instance passed to
MethodNode?”
MethodNode>>generate
ASTTranslator class>>new
...
...
IRBuilder>>initialize
IRMethod class>>new
...
ASTTranslator>>visitNode:
ASTTranslator>>ir
IRMethod>>compiledMethod
IRTranlator class>new
?
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
2) the object interrelationship perspective
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
“How is the IRMethod
instance passed to
MethodNode?”
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
?
2) the object interrelationship perspective
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
?
MethodNode>>generate
ASTTranslator class>>new
...
...
IRBuilder>>initialize
IRMethod class>>new
...
ASTTranslator>>visitNode:
ASTTranslator>>ir
IRMethod>>compiledMethod
IRTranlator class>new
? interdependency?
Object Flow Analysis
track the transfer of object references
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
a) capture all
references of an
object
b) track the
transfer of
references
Object Flow
Analysis
instantiation
field store
field read
argument
field store
return
return
field store
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
a) capture all
references of an
object
b) track the
transfer of
references
Object Flow
Analysis
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Object Flow
Analysis
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
instantiation
field store
field read
argument
field store
return
return
field store
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
2
3
2
3
1
1
“How is the IRMethod
instance passed to
MethodNode?”
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Application
How do classes
exchange objects?
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Inter-unit
flow view
classes
containedInPackage: ’AST-Nodes’
mapTo: ’AST’.
classes
hierarchyRootedIn: ’IRInstruction’
mapTo: ’Intermediate-Representation’
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Chronological
propagation
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Spanning flows
Parser (4)
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Spanning flows
IRBuilder
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
objects stored
in an instance
variable
objects passed out
multiple times
objects passed
through directly
objects created in
IRBuilder
timeline
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Alias
*
0..1
parent
child
Instance
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
ce
nce new.
hod
isitNode: self.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Alias
*
0..1
parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
stantiation
field store
read
ument
store
return
return
field store
field read
stantiation
field write
read
ument
write
return
return
...
Alias
*
0..1
parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
0..1 *
sender
Method
Class
Attribute
Activation
receiver
creator
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Summary
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Alias
*
0..1
parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
0..1 *
sender
Method
Class
Attribute
Activation
receiver
creator
Questions?

More Related Content

PPTX
Java 8
PPTX
Spanish travel project ecuador
PDF
Object Flow Analysis
PDF
Virtual Machines Lecture
PDF
Test Blueprints
PDF
DEF CON 23 - Topher Timzen and Ryan Allen - hijacking arbitrary NET APP Contr...
PPT
2006 - Basta!: Advanced server controls
PDF
Smart objectapi tutorial 092013
Java 8
Spanish travel project ecuador
Object Flow Analysis
Virtual Machines Lecture
Test Blueprints
DEF CON 23 - Topher Timzen and Ryan Allen - hijacking arbitrary NET APP Contr...
2006 - Basta!: Advanced server controls
Smart objectapi tutorial 092013

Similar to Object Flow Analysis (20)

PDF
IoT Toolkit and the Smart Object API Tutorial Introduction
PDF
IoT Toolkit and Smart Object API Tutorial Introduction
PPT
12 virtualmachine
PPT
00-rewfwffwfwfwewfwwfwffeffvyu8ikview.ppt
PPT
00 OOP Introduction to Java Lecture Notes.ppt
PPT
00-review.ppt
PDF
Android Malware Analysis
PDF
Rails for Beginners - Le Wagon
PPTX
Rx for Android & iOS by Harin Trivedi
PPT
iPhone Development
PDF
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
PDF
Multi-Dimensional Process Analysis
ODP
Objects arent records with byte codes on the side
ODP
Functional Programming With Scala
PPT
Java 8 Streams
PPT
Drd secr final1_3
PPT
Dynamic data race detection in concurrent Java programs
PPT
Class & Object - Intro
IoT Toolkit and the Smart Object API Tutorial Introduction
IoT Toolkit and Smart Object API Tutorial Introduction
12 virtualmachine
00-rewfwffwfwfwewfwwfwffeffvyu8ikview.ppt
00 OOP Introduction to Java Lecture Notes.ppt
00-review.ppt
Android Malware Analysis
Rails for Beginners - Le Wagon
Rx for Android & iOS by Harin Trivedi
iPhone Development
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Multi-Dimensional Process Analysis
Objects arent records with byte codes on the side
Functional Programming With Scala
Java 8 Streams
Drd secr final1_3
Dynamic data race detection in concurrent Java programs
Class & Object - Intro
Ad

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
PDF
Directing Generative AI for Pharo Documentation
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
PDF
Analysing Python Machine Learning Notebooks with Moose
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
PDF
An Analysis of Inline Method Refactoring
PDF
Identification of unnecessary object allocations using static escape analysis
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
PDF
Encoding for Objects Matters (IWST 2025)
PDF
Challenges of Transpiling Smalltalk to JavaScript
PDF
Immersive experiences: what Pharo users do!
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
Micromaid: A simple Mermaid-like chart generator for Pharo
Directing Generative AI for Pharo Documentation
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
Analysing Python Machine Learning Notebooks with Moose
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
Package-Aware Approach for Repository-Level Code Completion in Pharo
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
An Analysis of Inline Method Refactoring
Identification of unnecessary object allocations using static escape analysis
Control flow-sensitive optimizations In the Druid Meta-Compiler
Clean Blocks (IWST 2025, Gdansk, Poland)
Encoding for Objects Matters (IWST 2025)
Challenges of Transpiling Smalltalk to JavaScript
Immersive experiences: what Pharo users do!
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
Cavrois - an Organic Window Management (ESUG 2025)
Ad

Recently uploaded (20)

PDF
Getting Started with Data Integration: FME Form 101
PDF
Encapsulation theory and applications.pdf
PDF
DP Operators-handbook-extract for the Mautical Institute
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
project resource management chapter-09.pdf
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PPTX
1. Introduction to Computer Programming.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Tartificialntelligence_presentation.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
TLE Review Electricity (Electricity).pptx
Getting Started with Data Integration: FME Form 101
Encapsulation theory and applications.pdf
DP Operators-handbook-extract for the Mautical Institute
Group 1 Presentation -Planning and Decision Making .pptx
project resource management chapter-09.pdf
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
1. Introduction to Computer Programming.pptx
Assigned Numbers - 2025 - Bluetooth® Document
SOPHOS-XG Firewall Administrator PPT.pptx
Univ-Connecticut-ChatGPT-Presentaion.pdf
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
A Presentation on Artificial Intelligence
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
A novel scalable deep ensemble learning framework for big data classification...
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Unlocking AI with Model Context Protocol (MCP)
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Tartificialntelligence_presentation.pptx
Encapsulation_ Review paper, used for researhc scholars
TLE Review Electricity (Electricity).pptx

Object Flow Analysis

  • 1. Object Flow Analysis – Taking an Object-centricView on Dynamic Analysis Adrian Lienhard1, Stéphane Ducasse2 andTudor Gîrba1 1Software Composition Group, University of Bern, Switzerland 2 LISTIC, University of Savoie, France
  • 2. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch A missing aspect of OO dynamic analysis Typical characterization of OO program execution: 1) message passing 2) object interrelationships How are objects passed throught the system?
  • 3. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch 1) the method execution perspective MethodNode>>generate ASTTranslator class>>new ... ... IRBuilder>>initialize IRMethod class>>new ... ASTTranslator>>visitNode: ASTTranslator>>ir IRMethod>>compiledMethod IRTranlator class>new
  • 4. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch 1) the method execution perspective “How is the IRMethod instance passed to MethodNode?” MethodNode>>generate ASTTranslator class>>new ... ... IRBuilder>>initialize IRMethod class>>new ... ASTTranslator>>visitNode: ASTTranslator>>ir IRMethod>>compiledMethod IRTranlator class>new ?
  • 5. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch :IRBuilder :IRMethod :IRSequence :MethodNode :ASTTranslator 2) the object interrelationship perspective
  • 6. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch “How is the IRMethod instance passed to MethodNode?” :IRBuilder :IRMethod :IRSequence :MethodNode :ASTTranslator ? 2) the object interrelationship perspective
  • 7. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch :IRBuilder :IRMethod :IRSequence :MethodNode :ASTTranslator ? MethodNode>>generate ASTTranslator class>>new ... ... IRBuilder>>initialize IRMethod class>>new ... ASTTranslator>>visitNode: ASTTranslator>>ir IRMethod>>compiledMethod IRTranlator class>new ? interdependency? Object Flow Analysis track the transfer of object references
  • 8. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch a) capture all references of an object b) track the transfer of references Object Flow Analysis instantiation field store field read argument field store return return field store argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ...
  • 9. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch a) capture all references of an object b) track the transfer of references Object Flow Analysis instantiation field write field read argument field write return return field write argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ... instantiation field write field read argument field write return return field write argument field read
  • 10. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Object Flow Analysis instantiation field write field read argument field write return return field write argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ... instantiation field write field read argument field write return return field write argument field read instantiation field store field read argument field store return return field store argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ... instantiation field write field read argument field write return return field write argument field read 2 3 2 3 1 1 “How is the IRMethod instance passed to MethodNode?”
  • 11. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Application How do classes exchange objects?
  • 12. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Inter-unit flow view classes containedInPackage: ’AST-Nodes’ mapTo: ’AST’. classes hierarchyRootedIn: ’IRInstruction’ mapTo: ’Intermediate-Representation’
  • 13. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Chronological propagation
  • 14. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Spanning flows Parser (4)
  • 15. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Spanning flows IRBuilder
  • 16. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch objects stored in an instance variable objects passed out multiple times objects passed through directly objects created in IRBuilder timeline
  • 17. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ...
  • 18. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ... Alias * 0..1 parent child Instance
  • 19. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows ce nce new. hod isitNode: self. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ... Alias * 0..1 parent child Instance ArgumentAlias FieldWriteAliasReturnAlias...
  • 20. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows stantiation field store read ument store return return field store field read stantiation field write read ument write return return ... Alias * 0..1 parent child Instance ArgumentAlias FieldWriteAliasReturnAlias... 0..1 * sender Method Class Attribute Activation receiver creator
  • 21. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Summary IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ... Alias * 0..1 parent child Instance ArgumentAlias FieldWriteAliasReturnAlias... 0..1 * sender Method Class Attribute Activation receiver creator Questions?