You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Mikhail Fursov (JIRA)" <ji...@apache.org> on 2008/03/13 16:04:28 UTC
[jira] Assigned: (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 ]
Mikhail Fursov reassigned HARMONY-5602:
---------------------------------------
Assignee: Mikhail Fursov
> [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
>
> 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.