|
25 | 25 | var loopOrder = require( './../../../base/unary-loop-interchange-order' ); |
26 | 26 | var blockSize = require( './../../../base/unary-tiling-block-size' ); |
27 | 27 | var takeIndexed = require( '@stdlib/array/base/take-indexed' ); |
| 28 | +var copyIndexed = require( '@stdlib/array/base/copy-indexed' ); |
28 | 29 | var zeros = require( '@stdlib/array/base/zeros' ); |
29 | 30 | var incrementOffsets = require( './increment_offsets.js' ); |
30 | 31 | var setViewOffsets = require( './set_view_offsets.js' ); |
@@ -189,6 +190,7 @@ function blockedunary10d( fcn, arrays, views, strides, strategy, opts ) { // esl |
189 | 190 | var N; |
190 | 191 | var x; |
191 | 192 | var y; |
| 193 | + var v; |
192 | 194 | var o; |
193 | 195 | var k; |
194 | 196 |
|
@@ -243,6 +245,9 @@ function blockedunary10d( fcn, arrays, views, strides, strategy, opts ) { // esl |
243 | 245 | dv9 = zeros( N ); |
244 | 246 | iv = zeros( N ); |
245 | 247 |
|
| 248 | + // Shallow copy the list of views to an internal array so that we can update with reshaped views without impacting the original list of views: |
| 249 | + v = copyIndexed( views ); |
| 250 | + |
246 | 251 | // Iterate over blocks... |
247 | 252 | for ( j9 = sh[9]; j9 > 0; ) { |
248 | 253 | if ( j9 < bsize ) { |
@@ -376,8 +381,8 @@ function blockedunary10d( fcn, arrays, views, strides, strategy, opts ) { // esl |
376 | 381 | for ( i1 = 0; i1 < s1; i1++ ) { |
377 | 382 | for ( i0 = 0; i0 < s0; i0++ ) { |
378 | 383 | setViewOffsets( views, iv ); |
379 | | - views[ 0 ] = strategy( views[ 0 ] ); |
380 | | - set( ybuf, iv[ 1 ], fcn( views, opts ) ); |
| 384 | + v[ 0 ] = strategy( views[ 0 ] ); |
| 385 | + set( ybuf, iv[ 1 ], fcn( v, opts ) ); |
381 | 386 | incrementOffsets( iv, dv0 ); |
382 | 387 | } |
383 | 388 | incrementOffsets( iv, dv1 ); |
|
0 commit comments