Object Flow Analysis
-
Upload
lienhard -
Category
Technology
-
view
730 -
download
2
Transcript of Object Flow Analysis
![Page 1: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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?
![Page 8: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/8.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 9: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/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 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 10: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/10.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 11: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/11.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 12: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/12.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Application
How do classes exchange objects?
![Page 13: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/13.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Inter-unitflow view
![Page 14: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/14.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 15: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/15.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Inter-unitflow view
![Page 16: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/16.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Chronological propagation
![Page 17: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/17.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Chronological propagation
![Page 18: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/18.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Chronological propagation
![Page 19: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/19.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Spanning flows
Parser (4)
![Page 20: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/20.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Spanning flows
IRBuilder
![Page 21: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/21.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
timeline
![Page 22: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/22.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
objects created in IRBuilder
timeline
![Page 23: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/23.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
timeline
![Page 24: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/24.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
objects passedthrough directly
timeline
![Page 25: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/25.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
timeline
![Page 26: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/26.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
objects stored in an instance
variable
timeline
![Page 27: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/27.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
timeline
![Page 28: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/28.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
objects passed out multiple times
timeline
![Page 29: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/29.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
timeline
![Page 30: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/30.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Representing object flowsIRBuilder>>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 31: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/31.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Representing object flowsIRBuilder>>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 32: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/32.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Representing object flowsIRBuilder>>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 33: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/33.jpg)
Object Flow Analysis — Taking an Object-centric View on Dynamic Analysis : : Adrian Lienhard : : [email protected]
Representing object flowsIRBuilder>>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 34: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/34.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
![Page 35: Object Flow Analysis](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d72cdd8b42a2c428b46bf/html5/thumbnails/35.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?