harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrey Chernyshev (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-1125) [DRLVM] Thread Manager component contribution
Date Wed, 09 Aug 2006 20:42:14 GMT
     [ http://issues.apache.org/jira/browse/HARMONY-1125?page=all ]

Andrey Chernyshev updated HARMONY-1125:

    Attachment: DRLVM-update-for-new-ThreadManager-09-08e.diff

Patch that integrates thread manager into DRLVM

> [DRLVM] Thread Manager component contribution
> ---------------------------------------------
>                 Key: HARMONY-1125
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1125
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Contributions
>            Reporter: Andrey Chernyshev
>         Attachments: DRLVM-update-for-new-ThreadManager-09-08e.diff, ThreadManager-09-08e.zip
> This patch is an improvement for DRLVM which consolidates it's threading 
> subsystem into a single component - Thread Manager.
> The attached bundle consists of two parts:
> 1) ThreadManager-09-08e.zip
>         - Thread Manager code, tests and documentation 
>           (it has to be unzipped into drlvm/trunk directory)
> 2) DRLVM-update-for-new-ThreadManager-09-08e.diff
>         - Patch that integrates Thread Manager into DRLVM.
> The primary purpose of this update is to make a step toward archiving a 
> better modularity within the DRLVM, as well as do some enhancements over 
> its threading subsystem. This is the result of refactoring of the 
> threading-related code in the DRLVM into a separate library which 
> is now implemented on top of the Apache Porting Layer.
> Here is the summary of enhancements that were made:
> - Threading becomes a modular component in JVM with a well-defined interface 
>   (one may try playing now with the different threading implementations without 
>    rewriting random pieces of the drlvm code);
> - Thread Manager is implemented on top of APR which may help to simplify 
>   it's porting to other platforms (the only platform dependent piece is JIT helpers)
> - Java monitors are reimplemented such that:
>     - Performance is improved with help of the lock reservation algorithm 
>       (see http://portal.acm.org/citation.cfm?id=582433)
>     - Recursion overflow condition is now handled correctly 
> - Thread creation overhead is decreased;
> - Java threads now are always created at the single place; 
> - Miscellaneous threading bugs went away, for example: hangs during thread stress tests,

>   crashes on sleep(), incorrect reporting of JVMTI state and others.
> Note that the low-level (or "native") interface of the Thread Manager 
> has been designed to be hythread-compatible with the intent of having 
> classlib and DRLVM sharing the same threading library. It also adds
> a certain extensions to the original hythread which were required by
> drlvm (located in hythread_ext.h). However, these functions can still 
> be easily renamed from hythread_* to something else if people believe 
> this idea is wrong.
> Thread Manager comes with the extensive documentation which uncovers some 
> of the details of the DRLVM's threading subsystem (you may find it at vm/thread/doc/ThreadManager.htm).
> There is also a set of unit tests for Thread Manager (located at vm/tests/unit) 
> those framework can probably be used for the further unit tests development for 
> other modules in DRLVM.
> The integration patch consists of the following pieces:
> build/make/* - changes necessary to include unit tests and accommodate 
>                new threading structure
> build/patches/*/APR - quick fixes to a few bugs in the APR: apr_thread_cond 
>                on Windows, apr_thread_yield on Linux.
>                Note that the Thread Manager implementation requires a certain 
>                funct-ty which appeared to be beyond the APR, these additional
>                functions were added for now at vm\port\include\apr_thread_ext.h:
>                   apr_thread_set_priority()
>                   apr_memory_rw_barrier()
>                   apr_thread_yield_other()
>                   apr_thread_times()
>                   apr_thread_cancel()
>                If we find this code useful we may try proposing them
>                back to the APR project.
> vm/vmcore/src/thread/*  - These files contained old threading code which is now 
>                either completely removed or re-mapped into new Thread Manager.
> vm/vmcore/src/thread/hythr/
>              - it was "hythread" emulation library, now it is replaced with the 
>                more funcitonal "native" layer of the Thread Manager (which still
>                implements the most of hythread_* API).
> vm/port/src/encoder/* - added support for ROR instruction to the encoder
> Other changes were done as required to replace the references to the old threading code
> with the calls/references to the new Thread Manager.
> Thank you,
> Andrey Chernyshev
> Intel Middleware Products Division

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message