review for 7045514: SPARC assembly code for JSR 292 ricochet frames
Tom Rodriguez
tom.rodriguez at oracle.com
Thu Jun 2 11:52:57 PDT 2011
>
>>
>> MethodHandles::verify_stack_move() has commented code. Should UNREASONABLE_STACK_MOVE depends on LP64?
>
> I'm going to rework this.
We seem to need a larger slop on sparc though I'm not totally clear why. I think it's because of the register save area but I'm not sure. I increased it to 31 which allows RicochetTest to pass with max arity 255.
tom
>
>>
>> Could you move following verification code under first condition?:
>>
>> + if (collect_count_constant >= 0) {
>> + collect_count = collect_count_constant;
>> + } else {
>> + __ load_method_handle_vmslots(O1_collect_count, G3_method_handle, O2_scratch);
>> + collect_count = O1_collect_count;
>> + }
>> + #ifdef ASSERT
>> + if (VerifyMethodHandles && collect_count_constant >= 0) {
>> + BLOCK_COMMENT("verify collect_count_constant {");
>> + __ load_method_handle_vmslots(O3_scratch, G3_method_handle, O2_scratch);
>>
>> The same for dest_slot_constant verification.
>
> I can join them but I think I might swap the conditions.
>
> tom
>
>>
>> Thanks,
>> Vladimir
>>
>> Tom Rodriguez wrote:
>>> http://cr.openjdk.java.net/~never/7045514
>>> 2389 lines changed: 1833 ins; 363 del; 193 mod; 46455 unchg
>>> 7045514: SPARC assembly code for JSR 292 ricochet frames
>>> Reviewed-by:
>>> This is the complete support for Ricochet frames on sparc. Christian
>>> did all the work and testing and I just did some final testing and bug
>>> fixing.
>>> A potential issue with checkcasts reusing locals in
>>> methodHandleWalk.cpp was fixed. Comments weren't being transferred
>>> onto the MethodHandlesAdapterBlob. A derived oop issue was found
>>> where an assert was complaining that an offset was too large but
>>> there's no real restriction on the offset of derived oops so I
>>> disabled the assert. ResourceMarks were added in verification logic.
>>> A verify_vmargslot call was verifying against the wrong signature
>>> resulting in occasional incorrect exceptions. I updated the
>>> MacroAssembler::debug assertion messages to include the passed in
>>> message. Many of blob declarations were moved into shared code so
>>> that we don't have to replicate code. Some x86 method handles code
>>> was changed to make signatures match.
>>> Currently it passes all the jdk regression tests on sparc but I can't
>>> run any of the others because of version mismatches between the JDK
>>> and the tests. Earlier versions ran those as well they had
>>> previously. I also ran the jruby tests and those seemed clean as well.
>
More information about the hotspot-compiler-dev
mailing list