protected void accessingRow ( int r ) { if ( r < 0 ) { specific_row_cache_row = - 1 ; specific_row_cache_values = null ; return ; } if ( cacheMode == CacheMode . ROWS ) { double [ ] cache = partialCache . get ( r ) ; if ( cache == null ) //not present { //make a row cache = new double [ vecs . size ( ) ] ; Arrays . fill ( cache , Double . NaN ) ; double [ ] cache_missed = partialCache . putIfAbsentAndGet ( r , cache ) ; if ( cache_missed != null ) cache = cache_missed ; } specific_row_cache_values = cache ; specific_row_cache_row = r ; } }
This method allows the caller to hint that they are about to access many kernel values for a specific row . The row may be selected out from the cache into its own location to avoid excess LRU overhead . Giving a negative index indicates that we are done with the row and removes it . This method may be called multiple times with different row values . But when done accessing a specific row a negative value should be passed in .