@@ -49,7 +49,6 @@ namespace ur_loader
49
49
{
50
50
${ x} _result_t result = ${ X} _RESULT_SUCCESS;<%
51
51
add_local = False
52
- arrays_to_delete = []
53
52
%>
54
53
55
54
% if re.match(r " Init" , obj[' name' ]):
@@ -112,6 +111,7 @@ namespace ur_loader
112
111
*${ obj[' params' ][2 ][' name' ]} = total_platform_handle_count;
113
112
114
113
% else :
114
+ <%param_replacements ={}%>
115
115
% for i, item in enumerate (th.get_loader_prologue(n, tags, obj, meta)):
116
116
% if 0 == i:
117
117
// extract platform's function pointer table
@@ -123,11 +123,10 @@ namespace ur_loader
123
123
%endif
124
124
% if ' range' in item:
125
125
<%
126
- add_local = True %> // convert loader handles to platform handles
127
- auto ${ item[' name' ]} Local = new ${ item[' type' ]} [${ item[' range' ][1 ]} ];
128
- <%
129
- arrays_to_delete.append(item[' name' ]+ ' Local' )
130
- %> for( size_t i = ${ item[' range' ][0 ]} ; i < ${ item[' range' ][1 ]} ; ++i )
126
+ add_local = True
127
+ param_replacements[item[' name' ]] = item[' name' ] + ' Local.data()' %> // convert loader handles to platform handles
128
+ auto ${ item[' name' ]} Local = std::vector<${ item[' type' ]} >(${ item[' range' ][1 ]} );
129
+ for( size_t i = ${ item[' range' ][0 ]} ; i < ${ item[' range' ][1 ]} ; ++i )
131
130
${ item[' name' ]} Local[ i ] = reinterpret_cast<${ item[' obj' ]} *>( ${ item[' name' ]} [ i ] )->handle;
132
131
% else :
133
132
// convert loader handle to platform handle
@@ -141,15 +140,12 @@ namespace ur_loader
141
140
%endfor
142
141
// forward to device-platform
143
142
% if add_local:
144
- result = ${ th.make_pfn_name(n, tags, obj)} ( ${ " , " .join(th.make_param_lines(n, tags, obj, format = [" name" , " local" ]))} );
145
- % for array_name in arrays_to_delete:
146
- delete []${ array_name} ;
147
- %endfor
143
+ result = ${ th.make_pfn_name(n, tags, obj)} ( ${ " , " .join(th.make_param_lines(n, tags, obj, format = [" name" , " local" ], replacements = param_replacements))} );
148
144
% else :
149
145
result = ${ th.make_pfn_name(n, tags, obj)} ( ${ " , " .join(th.make_param_lines(n, tags, obj, format = [" name" ]))} );
150
146
%endif
151
- <%
152
- del arrays_to_delete
147
+ <%
148
+ del param_replacements
153
149
del add_local%>
154
150
% for i, item in enumerate (th.get_loader_epilogue(n, tags, obj, meta)):
155
151
% if 0 == i:
0 commit comments