On Mar 29, 2012, at 7:25 PM, Christian Thalinger wrote:
>
> On Mar 28, 2012, at 7:31 PM, John Rose wrote:
>
>> On Mar 21, 2012, at 8:17 AM, Christian Thalinger wrote:
>>
>>> John, I think there is a bug in MacroAssembler::check_method_handle_type
>>> for x86 (with meth-lazy):
>>
>> That's correct. Thanks for noticing it; I'll push a fix. — John
>
> The weird thing is that when I implement it correctly on SPARC I get:
>
> MH _invokeBasic mh=0x00000007ab4a4fc0 saved_sp=0xffffffff7dcfb681
> args=0xffffffff7dcfbf40
> MethodHandle:(Ltest/java/lang/invoke/MethodHandlesTest$HasFields;)Z : #( ***
> unrecognized MH type }
> =============== DEBUG MESSAGE: _invokeBasic ================
>
> But it worked with the broken version.
Today I tried this again and it also fails on x86 (seems I didn't update the VM
the last time). I think the reason for this is that we also have to load the
basicType of mtype and compare these two:
// fetch mtype.form.basicType
load_heap_oop(Address(mtype_reg,
delayed_value(java_lang_invoke_MethodType::form_offset_in_bytes,
temp3_reg)), temp2_reg);
load_heap_oop(Address(temp2_reg,
delayed_value(java_lang_invoke_MethodTypeForm::basicType_offset_in_bytes,
temp3_reg)), temp2_reg);
// fetch mh.type.form.basicType
load_heap_oop(Address(temp_reg,
delayed_value(java_lang_invoke_MethodType::form_offset_in_bytes,
temp3_reg)), temp_reg);
load_heap_oop(Address(temp_reg,
delayed_value(java_lang_invoke_MethodTypeForm::basicType_offset_in_bytes,
temp3_reg)), temp_reg);
cmp_and_brx_short(temp_reg, temp2_reg, Assembler::notEqual, Assembler::pn,
wrong_method_type);
Correct?
-- Chris
>
> -- Chris
>
>> _______________________________________________
>> mlvm-dev mailing list
>> [email protected]
>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>
> _______________________________________________
> mlvm-dev mailing list
> [email protected]
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
_______________________________________________
mlvm-dev mailing list
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev