Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/block.cpp @ 3842:c7b60b601eb4
7069452: Cleanup NodeFlags
Summary: Remove flags which duplicate information in Node::NodeClasses.
Reviewed-by: never
author | kvn |
---|---|
date | Wed, 27 Jul 2011 17:28:36 -0700 |
parents | f95d63e2154a |
children | 95134e034042 |
comparison
equal
deleted
inserted
replaced
3841:0f34fdee809e | 3842:c7b60b601eb4 |
---|---|
163 | 163 |
164 int success_result = completely_empty; | 164 int success_result = completely_empty; |
165 int end_idx = _nodes.size()-1; | 165 int end_idx = _nodes.size()-1; |
166 | 166 |
167 // Check for ending goto | 167 // Check for ending goto |
168 if ((end_idx > 0) && (_nodes[end_idx]->is_Goto())) { | 168 if ((end_idx > 0) && (_nodes[end_idx]->is_MachGoto())) { |
169 success_result = empty_with_goto; | 169 success_result = empty_with_goto; |
170 end_idx--; | 170 end_idx--; |
171 } | 171 } |
172 | 172 |
173 // Unreachable blocks are considered empty | 173 // Unreachable blocks are considered empty |
195 // executed infrequently. Check to see if the block ends in a Halt or | 195 // executed infrequently. Check to see if the block ends in a Halt or |
196 // a low probability call. | 196 // a low probability call. |
197 bool Block::has_uncommon_code() const { | 197 bool Block::has_uncommon_code() const { |
198 Node* en = end(); | 198 Node* en = end(); |
199 | 199 |
200 if (en->is_Goto()) | 200 if (en->is_MachGoto()) |
201 en = en->in(0); | 201 en = en->in(0); |
202 if (en->is_Catch()) | 202 if (en->is_Catch()) |
203 en = en->in(0); | 203 en = en->in(0); |
204 if (en->is_Proj() && en->in(0)->is_MachCall()) { | 204 if (en->is_MachProj() && en->in(0)->is_MachCall()) { |
205 MachCallNode* call = en->in(0)->as_MachCall(); | 205 MachCallNode* call = en->in(0)->as_MachCall(); |
206 if (call->cnt() != COUNT_UNKNOWN && call->cnt() <= PROB_UNLIKELY_MAG(4)) { | 206 if (call->cnt() != COUNT_UNKNOWN && call->cnt() <= PROB_UNLIKELY_MAG(4)) { |
207 // This is true for slow-path stubs like new_{instance,array}, | 207 // This is true for slow-path stubs like new_{instance,array}, |
208 // slow_arraycopy, complete_monitor_locking, uncommon_trap. | 208 // slow_arraycopy, complete_monitor_locking, uncommon_trap. |
209 // The magic number corresponds to the probability of an uncommon_trap, | 209 // The magic number corresponds to the probability of an uncommon_trap, |
943 j = b->end_idx(); | 943 j = b->end_idx(); |
944 Node *bp = (Node*)b->_nodes[b->_nodes.size()-1]->is_block_proj(); | 944 Node *bp = (Node*)b->_nodes[b->_nodes.size()-1]->is_block_proj(); |
945 assert( bp, "last instruction must be a block proj" ); | 945 assert( bp, "last instruction must be a block proj" ); |
946 assert( bp == b->_nodes[j], "wrong number of successors for this block" ); | 946 assert( bp == b->_nodes[j], "wrong number of successors for this block" ); |
947 if( bp->is_Catch() ) { | 947 if( bp->is_Catch() ) { |
948 while( b->_nodes[--j]->Opcode() == Op_MachProj ) ; | 948 while( b->_nodes[--j]->is_MachProj() ) ; |
949 assert( b->_nodes[j]->is_Call(), "CatchProj must follow call" ); | 949 assert( b->_nodes[j]->is_MachCall(), "CatchProj must follow call" ); |
950 } | 950 } |
951 else if( bp->is_Mach() && bp->as_Mach()->ideal_Opcode() == Op_If ) { | 951 else if( bp->is_Mach() && bp->as_Mach()->ideal_Opcode() == Op_If ) { |
952 assert( b->_num_succs == 2, "Conditional branch must have two targets"); | 952 assert( b->_num_succs == 2, "Conditional branch must have two targets"); |
953 } | 953 } |
954 } | 954 } |