Thanks folks. In the meantime (as part of inspecting that regression that 
Benjamin Winterberg pointed out)I realized that there often seems to be a 
significant performance difference between loading an operand as Object and 
converting to double, and loading it as double (when we're allowed to reorder 
converts and loads). That is, an "i < size" (where size is in scope and i is 
double) can be emitted as:

  dload 5 // i
  aload 2 // scope
  invokedynamic dyn:getProp|getElem|getMethod:size(Object;)D // size
  dcmpg

instead of 

  dload 5
  aload 2
  invokedynamic dyn:getProp|getElem|getMethod:size(Object;)Object
  invokestatic JSType.toNumber(Object)
  dcmpg

The first one is actually faster, especially when size is already a number due 
to dual fields (it was just unprovable statically). For this, I uploaded a 
small differential patch between what you already reviewed and the new 
modification. Please review this as well 
<http://cr.openjdk.java.net/~attila/8035712/webrev.01/>

Thanks,
  Attila.

On Mar 4, 2015, at 5:17 PM, Marcus Lagergren <[email protected]> 
wrote:

> +1 if you have done the octane regression analysis.
> 
>> On 04 Mar 2015, at 11:34, Attila Szegedi <[email protected]> wrote:
>> 
>> Please review JDK-8035712 at 
>> <http://cr.openjdk.java.net/~attila/8035712/webrev.00> for 
>> <https://bugs.openjdk.java.net/browse/JDK-8035712>
>> 
>> The JIRA issue has notes on the implementation: 
>> <https://bugs.openjdk.java.net/browse/JDK-8035712?focusedCommentId=13615184&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13615184>
>> 
>> Thanks,
>> Attila.
> 

Reply via email to