Request for reviews (M): 6674600, 6259129 (last Escape Analysis changes for HS12)
John Rose
John.Rose at Sun.COM
Tue Mar 18 21:28:25 PDT 2008
On Mar 17, 2008, at 1:38 PM, Vladimir Kozlov wrote:
> ----------------------------------------------------------------------
> ------ 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.
--- graphKit.cpp
missing use of 'mem' in last diff
--- callnode.cpp
suggest adding this to ciType.hpp:
int size() const { return type2size
[basic_type()]; }
+ int array_element_size() const { return type2aelembytes[basic_type
()]; }
--- PhiNode::split_out_instance
I like it, although it's very expensive.
Maybe it should push the whole mini-graph on the worklist before
making any splits, and bail out if/when the worklist gets too long.
I don't see why you put in the O.B.O. on the edge index:
+ uint i = stack.index() + 1;
+ stack.push(ophi, i - 1);
This seems clearer to me:
+ stack.push((Node *)this, 1);
+ uint i = stack.index(); assert(i >= 1, "not ctl edge");
+ stack.push(ophi, i);
--- memnode.cpp
+ } else if (mem->is_Proj() && mem->in(0)->is_MemBar()) {
+ mem = mem->in(0)->in(TypeFunc::Memory);
+ continue; // (a) advance through independent
MemBar memory
This is scary. Unless the membar is slice-specific,
it isn't really independent. Some membars (MemBarCPUOrder
inserted in library_call.cpp) are necessary to isolate
memory effects which do not appear to be related
(via the alias analysis) but in fact might. Some unsafe
stores are in this category. Also Object.clone intrinsic stores.
--- LoadNode::Ideal
Wow; lots here. I'll send more on this later.
-- John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20080318/aa2f7e58/attachment.html
More information about the hotspot-compiler-dev
mailing list