You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Xiaoming Gu (JIRA)" <ji...@apache.org> on 2008/11/13 12:53:44 UTC

[jira] Updated: (HARMONY-6016) [drlvm][jit] An undetected interference in Graph Coloring register allocation

     [ https://issues.apache.org/jira/browse/HARMONY-6016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Xiaoming Gu updated HARMONY-6016:
---------------------------------

    Description: 
When early_prop turned off in server_static mode, there is a NullPointerException during running startup.helloworld. The bug comes from the last BB of DataInputStream.readByte(). Following are the generated binary code for this bug:

  with early_prop
    	02D67855 I15: MOVSX t26(EAX):I_32,t12(EAX):I_32 

  without early_prop
	02D67865 I33: MOV t25(BH):I_8,t12(EAX):I_32 
	02D67867 I15: MOVSX t26(EAX):I_32,t25(BH):I_8 

BH is defined if no early_prop. But actually EBX is defined before the above part of code and assumed to keep unmodifed and be used later. So some part of EBX (BH) is changed uncarefully and an exception is thrown out finally. With early_prop the bug is gone because there is no changes about EBX.

I verified my guess by making some changes in Ia32RegAlloc0.cpp to only use bin packing register allocation and found no bug when running startup.helloworld. My basic assumptions are early_prop is NOT indispensable and each optimization pass should be independent as much as possible.

  was:
When early_prop turned off in server_static mode, there is a NullPointerException during running startup.helloworld. The bug comes from the last BB of DataInputStream.readByte(). Following are the generated binary code for this bug:

  with early_prop
    	02D67855 I15: MOVSX t26(EAX):I_32,t12(EAX):I_32 

  without early_prop
	02D67865 I33: MOV t25(BH):I_8,t12(EAX):I_32 
	02D67867 I15: MOVSX t26(EAX):I_32,t25(BH):I_8 

BH is defined if no early_prop. But actually EBX is defined before the above part of code and assumed to keep unmodifed and be used later. So some part of EBX (BH) is changed uncarefully and an exception is thrown out finally. With early_prop the bug is gone because there is no changes about EBX.

I verified my guess by changing server_static.emconf to only use bin packing register allocation and found no bug when running startup.helloworld. My basic assumption is early_prop is NOT indispensable and each optimization pass should be independent as much as possible.


> [drlvm][jit] An undetected interference in Graph Coloring register allocation
> -----------------------------------------------------------------------------
>
>                 Key: HARMONY-6016
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6016
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: IA32 Windows
>            Reporter: Xiaoming Gu
>
> When early_prop turned off in server_static mode, there is a NullPointerException during running startup.helloworld. The bug comes from the last BB of DataInputStream.readByte(). Following are the generated binary code for this bug:
>   with early_prop
>     	02D67855 I15: MOVSX t26(EAX):I_32,t12(EAX):I_32 
>   without early_prop
> 	02D67865 I33: MOV t25(BH):I_8,t12(EAX):I_32 
> 	02D67867 I15: MOVSX t26(EAX):I_32,t25(BH):I_8 
> BH is defined if no early_prop. But actually EBX is defined before the above part of code and assumed to keep unmodifed and be used later. So some part of EBX (BH) is changed uncarefully and an exception is thrown out finally. With early_prop the bug is gone because there is no changes about EBX.
> I verified my guess by making some changes in Ia32RegAlloc0.cpp to only use bin packing register allocation and found no bug when running startup.helloworld. My basic assumptions are early_prop is NOT indispensable and each optimization pass should be independent as much as possible.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.