Proxies are the swiss army knifes of object adaptation. They introduce a level of indirection to intercept select operations on a target object and divert them as method calls to a handler. Proxies are often used as wrappers to implement access control via membranes or to enforce adherence to a contract.
One important question in the design of a proxy API is whether a proxy object has its own identity. For some applications, in particular those related to security, this choice is advantageous whereas other applications, in particular contract systems, require transparency, that is, proxies that compare equal to their target objects.
We examine the issue with transparency in detail, consider various use cases for proxies, discuss different approaches to obtain transparency, and propose two designs that cannot be bypassed by the programmer but that require modest modifications in the JavaScript engine.
Our evaluation shows that these modifications of the JavaScript interpreter and bytecode compiler have no statistically significant impact on the benchmark performance of the JavaScript engine. Furthermore, it demonstrates that contract systems implemented with non-transparent proxies can interfere with program execution in realistic setting.
Wed 8 Jul
15:30 - 16:00 Talk | Joseph LeeCarnegie Mellon University, Jonathan AldrichCarnegie Mellon University, Troy ShawVictoria University of Wellington, Alex PotaninVictoria University of Wellington | |||||||||||||||||||||||||||||||||||||||||
16:00 - 16:30 Talk | Timothy JonesVictoria University of Wellington, Michael HomerVictoria University of Wellington, James NobleVictoria University of Wellington | |||||||||||||||||||||||||||||||||||||||||
16:30 - 17:00 Talk |