review (S) for 6856025: assert(_base >= OopPtr && _base <= KlassPtr,"Not a Java pointer")
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Tue Jun 30 15:13:31 PDT 2009
Sorry, in the original webrev (webrev/g1) which you sent me
there were no changes in graphKit.cpp so I assumed you missed it.
But I see now in the final changes you have it.
Sorry for confusion.
Thanks,
Vladimir
Tom Rodriguez wrote:
>
> On Jun 30, 2009, at 2:49 PM, Vladimir Kozlov wrote:
>
>> Tom Rodriguez wrote:
>>> On Jun 30, 2009, at 2:33 PM, Vladimir Kozlov wrote:
>>>> After sending this I don't see that you fixed store_oop_to_unknown.
>>>> Is it intentional to use TypeInstPtr::BOTTOM as val_type in case of
>>>> narrow field/element?
>>> The value_type for the prebarrier is declared to be TypeOopPtr since
>>> it bottoms out in LoadNode::make which always returns the wide type.
>>> So TypeInstPtr::BOTTOM is the worst case type for the
>>> store_oop_to_unknown case. Is there something wrong with that?
>>
>> Nothing wrong with it. I'm just wondering why you don't use more precise
>> type for array's element (instance's field type is fine) by using
>> make_oopptr().
>
> I'm confused. This whole chunk tries to pick the best type it can for
> store_oop_to_unknown.
>
> const TypeOopPtr* val_type = NULL;
> if (adr_type->isa_instptr()) {
> if (at->field() != NULL) {
> // known field. This code is a copy of the do_put_xxx logic.
> ciField* field = at->field();
> if (!field->type()->is_loaded()) {
> val_type = TypeInstPtr::BOTTOM;
> } else {
> val_type = TypeOopPtr::make_from_klass(field->type()->as_klass());
> }
> }
> } else if (adr_type->isa_aryptr()) {
> val_type = adr_type->is_aryptr()->elem()->make_oopptr();
> }
> if (val_type == NULL) {
> val_type = TypeInstPtr::BOTTOM;
> }
>
> What change are you suggesting?
>
> tom
>
>>
>> Vladimir
>>
>>> tom
>>>>
>>>> Thanks,
>>>> Vladimir
>>>>
>>>> Vladimir Kozlov wrote:
>>>>> Looks good.
>>>>> Vladimir
>>>>> Tom Rodriguez wrote:
>>>>>> http://cr.openjdk.java.net/~never/6856025/
>
More information about the hotspot-compiler-dev
mailing list