Lines Matching refs:self
175 TreeNodeType* self = static_cast<TreeNodeType*>(n); in fold_tree() local
176 self->join(ed.context); in fold_tree()
177 self->m_allocator.delete_object(self, ed); in fold_tree()
265 Partition& self() { return *static_cast<Partition*>(this); } // CRTP helper in self() function
282 if ( self().is_divisible() ) { in execute()
284 typename Partition::split_type split_obj = self().template get_split<Range>(); in execute()
286 } while ( range.is_divisible() && self().is_divisible() ); in execute()
289 self().work_balance(start, range, ed); in execute()
320 using partition_type_base<Partition>::self; // CRTP helper to get access to derived classes
327 self().my_divisor = do_split(src, split_obj); in proportional_mode()
336 return self().my_divisor > my_partition::factor; in is_divisible()
346 std::size_t n = self().my_divisor / my_partition::factor; in get_split()
365 using proportional_mode<Partition>::self;
367 my_max_affinity(self().my_divisor) {} in linear_affinity_mode()
373 if (self().my_divisor) { in spawn_task()
388 using Mode::self;
409 …if( !(self().my_divisor / Mode::my_partition::factor) ) { // if not from the top P tasks of binary… in check_being_stolen()
410 self().my_divisor = 1; // TODO: replace by on-stack flag (partition_state's member)? in check_being_stolen()
434 if( !range.is_divisible() || !self().max_depth() ) { in work_balance()
440 range_pool.split_to_fill(self().max_depth()); // fill range pool in work_balance()
441 if( self().check_for_demand( start ) ) { in work_balance()
447 … if( range_pool.is_divisible(self().max_depth()) ) // was not enough depth to fork a task in work_balance()
458 if ( self().my_divisor > 1 ) // produce affinitized tasks while they have slot in array in check_for_demand()
460 else if ( self().my_divisor && my_max_depth ) { // make balancing task in check_for_demand()
461 … self().my_divisor = 0; // once for each task; depth will be decreased in align_depth() in check_for_demand()