harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lijuan Xiao (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-5602) [drlvm][jit][opt][performance] nullcheck for a field of boolean type
Date Wed, 29 Oct 2008 06:28:44 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-5602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Lijuan Xiao updated HARMONY-5602:

    Attachment: movx_formated.patch

The updated patch removes unused variable declaration and is better formatted.  It is built
successfully with r707991 and smoke test. Yes, the optimization works at the first run of
peephole that is before the regalloc/spillgen pass. I just do performance test with specjbb2005.
In fact, the score after the optimization is slightly lower (with -Xms256m -Xmx256m -Xem:server).

> [drlvm][jit][opt][performance] nullcheck for a field of boolean type
> --------------------------------------------------------------------
>                 Key: HARMONY-5602
>                 URL: https://issues.apache.org/jira/browse/HARMONY-5602
>             Project: Harmony
>          Issue Type: Improvement
>          Components: DRLVM
>            Reporter: George Timoshenko
>            Assignee: Mikhail Fursov
>            Priority: Minor
>         Attachments: movx.patch, movx_formated.patch
> The problem is reproducible at least for java_lang_ThreadGroup.remove(Ljava_lang_Thread;)V
> It contains the following byte codes:
> BYTECODE: GETFIELD        bc-offset=7 (java/lang/ThreadGroup::destroyed)
> BYTECODE: IFEQ        bc-offset=10
> HIR for these two bytecodes is:
> I27:ldflda    [t1.java/lang/ThreadGroup::destroyed] -) t12:ref:bool
> I28:ldind.unc:b   [t12] ((t10,t11)) -) t13:int32
> I29:ldci4     #0 -) t14:int32
> I30:if ceq.i4  t13, t14 goto L4
> As you can see bool value is extended to 32-bit integer type type. (The reason is: 3.3.4
of JVM spec.http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#22909)
> But in the case there are no any other usage of t13. So the comparison can be performed
without loading the field from memory to a register.
> (there is no copy propagation because of MOVZX not just a MOV for loading from memory)
> The same problem may persist for all integer fields of less than 32 bits size.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message