You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Lijuan Xiao (JIRA)" <ji...@apache.org> on 2008/10/29 07:28:44 UTC

[jira] Updated: (HARMONY-5602) [drlvm][jit][opt][performance] nullcheck for a field of boolean type

     [ 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 method.
> 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.