harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivashin Sergey (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-3470) [drlvm][jit][opt] 64-bit to 32-bit value conversion though stack when storeing compressed reference
Date Fri, 23 Mar 2007 12:45:32 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-3470?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12483565
] 

Ivashin Sergey commented on HARMONY-3470:
-----------------------------------------

I believe the problem ("subissue 2") should be solved in Inst::getConstraint, not in Ia32SpillGen::update.

This will fix the root case of the problem and improves constraints calculation in Ia32ConstraintsResolver,
so operands could be assigned to registers in register allocator (bin pack or color graph),
which is better than shifting assignment to SpillGen.


> [drlvm][jit][opt] 64-bit to 32-bit value conversion though stack when storeing compressed
reference
> ---------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3470
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3470
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: EM64T
>            Reporter: George Timoshenko
>         Assigned To: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3470_1.patch, HARMONY-3470_2.patch
>
>
> Before storeing a reference it is being compressed.
> After compression the reference fits into 32 bits.
> But due to some collision Jitrino before storeing the reference performs a conversion:
> store the reference onto the stack as a 64-bit reference and then load it as a 32-bit
value.
> This code appeares after spillgen pass of codegenerator
> Asm code example:
> mov         r12,rcx                
> mov         rcx,2AAAAD800000h      
> sub         r12,rcx                
> mov         qword ptr [rsp+8],r12  
> mov         eax,dword ptr [rsp+8]  
> mov         dword ptr [rdi+1Ch],eax
> 3 latest movs should be replaced into the single command:
> mov         r12,rcx                
> mov         rcx,2AAAAD800000h      
> sub         r12,rcx                
> mov         dword ptr [rdi+1Ch],r12d
> There are two issues actually:
> - 64->32 conversion for compressed references
> - general conversion
> the first one can be solved in codeSelector
> the second one should be fixed in spillgen

-- 
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