@@ -142,7 +142,6 @@ cl_program ProgramManager::getClProgramFromClKernel(cl_kernel ClKernel) {
142
142
const vector_class<char > ProgramManager::getSpirvSource () {
143
143
// TODO FIXME make this function thread-safe
144
144
if (!m_SpirvSource) {
145
- vector_class<char > *DataPtr = nullptr ;
146
145
147
146
if (DeviceImages && !std::getenv (" SYCL_USE_KERNEL_SPV" )) {
148
147
assert (DeviceImages->NumDeviceImages == 1 &&
@@ -151,16 +150,17 @@ const vector_class<char> ProgramManager::getSpirvSource() {
151
150
auto *BegPtr = reinterpret_cast <const char *>(Img.ImageStart );
152
151
auto *EndPtr = reinterpret_cast <const char *>(Img.ImageEnd );
153
152
ptrdiff_t ImgSize = EndPtr - BegPtr;
154
- DataPtr = new vector_class<char >(static_cast <size_t >(ImgSize));
153
+ m_SpirvSource. reset ( new vector_class<char >(static_cast <size_t >(ImgSize) ));
155
154
// TODO this code is expected to be heavily refactored, this copying
156
155
// might be redundant (unless we don't want to work on live .rodata)
157
- std::copy (BegPtr, EndPtr, DataPtr ->begin ());
156
+ std::copy (BegPtr, EndPtr, m_SpirvSource ->begin ());
158
157
159
158
if (std::getenv (" SYCL_DUMP_IMAGES" )) {
160
159
std::ofstream F (" kernel.spv" , std::ios::binary);
161
160
162
161
if (!F.is_open ())
163
162
throw compile_program_error (" Can not write kernel.spv\n " );
163
+
164
164
F.write (BegPtr, ImgSize);
165
165
F.close ();
166
166
}
@@ -170,12 +170,11 @@ const vector_class<char> ProgramManager::getSpirvSource() {
170
170
throw compile_program_error (" Can not open kernel.spv\n " );
171
171
}
172
172
File.seekg (0 , std::ios::end);
173
- DataPtr = new vector_class<char >(File.tellg ());
173
+ m_SpirvSource. reset ( new vector_class<char >(File.tellg () ));
174
174
File.seekg (0 );
175
- File.read (DataPtr ->data (), DataPtr ->size ());
175
+ File.read (m_SpirvSource ->data (), m_SpirvSource ->size ());
176
176
File.close ();
177
177
}
178
- m_SpirvSource.reset (DataPtr);
179
178
}
180
179
// TODO makes unnecessary copy of the data
181
180
return *m_SpirvSource.get ();
0 commit comments