Mercurial > mxe-octave
comparison src/of-image-1-no-jit.patch @ 5835:93d20ff5d6a6
of-image: Don't use function dim_vector::to_jit.
* src/of-image-1-no-jit.patch: Add new patch.
* dist-files.mk: Add new file to list.
See: https://octave.discourse.group/t/1468
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Wed, 11 Aug 2021 14:51:14 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
5834:0988117f1a6e | 5835:93d20ff5d6a6 |
---|---|
1 Don't use function dim_vector::to_jit. It was thought to be used exclusively by | |
2 the JIT compiler and it is removed now. | |
3 | |
4 --- ./src/connectivity.h.orig 2020-02-02 14:20:08.000000000 +0100 | |
5 +++ ./src/connectivity.h 2021-08-11 14:26:19.706581028 +0200 | |
6 @@ -153,8 +153,7 @@ octave::image::connectivity::set_padding | |
7 const Array<octave_idx_type> lengths = padding_lengths (size, padded_size); | |
8 const octave_idx_type* lengths_v = lengths.fortran_vec (); | |
9 | |
10 - const octave_idx_type* strides_v = size.to_jit (); | |
11 - const octave_idx_type row_stride = strides_v[0]; | |
12 + const octave_idx_type row_stride = size.xelem (0); | |
13 | |
14 std::function<void(const octave_idx_type)> fill; | |
15 fill = [&] (const octave_idx_type dim) -> void | |
16 @@ -165,7 +164,7 @@ octave::image::connectivity::set_padding | |
17 if (dim == 0) | |
18 im_v += row_stride; | |
19 else | |
20 - for (octave_idx_type i = 0; i < strides_v[dim]; i++) | |
21 + for (octave_idx_type i = 0; i < size.xelem (dim); i++) | |
22 fill (dim -1); | |
23 | |
24 for (octave_idx_type i = 0; i < lengths_v[dim]; i++, im_v++) | |
25 | |
26 --- ./src/imreconstruct.cc.orig 2020-02-02 14:20:08.000000000 +0100 | |
27 +++ ./src/imreconstruct.cc 2021-08-11 14:31:36.450682736 +0200 | |
28 @@ -110,10 +110,6 @@ scan_raster_order (T& padded_marker, con | |
29 | |
30 const octave_idx_type n_neighbours = raster_neighbours.numel (); | |
31 | |
32 - // We probably should not be using this but converting to Array | |
33 - // just to have fortran_vec seems a bit too much. | |
34 - const octave_idx_type* s = original_size.to_jit (); | |
35 - | |
36 std::function<void(const octave_idx_type)> scan; | |
37 scan = [&] (const octave_idx_type dim) -> void | |
38 { | |
39 @@ -122,7 +118,7 @@ scan_raster_order (T& padded_marker, con | |
40 | |
41 if (dim == 0) | |
42 { | |
43 - for (octave_idx_type k = 0; k < s[0]; k++, J++, I++) | |
44 + for (octave_idx_type k = 0; k < original_size.xelem (0); k++, J++, I++) | |
45 { | |
46 for (octave_idx_type i = 0; i < n_neighbours; i++) | |
47 if (*J < J[neighbours[i]]) | |
48 @@ -133,7 +129,7 @@ scan_raster_order (T& padded_marker, con | |
49 } | |
50 } | |
51 else | |
52 - for (octave_idx_type i = 0; i < s[dim]; i++) | |
53 + for (octave_idx_type i = 0; i < original_size.xelem (dim); i++) | |
54 scan (dim-1); | |
55 | |
56 J += pads[dim]; | |
57 @@ -161,10 +157,6 @@ scan_antiraster_order (T& padded_marker, | |
58 | |
59 const octave_idx_type n_neighbours = antiraster_neighbours.numel (); | |
60 | |
61 - // We probably should not be using this but converting to Array | |
62 - // just to have fortran_vec seems a bit too much. | |
63 - const octave_idx_type* s = original_size.to_jit (); | |
64 - | |
65 J += padded_marker.numel () -1; | |
66 I += padded_marker.numel () -1; | |
67 | |
68 @@ -178,7 +170,7 @@ scan_antiraster_order (T& padded_marker, | |
69 | |
70 if (dim == 0) | |
71 { | |
72 - for (octave_idx_type k = 0; k < s[0]; k++, J--, I--, ind--) | |
73 + for (octave_idx_type k = 0; k < original_size.xelem (0); k++, J--, I--, ind--) | |
74 { | |
75 for (octave_idx_type i = 0; i < n_neighbours; i++) | |
76 if (*J < J[neighbours[i]]) | |
77 @@ -193,7 +185,7 @@ scan_antiraster_order (T& padded_marker, | |
78 } | |
79 } | |
80 else | |
81 - for (octave_idx_type i = 0; i < s[dim]; i++) | |
82 + for (octave_idx_type i = 0; i < original_size.xelem (dim); i++) | |
83 scan (dim-1); | |
84 | |
85 J -= pads[dim]; | |
86 | |
87 --- ./src/bwconncomp.cc.orig 2020-02-02 14:20:08.000000000 +0100 | |
88 +++ ./src/bwconncomp.cc 2021-08-11 14:41:35.249619414 +0200 | |
89 @@ -81,13 +81,11 @@ connected_components (const boolNDArray& | |
90 | |
91 const dim_vector original_size = BW.dims (); | |
92 const dim_vector padded_size = BW_pad.dims (); | |
93 - const octave_idx_type* o = original_size.to_jit (); | |
94 - const octave_idx_type* p = padded_size.to_jit (); | |
95 const octave_idx_type ndims_m1 = BW_pad.ndims () -1; | |
96 | |
97 std::vector<bool> dim_padded (BW_pad.ndims (), true); | |
98 for (octave_idx_type i = 0; i < BW_pad.ndims (); i++) | |
99 - if (p[i] == o[i]) | |
100 + if (padded_size.xelem (i) == original_size.xelem (i)) | |
101 dim_padded[i] = false; | |
102 | |
103 for (std::vector<octave_idx_type>& conn_comp : all_components) | |
104 @@ -100,21 +98,21 @@ connected_components (const boolNDArray& | |
105 { | |
106 if (dim_padded[d]) | |
107 { | |
108 - ind += mult * (offset % p[d] - 1); | |
109 - mult *= p[d] - 2; | |
110 - offset /= p[d]; | |
111 + ind += mult * (offset % padded_size.xelem (d) - 1); | |
112 + mult *= padded_size.xelem (d) - 2; | |
113 + offset /= padded_size.xelem (d); | |
114 } | |
115 else | |
116 { | |
117 - ind += mult * (offset % p[d]); | |
118 - mult *= p[d]; | |
119 - offset /= p[d]; | |
120 + ind += mult * (offset % padded_size.xelem (d)); | |
121 + mult *= padded_size.xelem (d); | |
122 + offset /= padded_size.xelem (d); | |
123 } | |
124 } | |
125 if (dim_padded[ndims_m1]) | |
126 - ind += mult * (offset % p[ndims_m1] - 1); | |
127 + ind += mult * (offset % padded_size.xelem (ndims_m1) - 1); | |
128 else | |
129 - ind += mult * (offset % p[ndims_m1]); | |
130 + ind += mult * (offset % padded_size.xelem (ndims_m1)); | |
131 | |
132 offset = ind; | |
133 } | |
134 |