MCPcopy Index your code
hub / github.com/apache/tvm / retValueToJS

Method retValueToJS

web/src/runtime.ts:2247–2335  ·  view source on GitHub ↗

* Creaye return value of the packed func. The value us auto-tracked for dispose. * @param resultAnyPtr The location of rvalue * @param callbackArg Whether it is being used in callbackArg. * @returns The JS value.

(resultAnyPtr: Pointer, callbackArg: boolean)

Source from the content-addressed store, hash-verified

2245 * @returns The JS value.
2246 */
2247 private retValueToJS(resultAnyPtr: Pointer, callbackArg: boolean): any {
2248 const typeIndex = this.memory.loadI32(resultAnyPtr);
2249 const valuePtr = resultAnyPtr + SizeOf.I32 * 2;
2250 switch (typeIndex) {
2251 case TypeIndex.kTVMFFINone: return undefined;
2252 case TypeIndex.kTVMFFIBool:
2253 return this.memory.loadI64(valuePtr) != 0;
2254 case TypeIndex.kTVMFFIInt:
2255 return this.memory.loadI64(valuePtr);
2256 case TypeIndex.kTVMFFIFloat:
2257 return this.memory.loadF64(valuePtr);
2258 case TypeIndex.kTVMFFIOpaquePtr: {
2259 return this.memory.loadPointer(valuePtr);
2260 }
2261 case TypeIndex.kTVMFFITensor: {
2262 return this.ctx.attachToCurrentScope(
2263 new Tensor(this.memory.loadPointer(valuePtr), this.lib, this.ctx, false)
2264 );
2265 }
2266 case TypeIndex.kTVMFFIDLTensorPtr: {
2267 assert(callbackArg);
2268 // no need to attach as we are only looking at view
2269 return new Tensor(this.memory.loadPointer(valuePtr), this.lib, this.ctx, true);
2270 }
2271 case TypeIndex.kTVMFFIFunction: {
2272 return this.ctx.attachToCurrentScope(
2273 this.makePackedFunc(this.memory.loadPointer(valuePtr))
2274 );
2275 }
2276 case TypeIndex.kTVMFFIDevice: {
2277 const deviceType = this.memory.loadI32(valuePtr);
2278 const deviceId = this.memory.loadI32(valuePtr + SizeOf.I32);
2279 return this.device(deviceType, deviceId);
2280 }
2281 case TypeIndex.kTVMFFIDataType: {
2282 // simply return dtype as tring to keep things simple
2283 this.lib.checkCall(
2284 (this.lib.exports.TVMFFIDataTypeToString as ctypes.FTVMFFIDataTypeToString)(valuePtr, valuePtr)
2285 );
2286 const strObjPtr = this.memory.loadPointer(valuePtr);
2287 const result = this.memory.loadByteArrayAsString(strObjPtr + SizeOf.ObjectHeader);
2288 this.lib.checkCall(
2289 (this.lib.exports.TVMFFIObjectDecRef as ctypes.FTVMFFIObjectDecRef)(strObjPtr)
2290 );
2291 return result;
2292 }
2293 case TypeIndex.kTVMFFISmallStr: {
2294 return this.memory.loadSmallStr(resultAnyPtr);
2295 }
2296 case TypeIndex.kTVMFFIStr: {
2297 const strObjPtr = this.memory.loadPointer(valuePtr);
2298 const result = this.memory.loadByteArrayAsString(strObjPtr + SizeOf.ObjectHeader);
2299 this.lib.checkCall(
2300 (this.lib.exports.TVMFFIObjectDecRef as ctypes.FTVMFFIObjectDecRef)(strObjPtr)
2301 );
2302 return result;
2303 }
2304 case TypeIndex.kTVMFFISmallBytes: {

Callers 2

packedFuncMethod · 0.95

Calls 15

makePackedFuncMethod · 0.95
deviceMethod · 0.95
typeIndexMethod · 0.95
getHandleMethod · 0.95
assertFunction · 0.90
loadI32Method · 0.80
loadI64Method · 0.80
loadF64Method · 0.80
loadPointerMethod · 0.80
loadByteArrayAsStringMethod · 0.80
loadSmallStrMethod · 0.80
loadSmallBytesMethod · 0.80

Tested by

no test coverage detected