harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Egor Pasko <egor.pa...@gmail.com>
Subject Re: [drlvm] what's next?
Date Thu, 22 Jun 2006 09:16:24 GMT
On the 0x18F day of Apache Harmony Rana Dasgupta wrote:
> On 6/20/06, Geir Magnusson Jr <geir@pobox.com> 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,
> 
> [...]
> 
> 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.

Addressing JIT changes, I would suggest some short-term
iprovements/projects that are interesting to do to quickly catch up
with DRLVM optimizing JIT(s):

* Devirtualization improvements 

  Currently DRLVM does *not* devirtualize interface calls. 

  A not-so-quick hack for the start: make a class-test based on the
  class that
  a) implements the interface
  b) has the the method invoked with some instance (first invocations are
  easy to register in JIT since they initiate compilation phase)
  
  In future, a more sophisticated heuristic would be interesting to
  experiment with. Ideas?

* Back-Branch-Polling (BBP) improvements

  BBP is an optimization pass that inserts extra helper-function-calls
  (safepoints) in loops to make them interruptable
  (suspendable). Necessary for Thread::stop() and quick response to
  GC.

  In DRLVM BBP introduces an overhead about 1-2% (on single-threaded
  workloads), which could be optimized out. Currently, backedges are
  polled for non-interruptable loops. We could detect finite loops and
  poll them more wisely.

  BTW, Jrockit sometimes forgets about polling. Harmony should be better.
  Yet, we can turn BBP off with a quick experimental option:
        -Xjit ia32::bbp=off{0},jet::no_bbp=true

* Over-synchronization removal

  Nested synchronization blocks on the same object can be removed. Not
  done in DRLVM yet.

So, any compiler-guy interested in JIT enhancements is welcome to
participate. Any JIT-related questions are welcome too. 

Voluteers? :)

[1] LIL: An Architecture-Neutral Language for Virtual-Machine Stubs
    (http://www.usenix.org/events/vm04/tech/full_papers/glew/glew_html/index.html)

-- 
Egor Pasko, Intel Managed Runtime Division



---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message