Dynamic Software Updates: A VM-centric Approach
Suriya Subramanian1 Michael Hicks2 Kathryn S. McKinley1
1Department of Computer Sciences
The University of Texas at Austin
2Department of Computer Science
University of Maryland, College Park
Dynamic Software Updates: A VM-centric Approach Suriya Subramanian 1 - - PowerPoint PPT Presentation
Dynamic Software Updates: A VM-centric Approach Suriya Subramanian 1 Michael Hicks 2 Kathryn S. McKinley 1 1 Department of Computer Sciences The University of Texas at Austin 2 Department of Computer Science University of Maryland, College Park
1Department of Computer Sciences
The University of Texas at Austin
2Department of Computer Science
University of Maryland, College Park
Slide 2
Code
bytecodes machine codes
Heap Stacks
Version 1 process
Code
bytecodes machine codes
Version 2 process
Heap
Update Code Update Data Check update safety
Stacks
Update Stacks
Slide 3
Slide 4
Slide 5
Jvolve Transformers.java changed methods
bytecodes machine codes
changed classes }
Slide 6
Slide 7
Code
bytecodes machine codes
Heap Stacks
Version 1 process
Code
bytecodes machine codes
Version 2 process
Heap
Update Code Update Data Check update safety
Stacks
Update Stacks
Slide 8
Slide 9
Slide 10
Slide 10
Modified method Group 3 method
c() d() e() Activation Stack
Grows downwards
b() a() main()
Slide 11
Code
bytecodes machine codes
Heap Stacks
Version 1 process
Code
bytecodes machine codes
Version 2 process
Heap
Update Code Update Data Check update safety
Stacks
Update Stacks
Slide 12
Slide 13
Code
bytecodes machine codes
Heap Stacks
Version 1 process
Code
bytecodes machine codes
Version 2 process
Heap
Update Code Update Data Check update safety
Stacks
Update Stacks
Slide 14
public class User { private final String username, domain, password;
+ private EmailAddress[] forwardAddresses; public User(...) {...} public String[] getForwardedAddresses() {...} public void setForwardedAddresses(String[] f) {...} } public class ConfigurationManager { private User loadUser(...) { ... User user = new User(...); String[] f = ...; user.setForwardedAddresses(f); return user; } }
Slide 15
public class User { private final String username, domain, password;
+ private EmailAddress[] forwardAddresses; public User(...) {...}
+ public EmailAddress[] getForwardedAddresses() {...}
+ public void setForwardedAddresses(EmailAddress[] f) {...} } public class ConfigurationManager { private User loadUser(...) { ... User user = new User(...);
+ EmailAddress[] f = ...; user.setForwardedAddresses(f); return user; } }
Slide 16
Slide 17
Slide 17
Slide 18
To space (old version objects) To space From space a b c
Slide 19
To space (old version objects) To space From space a b c a b c
Pointer Forwarding pointer
Slide 19
To space (old version objects) To space From space a b c a b c
Pointer Forwarding pointer
Slide 19
To space (old version objects) To space From space b a b c a b c
Pointer Forwarding pointer
Slide 19
To space (old version objects) To space From space b a b c a b c
Pointer Forwarding pointer
Slide 19
To space (old version objects) To space From space b a b c a b c
Pointer Forwarding pointer
Slide 19
To space (old version objects) To space From space b a b c a b c
Pointer Forwarding pointer
Slide 19
To space (old version objects) To space From space a b c a b c a b c
Pointer Forwarding pointer
Slide 19
To space (old version objects) To space From space a b c
Slide 19
Slide 20
Slide 21
121.0 121.1 121.2 121.3 121.4 121.5
0.30 0.32 0.34 0.36 0.38
Slide 22
Slide 23