object flow analysis
DESCRIPTION
Object Flow Analysis -- Taking an Object-centricView on Dynamic Analysis. Adrian Lienhard. ESUG 2007, LuganoTRANSCRIPT
![Page 1: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/1.jpg)
Object Flow Analysis –Taking an Object-centric View
on Dynamic Analysis
Adrian Lienhard1, Stéphane Ducasse2 and Tudor Gîrba1
1Software Composition Group, University of Bern, Switzerland2 LISTIC, University of Savoie, France
![Page 2: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/2.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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?
![Page 3: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/3.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
1) the method execution perspective
MethodNode>>generate
ASTTranslator class>>new
...
...
IRBuilder>>initialize
IRMethod class>>new
...
ASTTranslator>>visitNode:
ASTTranslator>>ir
IRMethod>>compiledMethod
IRTranlator class>new
![Page 4: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/4.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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
?
![Page 5: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/5.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
2) the object interrelationship perspective
![Page 6: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/6.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
“How is the IRMethod instance passed to MethodNode?”
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
?
2) the object interrelationship perspective
![Page 7: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/7.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
: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 Analysistrack the transfer of object references
![Page 8: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/8.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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
...
![Page 9: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/9.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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
![Page 10: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/10.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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?”
![Page 11: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/11.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Application
How do classes exchange objects?
![Page 12: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/12.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Inter-unitflow view
classescontainedInPackage: ’AST-Nodes’ mapTo: ’AST’.
classeshierarchyRootedIn: ’IRInstruction’mapTo: ’Intermediate-Representation’
![Page 13: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/13.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Chronological propagation
![Page 14: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/14.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Spanning flows
Parser (4)
![Page 15: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/15.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Spanning flows
IRBuilder
![Page 16: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/16.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
objects stored in an instance
variable
objects passed out multiple times
objects passedthrough directly
objects created in IRBuilder
timeline
![Page 17: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/17.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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
...
![Page 18: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/18.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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..1parent
child
Instance
![Page 19: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/19.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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..1parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
![Page 20: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/20.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
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..1parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
0..1 *
sender
Method
Class
Attribute
Activationreceiver
creator
![Page 21: Object Flow Analysis](https://reader033.vdocuments.site/reader033/viewer/2022060116/557d72d8d8b42a2c428b46c9/html5/thumbnails/21.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
SummaryIRBuilder>>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..1parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
0..1 *
sender
Method
Class
Attribute
Activationreceiver
creator
Questions?