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.

6. Evaluation: The OMOP as a Unifying Substrate<br />

ming concepts that can benefit from it, and removing any part would also<br />

result in unsatisfied requirements. The remain<strong>de</strong>r of this sections supports<br />

this claim by discussing the basic interface of the OMOP. The VM-specific aspects<br />

and helper functionality are exclu<strong>de</strong>d, because they are not completely<br />

orthogonal to the basic interface (cf. Sec. 5.2).<br />

Ownership Sec. 5.1 argues that a MOP needs a connection between base level,<br />

i. e., application and the meta level, i. e., the language implementation.<br />

The OMOP uses ownership as this meta relation. Other options could<br />

have been instantiation for metaclass-based approaches or a direct connection<br />

between object and metaobject in metaobject-based approaches.<br />

Without such a meta relation, it would not be possible to <strong>de</strong>fine more<br />

than one set of policies, i. e., a domain, because it would need to be<br />

applied implicitly by the runtime instead of being based on the meta<br />

relation. Thus, a meta relation is required and the choice of ownership<br />

combines with the requirements of concurrent programming concepts<br />

to represent the notion of owning entities.<br />

Enforcement Status The OMOP needs a mechanism to distinguish between<br />

base-level and meta-level execution. The OMOP represents this difference<br />

by a simple bit. Other representations could allow for more flexibility,<br />

for instance to enable reflective towers [Smith, 1984]. However, in<br />

either case, it requires a representation of the execution levels to distinguish<br />

them. Otherwise every operation would trigger an intercession<br />

handler, which itself would again trigger an intercession handler, leading<br />

to infinite meta regress without base case. The OMOP uses the minimal<br />

required solution by only distinguishing base and meta level.<br />

State Access Reification With #readField: and #write:toField:to: two intercession<br />

handlers are provi<strong>de</strong>d by the OMOP to capture reading and<br />

writing of object fields, enabling a customization of all state access. Concurrent<br />

state access is one of the fundamental issues that concurrent<br />

programming tackles by providing means to coordinate the use of state,<br />

i. e., resources. As this chapter <strong>de</strong>monstrates, customizing state access<br />

policies is required to implement an STM or immutability for instance.<br />

Without it, the OMOP would not be able to support these concepts and<br />

it could not provi<strong>de</strong> the same guarantees for concepts such as actors,<br />

vats, and isolation it gives now. In conclusion, state access reification is<br />

a required mechanism and the OMOP’s capabilities would be reduced<br />

significantly without it.<br />

174

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

Saved successfully!

Ooh no, something went wrong!