… | |
… | |
189 | if ($type->[1] =~ /^OpenCL::(\S+)$/) { |
189 | if ($type->[1] =~ /^OpenCL::(\S+)$/) { |
190 | my $oclass = $1; |
190 | my $oclass = $1; |
191 | $oclass = "MemObject" if $oclass eq "Memory"; |
191 | $oclass = "MemObject" if $oclass eq "Memory"; |
192 | $oclass = "CommandQueue" if $oclass eq "Queue"; |
192 | $oclass = "CommandQueue" if $oclass eq "Queue"; |
193 | |
193 | |
|
|
194 | my $stash = lc $type->[1]; |
|
|
195 | $stash =~ s/opencl:://; |
|
|
196 | $stash =~ s/::/_/g; |
|
|
197 | |
194 | $XS2 .= " {\n"; |
198 | $XS2 .= " {\n"; |
195 | $XS2 .= " NEED_SUCCESS (Retain$oclass, (value [i]));\n" unless $1 eq "Platform" || $1 eq "Device"; |
199 | $XS2 .= " NEED_SUCCESS (Retain$oclass, (value [i]));\n" unless $oclass eq "Platform" || $oclass eq "Device"; |
196 | $XS2 .= " PUSH_CLOBJ (\"$type->[1]\", value [i]);\n"; |
200 | $XS2 .= " PUSH_CLOBJ (stash_$stash, value [i]);\n"; |
197 | $XS2 .= " }\n"; |
201 | $XS2 .= " }\n"; |
198 | } else { |
202 | } else { |
199 | $XS2 .= " PUSHs (sv_2mortal ($type->[1]));\n"; |
203 | $XS2 .= " PUSHs (sv_2mortal ($type->[1]));\n"; |
200 | } |
204 | } |
201 | |
205 | |