Request for reviews (M): 6674600, 6259129 (last Escape Analysis changes for HS12)
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Mon Mar 17 13:38:29 PDT 2008
I updated 6674600 changes to fix the problem in the method
CallNode::may_modify() (added in 6674588 changeset):
at_ptr->add_offset(offset) throws assert when it's klass is not loaded.
I added at_ptr->klass()->is_loaded() check.
Should I also check that at_ptr->klass() is not interface and
is java klass? I assume that the klass for allocation is not interface
and is java klass. Am I right?
Also should I check that adrInst_t->klass()->is_subtype_of(at_ptr->klass())?
Or the alias check does that? I mean will the next be true (for instance klass):
if( adrInst_t->klass()->is_subtype_of(at_ptr->klass()) &&
adrInst_t->offset() < at_ptr->klass()->as_instance_klass()->size_helper()*wordSize) {
(C->get_alias_index(at_ptr->add_offset(adrInst_t->offset())->isa_oopptr()) ==
C->get_alias_index(adrInst_t)) == true;
}
Thanks,
Vladimir
Vladimir Kozlov wrote:
> Thank you for previous reviews.
>
> Here are my last EA changes for HS12.
>
> Note: both changesets have similar memory walking code but
> I don't want to optimize/combine this code now. I will do it later.
>
> Thanks,
> Vladimir
>
> ----------------------------------------------------------------------------
>
> http://webrev.invokedynamic.info/kvn/6674600/index.html
>
> Fixed 6674600: (Escape Analysis) Optimize memory graph for instance's
> fields
>
> Problem:
> To reallocate a scalarized object during a deoptimization we need
> to know the state (values) of object's non-static fields at a safepoint.
>
> Solution:
> Use aggressive memory optimizations during Iterative GVN
> to obtain values assigned to instance's non-static fields.
>
> ----------------------------------------------------------------------------
>
> http://webrev.invokedynamic.info/kvn/6259129/index.html
>
> Fixed 6259129: (Escape Analysis) scalar replacement for non-escaping
> objects
>
> Problem:
> To reallocate a scalarized object during a deoptimization we need
> to know the state (values) of object's non-static fields at a safepoint.
>
> Solution:
> Replace non-escaping allocations with SafePointScalarObjectNode
> for a scalar replacement during macro expansion of Allocate nodes.
> Do an additional memory search to obtain values assigned to instance's
> non-static fields. Disable scalar replacement if a field's value
> can't be found.
> ----------------------------------------------------------------------------
>
More information about the hotspot-compiler-dev
mailing list