Request for reviews (L): 6695810 and 6703890
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Mon May 19 21:31:21 PDT 2008
As Chuck suggested, I divided the original 6695810 changes into 3 parts.
6703888 was reviewed by Tom and Coleen and is ready to go
but I want to push it after 6695810 and 6703890.
6695810 and 6703890 were reviewed only by Tom and I need
a second review for both.
Thanks,
Vladimir
-----------------------------------------------
http://webrev.invokedynamic.info/kvn/6695810_only/index.html
Problem:
After CastPP is removed by PhaseCCP EncodeP was moved above the null check
(EncodeP and DecodeN don't have control edge). As result the NotNULL type
is not valid any more.
Solution:
Set control edge for EncodeP and DecodeN nodes using MemNode::Ideal_DU_PostCCP().
Also fix next problems:
- replace Type::is_narrow() with more precise Type::is_ptr_to_narrowoop()
defined during TypeOopPtr construction,
- use subclass check instead of alias types check in CallNode::may_modify(),
- call PhiNode::split_out_instance() also for Phi nodes with
non-instance OopPtr type which matches the instance type,
- stop compilation instead of VM exit when there is no space
for scratch buffer in CodeCache,
- don't flatten instance type in alias types,
- skip the split through phi in LoadNode::Ideal() if the Region node
dominates load's address,
- an allocation is not scalar replaceable if the resuilt is stored
into unknown array's element,
- try 2 Region's input paths in Node::dominates(),
- add missing checks for ConN node.
Added the test case. Also added the test case for 6689060.
Reviewed by: never
Fix verified (y/n): y, failed test
Other testing:
JPRT, CTW, nsk tests
-----------------------------------------------
http://webrev.invokedynamic.info/kvn/6703890/index.html
Fixed 6703890: Compressed Oops: add LoadNKlass node to generate narrow oops (32-bits) compare instructions
Problem:
Currently C2 generates DecodeN and CmpP (64-bits) instructions for
klass and oop NULL checks with Compressed Oops.
Solution:
Add LoadNKlass and CMoveN nodes, use CmpN and ConN nodes and
add correspondent platform specific assembler instructions
to generate narrow oops (32-bits) compare instructions
to avoid decoding.
Reviewed by: never
Fix verified (y/n): y, check generated code
Other testing:
JPRT, CTW, nsk tests
-----------------------------------------------
http://webrev.invokedynamic.info/kvn/6703888/index.html
Fixed 6703888: Compressed Oops: use the 32-bits gap after klass in a object
Problem:
With Compressed Oops there is 32-bits gap after narrow 'klass' field
in a object. Currently it is filled only with primitive type fields.
Solution:
Use the gap also for a narrow oop field and a boxing object value
(except Long and Double). Use heapOopSize for
instanceKlass::_nonstatic_field_size value instead of wordSize
to define the size more precisely.
Reviewed by: coleen, never
Fix verified (y/n): y, check generated offsets
Other testing:
JPRT, CTW, nsk tests
More information about the hotspot-compiler-dev
mailing list