Efficient Proxies in Smalltalk
-
Upload
mariano-martinez-peck -
Category
Technology
-
view
453 -
download
1
description
Transcript of Efficient Proxies in Smalltalk
![Page 2: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/2.jpg)
What is a proxy?
2
A proxy object is a surrogate or placeholder that controls access to
another target object.
Monday, August 22, 2011
![Page 3: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/3.jpg)
Glossary
Target: object to proxify.
Client: user of the proxy.
Interceptor: object that intercepts message sending.
Handler: object that performs a desired action as a consequence of an interception.
3
Monday, August 22, 2011
![Page 4: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/4.jpg)
Forwarder and Logging example
4
Monday, August 22, 2011
![Page 5: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/5.jpg)
With or without Object replacement?
In proxies with object replacement (#become:), the target object is replaced by a proxy.
Proxies without object replacement are a kind of factory.
5
Monday, August 22, 2011
![Page 6: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/6.jpg)
With or without Object replacement?
In proxies with object replacement (#become:), the target object is replaced by a proxy.
Proxies without object replacement are a kind of factory.
5
Monday, August 22, 2011
![Page 7: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/7.jpg)
Traditional proxy implementations
6
Usage of a minimal object together with an implementation of a custom #doesNotUnderstand
doesNotUnderstand:executeBeforeHandlingexecuteAfterHandling
targetProxy
identityHashpointersTonextObject...
ProtoObject
Monday, August 22, 2011
![Page 8: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/8.jpg)
7
We are going to play a little game...
Monday, August 22, 2011
![Page 9: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/9.jpg)
8
Are both prints in Transcript the same or not?
Monday, August 22, 2011
![Page 10: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/10.jpg)
8
Are both prints in Transcript the same or not?
Conclusion: methods understood are NOT intercepted.Is that bad?
Monday, August 22, 2011
![Page 11: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/11.jpg)
8
Are both prints in Transcript the same or not?
Conclusion: methods understood are NOT intercepted.Is that bad?
Different execution paths Errors difficult to findMonday, August 22, 2011
![Page 12: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/12.jpg)
9
Do we want the regular #doesNotUnderstand or to intercept the message?
Monday, August 22, 2011
![Page 13: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/13.jpg)
10
Do we want the regular #doesNotUnderstand or to intercept the message?
Monday, August 22, 2011
![Page 14: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/14.jpg)
11
I wanted the normal #doesNotUnderstand!!!
Monday, August 22, 2011
![Page 15: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/15.jpg)
12
I wanted the normal #doesNotUnderstand!!!
Monday, August 22, 2011
![Page 16: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/16.jpg)
Problems #doesNotUnderstand: cannot be trapped like a regular message.
Mix of handling procedure and proxy interception.
Only methods that are not understood are intercepted.
No separation between proxies and handlers
13
This approach is not stratified
Monday, August 22, 2011
![Page 17: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/17.jpg)
14
Subclassing from nil does not solve the problem.
Monday, August 22, 2011
![Page 18: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/18.jpg)
15
VM CRASH
This solution is not uniform
Monday, August 22, 2011
![Page 19: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/19.jpg)
16
A Uniform, Light-weight and Stratified Proxy Model and Implementation.
Monday, August 22, 2011
![Page 20: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/20.jpg)
Used hooks
Object replacement (#become:)
Change an object’s class (#adoptInstance:)
Objects as methods (#run:with:in:)
Classes with no method dictionary (#cannotInterpret:)
17
Monday, August 22, 2011
![Page 21: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/21.jpg)
Object replacement
18
AB
CD
AB
CD
c become: d
Monday, August 22, 2011
![Page 22: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/22.jpg)
Objects as methods
19
The VM sends #run: aSelector with: anArray in: aReceiver
Monday, August 22, 2011
![Page 23: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/23.jpg)
Objects as methods
19
The VM sends #run: aSelector with: anArray in: aReceiver
So.....We can implement in Proxy:
Monday, August 22, 2011
![Page 24: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/24.jpg)
CLasses with no method dictionary
20
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
Monday, August 22, 2011
![Page 25: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/25.jpg)
Ghost model
21
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
handleInterception: anInterceptionProxyHandler
handleInterception: anInterceptionSimpleForwarderHandler
messageproxyproxyState
Interception
Monday, August 22, 2011
![Page 26: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/26.jpg)
How it works?
22
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
Monday, August 22, 2011
![Page 27: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/27.jpg)
How it works?
22
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
Proxy class >>
Monday, August 22, 2011
![Page 28: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/28.jpg)
How it works?
22
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
Monday, August 22, 2011
![Page 29: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/29.jpg)
How it works?
22
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
ProxyTrap class >>
Monday, August 22, 2011
![Page 30: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/30.jpg)
How it works?
22
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
ProxyTrap class >>
Monday, August 22, 2011
![Page 31: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/31.jpg)
How it works?
22
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
aProxy
‘Mariano’aHandler
instanceOf
Proxy class >>
Monday, August 22, 2011
![Page 32: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/32.jpg)
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
How it works?
23
Monday, August 22, 2011
![Page 33: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/33.jpg)
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
How it works?
23
Monday, August 22, 2011
![Page 34: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/34.jpg)
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
How it works?
23
Monday, August 22, 2011
![Page 35: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/35.jpg)
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
How it works?
23
Monday, August 22, 2011
![Page 36: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/36.jpg)
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
How it works?
23
Monday, August 22, 2011
![Page 37: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/37.jpg)
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
How it works?
23
Proxy >>
Monday, August 22, 2011
![Page 38: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/38.jpg)
aProxy
aProxy username
1: #username send
methodDict := nilProxyTrap
cannotInterpret: aMessageProxy
Object
2: #aProxy lookup
3: Since the method dictionary was nil, the VM sends #cannotInterpret to
the receiver but starting the lookup in the superclass
4: #cannotInterpret: lookup
Referencesinstance ofmessage sendlookupsubclass
How it works?
23
Proxy >>
SimpleForwarderHandler >>
Monday, August 22, 2011
![Page 39: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/39.jpg)
24
Traditional Ghost
#doesNotUnderstand: cannot be trapped like a regular message.
#cannotInterpret: is trapped like a regular message.
Mix of handling procedure and proxy interception.
No mix of handling procedure and proxy interception.
Only methods that are not understood are intercepted.
“All” methods are intercepted.
No separation between proxies and handlers.
Clear separation between proxies and handlers.
Monday, August 22, 2011
![Page 40: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/40.jpg)
25
is stratified
Monday, August 22, 2011
![Page 41: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/41.jpg)
Methods not intercepted
26
1) Optimizations done by the Compiler
2) Special shortcut bytecodes between Compiler and VM
2.1) Methods NEVER sent: #== and #class2.2) Methods that may or may not be executed depending
on the receiver and arguments: e.g. in ‘1+1’ #+ is not executed. But with ‘1+$C’ #+ is executed.
2.3)Always executed, they are just little optimizations. Examples #new, #next, #nextPut:, #size, etc.
Monday, August 22, 2011
![Page 42: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/42.jpg)
Methods not intercepted
26
1) Optimizations done by the Compiler
2) Special shortcut bytecodes between Compiler and VM
2.1) Methods NEVER sent: #== and #class2.2) Methods that may or may not be executed depending
on the receiver and arguments: e.g. in ‘1+1’ #+ is not executed. But with ‘1+$C’ #+ is executed.
2.3)Always executed, they are just little optimizations. Examples #new, #next, #nextPut:, #size, etc.
Monday, August 22, 2011
![Page 43: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/43.jpg)
Methods not intercepted
26
1) Optimizations done by the Compiler
2) Special shortcut bytecodes between Compiler and VM
2.1) Methods NEVER sent: #== and #class2.2) Methods that may or may not be executed depending
on the receiver and arguments: e.g. in ‘1+1’ #+ is not executed. But with ‘1+$C’ #+ is executed.
2.3)Always executed, they are just little optimizations. Examples #new, #next, #nextPut:, #size, etc.
Monday, August 22, 2011
![Page 44: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/44.jpg)
Proxy for classes
27
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
cannotInterpret:proxyFor:
superclass methodDictformathandlertarget
ClassProxy
initializenilMethodDict
ClassProxyTrap
logIn:validate:
usernameage
User
Monday, August 22, 2011
![Page 45: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/45.jpg)
Proxy for classes
27
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
cannotInterpret:proxyFor:
superclass methodDictformathandlertarget
ClassProxy
initializenilMethodDict
ClassProxyTrap
logIn:validate:
usernameage
User
Monday, August 22, 2011
![Page 46: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/46.jpg)
Proxy for classes
27
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
cannotInterpret:proxyFor:
superclass methodDictformathandlertarget
ClassProxy
initializenilMethodDict
ClassProxyTrap
logIn:validate:
usernameage
User
Monday, August 22, 2011
![Page 47: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/47.jpg)
Proxy for classes
27
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
cannotInterpret:proxyFor:
superclass methodDictformathandlertarget
ClassProxy
initializenilMethodDict
ClassProxyTrap
logIn:validate:
usernameage
User
Monday, August 22, 2011
![Page 48: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/48.jpg)
Proxy for classes
27
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
cannotInterpret:proxyFor:
superclass methodDictformathandlertarget
ClassProxy
initializenilMethodDict
ClassProxyTrap
aUseraClassProxy
methodDict = nilsuperclass = ClassProxy
logIn:validate:
usernameage
User
instance of
Monday, August 22, 2011
![Page 49: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/49.jpg)
Proxy for classes
27
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
cannotInterpret:proxyFor:
superclass methodDictformathandlertarget
ClassProxy
initializenilMethodDict
ClassProxyTrap
aUseraClassProxy
methodDict = nilsuperclass = ClassProxy
logIn:validate:
usernameage
User
instance of
User nameMonday, August 22, 2011
![Page 50: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/50.jpg)
Proxy for classes
27
cannotInterpret:proxyFor:
handlertarget
Proxy
initializenilMethodDict
ProxyTrap
Object
cannotInterpret:proxyFor:
superclass methodDictformathandlertarget
ClassProxy
initializenilMethodDict
ClassProxyTrap
aUseraClassProxy
methodDict = nilsuperclass = ClassProxy
logIn:validate:
usernameage
User
instance of
aUser username
User nameMonday, August 22, 2011
![Page 51: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/51.jpg)
Proxy for methods
28
Monday, August 22, 2011
![Page 52: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/52.jpg)
Proxy for methods
28
Regular message
Monday, August 22, 2011
![Page 53: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/53.jpg)
Proxy for methods
28
Regular messageMethod execution
Monday, August 22, 2011
![Page 54: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/54.jpg)
Proxy for methods
28
Just handling #run:with:in correctly is enough to also intercept method execution.
Regular messageMethod execution
Monday, August 22, 2011
![Page 55: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/55.jpg)
is
29
Uniform
Monday, August 22, 2011
![Page 56: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/56.jpg)
is
29
moreUniform
Monday, August 22, 2011
![Page 57: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/57.jpg)
More features
Low memory footprint.
Compact classes.
Store the minimal needed state.
Easy debugging.
Custom list of messages.
30
Monday, August 22, 2011
![Page 58: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/58.jpg)
Conclusion
31
With a little bit of special support from the VM (#cannotInterpret hook), we can have an image-side proxy solution
much better than the classic #doesNotUnderstand:
Monday, August 22, 2011
![Page 59: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/59.jpg)
Future work
Experiment with immediate proxies (memory address tag) in VM side.
Think how to correctly intercept non-executed methods.
32
Monday, August 22, 2011
![Page 60: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/60.jpg)
Links
http://rmod.lille.inria.fr/web/pier/software/Marea/GhostProxies
http://www.squeaksource.com/Marea.html
33
Monday, August 22, 2011
![Page 61: Efficient Proxies in Smalltalk](https://reader038.fdocuments.net/reader038/viewer/2022102901/5578f04bd8b42a5c5c8b509c/html5/thumbnails/61.jpg)
Mariano Martinez [email protected]
http://marianopeck.wordpress.com/
RMod
A Uniform, Light-weight and Stratified Proxy Model and Implementation
Monday, August 22, 2011