here - Stefan-Marr.de
here - Stefan-Marr.de
here - Stefan-Marr.de
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