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