void reset( ) { DVLOG(5) << "In " << __PRETTY_FUNCTION__; CHECK( !acquire_started_ || acquired_ ) << "inconsistent state for reset"; acquire_started_ = false; acquired_ = false; thread_ = NULL; num_messages_ = 0; response_count_ = 0; expected_reply_payload_ = sizeof( T ) * *count_; total_reply_payload_ = 0; start_time_ = 0; network_time_ = 0; if( *count_ == 0 ) { DVLOG(5) << "Zero-length acquire"; *pointer_ = NULL; acquire_started_ = true; acquired_ = true; } else if( request_address_->is_2D() ) { num_messages_ = 1; if( request_address_->core() == Grappa::mycore() ) { DVLOG(5) << "Short-circuiting to address " << request_address_->pointer(); *pointer_ = request_address_->pointer(); acquire_started_ = true; acquired_ = true; } } else { DVLOG(5) << "Straddle: block_max is " << (*request_address_ + *count_).block_max() ; DVLOG(5) << ", request_address is " << *request_address_; DVLOG(5) << ", sizeof(T) is " << sizeof(T); DVLOG(5) << ", count is " << *count_; DVLOG(5) << ", block_min is " << request_address_->block_min(); DVLOG(5) << "Straddle: address is " << *request_address_ ; DVLOG(5) << ", address + count is " << *request_address_ + *count_; ptrdiff_t byte_diff = ( (*request_address_ + *count_ - 1).last_byte().block_max() - request_address_->first_byte().block_min() ); DVLOG(5) << "Straddle: address block max is " << request_address_->block_max(); DVLOG(5) << " address + count block max is " << (*request_address_ + *count_).block_max(); DVLOG(5) << " address block min " << request_address_->block_min(); DVLOG(5) << "Straddle: diff is " << byte_diff << " bs " << block_size; num_messages_ = byte_diff / block_size; } if( num_messages_ > 1 ) DVLOG(5) << "****************************** MULTI BLOCK CACHE REQUEST ******************************"; DVLOG(5) << "In " << __PRETTY_FUNCTION__ << "; detecting straddle for sizeof(T):" << sizeof(T) << " count:" << *count_ << " num_messages_:" << num_messages_ << " request_address:" << *request_address_; }
NullAcquirer(GlobalAddress<T> * request_address, size_t * count, T** pointer) : request_address_(request_address), count_(count), pointer_(pointer) { VLOG(6) << "pointer = " << pointer << ", pointer_ = " << pointer_; if( count == 0 ) { DVLOG(5) << "Zero-length acquire"; *pointer_ = NULL; } else if( request_address_->is_2D() && request_address_->core() == Grappa::mycore() ) { DVLOG(5) << "Short-circuiting to address " << request_address_->pointer(); *pointer_ = request_address_->pointer(); } }
void reset( ) { CHECK( !release_started_ || released_ ) << "inconsistent state for reset"; release_started_ = false; released_ = false; thread_ = NULL; num_messages_ = 0; response_count_ = 0; if( *count_ == 0 ) { DVLOG(5) << "Zero-length release"; release_started_ = true; released_ = true; } else if( request_address_->is_2D() ) { num_messages_ = 1; if( request_address_->core() == Grappa::mycore() ) { release_started_ = true; released_ = true; } } else { DVLOG(5) << "Straddle: block_max is " << (*request_address_ + *count_).block_max() ; DVLOG(5) << ", request_address is " << *request_address_; DVLOG(5) << ", sizeof(T) is " << sizeof(T); DVLOG(5) << ", count is " << *count_; DVLOG(5) << ", block_min is " << request_address_->block_min(); DVLOG(5) << "Straddle: address is " << *request_address_ ; DVLOG(5) << ", address + count is " << *request_address_ + *count_; ptrdiff_t byte_diff = ( (*request_address_ + *count_ - 1).last_byte().block_max() - request_address_->first_byte().block_min() ); DVLOG(5) << "Straddle: address block max is " << request_address_->block_max(); DVLOG(5) << " address + count block max is " << (*request_address_ + *count_).block_max(); DVLOG(5) << " address + count -1 block max is " << (*request_address_ + *count_ - 1).block_max(); DVLOG(5) << " difference is " << ( (*request_address_ + *count_ - 1).block_max() - request_address_->block_min() ); DVLOG(5) << " multiplied difference is " << ( (*request_address_ + *count_ - 1).block_max() - request_address_->block_min() ) * sizeof(T); DVLOG(5) << " address block min " << request_address_->block_min(); DVLOG(5) << "Straddle: diff is " << byte_diff << " bs " << block_size; num_messages_ = byte_diff / block_size; } if( num_messages_ > 1 ) DVLOG(5) << "****************************** MULTI BLOCK CACHE REQUEST ******************************"; DVLOG(5) << "Detecting straddle for sizeof(T):" << sizeof(T) << " count:" << *count_ << " num_messages_:" << num_messages_ << " request_address:" << *request_address_; }