本文整理汇总了C++中VectorSet::test_set方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorSet::test_set方法的具体用法?C++ VectorSet::test_set怎么用?C++ VectorSet::test_set使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VectorSet
的用法示例。
在下文中一共展示了VectorSet::test_set方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: set_next_call
//------------------------------set_next_call----------------------------------
void Block::set_next_call( Node *n, VectorSet &next_call, Block_Array &bbs ) {
if( next_call.test_set(n->_idx) ) return;
for( uint i=0; i<n->len(); i++ ) {
Node *m = n->in(i);
if( !m ) continue; // must see all nodes in block that precede call
if( bbs[m->_idx] == this )
set_next_call( m, next_call, bbs );
}
}
示例2: set_next_call
//------------------------------set_next_call----------------------------------
void PhaseCFG::set_next_call(Block* block, Node* n, VectorSet& next_call) {
if( next_call.test_set(n->_idx) ) return;
for( uint i=0; i<n->len(); i++ ) {
Node *m = n->in(i);
if( !m ) continue; // must see all nodes in block that precede call
if (get_block_for_node(m) == block) {
set_next_call(block, m, next_call);
}
}
}
示例3: add_to_worklist
// Put node on worklist if it is (or was) not there.
inline void add_to_worklist(PointsToNode* pt) {
PointsToNode* ptf = pt;
uint pidx_bias = 0;
if (PointsToNode::is_base_use(pt)) {
// Create a separate entry in _in_worklist for a marked base edge
// because _worklist may have an entry for a normal edge pointing
// to the same node. To separate them use _next_pidx as bias.
ptf = PointsToNode::get_use_node(pt)->as_Field();
pidx_bias = _next_pidx;
}
if (!_in_worklist.test_set(ptf->pidx() + pidx_bias)) {
_worklist.append(pt);
}
}
示例4: expand_recur
//------------------------------expand_recur----------------------------
static void expand_recur( Node *n, VectorSet &visited, Node_List &worklist ) {
if( !n ) return;
if( visited.test_set(n->_idx) ) return;
switch (n->class_id()) {
case Node::Class_Allocate: // We use millicode instead of inline allocation
case Node::Class_AllocateArray:
case Node::Class_Lock:
case Node::Class_Unlock:
case Node::Class_SafePoint:
// case Node::Class_GetKlass:
worklist.push(n);
}
for(uint i=0; i<n->req(); i++)
expand_recur(n->in(i),visited,worklist);
}
示例5: _dump_cfg
void PhaseCFG::_dump_cfg( const Node *end, VectorSet &visited ) const {
const Node *x = end->is_block_proj();
assert( x, "not a CFG" );
// Do not visit this block again
if( visited.test_set(x->_idx) ) return;
// Skip through this block
const Node *p = x;
do {
p = p->in(0); // Move control forward
assert( !p->is_block_proj() || p->is_Root(), "not a CFG" );
} while( !p->is_block_start() );
// Recursively visit
for( uint i=1; i<p->req(); i++ )
_dump_cfg(p->in(i),visited);
// Dump the block
_bbs[p->_idx]->dump(&_bbs);
}