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.

4.4. RoarVM<br />

Used Software and Libraries Squeak and Pharo were used as <strong>de</strong>velopment<br />

platforms for specifying the operational semantics of the OMOP using Awe-<br />

SOM and to <strong>de</strong>velop the AST-transformation-based prototype (cf. Sec. 7.1).<br />

While Smalltalk typically uses a byteco<strong>de</strong>-based representation of the compiled<br />

co<strong>de</strong>, transforming it is low-level and error-prone. To avoid the associated<br />

complexity, the first prototype implementation of the OMOP uses co<strong>de</strong><br />

transformations based on the AST (abstract syntax tree) instead. The main<br />

benefit is that the AST will be used to generate byteco<strong>de</strong> that corresponds to<br />

the expectations of the whole Smalltalk toolchain. Using direct byteco<strong>de</strong> transformation<br />

can result in perhaps more optimal byteco<strong>de</strong>, however, the used<br />

tools, i. e., the <strong>de</strong>bugger and <strong>de</strong>compiler, accept only a subset of the legal byteco<strong>de</strong><br />

sequences, ren<strong>de</strong>ring some correct byteco<strong>de</strong> sequences non-<strong>de</strong>buggable.<br />

The AST transformations uses the Refactoring Engine, 4 which generates ASTs<br />

from Smalltalk co<strong>de</strong> and provi<strong>de</strong>s a transformation framework implementing<br />

the classic visitor pattern. With these tools it became possible to implement<br />

AST transformations and produce byteco<strong>de</strong> that was executable and <strong>de</strong>buggable.<br />

4.4. RoarVM<br />

The RoarVM is a Squeak and Pharo-compatible Smalltalk VM <strong>de</strong>signed and<br />

initially implemented by Ungar and Adams [2009]. It is a platform for experimenting<br />

with parallel programming on the Tilera TILE64 manycore processor<br />

[Wentzlaff et al., 2007]. Building on top of the work of Ungar and Adams,<br />

we ported it to commodity multicore systems. It enables the parallel execution<br />

of Smalltalk co<strong>de</strong> in a shared memory environment. Thus, Smalltalk processes,<br />

i. e., threads, of a given image can be scheduled and executed simultaneously<br />

<strong>de</strong>pending on the available hardware parallelism.<br />

Rationale for Choosing the RoarVM The RoarVM was chosen to experiment<br />

with VM implementations for several reasons. On the one hand, the<br />

complexity of the RoarVM is significantly lower than that of the CogVM, facilitating<br />

experiments with different implementation approaches. Furthermore,<br />

the RoarVM has a parallel execution mo<strong>de</strong>l, which preserves the opportunity<br />

to investigate support for parallel programming as part of future work (cf.<br />

Sec. 9.5.1).<br />

4 Refactoring Engine, Don Roberts, John Brant, Lukas Renggli, access date: 17 July 2012<br />

http://www.squeaksource.com/rb.html<br />

101

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

Saved successfully!

Ooh no, something went wrong!