Skip to content

Commit d6c3bd1

Browse files
authored
Merge pull request #598 from veselypeta/petr/fix-loader-intercept
[UR] Fix loader intercept function
2 parents 3dc8252 + 88ac43b commit d6c3bd1

File tree

3 files changed

+122
-121
lines changed

3 files changed

+122
-121
lines changed

scripts/templates/helper.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,7 @@ def _get_param_name(namespace, tags, item):
770770
returns a list of c++ strings for each parameter of a function
771771
format: "TYPE NAME = INIT, ///< DESCRIPTION"
772772
"""
773-
def make_param_lines(namespace, tags, obj, py=False, decl=False, meta=None, format=["type", "name", "delim", "desc"], delim=","):
773+
def make_param_lines(namespace, tags, obj, py=False, decl=False, meta=None, format=["type", "name", "delim", "desc"], delim=",", replacements={}):
774774
lines = []
775775

776776
params = obj['params']
@@ -780,6 +780,8 @@ def make_param_lines(namespace, tags, obj, py=False, decl=False, meta=None, form
780780

781781
for i, item in enumerate(params):
782782
name = _get_param_name(namespace, tags, item)
783+
if replacements.get(name):
784+
name = replacements[name]
783785
if py:
784786
tname = get_ctype_name(namespace, tags, item)
785787
# Handle fptr_typedef

scripts/templates/ldrddi.cpp.mako

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ namespace ur_loader
4949
{
5050
${x}_result_t result = ${X}_RESULT_SUCCESS;<%
5151
add_local = False
52-
arrays_to_delete = []
5352
%>
5453

5554
%if re.match(r"Init", obj['name']):
@@ -112,6 +111,7 @@ namespace ur_loader
112111
*${obj['params'][2]['name']} = total_platform_handle_count;
113112

114113
%else:
114+
<%param_replacements={}%>
115115
%for i, item in enumerate(th.get_loader_prologue(n, tags, obj, meta)):
116116
%if 0 == i:
117117
// extract platform's function pointer table
@@ -123,11 +123,10 @@ namespace ur_loader
123123
%endif
124124
%if 'range' in item:
125125
<%
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 )
131130
${item['name']}Local[ i ] = reinterpret_cast<${item['obj']}*>( ${item['name']}[ i ] )->handle;
132131
%else:
133132
// convert loader handle to platform handle
@@ -141,15 +140,12 @@ namespace ur_loader
141140
%endfor
142141
// forward to device-platform
143142
%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))} );
148144
%else:
149145
result = ${th.make_pfn_name(n, tags, obj)}( ${", ".join(th.make_param_lines(n, tags, obj, format=["name"]))} );
150146
%endif
151-
<%
152-
del arrays_to_delete
147+
<%
148+
del param_replacements
153149
del add_local%>
154150
%for i, item in enumerate(th.get_loader_epilogue(n, tags, obj, meta)):
155151
%if 0 == i:

0 commit comments

Comments
 (0)