harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "George Timoshenko (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-5602) [drlvm][jit][opt][performance] nullcheck for a field of boolean type
Date Thu, 13 Mar 2008 04:37:46 GMT
[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
            Priority: Minor


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.


Mime
View raw message