Mercurial > hg > graal-compiler
comparison src/share/vm/opto/memnode.cpp @ 3961:a92cdbac8b9e
7081933: Use zeroing elimination optimization for large array
Summary: Don't zero new typeArray during runtime call if the allocation is followed by arraycopy into it.
Reviewed-by: twisti
author | kvn |
---|---|
date | Mon, 26 Sep 2011 10:24:05 -0700 |
parents | 11a4af030e4b |
children | 670a74b863fc |
comparison
equal
deleted
inserted
replaced
3960:f08d439fab8c | 3961:a92cdbac8b9e |
---|---|
2845 // will be considered for capture by an InitializeNode. This puts a | 2845 // will be considered for capture by an InitializeNode. This puts a |
2846 // reasonable limit on the complexity of optimized initializations. | 2846 // reasonable limit on the complexity of optimized initializations. |
2847 | 2847 |
2848 //---------------------------InitializeNode------------------------------------ | 2848 //---------------------------InitializeNode------------------------------------ |
2849 InitializeNode::InitializeNode(Compile* C, int adr_type, Node* rawoop) | 2849 InitializeNode::InitializeNode(Compile* C, int adr_type, Node* rawoop) |
2850 : _is_complete(false), | 2850 : _is_complete(Incomplete), |
2851 MemBarNode(C, adr_type, rawoop) | 2851 MemBarNode(C, adr_type, rawoop) |
2852 { | 2852 { |
2853 init_class_id(Class_Initialize); | 2853 init_class_id(Class_Initialize); |
2854 | 2854 |
2855 assert(adr_type == Compile::AliasIdxRaw, "only valid atp"); | 2855 assert(adr_type == Compile::AliasIdxRaw, "only valid atp"); |
2883 return (req() > RawStores); | 2883 return (req() > RawStores); |
2884 } | 2884 } |
2885 | 2885 |
2886 void InitializeNode::set_complete(PhaseGVN* phase) { | 2886 void InitializeNode::set_complete(PhaseGVN* phase) { |
2887 assert(!is_complete(), "caller responsibility"); | 2887 assert(!is_complete(), "caller responsibility"); |
2888 _is_complete = true; | 2888 _is_complete = Complete; |
2889 | 2889 |
2890 // After this node is complete, it contains a bunch of | 2890 // After this node is complete, it contains a bunch of |
2891 // raw-memory initializations. There is no need for | 2891 // raw-memory initializations. There is no need for |
2892 // it to have anything to do with non-raw memory effects. | 2892 // it to have anything to do with non-raw memory effects. |
2893 // Therefore, tell all non-raw users to re-optimize themselves, | 2893 // Therefore, tell all non-raw users to re-optimize themselves, |