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-3470) [drlvm][jit][opt] 64-bit to 32-bit value conversion though stack when storeing compressed reference
Date Thu, 22 Mar 2007 11:14:32 GMT
[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
            Priority: Minor


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