Rafal Lewczuk <[EMAIL PROTECTED]> wrote: >> optimizing VM. On the other hand, resource constrained environments >> require VMs with as little footprint as possible. My question is: does >> it make sense to make all-in-one framework or maybe designing two >> execution engines, maybe sharing some code but having two different >> designs (object layout etc.) ? What are the upsides/downsides for >> having one versus two execution engines ? > > To clarify, I mean that interpreters shine in embedded environment but > I'm not sure about full fledged server VM.
On the server side, I believe there is no consensus on whether the initial execution engine should be an interpreter or a quick compilation-time compiler. For example, Hotspot, J9, and IBM DK all use interpreters, where JRockit, ORP, and Jikes RVM all use quick compilers as their initial execution engines. What there *is* a consensus on is that there be a recompilation framework, i.e., a mechanism and policy for getting from slow-executing code (be it interpreted or quick compiled) to high performing optimized (i.e., JITted) code. All of the above systems have this feature. It is also desirable to get from JITted code to higher optimized code. So, I would say Harmony should definitely support multiple execution engines. Given that resource constrained environments are a target, it seems an interpreter should be included, just as it should include a JIT compiler. Mike