possible bug in x86 MacroAssembler::delayed_value_impl

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Fri May 15 10:53:29 PDT 2009


The delayed_value came after the assembler merge but it was probably  
developed in a workspace predating the assembler merge.  It's  
definitely a bug though.  I don't love the use of hlt() there since it  
would fail somewhat mysteriously when it happened.  Normally we'd use  
something like stop("unexpected null") but maybe John didn't want to  
expand the code so much?

tom

On May 15, 2009, at 5:30 AM, Christian Thalinger wrote:

> Hi!
>
> While looking at the code I found this one:
>
> diff --git a/src/cpu/x86/vm/assembler_x86.cpp b/src/cpu/x86/vm/ 
> assembler_x86.cpp
> --- a/src/cpu/x86/vm/assembler_x86.cpp
> +++ b/src/cpu/x86/vm/assembler_x86.cpp
> @@ -7644,7 +7644,7 @@ RegisterOrConstant MacroAssembler::delay
>
> #ifdef ASSERT
>   Label L;
> -  testl(tmp, tmp);
> +  testptr(tmp, tmp);
>   jccb(Assembler::notZero, L);
>   hlt();
>   bind(L);
>
> I think it's a bug since tmp is a pointer.  Maybe an overlook during
> 32/64-bit merging?
>
> -- Christian
>




More information about the hotspot-compiler-dev mailing list