05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.5. Customizations and VM-specific Design Choices<br />

executing in another domain. Consequently, an instantiation of the OMOP<br />

taking this use case into account could provi<strong>de</strong> special intercession handlers<br />

for both cases. For reading fields, it could provi<strong>de</strong> #readFieldFromWithin:of:<br />

and #readFieldFromOutsi<strong>de</strong>:of:. Similarly, the other intercession handlers<br />

could be provi<strong>de</strong>d in these two variants, as well. While the resulting OMOP<br />

would no longer be minimal, an implementation of isolation on top of it<br />

would not require testing for ownership but could rely on the VM, which<br />

might provi<strong>de</strong> better performance.<br />

In future work (cf. Sec. 9.5.6), the different properties of supported concurrent<br />

programming concepts can be studied and formalized, which could yield<br />

similar variation points and a <strong>de</strong>clarative representation of possible language<br />

policies. Such a representation would again allow a different representation<br />

of key elements of the OMOP and allow more efficient implementation of<br />

common use cases.<br />

Opt-In for Enforced Execution Mo<strong>de</strong> Another <strong>de</strong>sign <strong>de</strong>cision ma<strong>de</strong> in the<br />

presented OMOP is that execution starts out in unenforced mo<strong>de</strong>. With the<br />

semantics discussed in Sec. 5.3.1 and Sec. 5.4 (cf. Lst. 5.4), a language implementer<br />

needs to opt-in explicitly to enforced execution. This <strong>de</strong>sign was chosen<br />

to provi<strong>de</strong> predictable behavior and the ability to set up all relevant libraries<br />

and system parts before enforced execution mo<strong>de</strong> is activated. This<br />

choice is partially motivated by the fact that the OMOP has been <strong>de</strong>veloped<br />

for an existing system with existing infrastructure. Thus, starting in unenforced<br />

execution mo<strong>de</strong> provi<strong>de</strong>s more flexibility. However, in a system that is<br />

<strong>de</strong>signed from the ground up as a multi-language VM with support for the<br />

OMOP, it might be <strong>de</strong>sirable to execute co<strong>de</strong> in the enforced execution mo<strong>de</strong><br />

from the beginning. The benefits of this choice would be that a language<br />

implementer does not need to opt-in to enforced execution and thus, the standard<br />

case will ensure that language semantics are ensured at all times.<br />

Handling of Primitives Primitives, i. e., built-in functionality provi<strong>de</strong>d by<br />

the VM needs to be covered by the OMOP to guarantee that the semantics<br />

of a concurrent programming concept can be enforced in their entirety. Thus,<br />

if primitives are not covered correctly, they could be used, for instance to<br />

circumvent the isolation required between processes in CSP.<br />

The presented OMOP <strong>de</strong>sign inclu<strong>de</strong>s every single primitive as a separate<br />

intercession handler on the OMOP. This choice works well as part of the<br />

presentation in this dissertation and for VMs that have only a small number<br />

129

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!