Hello,

In addition to the already proposed generic tasks like 5.0 support or
concurrent GC mentioned by Ivan, I'd like to add some more specific
things that might be interesting for people to look at as well:

(1) Complete Java bytecode verifier
Class structure verification and subroutines (e.g. finally blocks) has
to be added to the bytecode verifier in order to make it
full-functional (as required by JVMS spec).

(2) Handling out of C memory conditions
VM must throw OutOfMemoryException when there is a lack of C memory.
For example, if local or global handle cannot be allocated then OOME
should be thrown �C OutOfMemoryException must be thrown (this is
required by JNI/JVMTI spec).

(3) Eliminate C++ exceptions support
Сurrently some parts of VM and native part of kernel classes are
complied with C++ exception support which gives an extra overhead. One
of the issues is that some parts are using MS implementation of STL
which requires C++ exception support. MS STL has to be replaced with
something else.

(4) Destructive stack unwinding - perhaps it needs to be eliminated from VM.
In certain cases VM performs stack unwinding up to the nearest M2N
frame and just jumps to that point. If some C++ objects are available
on stack, destructors for these objects won't be called. This may
affect VM stability under stress conditions.

(5) Unicode support
Currently VM doesn't support classes/field/names which utilize
character other than ASCII. Handling of the Unicode names will likely
be needed for certification. This impacts class loader, natives
support, JNI and JVMTI components. Another issue is that VM would not
understand the command line args (like class name and start arguments)
if they are written with unicode characters.

(6) String internal implementation could be moved to Java.
Internal representation of strings is currently kept in the native
class loading code (string pool). To enable efficient resource
deallocation, they better be moved to Java code such that GC/class
unloading can operate with strings more efficiently.

(7) Unify C Memory management.
Native memory is currently allocated in DRLVM by ~10 different means
at different places. Some of examples are using APR memory pools, C
mallocs, C++ new operator e.t.c. This complicates the communication
between the different modules within DRLVM since there is no
consideration how to deallocate the memory being allocated by other
component and may trigger memory leaks in the system.
I wonder if there could be any ideas how the memory management
approach could be unified in the DRLVM? It may also help to monitor
and eliminate possible memory leaks in the system.

(8) Complete JNI and JVMTI implementations.
JNI and JVMTI specs are currently not completely implemented. For
example, JNI is missing weak references implementation, invocation
API. JVMTI is missing RedefineClasses function.
...
There certainly other gaps which I'm not aware of ;)

Any thoughts which of the above could be worth doing?

Thanks,
Andrey.


On 6/21/06, Rana Dasgupta <[EMAIL PROTECTED]> wrote:
On 6/20/06, Geir Magnusson Jr <[EMAIL PROTECTED]> wrote:
>
> >Build and dependency issues aside, what are the next functional
> >enhancements / features for DRLVM?
>
> >I think #1 is to get it to function with Java 5 classfiles, so we can
> >make the switch throughout the project.
>
> Geir,

  Good question. By next, I guess we mean in the relatively
near future...Some thoughts that come to mind in addition to 1.5 are:
 1. We should start running classlibraries and existing api tests against
the DRLVM bits. This is sure to identify bugs/issues that will need
addressing.
 2. We need to achieve completeness in the DRLVM VM functionality.....we
don't handle stack overflows well, efficient unmanagd heap management
issues, there is functional completenes needed in the verifier, optimized
locks( thin, deflatable, jit optimized ), improvements in JVMTI support as
Gregory points out.
 3. In garbage collection, one thread that Weldon has already started is
MMTk integration which looks promising, but while we finish that work, it
may also make sense to substitute the existing rudimentary GC with a more
functional one with better performance that can work as the default GC
outside the MMTk integrated suite.
4. We should also look at enhancements to the JITs ...and other than support
for new platforms ( 64 bit , down level platforms that support x87 but not
SSE* instructions..based on the minimum machine model we want to support eg
a pentium III running Windows/Linux )some of this work would benefit from
performance guidance...helpers should be inlined, some of the
optimizations eg., devirtualization perfected, polling to support
collection should consume less overhead, more optimized JNI invocation at
some point.
5. This is also in reference to the other thread you started about goals for
Harmony, it may help to establish some vectors that are important for us in
Harmony eg., among...1.5 and TCK compatibility, performance( benchmarking ),
startup time, memory footprint, and that in some sense will determine the
priorities. The  work to be done will fall out of this.

Feedback most welcome :-)

Thanks,
Rana


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Andrey Chernyshev
Intel Middleware Products Division

Reply via email to